我想计算每个多边形有多少个点
# Credits of this code go to: https://stackoverflow.com/questions/69642668/the-indices-of-the-two-geoseries-are-different-understanding-indices/69644010#69644010
import pandas as pd
import numpy as np
import geopandas as gpd
import shapely.geometry
import requests
# source some points and polygons
# fmt: off
dfp = pd.read_html("https://www.latlong.net/category/cities-235-15.html")[0]
dfp = gpd.GeoDataFrame(dfp, geometry=dfp.loc[:,["Longitude", "Latitude",]].apply(shapely.geometry.Point, axis=1))
res = requests.get("https://opendata.arcgis.com/datasets/69dc11c7386943b4ad8893c45648b1e1_0.geojson")
df_poly = gpd.GeoDataFrame.from_features(res.json())
# fmt: on
现在我{df_poly
,以便将点dfp
添加到GeoDataframe
{
df_poly.sjoin(dfp)
现在我想计算每个polygon
有多少points
。
我想
df_poly.sjoin(dfp).groupby('OBJECTID').count()
但这并没有在{
这是这个问题的后续问题The indices of the two GeoSeries are different - Understanding Indices
gpd.sjoin(dfp, df_poly).groupby("index_right").size().rename("points")
可以简单地连接到多边形GeoDataFrame以给出找到的点的数量how="left"
以确保它是左连接,而不是内部连接。任何没有点的多边形都有NaN
在这种情况下,您可能需要fillna(0)
李>您需要使用merge将
count()
输出中的一列添加回原始数据帧。我使用了geometry列并将其重命名为n_points
:在Answer Fergus McClean提供的基础上,甚至可以用更少的代码完成:
但是,Rob Raymond提出的将两个
dataframes
合并的方法(.join()
)保留了没有计数的条目相关问题 更多 >
编程相关推荐