Pertanyaan hampir sama dengan ini , tetapi saya perlu menggunakan PostGIS.
Saya memiliki sejumlah polyline, dan ingin mengubah bentuknya menjadi titik setiap n meter di sepanjang garis ini.
sunting: Terima kasih banyak untuk Stefan. Kueri terakhir saya agak berbeda, mungkin karena versi PostGIS (1.5) yang lebih lama, tetapi pada akhirnya saya mendapatkan apa yang dibutuhkan. Poin digabungkan ke dalam peta panas kepadatan jalan.
Jawaban:
Kueri ini harus melakukan trik:
Pada awalnya Anda memilih linestrings yang berbeda dari kolom polylinestring Anda
ST_Dump
Maka Anda harus mendefinisikan elemen ukur dengan
ST_AddMeasure
, dimulai dengan 0 (mulai dari linestring) dan akhir linestring (sama dengan panjang linestring).Generate_series
membuat serangkaian pengukuran ini pada langkah 10. Di sini Anda dapat mendefinisikan"n metres"
(dalam contoh ini 10 meter). Thei
nilai dimulai lagi untuk setiap LineString.Dengan
ST_LocateAlong
danST_GeometryN
Anda membuat titik geometri multidimensi.Akhirnya Anda harus mengekstraksi nilai X dan Y dari geometri ini dan membuat titik darinya.
Hasilnya bisa seperti ini:
EDIT
Agar adil, saya ingin menambahkan informasi ini: Gagasan dan kueri dalam jawaban ini diekstraksi dari kueri yang saya gunakan untuk membuat garis drape dari DEM di PostGIS. Implementasi yang sangat baik dari ini dijelaskan dalam artikel ini dari Mathieu Leplatre.
sumber
WITH line AS
digunakan? Saya tidak melihat 'garis' di tempat lain.WITH Query
menyediakan penggunaan tabel sementara untuk permintaan yang lebih besar. Berikut ini beberapa informasi: postgresql.org/docs/8.4/static/queries-with.html .line
digunakan di subquery berikutnyalinemeasure
. Data yang dipilih dalam subquery ini didasarkan pada pilihan yang dibuat dalamline
subquery. Mereka dibangun di atas satu sama lain. Harapan itu membantu!st_locate_along_measure
.