Sto lavorando a un'attività che mi richiede di ottenere punti campione ogni 1000 km lungo le coste e di avere un problema con l'Antartide. Da quello che posso dire, sembra essere un problema con l'uso della geometria nelle funzioni, quando in realtà penso che la geografia dovrebbe essere utilizzata per questa operazione.
Utilizzando la funzione da questa domanda molto simile , sono in grado di produrre un risultato che assomiglia a questo: .
Come puoi vedere, ST_AddMeasure()
e ST_LocateAlong()
non sembra trattare la geometria sferica, il che si traduce in molti punti che si trovano sul Polo Sud. È stato anche aggiunto un punto sulla clip lungo la linea della data (lato sinistro). Per la documentazione di queste due funzioni, è possibile utilizzare solo la geometria .
Il codice utilizzato per generare il poligono e i punti può essere trovato qui , ma questo è l'SQL utilizzato per generare i punti:
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;
Come posso generare punti ogni 1000 km lungo questa costa?