type object 'CellId' has no attribute 'rect_bound'
时间: 2023-07-31 20:10:54 浏览: 186
如果您在使用 `s2sphere` 库的 `CellId` 对象时遇到 "type object 'CellId' has no attribute 'rect_bound'" 错误,这是因为 `CellId` 类没有 `rect_bound` 属性。
修复此问题的方法是使用 `LatLngRect` 类的 `from_point_pair` 方法来创建一个矩形区域,并将其传递给 `get_covering` 方法。
以下是一个使用 `s2sphere` 库来获取矩形区域内的S2单元格的示例代码:
```python
import shapefile
from s2sphere import CellId, LatLngRect, LatLng, S2RegionCoverer
min_lat = 40.0 # 最小纬度
max_lat = 41.0 # 最大纬度
min_lng = -74.0 # 最小经度
max_lng = -73.0 # 最大经度
shp_writer = shapefile.Writer("cells", shapeType=shapefile.POLYGON)
shp_writer.field("CELL_ID", "C", size=50)
rect = LatLngRect.from_point_pair(
LatLng.from_degrees(min_lat, min_lng),
LatLng.from_degrees(max_lat, max_lng)
)
coverer = S2RegionCoverer()
covering = coverer.get_covering(rect)
for cell_id in covering:
cell = CellId(cell_id).to_lat_lng_rect()
vertices = [
(cell.lo().lat().degrees, cell.lo().lng().degrees),
(cell.lo().lat().degrees, cell.hi().lng().degrees),
(cell.hi().lat().degrees, cell.hi().lng().degrees),
(cell.hi().lat().degrees, cell.lo().lng().degrees),
]
shp_writer.poly(parts=[vertices])
shp_writer.record(str(cell_id))
shp_writer.save("cells")
```
请注意,上述代码假设您已经正确安装了 `s2sphere` 库。如果仍然遇到问题,请确保您的库版本是最新的,并尝试更新库。
如果问题仍然存在,请提供更多详细信息,我将尽力帮助您解决问题。
阅读全文