当前位置: 首页 > 知识库问答 >
问题:

有没有一种方法可以使用geopandas/shapely/fiona获得多边形的最高点?

莫逸仙
2023-03-14

我有点形状文件和多边形形状文件。我想找出每个多边形内的最高点。我做了一个交集,以确定哪些点属于每个多边形:

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))

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

非常感谢。

共有1个答案

陶弘业
2023-03-14

我将重点讨论第一个问题,用它来提取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

说明:对于每个几何体,从几何体中列出坐标,取坐标列表中的第一个[0],取第三个[2]值,即几何体的z值(因为第一个[0]是x,第二个[1]是y值)。最近邻居的空间连接部分太长,无法写入。我建议就这个话题问一个新问题。

 类似资料:
  • 假设我有两个不相交的多边形组/“岛屿”(想想两个不相邻县的人口普查区)。我的数据可能看起来像这样: 我希望每个岛内的多边形采用表示其组的ID(可以是任意的)。例如,左下角的3个多边形的IslandID为1,右上角的3个多边形的IslandID为2。 我已经开发了一种方法来做到这一点,但我想知道这是否是最好/最有效的方法。我做以下工作: 1) 创建一个几何体等于多多边形一元并集内多边形的地理数据框。

  • 问题内容: 现在我正在做: 有没有更有效的方法直接从Find(或其他搜索功能)中获取带有用户名的slice,而没有struct和range循环? 问题答案: MongoDB的结果始终是文档列表。因此,如果要获取值列表,则必须像以前一样手动将其转换。 使用自定义类型(源自) 另外请注意,如果您要创建自己的类型(从派生),则可以覆盖其取消编组逻辑,并仅从文档中“提取” 。 它看起来像这样: 然后将用户

  • 我试图让我的UI显示两个按钮,其中一个稍微重叠在另一个,在一个全幅卡的中间。因为堆栈的宽度只能与其未定位的子级相同,所以我添加了一个宽度为double.infinity的SizedBox的未定位子级,以便给我一个画布来放置按钮,但我不知道该放什么作为SizedBox的高度。理想情况下,无论用户是在手机上还是在平板电脑上,我都希望这个小部件能够适当地调整自己的大小,所以我宁愿将SizedBox的高度

  • 我想声明一个像belove这样的类 但是它似乎没有语法来支持这一点,它有任何方法可以保持在

  • 问题内容: 我有一组〜36,000个多边形,代表该国家的一个分区(〜县)。我的python脚本收到很多点:pointId,经度,纬度。 对于每个点,我想发送回pointId,polygonId。对于每个点,循环进入所有多边形并使用myPoint.within(myPolygon)效率很低。 我想匀称的库提供了一种更好的方式来准备多边形,以便找到一个点的多边形成为树路径(国家,地区,子地区…) 到目

  • 我正在寻找一种方法来创建一组多边形(rechtangles),沿着一条线在多个多边形中创建一组多边形(rechtangles),并将其水平隔开,如图所示。 我尝试生成点并将其用作多边形的中点,但问题是,通过创建等间距的点光栅,除了180度之外,不可能以任何其他方向旋转。 例子 给出了一个多多边形形状的对象和由宽度和高度以及每个多边形之间的垂直和水平间距定义的多边形。多边形应仅放置在多多边形内,且不