Saya mencoba untuk membagi poligon dalam poligon yang lebih kecil dari satu baris, tetapi saya rasa saya tidak dapat menggunakan fungsi st_split. Yang saya butuhkan adalah membuat poligon kecil di dalamnya, menggunakan kisi linestring.
Saya sudah mencoba beberapa cara, tetapi saya tidak bisa mendapatkan hasilnya. Apa yang saya coba:
Membagi satu poligon dari LineString menggunakan st_split ()
Dari poligon batas.
Dan tabel Linestring:
Saya membutuhkan poligon berikut:
Masalah : Saya tidak dapat memisahkan poligon dari beberapa baris, juga poligon dari multilinestring.
Metode lain yang saya coba adalah membuat poligon dari baris dengan st_polygonize () SQL yang saya coba adalah:
SELECT
g.path[1] as gid,
g.geom::geometry(polygon, 22033) as geom
FROM
(SELECT
(ST_Dump(ST_Polygonize(geom))).*
FROM linestable
) as g;
Diekstraksi dari Membuat poligon dari segmen garis menggunakan PostgreSQL dan PostGIS
Masalah : Saya hanya bisa mendapatkan satu poligon (batas).
Dapatkah seseorang memberi tahu saya mana yang akan menjadi cara terbaik untuk mendapatkan poligon dari linestring, atau jika saya kehilangan sesuatu?
Catatan: Tabel berada dalam SRID yang sama, dan geometri dimasukkan ke dalam kisi. Di QGIS saya dapat menjalankan proses poligonisasi dari garis ke poligon dengan sempurna.
Seperti permintaan John, ini adalah tabel linestring. https://drive.google.com/file/d/0B603y_m735jfS014S0EyVnpMUEU/view?usp=sharing
Jawaban:
Saya mendapatkan ini bekerja dengan menggunakan ST_Node pertama, bersama dengan ST_Collect , untuk mengubah garis menjadi seperangkat mengangguk linestrings dalam MultiLinestring .
Seperti yang tertulis dalam dokumen untuk ST_Node :
Apa artinya ini, adalah bahwa semua linestrings digabungkan dalam semua kemungkinan kombinasi, sehingga menjadi setara dengan cincin eksterior poligon. Sedangkan, jika Anda mencoba untuk ST_Polygonize satu set LineStrings, tidak ada yang sendiri menggambarkan poligon, Anda cukup mendapatkan LineStrings kembali. Jadi, ini berhasil:
Jika Anda hanya menjalankan bagian pertama dari ini, yaitu, CTE multi, hasilnya terlihat seperti:
Sekarang, saat Anda memberi makan MultiLinestring ini ke ST_Polygonize berfungsi seperti yang diharapkan, misalnya,
Jelas, ST_AsText hanya untuk ilustrasi, dan Anda harus men-tweak, jika Anda menginginkan ID path juga.
Kuncinya adalah ST_Polygonize mengharapkan linestrings yang sudah menggambarkan garis besar poligon , seperti yang dilakukan oleh ST_Node (ST_Collect (.... di atas.
sumber
ST_Polygonize()
mengatakan itu membutuhkan string baris, atau apa gunanya untuk itu tanpa meneleponST_Node()
terlebih dahulu