我具有以下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"]]]
坐标以x,y顺序返回,即经度,然后是纬度。 Google地图(以及我见过的其他类似服务)期望坐标按纬度然后按经度排序。如果交换坐标的顺序,则会得到spot near Inverness,这是我在猜测您要查找的内容。关于不同技术的[lon / lat]订购有一个不错的摘要here。