首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取GeoPandas中几何图形之间的交集计数

获取GeoPandas中几何图形之间的交集计数
EN

Stack Overflow用户
提问于 2015-02-27 04:23:59
回答 3查看 3.2K关注 0票数 3

是否可以使用GeoPandas对象获取两个几何图形之间的交点计数?也就是说,我想要计算一个GeoDataFrame中与另一个GeoDataFrame中的每个多边形相交的多边形或线串的数量。在浏览GeoPandas文档时,我没有看到一种简单的方法,但我想在转到低级工具之前检查一下。

EN

回答 3

Stack Overflow用户

发布于 2015-10-10 03:10:43

需要空间连接的geopandas.tools.sjoin()**.**:

在名为 in this Jupyter Notebook join的部分中有一个空间连接示例。这是将一组点(midpoints)计数为一组多边形(bins)。这两个几何图形都定义了一个GeoDataFrame

在撰写本文时,geopandas的当前版本中还没有包含tools.sjoin()。我不能让geopandas.tools在他们的任何分支中构建,但我无论如何- in my fork都修复了它。我的解决方案是open PR

票数 2
EN

Stack Overflow用户

发布于 2015-05-25 22:44:49

我不知道有没有内置的工具可以做到这一点,但我不是专家。同时,使用一些熊猫的魔法也很容易做到:

代码语言:javascript
复制
import geopandas as gpd
from shapely.geometry import *

p1 = Point(.5,.5)
p2 = Point(.5,1)
p3 = Point(1,1)

poly = Polygon([(0,0), (0,2), (2,2), (2,0)])

df1 = gpd.GeoSeries([p1,p2,p3])
df2 = gpd.GeoDataFrame([poly,p3], columns=['geometries'])

f = lambda x:np.sum(df1.intersects(x))
df2['geometries'].apply(f)

应返回:

代码语言:javascript
复制
0    3
1    1
Name: geometries, dtype: int64
票数 1
EN

Stack Overflow用户

发布于 2021-03-08 00:24:09

让我们考虑至少相交一次的02个几何图形(点和多边形)。

layers of your layers

  1. Spatial join

你应该这样写:pointsInPolygon =gpd.sjoin(点,面,内部“how=”,op='intersects')

添加一个常量值为1的字段你应该写成这样:pointsInPolygon'const'=1

根据您想要聚合数据的列对字段进行

  1. Group by,您应该编写如下代码:pointsInPolygon.groupby('field').sum()

列const将为您提供两个几何图形之间的交点计数。

如果您还想看到其他列,只需键入以下内容:df = pointsInPolygon.groupby('field').agg({'columnA':'first','columnB':'first','const':'sum'}).reset_index()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28752044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档