Sto*_*ace 8 python geospatial geo geopandas
我正在工作,GeoPandas并且我有两个GeoDataframes相同的CRS. 其中一个包含一列带有geometry多边形的列geometry,另一列包含带有点的列geometry。我想检查哪些点在多边形内。
我天真地尝试过
shape.contains(points)
Run Code Online (Sandbox Code Playgroud)
这给了我
> The indices of the two GeoSeries are different
Run Code Online (Sandbox Code Playgroud)
我不明白这个消息。当我检查文档时,它说
我们还可以逐行检查两个 GeoSeries。上面的 GeoSeries 有不同的索引。我们可以根据索引值对齐两个 GeoSeries 并使用align=True 比较具有相同索引的元素,或者忽略索引并使用align=False 根据匹配顺序比较元素:
这些指数是什么?为什么它们是相互检查的而不是geometry columns?我在网上读到,我必须将我的几何图形转换为shapely几何图形。GeoPandas但是,使用数据进行地理操作的全部目的不就是这样吗?
我对此很困惑。如何检查geometriesin是否shape包含任何geometriesin points?
您所描述的实际上是空间连接。下面的示例根据英国城市的经度/纬度构造点,然后查找该城市位于哪个行政区域多边形。这是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)
Run Code Online (Sandbox Code Playgroud)