python - 如何检查点是否在多边形 shapefile 内? pandas
问题描述
我有一个像这样的“point.csv”,坐标系是WGS84(4326)
df = pd.DataFrame("point.csv")
user_ID day latitude longitude
0 19998 2011/1/1 35.685067 140.211433
2 19998 2011/1/1 35.684606 140.210978
4 19998 2011/1/1 35.690237 140.231615
6 19998 2011/1/1 35.660564 140.314109
9 19998 2011/1/1 35.68513 140.210979
10 19998 2011/1/2 35.685047 140.211501
13 19998 2011/1/2 35.651321 140.119088
15 19998 2011/1/2 35.684992 140.211178
16 19998 2011/1/3 35.685346 140.211135
20 19998 2011/1/3 35.7845 140.317763
23 19998 2011/1/3 35.759994 140.296097
26 19998 2011/1/3 35.685233 140.210879
27 19998 2011/1/4 35.685178 140.211602
29 19998 2011/1/4 35.548604 139.783602
31 19998 2011/1/4 35.551758 139.786091
33 19998 2011/1/4 35.551758 139.786091
35 19998 2011/1/4 35.537746 139.791026
37 19998 2011/1/4 35.548604 139.783602
41 19998 2011/1/4 35.545373 139.713378
42 19998 2011/1/5 35.545428 139.713465
我有一个像这样的多边形(shapefile):
“polygon.shp”(坐标系为 WGS84(4326))
我想检查点是否在多边形内(或相交),如果是,df['whether'] =1; 如果没有,df['是否'] = 0
我应该怎么办 ?
我尝试这样的代码:
polygon_map = gpd.GeoDataFrame.from_file('polygon.shp')
df['geometry'] = gpd.GeoSeries(list(zip(df['longitude'],df['latitude']))).apply(Point)
df2 = gpd.GeoDataFrame(df.copy())
df2.crs = {'init': 'epsg:4326'}
df2['wether_area'] = np.where(df2.geometry.within(polygon_map), 1, 0)
但结果表明多边形内只有一个点。但实际上,所有点都应该在多边形内。
我不知道怎么了。
非常感谢!!
解决方案
推荐阅读
- idris - Idris:有没有办法在等式证明中引用抽象变量?
- angular - ionic 4 *ngFor 在任何项目中都不起作用
- c# - 我似乎无法从 .txt 文件中的不同元素中提取周长和面积方法
- flutter - 如何初始化一个方法,以便我可以在另一个方法中使用它作为参数?
- batch-file - 如何在cmd中获取小写的当前文件夹名称作为变量?
- jquery - 为我的网站存储暗模式偏好
- android - 如何在联系人详细信息中获取电子邮件地址
- python - 如何在ndarray中明智地计算特定元素的行/列?
- javascript - 谷歌地图API中有两个不同图像的两个标记
- git - 在 git 上没有什么可提交的,但我的分支上有一些更改