两个地理序列的指数是不同的--理解指数
问题描述
我正在使用GeoPandas
,我有两个GeoDataframes
和相同的CRS
。其中一个包含带有多边形geometry
的geometry
列,另一个包含带有点geometry
的列。我想检查哪些点在多边形内部。
我天真地尝试
shape.contains(points)
这给了我
> The indices of the two GeoSeries are different
我不理解此消息。当我检查documentation时,它显示
我们还可以逐行检查两个GeoSeries。上面的GeoSeries有不同的指数。我们可以根据索引值对齐两个GeoSeries并使用Align=True将元素与相同索引进行比较,或者使用Align=False忽略索引并根据元素的匹配顺序进行比较:
这些指数是什么?为什么要相互核对,而不是geometry columns
?
我在网上读到,我必须将我的几何图形转换为shapely
几何图形。但使用GeoPandas
的全部意义不就是我可以对数据执行地理操作吗?
我对此感到困惑。如何检查shape
中的geometries
是否包含points
中的任何geometries
?
解决方案
您所描述的实际上是一个空间连接。下面的例子从英国城市的经度/纬度构造点,然后找出城市所在的行政区域多边形。这是NxM比较
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
gpd.sjoin(dfp, df_poly)
相关文章