Daha çox

Aşağıdakı seqmentə ən yaxın qovşaq alın


Bir nöqtədən ən yaxın düyünü almağa çalışıram (İd 1). Koordinatlar (lat / uzun) bir istifadəçi tərəfindən daxil edilir. Kimi bəzi funksiyalardan istifadə edirəm pgr_nearest_node () və ya get_nearest_node () get_nearest_node funksiyası istinadından

1: http://www.sqlexamples.info/SPAT/postgis_nearest_point.htm. Məsələ burasındadır ki, nöqtə aralarındakı düz xəttdən istifadə edərək ən yaxın düyünü götürür (928-3670-317-929 İd qovşaqları). Şəbəkədəki ən yaxın nodu necə əldə edə bilərəm? . Pgr_dijkstra funksiyasından istifadə etməyi düşünürəm, amma əvvəllər şərh edilmiş funksiyalara qayıtdığım üçün bir mənbə idinə ehtiyacım var.


Bəlkə də daha zərif bir yol var, ancaq aşağıdakı sorğu işləməlidir:

nearest_line ilə - bir CTE-də ən yaxın sətri əldə etmək üçün sorğu qoyun - CTE-dən iki dəfə istifadə edin (mənbəyi seçin, (ST_Distance_Sphere (ST_GeomFromText (ST_GeomFromText ('POINT (lon lat)', 4326) limit 1) ilə seqment_sahibəsi sırasından hədəf seçin)) seçin id from - köşələrdən mənbə və hədəf kimliklərini əldə etmək üçün bir birlik sorğusu (id, seqment_table_vertices_pgr p1 daxili qoşulma mənbəyindəki yaxın qoşulma xətti l = id birləşdirmə hamısı seçmə id, seqment_table_vertices_pgr p1 daxili qoşulma hədəf yaxın id = l) seçin a - nöqtədən məsafəyə görə sıralayın və bir qeyd qaydasını st_distance_sphere (the_geom, ST_SetSRID (ST_Point (lon, lat), 4326)) limit 1 ilə qaytarın