2016-08-22 1 views
1

I Kürzlich begann ich Geopandas zu verwenden, um Shapefiles meiner Stadt zu bearbeiten. Kürzlich habe ich ein Problem mit der contains-Methode von geopandas gefunden. Das Problem ist das folgende:Geopandas enthält Methode gibt Polygone nicht zurück

Ich habe 2 verschiedene Shapefiles mit der gleichen crs Projektion: Bezirke und Abschnitte. Ich muss alle Abschnittspolygone erhalten, die sich in einem Bezirk befinden. Ich lese über die Methode contains und es sieht so aus, als ob es genau das ist, was ich brauche, aber im Moment der Ausführung sind die darin enthaltenen Polygone leer. Das Seltsame ist hier, wenn ich die Schnittpunktmethode verwende, enthält sie die Abschnitte innerhalb des Bezirks und alle angrenzenden Abschnitte dazu.

Nachstehend ist mein Code:

districts = GeoDataFrame.from_file('districts_WGS84.shp') 
sections = GeoDataFrame.from_file('sections_WGS84.shp') 

districts.crs == sections.crs #To be sure the files share the same crs 

#The following line returns an empty array, but it should return all seccions within a district 
print len(sections[sections.contains(districts.geometry[34]) == True]) 
# districts.geometry[34] is a fixed discrict in order to run a test 

#The following line returns the list of all sections within the district plus adjacent ones 
print len(sections[sections.intersects(districts.geometry[34]) == True]) 

Gibt es ein Problem mit, wie ich versuche, es zu bekommen oder ein Problem mit der Methode selbst?

Hier gibt es die Shape-Dateien, mein Problem zu wiederholen:

Bezirke: https://ufile.io/0a6f1

Sektionen: https://ufile.io/e2463

Grüße.

Antwort

0

Intersect bedeutet, dass es true zurückgibt, wenn die beiden Polygone überlappt sind, aber contains bedeutet, dass es nur dann true zurückgibt, wenn ein Polygon vollständig innerhalb eines anderen Polygons liegt.

Verwandte Themen