Vairāk

PostGIS: iegūstiet tuvāko punktu starp ģeometriju un daudzpunktu


Es domāju, ka mans jautājums ĢIS profesionāļiem nav tik grūts, bet es neatradu atbildi uz savu problēmu (pat ne citos jautājumos).

Problēma: PostgreSQL datu bāzē esmu norādījis divas tabulas (1. tabula, 2. tabula) ar punktiem kā ģeometriju. Tagad es meklēju katram 1. tabulas punktam tuvāko punktu no visiem 2. tabulas punktiem. pēc tam tuvākais punkts (no 2. tabulas) jāveido līdz līnijpārvadātājam ar pašreizējo punktu no 1. tabulas.

mana pieeja:

CREATE TABLE new_table_shortest_line WITH (OIDS) AS SELECT a.name, a.type, ST_MakeLine (a.the_geom, ST_ClosestPoint (a.the_geom, ST_Collect (b.the_geom))) Kā vistuvākā_rinda no tabulas1 kā tabula1, kā tabula1 AS b GRUPA .nosaukums, a.tips, a.dzimums, b.dzimts

Šī SQL vaicājuma rezultātam jābūt jaunai tabulai ar līniju līnijām kā ģeometrijām, kas nosaka vistuvākās līnijas starp 1. tabulas punktu un 2. tabulas tuvāko punktu.


Apskatiet ST_ShortestLine. http://postgis.net/docs/manual-2.1/ST_ShortestLine.html

ST_ClosestPoint ir pirmais punkts ST_ShortestLine.

Kaut kam tam vajadzētu darboties.

SELECT DISTINCT ON (a.id) ST_ShortestLine (a.geom, b.geom) FROM table1 a, table2 b ORDER BY a.id, ST_Distance (a.geom, b.geom);