Je travaille sur une tâche qui m'oblige à obtenir des points d'échantillonnage tous les 1000 km le long des côtes et j'ai rencontré un problème avec l'Antarctique. D'après ce que je peux dire, cela semble être un problème avec l'utilisation de la géométrie dans les fonctions, alors que je pense vraiment que la géographie devrait être utilisée pour cette opération.
En utilisant la fonction de cette question très similaire , je suis en mesure de produire un résultat qui ressemble à ceci: .
Comme vous pouvez le voir, ST_AddMeasure()
et ST_LocateAlong()
ne semblez pas traiter la géométrie de manière sphérique, ce qui entraîne de nombreux points qui se trouvent sur le pôle Sud. Un point a même été ajouté sur le clip le long de la ligne de date (côté gauche). Selon la documentation de ces deux fonctions, seule la géométrie peut être utilisée.
Le code utilisé pour générer le polygone et les points peut être trouvé ici , mais c'est le SQL utilisé pour générer les points:
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;
Comment générer des points tous les 1000 km le long de ce littoral?