Python(可能是Shapely)来创建缓冲区并计算点数

2024-09-30 08:16:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图做一个相当简单的分析,通过缓冲点(SEPTA地铁站[见下文])并计算缓冲区内的“事故”(也就是点)的数量。就这样。在

我在网上查了一下,但找不到具体的信息。也许这很简单,没人需要问。我真的需要一些帮助。在

我能够修复代码并为这些点创建一个缓冲区,但我似乎无法计算缓冲区内的点数。另外,我使用的“事件”点集也有问题,所以我把它换成了“农贸市场”。以下是我目前所掌握的情况。再说一遍,我只需要数数点数。在

from osgeo import ogr

septaclip = ogr.Open(r'/home/user/Downloads/SEPTAclip.shp')
septalyr = septaclip.GetLayer(0)
citylimits = ogr.Open(r'/home/user/Downloads/City_Limits.shp')
citylyr = citylimits.GetLayer(0)
crimestat = ogr.Open(r'/home/user/Downloads/Farmers_Markets.shp')
crimelyr = crimestat.GetLayer(0)

memory_driver = ogr.GetDriverByName('Memory')
memory_ds = memory_driver.CreateDataSource('Temp')
buff_lyr = memory_ds.CreateLayer('Buffer')
buff_feat = ogr.Feature(buff_lyr.GetLayerDefn())

multipoly = ogr.Geometry(ogr.wkbMultiPolygon)
for septafeat in septalyr:             
    buff_geo = septafeat.geometry().Buffer(3000) 
    multipoly.AddGeometry(buff_geo)
#multipoly = (multipoly.UnionCascaded())  

for crimefeat in crimelyr:
    buffcrime = crimefeat.geometry().Intersection(multipoly)

Tags: homedownloadsopenbuff缓冲区memory点数shp
1条回答
网友
1楼 · 发布于 2024-09-30 08:16:39

试着用这个方法来计算交叉点:

count = 0
for crimefeat in crimelyr:
    if not crimefeat.geometry().Intersection(multipoly).IsEmpty():
        count += 1

或使用OGR的功能:

^{pr2}$

相关问题 更多 >

    热门问题