将控制点从地理坐标(WGS84大地坐标系下的坐标)转换为投影坐标(UTM投影坐标系下的坐标),注意输入参数是先纬度,后经度,如此出来的结果才不会是无限深(-inf)
# 创建一个 SpatialReference 对象用于处理投影信息
prosrs = osr.SpatialReference()
# 从数据集获取投影信息,并将其导入到 SpatialReference 对象中
prosrs.ImportFromWkt(dataset.GetProjection())
# 克隆地理坐标系,以备后用
geosrs = prosrs.CloneGeogCS()
# 创建一个 CoordinateTransformation 对象,用于进行地理坐标到投影坐标的转换,geosrs为旧坐标系统(大地坐标系统),prosrs为新坐标系统(投影坐标系统)
ct = osr.CoordinateTransformation(geosrs, prosrs)
# 设置经纬度坐标
lon = 99.93409707
lat = 37.21948597
# 将地理坐标转换为投影坐标,注意输入参数的顺序为纬度,经度,如此出来的结果才不会是-inf(无限值)
x, y, _ = ct.TransformPoint(lat, lon)
同理,从投影坐标转换为地理坐标,只需要更改新旧坐标系统的位置,然后在输入对应x方向的坐标(6位数)和y方向的坐标(7位数)
若要进一步提取对应的影像值,只需要将坐标转换为相应的行列号,再提取该行列号对应的影像值。若有需要我再更新代码