Saya ingin mendapatkan persimpangan beberapa poligon. Menggunakan shapely
paket Python , saya dapat menemukan persimpangan dua poligon menggunakan intersection
fungsi. Apakah ada fungsi efisien yang serupa untuk memperoleh persimpangan beberapa poligon?
Berikut ini cuplikan kode untuk memahami maksud saya:
from shapely.geometry import Point
coord1 = ( 0,0 )
point1 = Point(coord1)
circle1 = point1.buffer(1)
coord2 = ( 1,1 )
point2 = Point(coord2)
circle2 = point2.buffer(1)
coord3 = ( 1,0 )
point3 = Point(coord3)
circle3 = point3.buffer(1)
Persimpangan dua lingkaran dapat ditemukan oleh circle1.intersection(circle2)
. Saya dapat menemukan persimpangan ketiga lingkaran dengan circle1.intersection(circle2).intersection(circle3)
. Namun, pendekatan ini tidak dapat dijual ke sejumlah besar poligon karena membutuhkan kode yang semakin banyak. Saya ingin fungsi yang mengambil jumlah poligon yang sewenang-wenang dan mengembalikan persimpangan mereka.
python
polygon
intersection
polygon-creation
shapely
terpecah
sumber
sumber
Jawaban:
Salah satu pendekatan yang mungkin dapat mempertimbangkan kombinasi pasangan poligon, persimpangan mereka dan akhirnya penyatuan semua persimpangan melalui penyatuan bertingkat (seperti yang disarankan di sini ):
Pendekatan yang lebih efisien harus menggunakan indeks spasial, seperti Rtree , untuk berurusan dengan banyak geometri (bukan kasus tiga lingkaran):
sumber
Mengapa tidak menggunakan iterasi atau rekursif? sesuatu seperti :
sumber
Berikan kode ini kesempatan. itu cukup sederhana dalam konsep dan saya percaya membuat Anda mendapatkan apa yang Anda cari.
dan jika Anda ingin output disimpan sebagai penggunaan, gunakan fiona:
output ini -
sumber
k
danv
merupakan pilihan yang buruk untuk nama variabel dalamdict
pemahaman Anda . Variabel-variabel tersebut masing-masing merujuk pada elemen berbedadic.items()
, bukan pasangan nilai kunci. Sesuatu sepertia, b
akan kurang menyesatkan.