Python 让lat lon在NAD83下

Python 让lat lon在NAD83下,python,raster,Python,Raster,我试图从光栅图像中读取lat-long信息 我使用rasterio软件包打开图像: cdl = rasterio.open('2018_30m_cdls/2018_30m_cdls.img') cdl.xy(1, 1) 输出为: (-2356050.0, 3172560.0) 我看了这张照片的crs: CRS.from_wkt('PROJCS["Albers Conical Equal Area", GEOGCS["NAD83",DATUM["North_American_Datum_198

我试图从光栅图像中读取lat-long信息

我使用rasterio软件包打开图像:

cdl = rasterio.open('2018_30m_cdls/2018_30m_cdls.img')
cdl.xy(1, 1)
输出为:

(-2356050.0, 3172560.0)
我看了这张照片的crs:

CRS.from_wkt('PROJCS["Albers Conical Equal Area",
GEOGCS["NAD83",DATUM["North_American_Datum_1983",
SPHEROID["GRS1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],
TOWGS84[0,0,0,-0,-0,-0,0],AUTHORITY["EPSG","6269"]],
PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4269"]],
PROJECTION["Albers_Conic_Equal_Area"],
PARAMETER["standard_parallel_1",29.5],
PARAMETER["standard_parallel_2",45.5],
PARAMETER["latitude_of_center",23],
PARAMETER["longitude_of_center",-96],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
UNIT["meters",1]]')
我现在在哪?我想让lat长在NAD83以下,epsg:4269。看来我已经在这个计划下了?但是为什么lat long没有显示-90,40

提前谢谢你

'PROJCS["Albers Conical Equal Area"
表明CRS是投影坐标系,而不是未投影坐标系(如NAD83)

这就是为什么你得到的是以米为单位的X,Y坐标,而不是以度为单位的纬度,经度对。由图像CRS的最后一行解释:

UNIT["meters",1]]') 
显然,系统是LNF FF斜率,具有以下PROJ4字符串定义:

+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs 
。。。但您可以通过执行以下命令来检查定义的图像CRS:

cdl.crs
获取NAD83坐标的最简单方法是使用
rio
实用程序将图像重新投影到
EPSG:4269

rio edit-info --crs EPSG:4269 2018_30m_cdls.tif

请注意,您可能首先需要将
img
格式转换为
tif

NAD83与WGS84一样,是一个基准,而不是投影。说“NAD83未投影”是没有意义的,因为很明显,正如你在问题中看到的那样,你为NAD27展示了自己。是的,但使用NAD83、WGS84或其他基准并不意味着你的坐标是经度/纬度。这些是基准。他们描述了地球的模型。不是投影,也不是缺少投影。两个不同的概念经常混淆,正如您所做的。(请注意,您显示了基于NAD83基准面的aea投影。)