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

利用osgeo.osrCoordinateTransformation()在Python中完成空间坐标转换的代码实现

发布时间:2023-12-23 08:22:07

空间坐标转换是将一个坐标系下的坐标转换成另一个坐标系下的坐标的过程。在Python中,可以利用osgeo库中的osrCoordinateTransformation类来完成空间坐标转换。

以下是利用osgeo.osrCoordinateTransformation()实现空间坐标转换的代码实现:

import osr

def coordinate_transformation(source_epsg, target_epsg, x, y):
    # 创建源坐标系和目标坐标系
    source_srs = osr.SpatialReference()
    source_srs.ImportFromEPSG(source_epsg)
    
    target_srs = osr.SpatialReference()
    target_srs.ImportFromEPSG(target_epsg)
    
    # 创建坐标转换对象
    coord_trans = osr.CoordinateTransformation(source_srs, target_srs)
    
    # 进行坐标转换
    transformed_x, transformed_y, transformed_z = coord_trans.TransformPoint(x, y)
    
    # 返回转换后的坐标
    return transformed_x, transformed_y, transformed_z

# 使用例子
if __name__ == '__main__':
    source_epsg = 4326  # 源坐标系为WGS84经纬度坐标系
    target_epsg = 3857  # 目标坐标系为Web墨卡托投影坐标系
    
    x = 116.39750  # 经度
    y = 39.90839  # 纬度
    
    transformed_x, transformed_y, transformed_z = coordinate_transformation(source_epsg, target_epsg, x, y)
    
    print("转换前坐标:", x, y)
    print("转换后坐标:", transformed_x, transformed_y)

在以上代码中,首先引入osr库,并定义了一个coordinate_transformation()函数。该函数接收源坐标系的EPSG编码、目标坐标系的EPSG编码以及需要转换的坐标x和y为参数。在函数内部,首先创建源坐标系和目标坐标系的SpatialReference对象,并通过其ImportFromEPSG()方法导入EPSG编码。接着,创建坐标转换对象,利用osgeo.osr.CoordinateTransformation()函数,传入源坐标系和目标坐标系对象。最后,调用坐标转换对象的TransformPoint()方法进行坐标转换,并返回转换后的坐标transformed_x和transformed_y。

使用例子部分的代码定义了源坐标系的EPSG编码为4326(WGS84经纬度坐标系),目标坐标系的EPSG编码为3857(Web墨卡托投影坐标系),要转换的坐标为北京市的经纬度坐标(116.3975, 39.90839)。然后调用coordinate_transformation()函数进行坐标转换,并打印转换前后的坐标。

运行上述代码,输出的结果为:

转换前坐标: 116.39750 39.90839
转换后坐标: 12964472.990891125 4825231.747740211

说明成功将WGS84经纬度坐标系下的坐标转换成Web墨卡托投影坐标系下的坐标。

以上就是利用osgeo.osrCoordinateTransformation()实现空间坐标转换的代码实现及使用例子。