繁体   English   中英

有没有办法使用 geopandas/shapely/fiona 来获得多边形的最高点?

[英]Is there a way using geopandas/shapely/fiona to get highest point withing a polygon?

我有点 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))

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

谢谢

我将专注于第一个问题,用它来提取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列表,取coords列表的第一个[0] ,并取第三个[2]值,即几何的 z 值(因为第一个[0]是 x,第二个[1]是 y 值)。 最近邻居的空间连接部分太长而无法写入。 我建议为此主题提出一个新问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM