rasterio ford geotiff 中的坐标参考系变换

Posted

技术标签:

【中文标题】rasterio ford geotiff 中的坐标参考系变换【英文标题】:Coordinate reference system transformation in rasterio for geotif 【发布时间】:2019-09-24 18:27:20 【问题描述】:

我有以下geotif file。我编写了简单的脚本将其坐标转换为谷歌地图坐标系

import rasterio
import rasterio.features
import rasterio.warp


DATA = "/Users/Desktop/TextureUSDA_23/"


def main():
    with rasterio.open(DATA + 'textureUSDA_eu23.tif') as dataset:
        mask = dataset.dataset_mask()
        print(dataset.crs)
        for geom, val in rasterio.features.shapes(mask, transform=dataset.transform):
            geom = rasterio.warp.transform_geom(dataset.crs, 'EPSG:4326', geom, precision=6)
            print(geom)


if __name__ == "__main__":
    main()

此脚本的输出是转换后的坐标列表,即[-4.414515, 57.507086]。但是,如果我输入这个坐标,那么它们将指向indian ocean,但它们应该放在欧洲。

你能解释一下我错过了什么吗?

关于 geotiff 的其他信息

PROJCS["GRS_1980_IUGG_1980_Lambert_Azimuthal_Equal_Area",GEOGCS["GCS_GRS_1980_IUGG_1980",DATUM["unknown",SPHEROID["GRS80",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],PROJECTION["Lambert_Azimuthal_Equal_Area"],PARAMETER["latitude_of_center",52],PARAMETER["longitude_of_center",10],PARAMETER["false_easting",4321000],PARAMETER["false_northing",3210000],UNIT["metre",1,AUTHORITY["EPSG","9001"]]]

【问题讨论】:

【参考方案1】:

坐标按 x,y 顺序返回,即先经度后纬度。谷歌地图(和我见过的其他类似服务)期望坐标的顺序是纬度然后是经度。如果你交换坐标的顺序,你会得到一个spot near Inverness,我猜你在找什么。不同技术人员对 lon/lat 排序有一个很好的总结here。

【讨论】:

哇。我将尝试测试交换坐标。顺便说一句,我的要求太多了,但可以验证我是否走在正确的道路上?即我的代码从地理 tiff 中提取坐标是否正确? 在不确切了解您要做什么的情况下,它看起来像是一组合理的步骤,用于从图像中的特征获取位置。 我想从地理 tiff 中提取坐标并在谷歌地图中绘制它们。似乎我走在正确的道路上。感谢您的回复。

以上是关于rasterio ford geotiff 中的坐标参考系变换的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 rasterio.mask 剪辑图像

R-NC格式数据转GeoTIFF及GeoTIFF转NC

如何使 R 的“光栅”包区分 GeoTIFF 中的正旋转矩阵和负旋转矩阵?

TIF图片怎么查看坐标?最好详细一点

使用 rasterio 屏蔽/裁剪光栅会导致 AttributeError

使用Rasterio创建栅格数据