原理:
TIF文件中包含像素点--WGS84坐标系的转换关系,以此可以换算到GPS坐标。
安装GDAL库:
pip install osgeo
demo:
from osgeo import gdal
def uv2gps(u,v,raster):
dataset = gdal.Open(raster)
transform = dataset.GetGeoTransform()
x_origin = transform[0]
y_origin = transform[3]
pixel_w = transform[1]
pixel_h = transform[5]
lat = x_origin + u * pixel_w
lon = y_origin + v * pixel_h
target = osr.SpatialReference()
target.ImportFromEPSG(4326)
transform = osr.CoordinateTransformation(dataset.GetSpatialRef(), target)
lat, lon, _ = transform.TransformPoint(lat, lon, 0.0)
return lat, lon
def gps2uv(lat, lon, raster):
dataset = gdal.Open(raster)
if dataset is None:
print("Error: cannot open the raster dataset!")
target_srs = osr.SpatialReference()
target_srs.ImportFromEPSG(4326)
transform = osr.CoordinateTransformation(target_srs, dataset.GetSpatialRef())
raster_lat, raster_lon, _ = transform.TransformPoint(lat, lon, 0.0)
geotransform = dataset.GetGeoTransform()
u = int((raster_lat - geotransform[0]) / geotransform[1])
v = int((raster_lon - geotransform[3]) / geotransform[5])
return u, v
if __name__ == "__main__":
u =
v =
lat =
lon =
## 验证像素与GPS的对应关系
raster = "path to tif"
gps = uv2gps(u, v, raster)
u, v = gps2uv(lat, lon, raster)
print(gps)
print(u, v)