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

时间:2019-03-12 14:04:16

标签: python gis geopandas

您好,所有堆栈用户

TL; DR: 确切的问题是如何生成所需大小的半等多边形,例如覆盖地球的100x100m 1000x1000m,5000x5000m网格?

背景故事:

我正在构建一个基于python的微服务,对于给定的LAT,LON(WGS84),它将返回一个包含一些数据的json,例如。匹配的国家/地区/城市或所选的多边形网格。 只要我使用shapefile和R-tree快速检查Point是否在区域内,带有国家/城市/杂物的零件就可以正常工作。

我在以下情况下苦苦挣扎: 想象一下,我有大量基于GPS的样本,其中包含一些数据,例如一些地理位元组(网格)的平均值。 我正在尝试将地球划分为半矩形区域(用于Merkator投影),以后可以与“包含”或“内部”功能一起使用。

当前,它是通过SQL查询和使用SIN / COS和四舍五入的“ GROUP BY”完成的 Samples into BINS (图片链接)

由于我在处理WGS84时使用了shapefile和请求中的上转换数据,因此我的想法是跳入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')

我的问题是**如何生成所需大小的半等多边形,例如覆盖地球的100x100mx 1000x1000m,5000x5000m网格?**

我已经浏览了许多有关几何形状的几何形状的站点,其中显示了一些有关某些形状,垃圾箱的教程,但是没有人提到如何绘制/生成所需大小的垃圾箱。

我确实了解多边形的尺寸会有所不同,但这并没有对我造成太大的伤害。

任何帮助表示赞赏!

0 个答案:

没有答案