繁体   English   中英

Python S2 / S2sphere库-在给定级别上查找地球上的所有s2单元

[英]Python S2/S2sphere library - find all s2 cells on earth at a given level

我是python s2sphere库的s2sphere 在给定级别上,我想要所有单元ID的列表。 我尝试使用两极界定的矩形:

region = s2sphere.LatLngRect(LatLng.from_degrees(-90,0),LatLng.from_degrees(90,0))

但是region.area() 0。我可以采用许多较小的矩形的并集,但这看起来很混乱。 有没有一种优雅的方法可以做到这一点?

我发现可以使用横跨两个半球的两个矩形来完成。 对于level = 0,下面是一个示例:

from s2sphere import *

region1=LatLngRect(LatLng.from_degrees(-90,0),LatLng.from_degrees(90,180)) r1=RegionCoverer() r1.min_level,r1.max_level=(0,0) cell_IDs1 = r1.get_covering(region1)

region2=LatLngRect(LatLng.from_degrees(-90,180),LatLng.from_degrees(90,0)) r2=RegionCoverer() r2.min_level,r2.max_level=(0,0) cell_IDs2 = r2.get_covering(region2)

all_cell_IDs = set(cell_IDs1) | set(cell_IDs2)

最后一行粘着半球。 打印单元格纬度

for i in all_cell_IDs: print i.to_lat_lng()

给出:

LatLng: 0.0,0.0 LatLng: 0.0,90.0 LatLng: -0.0,-180.0 LatLng: -0.0,-90.0 LatLng: 90.0,-180.0 LatLng: -90.0,0.0

立方体的六个面。 如预期的那样,级别= 1,将有24个单元。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM