Daha çox

Xəritəni osm.pbf faylından osm2po istifadə edərək idxal edirəm. Niyə aşağı sürətli funksiya Postgresql verilənlər bazasında pgr_dijkstra çağırır?

Xəritəni osm.pbf faylından osm2po istifadə edərək idxal edirəm. Niyə aşağı sürətli funksiya Postgresql verilənlər bazasında pgr_dijkstra çağırır?


Yaxşı gün! Osm2po istifadə edərək russia.osm.pbf faylından xəritəni idxal edirəm. Postgresql verilənlər bazasında niyə aşağı sürətli funksiya pgr_dijkstra çağırır (> 2 dəqiqə)?

Addımlarım:

java -Xmx6g -jar osm2po-core-5.0.0-assigned.jar prefiksi = pgr tileSize = 45x45,1, c RU.osm.pbf set PSQL = "c:  Program Files  PostgreSQL  9.4  bin  psql.exe "set PGPORT = 5432 set PGHOST = localhost set PGPASSWORD = 1 cd pgr% PSQL% -U postgres -d pgrouter -q -f" pgr_2po_4pgr.sql "

Verilənlər bazası sahə mənbəyi və hədəfi olan bir cədvəl yaratdı:

CƏDVƏL YARATDIN pgr_2po_4pgr (id tam ədədi NULL deyil, osm_id bigint, osm_name xarakteri dəyişir, osm_meta xarakteri dəyişir, osm_source_id bigint, osm_target_id bigint, clazz integer, bayraqlar tam, mənbə tam, hədəf tam, ikiqat dəqiq, kmh tam, ikiqat dəqiqlik, x1 ikiqat dəqiqlik, y1 ikiqat dəqiqlik, x2 ikiqat dəqiqlik, y2 ikiqat dəqiqlik, geom_way həndəsi (LineString, 4326), CONSTRAINT pkey_pgr_2po_4pgr PRIMARY KEY (id))

Sorğum:

SEÇMƏK * FROM pgr_dijkstra ('SEÇİN id, mənbə, hədəf, dəyəri FRGR ppo_2po_4pgr', 30837, 682499, yalan, yalan)

Sorğunun icra müddəti 2 dəqiqədən çoxdur. Niyə?

Bu sorğu çox sürətli (~ 1 saniyə):

http: // localhost: 8888 / Osm2poService? cmd = fr & source = 30837 & target = 682499 & findShortestPath = true & ignoreRestrictions = false & ignoreOneWays = false & routerClassId = 0 & heuristicFactor = 0.0 & maxCost = 0.0 & format = geojson


pgRuting sorğuları seçdiyiniz yol şəbəkəsinin kiçik olduğu qədər sürətlidir. Və seçdiyiniz yol şəbəkəsi daha yavaşdır. Seçiminizin ilk arqumentidirpgr_dijkstrafunksiya:

Pgr_2po_4pgr'dan ID, mənbə, hədəf, maliyyəni SEÇİN;

Beləliklə, şəbəkə cədvəlinizin bütün qeydlərini seçdiyinizi görürsünüzpgr_2po_4pgr, başlanğıc və bitmə nöqtəniz bir-birinizə çox yaxın olsa belə. Bu vəziyyətdədirsə, başlanğıc və bitmə nöqtəsini ehtiva edən bir BBOX-u klip edə bilərsiniz və cavab müddətini yaxşılaşdıracaqdır.

pgRouting, marşrut qrafikini yaddaşda saxlamır, buna görə hər istək ilə bir cədvəldə saxlanılan şəbəkə məlumatları yüklənir və qrafaya çevrilir. Bu, böyük şəbəkələr üçün yavaş ola bilər.osm2poServiceəvvəlcədən işlənmiş bir qrafiki yaddaşa yükləyir və buna görə sonrakı istəklər üçün daha sürətli olur. Ancaq yol şəbəkənizdəki hər dəyişiklik üçün (həndəsələr və ya xərclər) məlumatları yenidən emal etməlisiniz.


Seq, id1 AS node, id2 AS edge, g.geom FROM pgr_dijkstra ('SELECT id, source, target, cost FROM pgr as r, (SELECT ST_Expand (ST_Extent (geom), 0.1) "box from box from FROM as l1 WHERE l1 .source = 1 OR l1.target = 20) WHERE box kimi r.geom && box.box ', 1, 20, false, false) kimi r INNER JOIN pgr as g ON r.id2 = g.id; Seq, id1 AS node, id2 AS kənar, dəyəri FROM pgr_astar ('SELECT id, source, target, cost, x1, y1, x2, y2 FROM pgr from r, (SELECT ST_Expand (ST_Extent (geom), 0.1) "box Pgr-dən l1 HARADA l1.source = 1 VƏ ya l1.target = 20) harada box r.geom && box.box ', 1, 20, false, false);