Buffer poligon hingga menyentuh tetangga menggunakan PyQGIS?

8

Saya memiliki shapefile yang terdiri dari sejumlah poligon. Poligon tetangga sering berbagi atribut.

Yang perlu saya lakukan adalah buffer poligon ini berdasarkan atribut umum. Namun, saya ingin memperluas buffer tersebut sampai mereka bertemu, pada titik mana mereka bisa berhenti.

Saya memiliki mock-up yang disusun dengan tergesa-gesa:

poorlyDrawExample

Yang saya punya kode-bijaksana adalah sebagai berikut:

from qgis.core import *
from qgis.analysis import *

layer=qgis.utils.iface.activeLayer() 

QgsGeometryAnalyzer().dissolve(layer, "D:/test_dissolved.shp", onlySelectedFeatures=False, uniqueIdField=3, p=None)

Sejujurnya saya tidak terlalu fasih dalam dokumentasi QGIS API dan meskipun upaya terbaik saya, saya tidak dapat menemukan metode yang cocok untuk ini. QgsGeometryAnalyzer().dissolvememungkinkan saya untuk melarutkan buffer tetapi bukan itu yang saya kejar.

Haruskah aku mencari ke arah lain di sini?

Ingwe
sumber

Jawaban:

5

Sesuatu yang bisa Anda coba adalah proses thiessen di mana Anda voronoi poligon kemudian larut dengan atribut serupa. Saya tidak tahu ini seperti apa di python tapi mungkin langkah-langkahnya bermanfaat bagi Anda.

Knightshound
sumber
Saya akan mencoba mencari tahu rute Voronoi menggunakan pyQGIS dan melihat ke mana saya pergi. Saya lebih suka ide menggunakan solusi open source.
Ingwe
Apa yang Anda maksud dengan open source? QGIS dan semua alatnya berada di bawah lisensi sumber terbuka gratis.
Knightshound
2

Anda mungkin ingin menjelajahi fungsi analisis raster. Lihat Membuat centreline untuk setiap poligon dalam basis data ngarai bawah laut menggunakan ArcGIS untuk Desktop Basic? dan Membuat poligon Thiessen (Voronoi) menggunakan garis (bukan titik) sebagai fitur input? untuk inspirasi lebih lanjut.

Ini mengharuskan Anda untuk menggunakan resolusi raster yang sesuai tentunya.

bugmenot123
sumber
Saya suka ide ini untuk mengkonversi ke raster dan itu terjadi pada saya tetapi apakah dataset besar tidak menghasilkan waktu pemrosesan yang sangat lambat?
Ingwe
Mungkin tidak lebih lambat daripada melakukan hal yang sama dengan vektor.
bugmenot123
1

Saya punya tugas yang agak terkait hari lain. Dalam teori, voronoi poligon dengan centrepoint bangunan (tertimbang) seharusnya hanya menjadi solusi untuk kasus Anda tetapi tidak berhasil untuk saya; PostgreSQL bukan yang Anda minta, tetapi, sebagai solusi, jika itu adalah 'garis tengah' antara setiap bangunan yang Anda cari untuk langkah pertama, menggunakan PostGIS ST_ApproximateMedialAxis mungkin patut dicoba. Anda harus membuat poligon dasar untuk seluruh area studi dan memotong poligon bangunan sebelum menerapkan fungsi pada poligon dasar untuk mendapatkan hasil terkait. Bisa bekerja, mungkin tidak ...

geozelot
sumber