我是python s2sphere
库的新手。在给定的级别,我想要一个所有小区ID的列表。我尝试使用一个由两极限制的矩形:
region = s2sphere.LatLngRect(LatLng.from_degrees(-90,0),LatLng.from_degrees(90,0))
但是region.area()
给出0.我可以采用许多较小矩形的联合,但这看起来很混乱。有一种优雅的方式来做到这一点?
答案 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个单元格。