برنامه نویسی

Routing API با Valhalla

Summarize this content to 400 words in Persian Lang
چند وقت پیش، من نیاز به پیاده سازی ابزاری برای ایجاد مسیرهای جاده ای بین 2 نقطه مورد علاقه داشتم.در ابتدا، من در مورد Google Maps API فکر کردم، اما این یک سرویس پولی است و بنابراین به دنبال جایگزین های منبع باز که نیاز را برآورده می کند، گشتم و آن زمان بود که Valhalla را کشف کردم.

Valhalla یک موتور مسیریابی منبع باز است.

تولید مسیر به چند روش:

خودکار؛
عابر پیاده؛
کامیون؛
و غیره؛

ایجاد مسیرهایی با اجتناب از مسیرهای خاص.
استفاده مستقیم در QGIS با استفاده از یک افزونه.
در LeafletJS برای رابط نقشه تعاملی استفاده کنید.

یک نسخه آزمایشی از API در صفحه DEMO قابل مشاهده است

اسناد کامل API را می توان در Documentation مشاهده کرد

در زیر نمونه ای از docker-compose برای پیاده سازی سریع سرور آورده شده است.به یاد داشته باشید که در اولین اجرا، این فرآیند کاملاً زمان بر است زیرا نقشه بزرگراه را دانلود می کند و داده ها را آماده می کند تا سپس API کاربردی شود.

version: ‘3’
services:
valhalla:
image: ghcr.io/gis-ops/docker-valhalla/valhalla:3.4.0
environment:
– tile_urls=https://download.geofabrik.de/south-america/brazil-latest.osm.pbf
– use_tiles_ignore_pbf=True
– force_rebuild=False
– force_rebuild_elevation=False
ports:
– 8002:8002
volumes:
– /opt/valhalla/custom_files/:/custom_files
restart: always

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در زیر نمونه ای از ساختار تماس با پارامترهایی که من استفاده می کنم آورده شده است.

$queryParams = [‘json’ => json_encode([
‘locations’ => [
[‘lat’ => $lat_a, ‘lon’ => $long_a],
[‘lat’ => $lat_b, ‘lon’ => $long_b] ],
‘costing’ => ‘pedestrian’,
‘narrative’ => false,
‘id’ => ‘my_second_route’,
//’avoid_locations’ => $shapeToIgnore,//para rotas alternativas
‘directions_options’ => [
‘units’ => ‘meters’,
‘language’ => ‘pt-BR’
],
])];

$response = Http::get(‘http://1.2.3.4:8002/route’, $queryParams);

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چند وقت پیش، من نیاز به پیاده سازی ابزاری برای ایجاد مسیرهای جاده ای بین 2 نقطه مورد علاقه داشتم.
در ابتدا، من در مورد Google Maps API فکر کردم، اما این یک سرویس پولی است و بنابراین به دنبال جایگزین های منبع باز که نیاز را برآورده می کند، گشتم و آن زمان بود که Valhalla را کشف کردم.

Valhalla یک موتور مسیریابی منبع باز است.

  • تولید مسیر به چند روش:
    • خودکار؛
    • عابر پیاده؛
    • کامیون؛
    • و غیره؛
  • ایجاد مسیرهایی با اجتناب از مسیرهای خاص.
  • استفاده مستقیم در QGIS با استفاده از یک افزونه.
  • در LeafletJS برای رابط نقشه تعاملی استفاده کنید.

یک نسخه آزمایشی از API در صفحه DEMO قابل مشاهده است

اسناد کامل API را می توان در Documentation مشاهده کرد

در زیر نمونه ای از docker-compose برای پیاده سازی سریع سرور آورده شده است.
به یاد داشته باشید که در اولین اجرا، این فرآیند کاملاً زمان بر است زیرا نقشه بزرگراه را دانلود می کند و داده ها را آماده می کند تا سپس API کاربردی شود.

version: '3'
services:
 valhalla:
    image: ghcr.io/gis-ops/docker-valhalla/valhalla:3.4.0
    environment:
      - tile_urls=https://download.geofabrik.de/south-america/brazil-latest.osm.pbf
      - use_tiles_ignore_pbf=True
      - force_rebuild=False
      - force_rebuild_elevation=False
    ports:
      - 8002:8002
    volumes:
      - /opt/valhalla/custom_files/:/custom_files
    restart: always
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در زیر نمونه ای از ساختار تماس با پارامترهایی که من استفاده می کنم آورده شده است.

$queryParams = ['json' => json_encode([
        'locations' => [
            ['lat' => $lat_a, 'lon' => $long_a],
            ['lat' => $lat_b, 'lon' => $long_b]
        ],
        'costing' => 'pedestrian', 
        'narrative' => false,
        'id' => 'my_second_route',
        //'avoid_locations' => $shapeToIgnore,//para rotas alternativas
        'directions_options' => [
                    'units' => 'meters', 
                    'language' => 'pt-BR'
         ],
    ])];

    $response = Http::get('http://1.2.3.4:8002/route', $queryParams);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا