2016-08-22 4 views
1

Недавно я начал использовать геоданные для обработки шейп-файлов моего города. Недавно я нашел проблему с использованием метода contains из геоданных. Проблема заключается в следующем:geandas содержит метод не возвращает многоугольники

У меня есть 2 разных шейп-файла с одной и той же проекцией crs: районы и секции. Мне нужно получить все участки полигона, которые находятся в округе. Я прочитал о методе contains, и похоже, что это именно то, что мне нужно, но в момент его запуска возвращающиеся многоугольники пустые. Странная вещь здесь, когда я использую метод пересечений, вместо этого содержит, он возвращает разделы в пределах района плюс все смежные разделы к этому.

Ниже мой код:

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]) 

Есть ли какие-либо проблемы с тем, как я пытаюсь получить это или проблема с самим методом?

Здесь находятся шейп, чтобы повторить мою проблему:

Районы: https://ufile.io/0a6f1

Разделы: https://ufile.io/e2463

С уважением.

ответ

0

Пересечение означает, что оно вернет true, если два полигона перекрываются, однако содержит средства, которые вернут true, только если один многоугольник полностью находится внутри другого.