Daha çox

Sarma funksiyaları ilə nəticələrin sıralanmasını necə qorumaq olar


Qaçarkən

SEÇİN * FROM digitkstra_sp ('yollar', 232, 421);

Nəticəni mənbədən başlayaraq hədəfə çatma əmri ilə deyil, gid tərəfindən sifariş verdim.

Bunun səbəbi nədir və nəticəni əldə etməyin bir yolu varmı? təbii yönləndirmə sifarişi?

Pgrouting istifadə edirəm 1.05-1 ~ aydın 1 http://ppa.launchpad.net/georepublic/pgrouting saytından


Səbəb, SQL -in birləşmələrdən istifadə edərkən nəticələrin sıralanmasını təyin etməməsidir. Beləliklə, postgre qoşulma edərkən nəticələri yenidən sifariş edir. Sarıcı funksiyaları (digitkstra_sp), əlavə məlumat əldə etmək üçün geom_table ilə əsas marşrutlaşdırma funksiyasının nəticələrini birləşdirir.

Bir həll yolu, əsas marşrutlaşdırma funksiyasının nəticələri ilə birlikdə süni sıra nömrələri yaratmaq və birləşmənin baş verdiyi xarici sorğuda sifariş verməkdir. Təəssüf ki, bu yalnız postgre 8.4 -dən sonra uyğun gəlir.

Ən qısa yolun sırası olaraq rütbə, ged, the_geom FROM -u seçin (edge_id, ROW_NUMBER () OVER (PARTITION BY 1) ', 232, 421, yalan, yalan)) marşrut olaraq w.gid = kənar_id sırasına görə sıralara qoşulun;

Bu, pgRouting -in qüsurlarından biridir. C ++ tətbiqi üçün daha asan olardı (ən qısa yolSQL-də yenidən sifariş verməkdən daha çox bir sıra nömrəsi sütununu qaytarmaq üçün birbaşa C ++ funksiyası ilə müqayisə olunur).

Digər seçim isə bunu PLPGSQL -də etməkdir. Nəticələrdən bir sıra qurursunuz və sonra sifariş göstəricisi olaraq dizidəki mövqedən istifadə edirsiniz:

shortest_path -dən array_agg (edge_id) seçin ('id, mənbə, hədəf, uzunluğu FROM trail_network'dən xərc olaraq seçin', src, dst, false, false); FOR i in 1… array_upper (kənarları, 1) LOOP, ged = kənarları [i] -dən tn -ə qədər olan, trail_network -dən ad, simvol, st_length (the_geom) seçin; XƏBƏRDARLIQ 'Edge%on trail [%] symbol [%]', kənarları [i], tn.name, tn.symbol; SON DÖNGÜ;

Layihəmlə eyni problemlə qarşılaşıram: SQL nəticəsindəki yolu izləmək üçün düzgün bir gid sifarişinə sahib olmalıyam.

Dijkstra_sp tətbiqlərinə və pgRouting seminarının funkkstra_sp_delta funksiyasına baxanda, mənə elə gəlir ki, Florianın cavabının sırası artıq 'id' identifikatoru tərəfindən qaytarılmış bir sıra ilə həyata keçirilir. Buna görə yoxlayın - bəlkə də daha yeni bir xüsusiyyətdir.

Yoxlamamış olsam da yenə də səhv edə bilərəmsə, 'SELECT gid, id,…' yerinə 'SELECT gid,…' kimi 'id' dir.

PS: Mənim də Ubuntu 10.04 və pgRouting proqram kitabxanasının ppa versiyası var.

PPS: Tamamilə səhv edirəmsə və id fərqli bir şey edirsə, məni düzəldin.

Düzəliş: Görünür tamamilə yanılıram. Göründüyü kimi, id sahəsi, sorğu nəticəsindəki gid sahəsinin yenidən fərqlənməsidir və 1 fərqlə artacaq, buna görə də nəticə id ilə sıralanarsa, gid sahəsindəki bütün ədədlər də qaydasında olacaq.


Videoya baxın: Rona Ser Ma Full Video. GEETA RABARI. LATEST GUJARATI SONGS 2017. RAGHAV DIGITAL (Sentyabr 2021).