Vairāk

Es importēju karti no faila osm.pbf, izmantojot osm2po. Kāpēc zema ātruma funkcija izsauc pgr_dijkstra datu bāzē Postgresql?

Es importēju karti no faila osm.pbf, izmantojot osm2po. Kāpēc zema ātruma funkcija izsauc pgr_dijkstra datu bāzē Postgresql?


Laba diena! Es importēju karti no faila russia.osm.pbf, izmantojot osm2po. Kāpēc zema ātruma funkcija izsauc pgr_dijkstra datu bāzē Postgresql (> 2 minūtes)?

Mani soļi:

java -Xmx6g -jar osm2po-core-5.0.0-parakstīts. jar prefikss = 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 "

Datu bāze izveidoja tabulu ar lauka avota un mērķa indeksu:

CREATE TABLE pgr_2po_4pgr (id vesels skaitlis NULL, osm_id bigint, osm_name raksturs mainīgs, osm_meta raksturs mainīgs, osm_source_id bigint, osm_target_id bigint, clazz vesels skaitlis, karodziņu skaitlis, avota vesels skaitlis, mērķa vesels skaitlis, km dubultas precizitātes, km dubults precizitāte, atgriezeniskā vērtība km dubultprecizitāte, x1 dubultprecizitāte, y1 dubultprecizitāte, x2 dubultprecizitāte, y2 dubultprecizitāte, geom_way ģeometrija (LineString, 4326), CONSTRAINT pkey_pgr_2po_4pgr PRIMĀRĀ ATSLĒGA (id)

Mans vaicājums:

SELECT * FROM pgr_dijkstra ('SELECT id, source, target, cost FROM pgr_2po_4pgr', 30837, 682499, false, false)

Vaicājuma izpildes laiks ir vairāk nekā 2 minūtes. Kāpēc?

Šis vaicājums ir ļoti ātrs (~ 1 sekunde):

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


pgMaršrutēšanas vaicājumi ir tikpat ātri, cik mazāks ir izvēlētais ceļu tīkls. Jūsu izvēlētais ceļu tīkls ir tikpat lēns. Jūsu atlase ir pirmaispgr_dijkstrafunkcija:

SELECT ID, avots, mērķis, izmaksas FROM pgr_2po_4pgr;

Tātad jūs redzat, ka atlasāt visus tīkla tabulas ierakstuspgr_2po_4pgr, pat ja jūsu sākuma un beigu punkts ir ļoti tuvu viens otram. Ja tas tā ir, tad jūs varētu nospiest BBOX, kurā ir jūsu sākuma un beigu punkts, un tas uzlabos reakcijas laiku.

pgRouting maršrutēšanas grafiku neglabā atmiņā, tāpēc ar katru pieprasījumu tabulā saglabātie tīkla dati tiek ielādēti un pārvērsti diagrammā. Lieliem tīkliem tas var būt lēns.osm2poPakalpojumsielādē atmiņā iepriekš apstrādātu grafiku, un tāpēc tas ir ātrāks nākamajiem pieprasījumiem. Bet par visām izmaiņām jūsu ceļu tīklā (ģeometrija vai izmaksas) dati jāapstrādā vēlreiz.


SELECT sek, id1 AS mezgls, id2 AS mala, g.geom FROM pgr_dijkstra ('SELECT id, source, target, cost FROM pgr as r, (SELECT ST_Expand (ST_Extent (geom), 0.1) kā lodziņš FROM pgr kā l1 WHERE l1 .source = 1 VAI l1.target = 20) kā lodziņš WHERE r.geom && box.box ', 1, 20, false, false) kā r INNER JOIN pgr kā g ON r.id2 = g.id; SELECT sek, id1 AS mezgls, id2 AS mala, izmaksas FROM pgr_astar ('SELECT id, source, target, cost, x1, y1, x2, y2 FROM pgr as r, [SELECT ST_Expand (ST_Extent (geom), 0.1) kā lodziņš FROM pgr kā l1 WHERE l1.source = 1 OR l1.target = 20) kā lodziņš WHERE r.geom && box.box ', 1, 20, false, false);