创建覆盖地球的多边形栅格

2024-04-27 08:47:56 发布

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

日间;夜间:

确切的问题是如何生成所需尺寸的半等边多边形,例如大约100x100m、10000x1000m、5000x5000m的网格覆盖地球?**在

背景故事:

我正在构建一个基于python的微服务,对于给定的LAT,LON(WGS84)将返回带有一些数据的json,例如匹配的国家/城市/或选定的多边形网格。在

使用country/city/cr杂波的部分工作得很好,因为我使用shapefile和R-tree快速检查点是否在区域内。在

我正在为以下情况而挣扎:想象一下,我有大量基于GPS的样本,其中包含一些我想要的数据,例如在一些geo-bin(网格)上的平均值。在

我试着把地球划分成半矩形区域(对于Merkator投影),以后我可以用“contains”或“within”函数。在

目前它是通过SQL查询和使用SIN/COS和舍入的“groupby”完成的

Samples

into BINS

(图片链接)

由于使用shapefile和来自WGS84请求的即将到来的数据,我的想法是跳转到merkator(或webmerkator)生成geopandas多边形,并使用to_crs函数跳回WGS84。在

world = world[(world.name != "Antarctica") & (world.name != "Fr. S. Antarctic Lands")]
world = world.to_crs({'init': 'epsg:3857'})
plotworld = world.plot( figsize=(20,10))    
plotworld.set_title("Merkator")
# Keep map proportionate
plotworld.axis('equal')

#Draw saple polygon rectangle (in merkator)
x_point_list = [0.5*1e7,0.75*1e7,0.75*1e7,0.5*1e7]
y_point_list = [-0*1e7,0*1e7,0.25*1e7,0.25*1e7]
polygon_geom = Polygon(zip(x_point_list, y_point_list))
crs = {'init': 'epsg:3857'}
polygon = gp.GeoDataFrame(index=[0], crs=crs, geometry=[polygon_geom])       
polygon.plot(ax=plotworld,color='red')

#transform to WGS84
world = world.to_crs({'init': 'epsg:4326'})
polygon = polygon.to_crs({'init': 'epsg:4326'})
plotworld2= world.plot( figsize=(20,10))

polygon.plot(ax=plotworld2,color='red')

我的问题是:如何生成所需尺寸的半等边多边形,例如大约100x100mx1000m,5000x5000m的网格来覆盖地球?在

我已经浏览了很多geopandas/shapely网站,其中显示了一些关于一些形状的教程,但是没有人提到如何绘制/生成具有所需尺寸的箱子。在

但我不太理解多边形的变化。在

感谢任何帮助!在


Tags: to网格地球worldplotinit尺寸epsg