Estou trabalhando em uma tarefa que exige que eu obtenha pontos de amostra a cada 1000 km ao longo da costa e tenha um problema com a Antártica. Pelo que sei, parece haver um problema com o uso da geometria nas funções, quando realmente acho que a geografia deve ser usada para esta operação.
Usando a função de esta questão muito semelhante , eu sou capaz de produzir um resultado parecido com este: .
Como você pode ver, ST_AddMeasure()
e ST_LocateAlong()
não parece tratar a geometria esfericamente, o que resulta em muitos pontos no Pólo Sul. Um ponto foi adicionado ao clipe ao longo da linha da data (lado esquerdo). De acordo com a documentação dessas duas funções, somente a geometria pode ser usada.
O código usado para gerar o polígono e os pontos pode ser encontrado aqui , mas este é o SQL usado para gerar os pontos:
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;
Como posso gerar pontos a cada 1000 km ao longo deste litoral?