【发布时间】:2021-08-09 05:21:10
【问题描述】:
我有一个文本文件,其中包含经度和纬度以及我需要处理的点的特殊 ID。让我们假设文本文件看起来像下面的一堆行:
-75.3530 41.830902 1
我读这个文件如下:
import pandas as pd
point_df=pd.read_csv('point_file.txt', delimiter='\s+', header=None, index_col=False)
point_df.rename(columns = {0:'longitude', 1:'latitude', 2:'id' }, inplace = True)
我将此文件转换为地理数据框,以便使用我拥有的多边形数据对其进行处理,如下所示:
from geopandas import geodataframe
from shapely.geometry import Point
geometry = [Point(xy) for xy in zip(point_df.longitude, point_df.latitude)]
point_df=point_df.drop(['latitude', 'longitude'], axis=1)
point_df=GeoDataFrame(point_df, geometry=geometry, crs="EPSG:4326")
接下来我读取我的多边形数据框(扩展名为 .shp 的文件)如下:
import geopandas as gpd
polygon_df=gpd.read_file('hereismypolydata.shp')
我使用polygon_df.crs 检查我的多边形数据框,发现 crs 是 EPSG 4326,就像我的 point_df 一样。我的多边形数据框如下所示:
POLY_ID geometry
1 POLYGON ((2728701.903 599036.272, 2728907.551 ...
此外,我使用geoplot 包检查它们,并使用以下代码查看它们是否重叠:
import matplotlib.pyplot as plt
import geopandas as gp
import geoplot as gplt
%matplotlib inline
ax=gplt.polyplot(polygon_df)
gplt.pointplot(point_df, ax=ax)
根据制作的情节,这两者是重叠的。所以我希望当我加入他们时,我会得到我需要的数据框。我尝试以下行在空间上加入它们:
joined_dataframe=gpd.sjoin(point_df, polygon_df, how='inner', op='intersects')
即使至少有一个点和多边形相交,此数据框也是完全空的。我也尝试过'within'命令,而不是inner,我试图保留所有行以查看'left'是否有任何内容,但合并的只是NaN。
我没有允许出于可重复性目的放置自定义数据集(稍后我将尝试创建),但是连接的数据框返回空的原因是什么?我是地理空间数据和 Python 包的新手,感谢任何见解/帮助。
【问题讨论】: