Python S2 / S2sphere库 - 在给定级别找到地球上的所有s2细胞

时间:2017-08-08 18:45:03

标签: python gis

我是python s2sphere库的新手。在给定的级别,我想要一个所有小区ID的列表。我尝试使用一个由两极限制的矩形:

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

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

1 个答案:

答案 0 :(得分: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)

最后一行粘合半球。打印单元格lat-longs

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

多维数据集的六个方面。正如预期的那样,当level = 1时,将有24个单元格。