Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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 确定网格正方形中的点和多边形_Python_Gis_Geojson_Shapely - Fatal编程技术网

Python 确定网格正方形中的点和多边形

Python 确定网格正方形中的点和多边形,python,gis,geojson,shapely,Python,Gis,Geojson,Shapely,我使用python和geojson来实现这一点,我想指定一个点,该点将是正方形的中心,假设正方形是1英里乘1英里,我想列出在正方形中找到的所有点和多边形,包括比正方形大的多边形 import json from shapely.geometry import shape, Point from shapely.geometry import asShape, mapping point = Point(14.9783266342289, 16.87265432621112) max_dista

我使用python和geojson来实现这一点,我想指定一个点,该点将是正方形的中心,假设正方形是1英里乘1英里,我想列出在正方形中找到的所有点和多边形,包括比正方形大的多边形

import json
from shapely.geometry import shape, Point
from shapely.geometry import asShape, mapping

point = Point(14.9783266342289, 16.87265432621112)
max_distance_from_center = 1

with open('cells.geojson') as f:
    js = json.load(f)

for feature in js['features']:
    polygon = asShape(feature['geometry'])
    distance = point.distance(polygon.centroid)
    # print(f'{distance} - {polygon.centroid}')
    if distance < max_distance_from_center:
        print (f'Found cells containing polygon:{feature}')

我有多个geojson文件,因此需要进行几次检查,这很好。我一直在玩下面的代码,检查细胞中心是否靠近正方形的中心,但对于形状奇怪的多边形会有问题。我真的很想知道广场上的所有项目/特征

import json
from shapely.geometry import shape, Point
from shapely.geometry import asShape, mapping

point = Point(14.9783266342289, 16.87265432621112)
max_distance_from_center = 1

with open('cells.geojson') as f:
    js = json.load(f)

for feature in js['features']:
    polygon = asShape(feature['geometry'])
    distance = point.distance(polygon.centroid)
    # print(f'{distance} - {polygon.centroid}')
    if distance < max_distance_from_center:
        print (f'Found cells containing polygon:{feature}')

导入json
从shapely.geometry导入形状、点
从shapely.geometry导入asShape,映射
点=点(14.9783266342289,16.87265432621112)
距离中心的最大距离=1
将open('cells.geojson')作为f:
js=json.load(f)
对于js['features']中的功能:
多边形=关联形状(特征['geometry'])
距离=点距离(多边形质心)
#打印(f'{distance}-{polygon.centroid}')
如果距离小于距离中心的最大距离:
打印(f'找到包含多边形的单元格:{feature}')
对于源数据,我使用的是从网格导出的地图,应该是10英里乘10英里。如何做到这一点的建议

更新:

这是一张画得不好的图表。在网格正方形中,我想识别所有落在正方形边界内的标记和多边形,即使它们位于正方形的外侧。我想有一个在方格中存在的所有功能的列表。我用黄色突出显示了这些区域

我看了交叉点,它可能会这样做。今晚将试一试。

您可以试一试:

首先,创建网格

从shapely.geometry导入点
从matplotlib.pyplot作为plt
点=点(0,-10)
平方=点缓冲区(0.5)。包络
图,ax=plt.子批次(图尺寸=(5,5))
gpd.GeoSeries(方形)绘图(ax=ax)
gpd.GeoSeries(point.plot)(ax=ax,color=“black”,markersize=30)
plt.grid()
plt.show()

然后呢,

将geopandas导入为gpd
#从geojson文件获取geodataframe
geo_df=gpd.GeoDataFrame.from_文件('cells.geojson'))
geo_-df['grid_-yn']=geo_-df['geometry'].应用(λx:x.相交(正方形))

为了清楚起见,您能更好地定义“在中找到”吗?您是指完全由边界正方形包含的特征吗?部分控制?有中心的情况下?为什么不用方法代替计算距离呢?