-1

我正在处理历史风迹数据,可以在这里找到。

如何使用pyshp正确检索风道上的所有纬度和经度?

我遵循了 PyShp 上的文档并最初导入了“lin.shp”文件类型,但是在 Google 地球上手动检查时返回的坐标不正确。
其次,我导入了“pts.shp”文件类型,当我尝试运行“bbox”函数时,它返回一个AttributeError: 'Shape' object has no attribute 'bbox'

4

1 回答 1

0

您正在正确检索坐标。Google 地球要求所有数据都是 EPSG:4326 - WGS84 Geographic。NOAA 将此数据转换为 KML 文件,但是 shapefile 处于深奥投影中,QGIS 将其识别为该页面上 shapefile 的“基于真实球体的未知基准 - 投影”。您发送的数据下载页面中间的地图可能在该投影中。

您的选择是:

  1. 下载KMZ,用python解压,用Python自带的XML工具解析里面的KML文件,提取EPSG:4326点。
  2. 弄清楚数学,自己将点转换为您需要工作的任何投影。纯 Python 但这会很困难。
  3. 从使用纯 Python 切换到使用 Fiona/Shapely 重新投影点。
  4. 从 Fiona/Shapely 降低一级并使用 GDAL/OGR Python 绑定重新投影点。
  5. 使用从 Python 调用的 GDAL/OGR 命令行工具重新投影点。

您的项目和环境限制以及您对这些工具的熟悉程度将决定这些选项中的哪一个是最好的。

根据您在 pts.shp bbox 上遇到的错误,问题是您试图在仅包含一个点的单个形状记录上获取边界框。边界框仅适用于每条记录至少有两个点的 shapefile 类型,例如此数据集中的线 shapefile。您始终可以在每个 shapefile 类型的文件级别获取边界框。

于 2022-01-24T15:56:26.313 回答