Hapus poligon di dalam poligon lain dalam bingkai data
Aug 23 2020
Dengan adanya kerangka data, apakah mungkin menemukan poligon yang berada di dalam poligon lain dalam kerangka data yang sama dan menghapusnya berdasarkan suatu kondisi?
Misalnya, perhatikan kerangka data berikut
geometry category
0 POLYGON ((332294.432 2794730.319, 332294.032 2... A
1 POLYGON ((332193.232 2794730.719, 332192.832 2... B
2 POLYGON ((332271.632 2794731.519, 332271.232 2... C
3 POLYGON ((332271.632 2794731.519, 332271.232 2... C
Misalkan poligon 3 berada di dalam poligon 2. Karena keduanya merupakan kategori C , saya ingin menghapus poligon 3. Jika keduanya memiliki kategori yang berbeda, saya tidak akan melakukan penghapusan.
Adakah cara untuk melakukan ini dalam geopanda?
Jawaban
2 BERA Aug 23 2020 at 00:43
import geopandas as gpd
from itertools import permutations
df = gpd.read_file(r'/home/bera/Desktop/within.shp')
category_field = 'cat'
indices = df.index.to_list()
to_delete = []
for p1, p2 in permutations(indices,2): #https://stackoverflow.com/questions/104420/how-to-generate-all-permutations-of-a-list
#print(p1, p2)
if df.iloc[p1][category_field] == df.iloc[p2][category_field] and df.iloc[p1].geometry.within(df.iloc[p2].geometry):
to_delete.append(p1)
#>>to_delete
#>>Out[18]: [1]
if len(to_delete)>0:
df = df.drop(df.index[to_delete])
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'