0

我有点 shapefile 和多边形 shapefile。我想找出每个多边形内的最高点。我做了一个交集来找出哪些点属于每个多边形:

import geopandas as gpd

from geopandas.tools import sjoin

point = gpd.GeoDataFrame.from_file(pointSHP)
print("POINT", point)
poly = gpd.GeoDataFrame.from_file(polygonSHP)
print("POLY", poly)
points_within_poly = gpd.sjoin(point, poly, how="inner", op='intersects')
print(points_within_poly.head(10))

现在我想为每个 index_right 选择最高点。我认为这是按几何列中的 Z 值排序的问题,但我遇到了问题。我不知道如何使用 geopandas 从几何图形中提取 Z 坐标。最后,我想做一个空间连接并将 Z 值填充到最近的点(另一个 shapefile)。

谢谢

4

1 回答 1

0

我将专注于第一个问题,用它来提取z坐标

import geopandas as gpd
gdf = gpd.read_file("file.shp")
gdf['z'] = None
gdf['z'] = gdf.geometry.apply(lambda x: list(x.coords)[0][2])

或者,

z_values = [list(x.coords)[0][2] for x in gdf.geometry]
gdf['z'] = None
gdf['z'] = z_values

解释:对于每个几何,coords从几何中列出一个列表,取列表中的第一个[0]coords取第三个[2]值,即几何的 z 值(因为第一个[0]是 x,第二个[1]是 y 值)。最近邻居的空间连接部分太长而无法写入。我建议为此主题提出一个新问题。

于 2020-08-29T14:07:21.457 回答