قبل از ادامه این بخش، اگر قبلاً این کار را انجام ندادهاید، سیستمهای micromobility پشتیبانیشدهای را که در حال ساخت فید برای آنها هستید، تأیید کنید.
در بخشهای زیر، هر سرصفحه دارای قالب زیر است: Required|Optional|Conditionally required: Feed name (System supported)
. سیستم های زیر پشتیبانی می شوند:
- سیستم داک شده
- سیستم بدون بارانداز
- سیستم Docked و Dockless
برای ادغام موفقیتآمیز با Google، فقط فایلهای مورد نیاز برای سیستمی را که فید شما توضیح میدهد ارائه کنید و فیلدهای مورد نیاز موجود در بخشهای مربوطه را مشخص کنید. برای فیلدهای مشروط الزامی، برای راهنمایی به توضیحات فیلد مراجعه کنید. همچنین میتوانید فیلدهای اختیاری را مشخص کنید که اطلاعات را اضافه میکنند و تجربه کاربری بهتری را ارائه میکنند.
هدر مورد نیاز برای فیدهای Micromobility
فیدهای Micromobility فیدهایی هستند که شامل دادههای ساختار یافته Micromobility یا بدون اتصال هستند که در این مقاله تعریف شده است.
همه فیدها باید همیشه فیلدهای موجود در جدول زیر را در سطح بالای شیء JSON، که در مجموع به عنوان سرصفحه GBFS رایج شناخته میشود، مشخص کنند.
نام زمینه | تایپ کنید | مورد نیاز | شرح |
---|---|---|---|
last_updated | مهر زمان | ضروری | یک مهر زمانی POSIX، که تعدادی ثانیه از 1 ژانویه 1970 ساعت 00:00:00 UTC را مشخص می کند. آخرین باری را تنظیم کنید که داده های موجود در فید به روز شده است. |
ttl | عدد صحیح غیر منفی | ضروری | یک عدد صحیح غیر منفی که نشان دهنده تعداد ثانیه هایی است که تا زمان به روز رسانی فید باقی می ماند. اگر داده ها باید با سرعت ثابت به روز شوند، این مقدار را روی |
data | JSON | ضروری | JSON که حاوی فیلدهای داده برای فید فردی است. |
به عنوان مثال، یک فید جمعآوری شده free_bike_status.json
که هدر رایج GBFS را مشخص میکند، ممکن است به صورت زیر باشد:
{
"ttl": 30,
"last_updated": 1576123774,
"data": {
"bikes": [ ... ] // GBFS free bike status objects.
}
}
مورد نیاز: system_information.json (سیستم Docked و Dockless)
در صورت نیاز به مشخصات GBFS مراجعه کنید.
این فید جزئیات مربوط به اپراتور سیستم را ارائه می دهد.
نام زمینه | تایپ کنید | مورد نیاز | شرح |
---|---|---|---|
system_id | شناسه | ضروری | یک شناسه منحصر به فرد جهانی برای سیستم اشتراک خودرو. این مقدار در نظر گرفته شده است که در طول عمر سیستم ثابت بماند. هر سیستم یا منطقه جغرافیایی مشخصی که وسایل نقلیه در آن کار می کنند، باید system_id خود را داشته باشد. شناسههای سیستمها باید به عنوان متعلق به یک سیستم خاص به جای رشتههای تصادفی قابل تشخیص باشند - برای مثال bcycle_austin یا biketown_pdx. |
name | رشته | ضروری | نام سیستمی که به مشتریان نمایش داده می شود. |
rental_apps | هدف - شی | ضروری | یک شی JSON که حاوی اطلاعات برنامه اجاره ای برای Android و iOS در فیلدهای مربوطه است. |
rental_apps.android | هدف - شی | مشروط مورد نیاز است | حاوی اطلاعات دانلود و کشف برنامه اجاره ای برای پلتفرم Android در store_uri و discovery_uri است. اگر ارائهدهنده سیستم یک برنامه اجاره اندروید دارد، این قسمت الزامی است. |
rental_apps.android.store_uri | URI | ضروری | URI که در آن می توان برنامه اندروید اجاره ای را از آن دانلود کرد. این معمولاً یک URI به یک فروشگاه برنامه مانند Google Play است. اگر URI به فروشگاه برنامهای مانند Google Play اشاره میکند، توصیه میکنیم که URI از بهترین شیوههای Android پیروی کند تا برنامه مشاهده بتواند مستقیماً URI را بهجای وبسایت به برنامه فروشگاه برنامه بومی باز کند. |
rental_apps.android.discovery_uri | URI | ضروری | URI که دارای فرم your_custom_scheme://your/path/here است. URI میتواند توسط PackageManager.queryIntentActivities() برای کشف اینکه آیا برنامه اندروید اجارهای روی دستگاه نصب شده است یا خیر استفاده شود. |
rental_apps.ios | هدف - شی | مشروط مورد نیاز است | حاوی اطلاعات دانلود و کشف برنامه اجاره ای برای پلتفرم iOS در store_uri و discovery_uri است. اگر ارائهدهنده سیستم یک برنامه اجاره iOS دارد، این قسمت الزامی است. |
rental_apps.ios.store_uri | URI | ضروری | URI که در آن می توان برنامه اجاره ای iOS را از آن دانلود کرد. این معمولاً یک URI به یک فروشگاه برنامه مانند Apple App Store است. اگر URI به یک فروشگاه برنامه مانند Apple App Store اشاره میکند، توصیه میکنیم که URI از بهترین روشهای iOS پیروی کند تا برنامه مشاهده بتواند مستقیماً URI را بهجای وبسایت به برنامه فروشگاه برنامه اصلی باز کند. |
rental_apps.ios.discovery_uri | URI | ضروری | URI با فرم your_custom_scheme:// . URI می تواند توسط UIApplication canOpenURL: برای کشف اینکه آیا برنامه iOS اجاره ای روی دستگاه نصب شده است یا خیر. |
مورد نیاز: free_bike_status.json (سیستم Dockless)
در صورت نیاز به مشخصات GBFS مراجعه کنید.
این فید مکانها و ویژگیهای وسایل نقلیه آزاد موجود را تعریف میکند. به دلایل حفظ حریم خصوصی، وسایل نقلیه ای که بخشی از یک اجاره فعال هستند نباید در این فید ظاهر شوند.
نام زمینه | تایپ کنید | مورد نیاز | شرح |
---|---|---|---|
bikes | آرایه | ضروری | مجموعهای از دوچرخههای متوقف شده در حال حاضر موجود که هر دوچرخه یک شی است. |
bikes[].bike_id | شناسه | ضروری | شناسه دوچرخه برای محافظت از حریم خصوصی، شناسه را می توان پس از هر سفر به یک رشته تصادفی تغییر داد. |
bikes[].lat | عرض جغرافیایی | ضروری | عرض جغرافیایی دوچرخه WGS 84، در قالب درجه اعشار. |
bikes[].lon | طول جغرافیایی | ضروری | طول جغرافیایی WGS 84 دوچرخه، در قالب درجه اعشار. |
bikes[].is_reserved | بولی | ضروری | اینکه آیا دوچرخه در حال حاضر رزرو شده است، به شرح زیر است:
|
bikes[].is_disabled | بولی | ضروری | این که آیا دوچرخه در حال حاضر از کار افتاده یا خراب است، به شرح زیر است:
|
bikes[].rental_uris | هدف - شی | ضروری | یک شی JSON که شامل URIهای اجارهای برای Android، iOS و وب در فیلدهای مربوطه است. |
bikes[].rental_uris.android | URI | مشروط مورد نیاز است | یک URI که میتواند به یک برنامه Android با هدف android.intent.action.VIEW برای پشتیبانی از پیوندهای عمیق Android منتقل شود. rental_uris ارائه شده باید پیوندهای برنامه Android باشد تا در صورتی که کاربر برنامه ارائه دهنده را نصب نکرده باشد، برنامه مشاهده نیازی به مدیریت دستی تغییر مسیر کاربر به فروشگاه برنامه نداشته باشد.این URI باید یک پیوند عمیق مخصوص دوچرخه فردی باشد، نه یک صفحه اجاره کلی که شامل اطلاعات بیش از یک دوچرخه است. پیوند عمیق باید کاربر را مستقیماً بدون هیچ گونه درخواست، صفحات بینابینی یا ورود به سیستم به دوچرخه برساند. اطمینان حاصل کنید که کاربران می توانند دوچرخه را ببینند حتی اگر هرگز برنامه را باز نکرده باشند. URI ها لزوماً لازم نیست که اگر شریک برنامه اجاره اندروید دارد، این فیلد الزامی است. مثال پیوندهای برنامه اندروید: |
bikes[].rental_uris.ios | URI | مشروط مورد نیاز است | یک URI که می تواند در iOS برای راه اندازی برنامه اجاره دوچرخه استفاده شود. برای اطلاعات بیشتر در این مورد، به مقاله اپل درباره طرحهای URL سفارشی iOS مراجعه کنید. rental_uris ارائه شده باید پیوندهای جهانی iOS باشد تا در صورتی که کاربر برنامه ارائه دهنده را نصب نکرده باشد، برنامه مشاهده نیازی به مدیریت دستی تغییر مسیر کاربر به فروشگاه برنامه نداشته باشد.این URI باید یک پیوند عمیق مخصوص دوچرخه فردی باشد، نه یک صفحه اجاره کلی که شامل اطلاعات بیش از یک دوچرخه است. پیوند عمیق باید کاربر را مستقیماً بدون هیچ گونه درخواست، صفحات بینابینی یا ورود به سیستم به دوچرخه برساند. اطمینان حاصل کنید که کاربران می توانند دوچرخه را ببینند حتی اگر هرگز برنامه را باز نکرده باشند. URI ها لزوماً لازم نیست که شناسه دوچرخه را درج کنند، تا زمانی که شریک ابزار دیگری برای شناسایی دوچرخه مربوطه داشته باشد. برای مثال، اپلیکیشن اجاره میتواند از شناسههای دیگری در URI برای شناسایی منحصربهفرد دوچرخه استفاده کند. اگر شریک برنامه اجاره iOS داشته باشد، این قسمت الزامی است. مثال پیوندهای جهانی iOS: |
bikes[].rental_uris.web | URL | اختیاری | نشانی اینترنتی که می تواند توسط مرورگر وب برای نشان دادن اطلاعات بیشتر در مورد اجاره خودرو در این وسیله نقلیه استفاده شود. این نشانی اینترنتی باید یک پیوند عمیق مخصوص دوچرخه فردی باشد، نه یک صفحه اجاره کلی که شامل اطلاعات بیش از یک دوچرخه است. پیوند عمیق باید کاربر را مستقیماً بدون هیچ گونه درخواست، صفحات بینابینی یا ورود به سیستم به دوچرخه برساند. اطمینان حاصل کنید که کاربران می توانند دوچرخه را ببینند حتی اگر هرگز برنامه را باز نکرده باشند. لزوماً لازم نیست URLها دارای اگر این قسمت تنظیم نشده باشد، به این معنی است که پیوندهای عمیق برای مرورگر وب پشتیبانی نمی شوند. مقدار مثال: |
bikes[].vehicle_type_id | شناسه | ضروری | vehicle_type_id وسیله نقلیه همانطور که در بخش vehicle_types.json توضیح داده شده است. |
bikes[].pricing_plan_id | شناسه | ضروری | شناسه طرح قیمتی که هنگام اجاره این نوع خودرو اعمال میشود، همانطور که در بخش system_pricing_plans.json توضیح داده شده است. |
bikes[].current_range_meters | شناور غیر منفی | مشروط مورد نیاز است | اگر تعریف vehicle_type که مربوط به وسیله نقلیه است دارای موتور باشد، این قسمت الزامی است.با توجه به میزان شارژ یا سطح سوخت فعلی خودرو، دورترین فاصله را بر حسب متر تنظیم کنید که وسیله نقلیه می تواند بدون نیاز به شارژ یا سوخت گیری مجدد طی کند. |
bikes[].last_reported | مهر زمان | اختیاری | آخرین باری را که وسیله نقلیه وضعیت خود را به بخش پشتیبان اپراتور گزارش کرد تنظیم کنید. |
مثال زیر برای free_bike_status.json
:
"bikes": [{
"bike_id": "xyz123",
"lat": 12.34,
"lon": 56.78,
"is_reserved": true,
"is_disabled": false,
"rental_uris":{
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.example.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890"
},
"vehicle_type_id": "scooter_electric",
"pricing_plan_id": "sydneyPlan1",
"current_range_meters": 4500,
"last_reported": 1434054678
},
{
"bike_id": "abc123",
"lat": 1.34,
"lon": 146.78,
"is_reserved": false,
"is_disabled": true,
"rental_uris":{
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.example.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890"
},
"vehicle_type_id": "bike_manual",
"pricing_plan_id": "sydneyPlan1",
"last_reported": 1434054241
}
]
مورد نیاز: automjet_types.json (سیستم متصل و بدون بارانداز)
در صورت نیاز به مشخصات GBFS مراجعه کنید.
این فید جزئیات انواع خودروهای جداگانه را که در بخش free_bike_status.json
به آن اشاره شده است، تعریف می کند.
نام زمینه | تایپ کنید | مورد نیاز | شرح |
---|---|---|---|
vehicle_types | آرایه | ضروری | آرایه ای از اشیاء، که در آن هر شی یک نوع وسیله نقلیه مجزا را در کاتالوگ ارائه دهنده تعریف می کند. برای یک نوع وسیله نقلیه فقط یک شیء می تواند وجود داشته باشد. |
vehicle_types[].vehicle_type_id | شناسه | ضروری | یک شناسه منحصر به فرد برای یک نوع وسیله نقلیه مشخص. |
vehicle_types[].form_factor | Enum | ضروری | یک عدد که ضریب فرم کلی خودرو را از لیست مقادیر معتبر فعلی زیر نشان میدهد:
|
vehicle_types[].propulsion_type | Enum | ضروری | یک عدد که نوع پیشرانه اولیه خودرو را از لیست مقادیر معتبر فعلی زیر نشان میدهد:
|
vehicle_types[].max_range_meters | شناور غیر منفی | مشروط مورد نیاز است | اگر propulsion_type روی human تنظیم نشده باشد، وسیله نقلیه دارای یک موتور است و بنابراین این قسمت مورد نیاز است.زمانی که خودرو کاملاً سوخت یا شارژ شده است، دورترین فاصله را بر حسب متر تنظیم کنید که وسیله نقلیه میتواند بدون نیاز به شارژ مجدد یا سوختگیری طی کند. |
مثال زیر برای vehicle_types.json
:
"vehicle_types": [
{
"vehicle_type_id": "bike_manual",
"form_factor": "bicycle",
"propulsion_type": "human"
},
{
"vehicle_type_id": "scooter_electric",
"form_factor": "scooter",
"propulsion_type": "electric",
"max_range_meters": 10000
}
]
مورد نیاز: system_pricing_plans.json (سیستم Dockless)
در صورت نیاز به مشخصات GBFS مراجعه کنید.
این خوراک، طرحهای قیمتی خودروهای ایستاده را مشخص میکند. ما از ارائهدهندگان میخواهیم اطلاعات قیمت خودروهای ایستاده را نشان دهند.
نام زمینه | تایپ کنید | مورد نیاز | شرح |
---|---|---|---|
plans | آرایه | ضروری | آرایه ای از اشیا که در آن هر شی یک طرح قیمت معین را تعریف می کند. |
plans[].plan_id | شناسه | ضروری | رشته ای که نشان دهنده یک شناسه منحصر به فرد برای طرح قیمت معینی است که ارائه دهنده ارائه می دهد. |
plans[].url | URL | اختیاری | URL که کاربران نهایی را به اطلاعات بیشتر در مورد طرح قیمت راهنمایی می کند. |
plans[].currency | رشته | ضروری | استاندارد ISO 4217 برای طرح قیمت. |
plans[].price | شناور غیر منفی | ضروری | طرح قیمت باید به عنوان یک طرح قیمتی بدون رتبه یا یک طرح قیمت رتبه بندی شده تعریف شود:
|
plans[].per_km_pricing | آرایه | مشروط مورد نیاز است | اگر قیمت تابعی از مسافت طی شده است که بر حسب کیلومتر نمایش داده می شود، این قسمت الزامی است. آرایه ای از اشیاء که در آن هر شی یک قطعه تقسیم شده با فاصله مشخص را تعریف می کند. مقدار برای تعیین قیمت کل طرح داده شده، اگر این فیلد تنظیم نشده باشد، قیمت های متغیری بر اساس مسافت وجود ندارد و بنابراین، هیچ کدام به عنوان بخشی از قیمت کل لحاظ نمی شود. |
plans[].per_km_pricing[].start | عدد صحیح غیر منفی | ضروری | تعداد کیلومترهایی که در آن نرخ قطعه شروع به شارژ می کند. این فیلد روی مقدار فراگیر تنظیم شده است که محدوده بخش را شروع می کند. بنابراین، پس از سپری شدن تعداد کیلومترها، rate یک بار شارژ می شود. |
plans[].per_km_pricing[].rate | شناور | ضروری | نرخی که برای هر interval در نظر گرفته میشود، که از ابتدای بخش start میشود. اگر این فیلد روی عدد منفی تنظیم شود، مسافر تخفیف دریافت می کند. |
plans[].per_km_pricing[].interval | عدد صحیح غیر منفی | ضروری | فاصله زمانی بر حسب کیلومتر که در آن اگر اگر این فیلد روی |
plans[].per_km_pricing[].end | عدد صحیح غیر منفی | اختیاری | تعداد کیلومترهایی که در آن نقطه اگر این فیلد تنظیم نشده باشد یا خالی باشد، |
plans[].per_min_pricing | آرایه | مشروط مورد نیاز است | اگر قیمت تابعی از زمان سپری شده است که بر حسب دقیقه نمایش داده می شود، این قسمت الزامی است. آرایه ای از اشیاء که در آن هر شی یک بخش تقسیم شده با زمان معین را تعریف می کند. مقدار برای تعیین قیمت کل طرح داده شده، اگر این فیلد تنظیم نشده باشد، قیمتهای متغیری براساس زمان وجود ندارد و بنابراین هیچ کدام به عنوان بخشی از قیمت کل لحاظ نمیشوند. |
plans[].per_min_pricing[].start | شناور | ضروری | تعداد دقیقههایی که در آن نرخ بخش شروع به شارژ میکند. این فیلد روی مقدار فراگیر تنظیم شده است که محدوده بخش را شروع می کند. بنابراین، پس از سپری شدن تعداد دقیقه تعیین شده، rate یک بار شارژ می شود. |
plans[].per_min_pricing[].rate | شناور | ضروری | نرخی که برای هر interval شارژ می شود. نرخ از ابتدای بخش start می شود. اگر این فیلد روی عدد منفی تنظیم شود، مسافر تخفیف دریافت می کند. |
plans[].per_min_pricing[].interval | عدد صحیح غیر منفی | ضروری | فاصله زمانی بر حسب دقیقه که در آن اگر اگر این فیلد روی |
plans[].per_min_pricing[].end | عدد صحیح غیر منفی | اختیاری | تعداد دقیقههایی که در آنها اگر این فیلد تنظیم نشده باشد یا خالی باشد، |
نمونه هایی برای system_pricing_plans.json
این بخش نمونه کدهای system_pricing_plans.json
را ارائه می دهد. جزئیات و نتایج مربوط به هر مثال نیز ارائه شده است.
مثال 1 برای system_pricing_plans.json
نمونه کد طرح قیمت زیر هزینه ها را بر اساس زمان سفر برای فواصل زمانی زیر نشان می دهد:
- [0،1): 2 دلار آمریکا
- اگر سفر کمتر از یک دقیقه باشد، کاربر 2 دلار آمریکا می پردازد.
- مثال: سفر 59 ثانیه ای
- [1،2): 3 دلار آمریکا
- اگر سفر طولانی تر یا مساوی یک دقیقه اما کمتر از دو دقیقه باشد، کاربر 2 دلار + 1 دلار = 3 دلار آمریکا می پردازد.
- مثال: سفر 1 دقیقه ای. سفر 1 دقیقه ای 45 ثانیه ای
- x تعداد دقیقه هایی که x بیشتر یا مساوی 2 است: $3 + (($2 + $1) * ( x - 2 + 1)) USD
- اگر سفر طولانیتر یا برابر با دو دقیقه باشد، کاربر برای بخشی از سفر کمتر از دو دقیقه 3 دلار میپردازد و (1 دلار [ادامه از اولین ورودی فهرست
per_min_pricing
] + 2 دلار [دومین ورودی فهرستper_min_pricing
]) برای هر دقیقه بعد و شامل دو دقیقه. - مثال ها:
- هزینه سفر 2 دقیقه ای 3 دلار + (2 دلار + 1 دلار) = 6 دلار آمریکا
- هزینه سفر 2 دقیقه ای 30 ثانیه ای 3 دلار + (2 دلار + 1 دلار) = 6 دلار آمریکا
- هزینه سفر 3 دقیقه ای 3 دلار + ((2 دلار + 1 دلار) * 2) = 9 دلار آمریکا
- هزینه سفر 10 دقیقه ای 3 دلار + ((2 دلار + 1 دلار) * 9) = 30 دلار آمریکا
- اگر سفر طولانیتر یا برابر با دو دقیقه باشد، کاربر برای بخشی از سفر کمتر از دو دقیقه 3 دلار میپردازد و (1 دلار [ادامه از اولین ورودی فهرست
{
"plans": {
"plan_id": "plan1",
"currency": "USD",
"price": 2,
"per_min_pricing": [
{
"interval": 1,
"rate": 1,
"start": 1
},
{
"interval": 1,
"rate": 2,
"start": 2
}
],
}
}
مثال 2 برای system_pricing_plans.json
در این مثال، نمونه کدی را برای طرح قیمتی نشان میدهیم که با نرخ دقیقه و کیلومتر شارژ میشود:
- به طور خاص، کاربر نهایی 0.25 دلار کانادا در هر کیلومتر و همچنین 0.50 دلار کانادا در هر دقیقه هزینه دریافت می کند.
- هر دوی این نرخ ها به طور همزمان اتفاق می افتد و به یکدیگر وابسته نیستند.
- بنابراین، یک سفر یک کیلومتری که 10 دقیقه طول می کشد، 9 دلار کانادا هزینه دارد. تفکیک هزینه ها به شرح زیر است:
- 3 دلار، قیمت پایه
- 0.25 دلار * 2، یک بار در شروع سفر و یک بار در علامت 1 کیلومتر شارژ می شود.
- 0.5 دلار * 11، یک بار در شروع هر دقیقه شارژ می شود. شارژ از 0 ثانیه شروع می شود و آخرین فاصله زمانی 10 دقیقه شارژ می شود.
{
"plans": {
"plan_id": "plan2",
"currency": "CAD",
"price": 3,
"per_km_pricing": [{
"start": 0,
"rate": 0.25,
"interval": 1
}],
"per_min_pricing": [{
"start": 0,
"rate": 0.50,
"interval": 1
}]
}
}
به صورت مشروط مورد نیاز است: geofencing_zones.json (سیستم متصل و بدون بارانداز)
در صورت نیاز به مشخصات GBFS مراجعه کنید.
این فید دادههای geofencing را برای خودروهای ایستاده تعریف میکند. دادههای ژئوفنسینگ شامل مرزهای جغرافیایی است که مشخص میکند وسایل نقلیه مجاز به شروع و پایان سواری هستند، همراه با سرعتی که وسایل نقلیه میتوانند با آن حرکت کنند. این سرعت یا حداکثر سرعت خودرو یا محدودیت سرعت جاده ای است که وسیله نقلیه در آن قرار دارد، هر کدام کمتر باشد. رانندگان باید قوانین و مقررات محلی را رعایت کنند.
ما از این دادهها استفاده میکنیم تا وقتی کاربر یک مسیر معین را جستجو میکند، اگر پایان سفر خارج از geofenceهای خاص باشد، نتیجه Micrimobility فیلتر میشود. اگر geofences ارائه نشده باشد، Google با این سرویس به گونه ای رفتار می کند که گویی هیچ محدودیت مرزی ندارد.
نام زمینه | تایپ کنید | مورد نیاز | شرح |
---|---|---|---|
geofencing_zones | هدف - شی | ضروری | یک شی FeatureCollection همانطور که توسط IETF RFC 7946 توضیح داده شده است، یک شی است که دارای یک فیلد به نام features . مقدار features ها یک آرایه JSON است. هر عنصر آرایه JSON یک شی Feature است. هر منطقه جغرافیایی، قوانین و ویژگی های مرتبط با آن، و تعاریف |
geofencing_zones.type | رشته | ضروری | همانطور که توسط IETF RFC 7946 توضیح داده شده است، روی FeatureCollection تنظیم کنید. |
geofencing_zones.features | آرایه | ضروری | یک آرایه JSON، که در آن هر عنصر آرایه JSON یک شی Feature است. |
geofencing_zones.features[].type | رشته | ضروری | همانطور که توسط IETF RFC 7946 توضیح داده شده است، روی Feature تنظیم کنید. |
geofencing_zones.features[].geometry | چند ضلعی GeoJSON | ضروری | یک GeoJSON Multipolygon که توضیح میدهد که سواریها نمیتوانند از کجا شروع شوند، به پایان برسند، از آن عبور کنند، علاوه بر محدودیتهای دیگر. آرایش نقاط در جهت عقربه های ساعت، ناحیه محصور شده توسط چند ضلعی را مشخص می کند، در حالی که یک ترتیب خلاف جهت عقربه های ساعت، ناحیه خارج از چند ضلعی را مشخص می کند. برای اطلاعات بیشتر در این مورد، به قانون دست راست مراجعه کنید. |
geofencing_zones.features[].properties | هدف - شی | ضروری | شیئی که کمک هزینه ها و محدودیت های سفر را مشخص می کند. |
geofencing_zones.features[].properties.rules | آرایه | اختیاری | آرایه ای از اشیا، که در آن هر شی یک و تنها یک قانون را تعریف می کند. اگر دو یا چند قانون با هم تداخل داشته باشند، با هم برخورد کنند یا به نحوی با هم تداخل داشته باشند، اولین قانون تعریف شده در ترتیب فایل JSON اولویت دارد. |
geofencing_zones.features[].properties.rules[].vehicle_type_id | آرایه | اختیاری | آرایهای از شناسههای نوع خودرو، که در آن هر عنصر یک vehicle_type_id است، که هر گونه محدودیتی باید برای آن اعمال شود. اگر هیچ vehicle_type_id مشخص نشده باشد، محدودیت ها برای همه انواع خودرو اعمال می شود. |
geofencing_zones.features[].properties.rules[].ride_allowed | بولی | ضروری | این که آیا دوچرخهسواری بدون اسکله آزاد میتواند در منطقه شروع و پایان یابد، به شرح زیر:
|
مثال زیر برای geofencing_zones.json
است:
"geofencing_zones":{
"type":"FeatureCollection",
"features":[{
"type":"Feature",
"properties":{
"rules":[{
"vehicle_type_id":"scooter",
"ride_allowed": false
}]
},
"geometry":{
"type":"MultiPolygon",
"coordinates":[[[
[-122.66780376434326, 45.49896266763551],
[-122.66810417175292, 45.49824825558575],
[-122.66830801963805, 45.49632305799116],
[-122.66780376434326, 45.49896266763551]
]]]
}
}]
}
مورد نیاز: station_information.json (سیستم متصل)
در صورت نیاز به مشخصات GBFS مراجعه کنید.
این فید اطلاعات کلی در مورد ایستگاه های اشتراک دوچرخه عمومی را تعریف می کند.
نام زمینه | تایپ کنید | مورد نیاز | شرح |
---|---|---|---|
stations | آرایه | ضروری | آرایه ای از اشیا که در آن هر شی یک و تنها یک ایستگاه را تعریف می کند. |
stations[].station_id | رشته | ضروری | شناسه ایستگاه |
stations[].name | رشته | ضروری | نام عمومی ایستگاه به زبان محلی شهری که ایستگاه در آن واقع شده است. name باید به آنچه در تابلوهای ایستگاه استفاده می شود، در صورت وجود، مطابقت داشته باشد، یا باید بازتابی از مکان ایستگاه از طریق استفاده از یک علامت باشد. تقاطع خیابان یا نقطه عطف محلی از کلمات اختصاری مانند St. برای "خیابان" مگر اینکه به صراحت در تابلوها استفاده شود، و name باید در حروف مختلط به دنبال قراردادهای محلی برای حروف بزرگ کردن نام مکانها باشد و نه با حروف بزرگ. |
stations[].lat | عرض جغرافیایی | ضروری | عرض جغرافیایی WGS 84 ایستگاه، در قالب درجه اعشار. |
stations[].lon | طول جغرافیایی | ضروری | طول جغرافیایی WGS 84 ایستگاه، در قالب درجه اعشار. |
stations[].capacity | عدد صحیح غیر منفی | اختیاری | یک عدد صحیح غیر منفی که تعداد کل نقاط اتصال نصب شده در ایستگاه را نشان می دهد، چه موجود و چه غیر قابل دسترس. |
stations[].rental_uris | هدف - شی | ضروری | یک شی JSON که شامل URIهای اجارهای برای Android، iOS و وب در فیلدهای مربوطه است. اگر این URIها مشخص شده باشند، پیوندهای عمیق پیشفرض را که هنگام ورود ارائهدهنده تنظیم شدهاند، لغو میکنند. |
stations[].rental_uris.android | URI | مشروط مورد نیاز است | یک URI که میتواند به یک برنامه Android با هدف این URI باید یک پیوند عمیق مخصوص هر ایستگاه باشد، نه یک صفحه اجاره عمومی که شامل اطلاعات بیش از یک ایستگاه است. پیوند عمیق باید کاربر را مستقیماً بدون هیچ گونه درخواست، صفحات بینابینی یا لاگینی به ایستگاه برساند. اطمینان حاصل کنید که کاربران می توانند ایستگاه را ببینند حتی اگر هرگز برنامه را باز نکرده باشند. تا زمانی که شریک ابزار دیگری برای شناسایی ایستگاه مربوطه داشته باشد، لزوماً نیازی به URI نیست که اگر شریک برنامه اجاره اندروید دارد، این فیلد الزامی است. مثال پیوندهای برنامه اندروید: |
stations[].rental_uris.ios | URI | مشروط مورد نیاز است | یک URI که می تواند در iOS برای راه اندازی برنامه اجاره ایستگاه استفاده شود. برای اطلاعات بیشتر در این مورد، به مقاله اپل درباره طرحهای URL سفارشی iOS مراجعه کنید. این URI باید یک پیوند عمیق مخصوص هر ایستگاه باشد، نه یک صفحه اجاره عمومی که شامل اطلاعات بیش از یک ایستگاه است. پیوند عمیق باید کاربر را مستقیماً بدون هیچ گونه درخواست، صفحات بینابینی یا لاگینی به ایستگاه برساند. اطمینان حاصل کنید که کاربران می توانند ایستگاه را ببینند حتی اگر هرگز برنامه را باز نکرده باشند. لزوماً نیازی به URI نیست که اگر شریک برنامه اجاره iOS داشته باشد، این قسمت الزامی است. مثال پیوندهای جهانی iOS: |
stations[].rental_uris.web | URL | اختیاری | نشانی اینترنتی که می تواند توسط مرورگر وب برای نشان دادن اطلاعات بیشتر در مورد نحوه اجاره خودرو در این ایستگاه استفاده شود. این نشانی وب باید یک پیوند عمیق مخصوص ایستگاه فردی باشد، نه یک صفحه اجاره کلی که شامل اطلاعات بیش از یک ایستگاه است. پیوند عمیق باید کاربر را مستقیماً بدون هیچ گونه درخواست، صفحات بینابینی یا لاگینی به ایستگاه برساند. اطمینان حاصل کنید که کاربران می توانند ایستگاه را ببینند حتی اگر هرگز برنامه را باز نکرده باشند. لزوماً نیازی به نشانیهای اینترنتی نیست که شامل اگر این قسمت تنظیم نشده باشد، به این معنی است که پیوندهای عمیق برای مرورگر وب پشتیبانی نمی شوند. مقدار مثال: |
مثال زیر برای station_information.json
:
"stations": [
{
"station_id": "597",
"name": "Silverthorne Road, Battersea",
"lat": 51.472865,
"lon": -0.148059,
"capacity": 10,
"rental_uris": {
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.exampleexample.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890&platform=web"
}
},
]
مورد نیاز: station_status.json (سیستم متصل)
در صورت نیاز به مشخصات GBFS مراجعه کنید.
این فید وضعیت به روز و فعلی ایستگاه های اشتراک دوچرخه عمومی را مشخص می کند.
نام زمینه | تایپ کنید | مورد نیاز | شرح |
---|---|---|---|
stations | آرایه | ضروری | آرایه ای از اشیا، که در آن هر شی یک و تنها یک ایستگاه را تعریف می کند. |
stations[].station_id | رشته | ضروری | شناسه ایستگاه |
stations[].num_bikes_available | عدد صحیح غیر منفی | ضروری | یک عدد صحیح غیر منفی که تعداد دوچرخههای کاربردی را نشان میدهد که از نظر فیزیکی در ایستگاه هستند و ممکن است برای اجاره ارائه شوند. برای تعیین اینکه آیا ایستگاه در حال حاضر دوچرخه اجاره می کند یا خیر، باید قسمت |
stations[].vehicle_types_available | آرایه | اختیاری | مجموعهای از اشیاء که تعداد کل وسایل نقلیه را مشخص میکند و بر اساس نوع وسیله نقلیه موجود در ایستگاه طبقهبندی میشود. هر شیء تعداد کل وسیله نقلیه را برای نوع وسیله نقلیه مرتبط مدل می کند. تعداد کل وسایل نقلیه از هر یک از این اشیا باید جمع شود تا با مقدار مشخص شده در قسمت |
stations[].vehicle_types_available[].vehicle_type_id | شناسه | ضروری | |
stations[].vehicle_types_available[].count | عدد صحیح غیر منفی | ضروری | تعداد کل وسایل نقلیه موجود برای |
stations[].num_docks_available | عدد صحیح غیر منفی | مشروط مورد نیاز است | میدان مورد نیاز است، مگر اینکه ایستگاه ظرفیت اتصال نامحدودی داشته باشد. For example, virtual stations have unlimited docking capacities and the field isn't required. A non-negative integer that represents the total number of functional docks physically at the station that are able to accept vehicle returns. To determine whether the station currently accepts bike returns, you must inspect the station's |
stations[].is_installed | Boolean | Required | A Boolean that indicates whether it's true that the station is currently on the street and installed. If the station is installed on the street, set to If the station isn't installed on the street, set to |
stations[].is_renting | Boolean | Required | A Boolean that indicates whether it's true that the station currently rents bikes. If the station currently rents bikes, set to If the station doesn't currently rent bikes, set to |
stations[].is_returning | Boolean | Required | A Boolean that indicates whether it's true that the station currently accepts bike returns. If the station currently accepts bike returns, set to If the station doesn't currently accept bike returns, set to |
The following is an example of station_status.json
:
"stations": [
{
"station_id": "2",
"num_bikes_available": 6,
"vehicle_types_available": [
{
"vehicle_type_id" : "scooter_electric",
"count" : 2
},
{
"vehicle_type_id" : "bike_manual",
"count" : 4
}
],
"num_docks_available": 30,
"is_installed": true,
"is_renting": true,
"is_returning": true,
"last_reported": 1576119631
},
]