GraphHopper هو محرك توجيه سريع وموفر للذاكرة تم إصداره بموجب ترخيص Apache 2.0. يمكن استخدامه كمكتبة Java أو خادم ويب مستقل لحساب المسافة والوقت والتعليمات خطوة بخطوة والعديد من سمات الطريق لمسار بين نقطتين أو أكثر. بالإضافة إلى هذا التوجيه "A-to-B"، فإنه يدعم "الانطباق على الطريق"، وحساب Isochrone، والملاحة عبر الهاتف المحمول، والمزيد. يستخدم GraphHopper بيانات OpenStreetMap وGTFS بشكل افتراضي ويمكنه استيراد مصادر بيانات أخرى أيضًا.
لدينا مجتمع مفتوح ونرحب بالجميع. أخبرنا بمشاكلك أو حالات الاستخدام أو قل مرحبًا فقط. يرجى الاطلاع على إرشادات مجتمعنا.
يتم إرسال جميع الأسئلة إلى منتدانا حيث لدينا أيضًا أقسام فرعية مخصصة للمطورين واستخدام الهاتف المحمول ومكون مطابقة الخريطة لدينا. يمكنك أيضًا البحث في Stackoverflow عن الإجابات.
اقرأ دليل المساهمة الخاص بنا للحصول على معلومات حول موضوعات مثل العثور على الأخطاء وإصلاحها وتحسين وثائقنا أو ترجماتنا! لدينا أيضًا مشكلات أولى جيدة للبدء بالمساهمة.
للبدء، يمكنك تجربة خرائط GraphHopper، وقراءة وثائقنا وتثبيت GraphHopper بما في ذلك واجهة مستخدم الخرائط محليًا.
راجع ملف سجل التغيير لتغييرات Java API.
لتثبيت واجهة مستخدم خرائط GraphHopper وخدمة الويب محليًا، تحتاج إلى JVM (>= Java 17) وقم بما يلي:
wget https://repo1.maven.org/maven2/com/graphhopper/graphhopper-web/10.0/graphhopper-web-10.0.jar
https://raw.githubusercontent.com/graphhopper/graphhopper/10.x/config-example.yml
http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf
java -D " dw.graphhopper.datareader.file=berlin-latest.osm.pbf " -jar graphhopper * .jar server config-example.yml
بعد فترة من الوقت، تظهر لك رسالة سجل تحتوي على "تم بدء الخادم"، ثم انتقل إلى http://localhost:8989/ وستظهر لك خريطة لبرلين. يجب أن تكون قادرًا على النقر بزر الماوس الأيمن على الخريطة لإنشاء طريق.
راجع الوثائق التي تحتوي على سبيل المثال دليل الارتفاع ودليل النشر.
يمكن العثور على صور Docker التي أنشأها المجتمع من الفرع master
هنا (يوميًا حاليًا). راجع ملف Dockerfile لمزيد من التفاصيل.
لرؤية ميزة توجيه الطريق في GraphHopper أثناء العمل، يرجى الانتقال إلى خرائط GraphHopper.
خرائط GraphHopper هي واجهة مستخدم مفتوحة المصدر، والتي يمكنك العثور عليها هنا. يمكنه استخدام محرك التوجيه مفتوح المصدر هذا أو واجهة برمجة تطبيقات GraphHopper Directions، التي توفر واجهة برمجة تطبيقات التوجيه، وواجهة برمجة تطبيقات تحسين المسار (استنادًا إلى jsprit)، وواجهة برمجة تطبيقات Matrix السريعة، والبحث عن العناوين (استنادًا إلى الفوتون). يتم دعم مشروع الفوتون أيضًا من قبل شركة GraphHopper GmbH. بالإضافة إلى واجهة GraphHopper Directions API، يتم استخدام مربعات الخرائط من موفري الخدمات المختلفين، ويكون الإعداد الافتراضي هو Omniscale.
كل هذا متاح مجانًا عبر اتصالات مشفرة ومن خوادم ألمانية - للحصول على تجربة رائعة وخاصة لتخطيط الطريق!
ابدأ
هناك خدمة ويب يمكن أن يستهلكها عميل الملاحة Android الخاص بنا.
لم يعد التوجيه دون الاتصال بالإنترنت مدعومًا رسميًا ولكن يجب أن يظل يعمل نظرًا لأن Android يدعم معظم تطبيقات Java. راجع الإصدار 1.0 مع العرض التوضيحي لنظام Android وشاهد أيضًا طلب السحب هذا لشوكة iOS بما في ذلك العرض التوضيحي لنظام iOS.
استخدم التزامن الزمني لحساب المنطقة التي يمكن الوصول إليها وتصورها لوضع سفر معين.
يمكنك تجربة واجهة مستخدم التصحيح على http://localhost:8989/maps/isochrone لرؤية نقطة النهاية /isochrone
و /spt
أثناء العمل.
يوجد مشروع فرعي مطابق للخريطة لربط آثار GPX بالطريق.
يدعم GraphHopper العديد من خوارزميات التوجيه، مثل Dijkstra وA *
ومتغيراتها ثنائية الاتجاه. علاوة على ذلك، فهو يسمح لك باستخدام التسلسلات الهرمية للانكماش (CH) بسهولة شديدة. نحن نسمي وضع السرعة هذا؛ بدون إعداد CH هذا، نسميه الوضع المرن .
يأتي وضع السرعة مع استجابات سريعة جدًا وخفيفة الوزن (أقل من ذاكرة الوصول العشوائي) ولا يستخدم الاستدلال. ومع ذلك، لا يمكن سوى ملفات تعريف المركبات المحددة مسبقًا، كما أن إعداد CH الإضافي هذا يستهلك الكثير من الوقت والموارد.
ثم هناك الوضع المختلط الذي يتطلب أيضًا مزيدًا من الوقت والذاكرة للتحضير، ولكنه أكثر مرونة فيما يتعلق بتغيير الخصائص لكل طلب أو على سبيل المثال، دمج بيانات حركة المرور. علاوة على ذلك، فإن هذا الوضع المختلط أبطأ من وضع السرعة، ولكنه أسرع من الوضع المرن ويستخدم ذاكرة وصول عشوائي أقل لطلب واحد.
إذا كانت الاستعدادات موجودة، يمكنك التبديل بين جميع الأوضاع في وقت الطلب.
اقرأ المزيد عن التفاصيل الفنية هنا.
لقد اخترنا ترخيص Apache لنسهل عليك تضمين GraphHopper في منتجاتك، حتى لو كانت مغلقة المصدر. نقترح عليك المساهمة مرة أخرى في تغييراتك، حيث يتطور GraphHopper بسرعة.
يتم دعم OpenStreetMap مباشرة بواسطة GraphHopper. بدون البيانات المذهلة من OpenStreetMap، لن يكون GraphHopper ممكنًا على الإطلاق. ستحتاج بيانات الخريطة الأخرى إلى إجراء استيراد مخصص، راجع على سبيل المثال Ordnance Survey أو Shapefile مثل ESRI أو Navteq.
GraphHopper مكتوب بلغة Java ويعمل رسميًا على Linux وMac OS X وWindows.
قم بتضمين GraphHopper مع دعم OpenStreetMap في تطبيق Java الخاص بك عبر المقتطف التالي:
< dependency >
< groupId >com.graphhopper</ groupId >
< artifactId >graphhopper-core</ artifactId >
< version >[LATEST-VERSION]</ version >
</ dependency >
راجع تطبيق المثال الخاص بنا للبدء بسرعة.
يمكنك تخصيص GraphHopper بمعرفة Java (بواجهة برمجة تطبيقات عالية ومنخفضة المستوى) وأيضًا بدون معرفة Java باستخدام النماذج المخصصة.
باستخدام وحدة الويب، نقدم تعليمات برمجية للاستعلام عن GraphHopper عبر HTTP وتقليل استخدام النطاق الترددي قدر الإمكان. ولهذا نستخدم ترميز متعدد الخطوط فعال، وخوارزمية Ramer-Douglas-Peucker، ومرشح GZIP servlet بسيط.
من ناحية العميل، نحن نقدم عميل Java وJavaScript.
يعمل GraphHopper أيضًا على سطح المكتب في تطبيق Java دون الوصول إلى الإنترنت. لأغراض تصحيح الأخطاء، يمكن لـ GraphHopper إنتاج مربعات متجهة، أي تصور لشبكة الطرق في المتصفح (انظر #1572). يتم أيضًا توفير واجهة مستخدم منخفضة المستوى تعتمد على Swing عبر MiniGraphUI في وحدة الأدوات، راجع بعض التصورات التي تم إجراؤها باستخدامها هنا. يمكن تنفيذ تصور سريع وجاهز للإنتاج لخرائط سطح المكتب عبر Mapsforge أو Mapsforge vtm.