Vairāk

Iegūstiet tuvāko mezglu pēc segmenta

Iegūstiet tuvāko mezglu pēc segmenta


Es cenšos iegūt tuvāko mezglu no punkta (Id 1). Koordinātas (lat / long) ievada lietotājs. Es izmantoju dažas funkcijas, piemēram, pgr_nearest_node () vai get_nearest_node () no funkcijas get_nearest_node atsauces

1: http://www.sqlexamples.info/SPAT/postgis_nearest_point.htm. Problēma ir tāda, ka punkts ņem tuvāko mezglu, izmantojot taisnu līniju starp tiem (928-3670-317-929 Id mezgli). Kā es varu iegūt tuvāko tīkla mezglu? . Es domāju par pgr_dijkstra funkcijas izmantošanu, bet tai ir nepieciešams avota ID, lai es atgrieztos pie iepriekš komentētajām funkcijām.


Varbūt ir kāds elegants veids, taču jādarbojas šādam vaicājumam:

ar tuvāko_rindu kā - ievietojiet vaicājumu, lai iegūtu tuvāko rindu CTE - izmantojiet CTE divreiz (atlasiet avotu, atlasiet segmenta tabulas secību pēc [ST_Distance_Sphere (ST_GeomFromText ('POINT (lon lat)', 4326) 1. ierobežojums) atlasiet id from - savienojuma vaicājums, lai iegūtu avotu un mērķa ID no virsotnēm (atlasiet id, the_geom no segment_table_vertices_pgr p1 iekšējā pievienošanās tuvākā_līnija l uz avota = id savienojuma visi atlasa id, the_geom no segmenta_tabula_versijas_pgr p1 iekšējā pievienošanās tuvākā_līnija l mērķī = id) a - kārtojiet to pēc attāluma no punkta un atgrieziet viena ieraksta secību pēc st_distance_sphere (the_geom, ST_SetSRID (ST_Point (lon, lat), 4326)) 1. ierobežojuma

Skatīties video: Makramē Kvadrātveida mezgls..