Я працюю над завданням, яке вимагає, щоб я отримував вибіркові бали кожні 1000 км уздовж берегової лінії, і у мене виникли проблеми з Антарктидою. З того, що я можу сказати, видається, що проблема використання геометрії у функціях, коли я дійсно думаю, що географія повинна використовуватися для цієї операції.
Використання функції від цього дуже подібного питання , я можу отримати результат , який виглядає наступним чином : .
Як бачите, ST_AddMeasure()
і ST_LocateAlong()
, здається, не обробляйте геометрію сферично, що призводить до багатьох пунктів, що сидять на Південному полюсі. На кліпі навіть додано крапку по лінії дати (зліва). Згідно з документацією цих двох функцій можна використовувати лише геометрію .
Код, який використовується для генерування багатокутника та точок, можна знайти тут , але це SQL, який використовується для генерування точок:
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;
Як я можу генерувати очки на кожні 1000 км уздовж цієї берегової лінії?