Advertisement

python实现地理坐标系与投影坐标系的转换 (附完整源码)

阅读量:

python实现地理坐标系与投影坐标系的转换

在Python编程语言中支持使用pyproj模块来完成地理坐标系(经纬度)与投影坐标系之间的切换。该模块功能强大且广泛应用于各种地理信息处理任务。

以下是一个完整的Python代码示例,在PyProj库中演示如何实现地理坐标系与投影坐标的相互转换:

在项目中添加必要的依赖项
第一步,请确认已正确安装了pyproj库。如果尚未完成,请可以通过以下命令完成**pip install pyproj**的运行

复制代码
    pip install pyproj

完整源码

复制代码
    import pyproj
    
    def geographic_to_projected(lat, lon, proj_epsg):
    """
    将地理坐标(经纬度)转换为投影坐标
    :param lat: 纬度
    :param lon: 经度
    :param proj_epsg: 投影坐标系的EPSG代码
    :return: 投影坐标(x, y)
    """
    # 创建地理坐标系(WGS84)
    geod = pyproj.Geod(ellps="WGS84")
    
    # 创建投影坐标系
    proj = pyproj.Proj(init=f"epsg:{proj_epsg}")
    
    # 转换坐标
    x, y = proj(lon, lat)
    return x, y
    
    def projected_to_geographic(x, y, proj_epsg):
    """
    将投影坐标转换为地理坐标(经纬度)
    :param x: 投影坐标x
    :param y: 投影坐标y
    :param proj_epsg: 投影坐标系的EPSG代码
    :return: 地理坐标(lat, lon)
    """
    # 创建投影坐标系
    proj = pyproj.Proj(init=f"epsg:{proj_epsg}")
    
    # 转换坐标
    lon, lat = proj(x, y, inverse=True)
    return lat, lon
    
    if __name__ == "__main__":
    # 示例坐标(北京天安门)
    lat = 39.9087
    lon = 116.3975
    
    # 指定投影坐标系(例如:UTM Zone 50N)
    proj_epsg = 32650
    
    # 地理坐标转换为投影坐标
    x, y = geographic_to_projected(lat, lon, proj_epsg)
    print(f"Geographic (lat, lon): ({lat}, {lon}) -> Projected (x, y): ({x}, {y})")
    
    # 投影坐标转换回地理坐标
    lat_converted, lon_converted = projected_to_geographic(x, y, proj_epsg)
    print(f"Projected (x, y): ({x}, {y}) -> Geographic (lat, lon): ({lat_converted}, {lon_converted})")

地理坐标转投影坐标:该函数将地理坐标的纬度和经度转换为指定投影坐标的x、y值。
投影转地理坐标:该函数将投影坐标的x、y值转换回地理坐标的纬度和经度。
EPSG编码:在示例中使用了UTM Zone 50N对应的EPSG编码(32650)。你可以根据需要选择其他坐标系的EPSG编码。
例如,在主函数模块中提供了一个示例坐标(北京天安门的经纬度),并演示了坐标的转换过程。

注意事项
当调用pyproj库时,请注意以下几点:首先应正确选择并适用合适的EPSG代码范围;确保所选代码段覆盖你的地理区域。此外还需明确考虑坐标系转换的具体参数设置。
由于地球被视作一个非标准形状,在进行投影变换时可能会导致转换精度存在轻微差异。

本文属于作者的原创作品。未经博主允许不得擅自转载。具体内容可参考以下链接:

全部评论 (0)

还没有任何评论哟~