[英]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.