Tôi đang thực hiện một nhiệm vụ đòi hỏi tôi phải lấy điểm mẫu sau mỗi 1000 km dọc theo bờ biển, và đã gặp phải vấn đề với Nam Cực. Từ những gì tôi có thể nói, dường như đó là một vấn đề với việc sử dụng hình học trong các chức năng, khi tôi thực sự nghĩ rằng nên sử dụng địa lý cho hoạt động này.
Sử dụng hàm từ câu hỏi tương tự này , tôi có thể tạo ra một kết quả trông như thế này : .
Như bạn có thể thấy, ST_AddMeasure()
và ST_LocateAlong()
dường như không xử lý hình học theo hình cầu, điều này dẫn đến nhiều điểm nằm ở Nam Cực. Một điểm thậm chí đã được thêm vào clip dọc theo dòng ngày (bên trái). Theo tài liệu của hai chức năng này, chỉ có thể sử dụng hình học .
Mã được sử dụng để tạo đa giác và các điểm có thể được tìm thấy ở đây , nhưng đây là SQL được sử dụng để tạo các điểm:
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;
Làm cách nào tôi có thể tạo điểm tại mỗi 1000 Km dọc theo bờ biển này?