Estoy trabajando en una tarea que requiere que obtenga puntos de muestra cada 1000 km a lo largo de las costas, y me he encontrado con un problema con la Antártida. Por lo que puedo decir, parece ser un problema con el uso de la geometría en las funciones, cuando realmente creo que la geografía debería usarse para esta operación.
Uso de la función de esta pregunta muy similar , soy capaz de producir un resultado que tiene este aspecto: .
Como puede ver, ST_AddMeasure()
y ST_LocateAlong()
no parece tratar la geometría de forma esférica, lo que resulta en muchos puntos que se encuentran en el Polo Sur. Incluso se agregó un punto en el clip a lo largo de la línea de fecha (lado izquierdo). Según la documentación de estas dos funciones, solo se puede utilizar la geometría .
El código utilizado para generar el polígono y los puntos se puede encontrar aquí , pero este es el SQL utilizado para generar los puntos:
CREATE TABLE atest AS WITH line AS
(SELECT
id,
ST_ExteriorRing((ST_Dump(geom)).geom) AS geom
FROM line_sample_test),
linemeasure AS
(SELECT
ST_AddMeasure(line.geom, 0, (ST_Length(line.geom))::int) AS linem,
generate_series(0, (ST_Length(line.geom))::int, 10) AS i
FROM line),
geometries AS (
SELECT
i,
ST_LocateAlong(linem, i) AS geom
FROM linemeasure)
SELECT
* from geometries;
¿Cómo puedo generar puntos cada 1000 km a lo largo de esta costa?