Saya mengerjakan tugas yang mengharuskan saya untuk mendapatkan titik sampel setiap 1000 km di sepanjang garis pantai, dan telah mengalami masalah dengan Antartika. Dari apa yang bisa saya katakan, tampaknya ada masalah dengan penggunaan geometri dalam fungsi, ketika saya benar-benar berpikir geografi harus digunakan untuk operasi ini.
Menggunakan fungsi dari pertanyaan yang sangat mirip ini , saya mampu menghasilkan hasil yang terlihat seperti ini: .
Seperti yang dapat Anda lihat, ST_AddMeasure()
dan ST_LocateAlong()
sepertinya tidak memperlakukan geometri secara bulat, yang menghasilkan banyak titik yang berada di Kutub Selatan. Titik bahkan ditambahkan pada klip di sepanjang garis tanggal (sisi kiri). Per dokumentasi dari kedua fungsi ini, hanya geometri yang dapat digunakan.
Kode yang digunakan untuk menghasilkan poligon dan titik dapat ditemukan di sini , tetapi ini adalah SQL yang digunakan untuk menghasilkan titik:
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;
Bagaimana saya bisa menghasilkan poin di setiap 1000 Km di sepanjang garis pantai ini?