Lagi

Menemukan titik luar terdekat ke titik di dalam poligon di PostGIS?


Ada ST_ClosestPoint() yang terkenal mengembalikan titik terdekat di dalam poligon ke beberapa titik luar.

Saya mencari masalah terbalik: Saya memiliki lokasi di dalam poligon, dan saya ingin mendapatkan lokasi terdekat di luar poligon.

Saya mulai berpikir bahwa langkah pertama adalah menemukan titik terdekat pada batas poligon. Meskipun saya tidak tahu bagaimana mencapai ini, saya tidak yakin bagaimana melanjutkan bahkan dari tahap ini (mengingat saya memiliki titik batas terdekat dengan titik dalam saya).

EDIT: Bagaimana dengan membandingkan hasil dari ST_Line_Locate_Point() yang berjalan di semua garis poligon dan memilih minimum: Ini memberi saya titik terdekat pada garis perbatasan

DENGAN border_closest_points SEBAGAI ( PILIH ST_Line_Locate_Point(border_lines.geom, ST_GeomFromText('POINT(lon lat)', 4326)) AS pecahan, ST_Line_Interpolate_Point(border_lines.geom, ST_Line_Locate_Point(border_line_Gom, 4326(lat_lines.Geom, 'PO'Fromgeom ))) AS terdekat_point_on_line FROM border_lines ) SELECT border_closest_points.closest_point_on_line AS geom, ST_Distance(ST_GeomFromText('POINT(lon lat)', 4326), border_closest_points.closest_point_on_line) AS distance FROM border_DERLIMIT BY jarak ATAU

Anda dapat membuang batas poligon denganST_Cincin Eksterior, maka akan mencari titik terdekat pada linestring yang dihasilkan, jika ingin titik yang letaknya sedikit di luar gunakanST_Penyanggapertama untuk menambahkan sedikit ke poligon asli.

DENGAN poligon AS( SELECT ST_Buffer(ST_GeomFromText('POINT(0 0)', 4326),2) sebagai geom-- lingkaran ini akan berpura-pura menjadi poligon perbatasan ) SELECT ST_AsTEXT(ST_ClosestPoint(ST_ExteriorRing(ST_Buffer(polygons.geom,0,0000000001) )) ,ST_GeomFromText('POINT(1 0)', 4326))) DARI poligon;