Python实现Lambert正形圆锥投影转WGS84经纬度方法问询
核心问题答复
- 存在通用方法将欧洲区域的Lambert正形圆锥投影数据转换为WGS84坐标系的经纬度,pyproj是完全可行的方案,它是Python中处理坐标投影转换的专业工具,支持几乎所有主流投影体系的转换,包括Lambert正形圆锥投影与WGS84的互转。
补充说明(基于你提供的输出)
从你执行print(data.latitude[0:20,0:20])的输出来看,你的数据已经包含了latitude和longitude坐标(单位为度,对应WGS84坐标系),且维度是y和x:
<xarray.DataArray 'latitude' (y: 20, x: 20)>
array([[20.292281, 20.306942, 20.32158 , ..., 20.538402, 20.552673, 20.56692 ],
[20.333665, 20.348339, 20.36299 , ..., 20.580011, 20.594295, 20.608555],
[20.375059, 20.389747, 20.404412, ..., 20.621631, 20.635928, 20.650201],
...,
[20.997195, 21.012085, 21.026951, ..., 21.247169, 21.261664, 21.276135],
[21.038751, 21.053655, 21.068535, ..., 21.288954, 21.303462, 21.317946],
[21.080317, 21.095234, 21.110128, ..., 21.330749, 21.34527 , 21.359767]])
Coordinates:
step timedelta64[ns] ...
isobaricInhPa float64 ...
latitude (y, x) float64 20.29 20.31 20.32 20.34 ... 21.33 21.35 21.36
longitude (y, x) float64 -17.49 -17.44 -17.4 ... -17.03 -16.98 -16.94
Dimensions without coordinates: y, x
Attributes:
"units": "degrees_north"
"standard_name": "latitude"
"long_name": "latitude"
这意味着你的数据可能已经完成了投影转换,无需再手动处理。如果你的原始数据源确实是Lambert投影,那可能是数据加载时(比如用xarray读取)已经自动完成了转换。
若需手动转换的示例代码
如果确实需要手动转换Lambert投影坐标到WGS84,可参考以下pyproj代码(以欧洲常用的Lambert正形圆锥投影EPSG:3035为例):
from pyproj import Transformer # 定义转换器:EPSG:3035(欧洲Lambert正形圆锥投影)转EPSG:4326(WGS84经纬度) transformer = Transformer.from_crs("EPSG:3035", "EPSG:4326", always_xy=True) # 假设lambert_x、lambert_y是你的Lambert投影坐标数组 lon, lat = transformer.transform(lambert_x, lambert_y)
注意:不同的Lambert投影参数可能不同,需要确认你的数据对应的EPSG代码或投影参数(如标准纬线、中央经线等)。
内容的提问来源于stack exchange,提问作者s28

