أكثر

تسريع pgr_dijkstra باستخدام المربع المحيط في PostGis2.0


أستخدم PostGIS لأول مرة لحساب المسافات بين نقطتين ، لنظام حجز مدرسة لتعليم القيادة أعمل عليه. لقد قمت بتحميل جميع الخرائط الخاصة بأستراليا ، لكن الاستعلام الذي كتبته يستغرق 5-6 ثوانٍ لتنفيذه. معظم الرحلات قصيرة جدًا لذا كنت أفكر في استخدام مربع إحاطة ولكن يبدو أن الوظيفة ذات الصلة (dijkstra_sp_delta) قد تم إهمالها. هل لدى أي شخص أي فكرة عن كيفية تنفيذ هذا أو تسريع هذه الأنواع من الوظائف بشكل عام؟ أرغب في تقليل وقت الاستعلام إلى ثانية واحدة أو أقل.

حدد SUM ((SELECT ST_length (ST_Transform (the_geom ، 28355)) من الطرق w حيث w.gid = id2)) كمسافة_in_metres من pgr_dijkstra ('SELECT gid AS id ، source ، target ، ST_length (ST_Transform (the_geom ، 28355)) / 1000 * 60 / maxspeed_forward كتكلفة من الطرق ، 247201 ، 298103 ، خطأ ، خطأ) ؛

مخطط ، ما عليك سوى إنشاء إنشاء مربع الإحاطة والتحقق من استعلامك أو لف pgr_dikstra في دالة تقوم بذلك

على سبيل المثال

حدد SUM ((SELECT ST_length (ST_Transform (the_geom ، 28355)) من الطرق w حيث w.gid = id2)) كمسافة_in_metres من pgr_dijkstra ('SELECT gid AS id ، source ، target ، ST_length (ST_Transform (the_geom ، 28355)) / 1000 * 60 / maxspeed_forward كتكلفة من الطرق حيث the_geom && ST_Expand ((SELECT ST_Collect (the_geom) FROM way_vertices_pgr WHERE id IN (247201،298103))، 0.01) '، 247201، 298103، false، false) ؛

ستحتاج إلى تعديل 0.01 قليلاً.


شاهد الفيديو: Dijkstras Algorithm Directed Graph Example (شهر اكتوبر 2021).