我最近开始使用geopandas来处理我所在城市的shapefile。最近我发现使用来自geopandas的contains方法有问题。问题如下:
我有2个不同的shapefile,具有相同的crs投影:区域和部分。我需要获得所有带有区域的截面多边形。我读到了关于contains方法的看法,看起来它正是我所需要的,但在运行它的时候,返回的多边形是空的。这里奇怪的是当我使用intersects方法而不是包含它时返回区域内的部分以及所有相邻的部分。
以下是我的代码:
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])
我是如何试图获取它或者方法本身有问题吗?
这里有形状文件重复我的问题:
问候。
答案 0 :(得分:0)
相交意味着如果两个多边形重叠,它将返回true,但是包含意味着只有当一个多边形完全在另一个多边形内时,它才会返回true。