Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取GeoPandas中几何图形之间的交点计数_Python_Geopandas - Fatal编程技术网

Python 获取GeoPandas中几何图形之间的交点计数

Python 获取GeoPandas中几何图形之间的交点计数,python,geopandas,Python,Geopandas,是否可以使用GeoPandas对象获取两个几何图形之间的交点计数?也就是说,我想计算一个GeoDataFrame中与另一个GeoDataFrame中的每个多边形相交的多边形或线串的数量。在浏览GeoPandas文档时,我没有看到一种简单的方法可以做到这一点,但我想在转到较低级别的工具之前进行检查。我不知道有什么内置工具可以做到这一点,但我不是专家。同时,用一些熊猫魔术也很容易做到: import geopandas as gpd from shapely.geometry import * p

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

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

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)
应返回:

0    3
1    1
Name: geometries, dtype: int64

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

有一个例子-请看名为空间连接的部分。这是将一组点(
中点
)计数为一组多边形(
料仓
)。这两种几何图形都定义了一个
地理数据框


撰写本文时,
tools.sjoin()
不在当前版本的
geopandas
中。我无法让
geopandas.tools
在它们的任何一个分支中构建,但我修复了它——不管怎样——对我来说。我的修正是一个.

让我们考虑至少02次的几何(点和多边形)。< /P>

  • 你的层次
  • 你应该这样写: pointsInPolygon=gpd.sjoin(点、多边形、how=“inner”、op='intersects')

  • 添加一个以1作为常量值的字段 您应该这样写:pointsInPolygon['const']=1

  • 根据要聚合数据的列的字段 您应该这样写:pointsInPolygon.groupby(['field']).sum()

  • 列[const]将给出两个几何图形之间的交点计数

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