如何用gdal_translate将50N/5E中心的正射地球PNG转为标准GeoTIFF
问题解决方案
核心问题分析
你之前的命令仅设置了投影参考,但未定义像素坐标与地理坐标的映射关系,导致GDAL无法计算投影转换;同时投影中心参数未生效,根源也是缺少地理范围的明确定义。
针对三个疑问的解答
1. 指定全圆盘范围的方法
正射投影(ortho)的全圆盘范围,是从投影中心向四周延伸**WGS84椭球半径(约6378137米)**的距离。对于2048×2048的图像,直接用-a_ullr参数指定投影坐标下的左上角和右下角即可:
- 投影中心在正射坐标系中的坐标为(0,0),因此全圆盘范围的X、Y方向均为
-6378137到6378137 - 对应命令参数:
-a_ullr -6378137 6378137 6378137 -6378137
2. 空间参考字符串的必要参数
正射投影的SRS需明确投影中心、椭球/基准面,完整参数如下:
"proj=ortho +lat_0=50 +lon_0=5 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"
+no_defs:避免GDAL加载默认投影定义,强制使用指定参数+units=m:明确单位为米,与范围参数的单位保持一致
3. 是否需要指定GCPs?
不需要。正射全圆盘属于规则的矩形投影范围,直接通过-a_srs+-a_ullr定义仿射变换即可,GCPs仅适用于不规则地理参考的场景。
修正后的完整命令
第一步:转换为带正确地理参考的GeoTIFF
gdal_translate -of GTiff \ -a_srs "proj=ortho +lat_0=50 +lon_0=5 +ellps=WGS84 +datum=WGS84 +units=m +no_defs" \ -a_ullr -6378137 6378137 6378137 -6378137 \ Ortho-5_50-clean.png Ortho-5_50-clean.tif
第二步:转换为经纬度投影(WGS84地理坐标系)
注意:经纬度投影的单位是度,无需添加+units=m,修正后的命令:
gdalwarp -t_srs "proj=longlat +datum=WGS84 +ellps=WGS84" \ Ortho-5_50-clean.tif test_EQ.tif
验证结果
执行gdalinfo Ortho-5_50-clean.tif后,应看到:
- 投影中心显示为
Latitude of origin: 50、Longitude of origin: 5 - 地理范围显示为
Upper Left (-6378137.000, 6378137.000)、Lower Right ( 6378137.000, -6378137.000)
内容的提问来源于stack exchange,提问作者Molly
相关产品推荐
相关产品推荐

