欢迎访问宙启技术站
智能推送

osgeo.osrCoordinateTransformation()在Python中实现不同坐标系间转换的综合示例

发布时间:2023-12-23 08:23:16

OSR(OGR Spatial Reference)是GDAL库中用于处理空间参考系统(Spatial Reference System,SRS)的模块。osgeo.osrCoordinateTransformation()是OSR模块中用于实现不同坐标系之间转换的函数。

在Python中使用osgeo.osrCoordinateTransformation()进行坐标系转换的综合示例如下:

# 引入所需模块
from osgeo import ogr, osr

# 定义源投影
source = osr.SpatialReference()
source.ImportFromEPSG(4326)   # WGS84坐标系

# 定义目标投影
target = osr.SpatialReference()
target.ImportFromEPSG(32650)  # UTM投影坐标系,EPSG代码为32650

# 创建坐标转换对象
transform = osr.CoordinateTransformation(source, target)

# 定义源点坐标
point = ogr.Geometry(ogr.wkbPoint)
point.AddPoint(118.7924, 32.0268)   # 经度为118.7924,纬度为32.0268

# 进行坐标转换
point.Transform(transform)

# 输出目标点坐标
print(point.GetX(), point.GetY())

上述示例中,首先引入了osgeo.ogr和osgeo.osr模块,用于处理矢量数据和空间参考系统。然后,通过创建osr.SpatialReference对象定义源投影和目标投影,并使用EPSG代码导入坐标系信息。接着,通过调用osr.CoordinateTransformation()函数创建一个坐标转换对象,将源投影和目标投影传入函数中。然后,定义源点坐标,将其添加至ogr.Geometry对象中。最后,使用point.Transform()方法将源点坐标进行坐标转换,将转换后的目标点坐标通过point.GetX()和point.GetY()方法输出。

使用实例进行解释:假设要将经度为118.7924,纬度为32.0268的点坐标从WGS84坐标系转换为UTM坐标系(EPSG代码为32650)。在示例代码中,首先将EPSG代码分别导入到source和target对象中,然后创建坐标转换对象transform,并传入source和target对象。接着,定义源点坐标,通过point.Transform(transform)方法进行坐标转换。最后,通过point.GetX()和point.GetY()方法输出转换后的目标点坐标。根据设定的目标投影,输出的目标点坐标应为横轴坐标为404510.970766473,纵轴坐标为3549742.74150866。

osgeo.osrCoordinateTransformation()函数的使用非常灵活,可以支持各种不同的投影坐标系之间的转换。通过设置不同的源投影和目标投影,可以实现从一种坐标系到另一种坐标系的转换操作。