两个地理序列的指数是不同的–理解指数

本教程将介绍两个地理序列的指数是不同的--理解指数的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

两个地理序列的指数是不同的--理解指数 教程 第1张

问题描述

我正在使用GeoPandas,我有两个GeoDataframes和相同的CRS。其中一个包含带有多边形geometrygeometry列,另一个包含带有点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)

好了关于两个地理序列的指数是不同的--理解指数的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。