osgeo和pyproj:经纬度坐标和高斯坐标互相转换

这篇博客介绍了在地图处理和自动驾驶中如何使用Python的osgeo和pyproj库进行经纬度到高斯坐标的转换。在gdal V3.0以后,转换操作需要设置转换策略以避免出现‘inf’结果。博主提供了经过测试的转换代码,并分享了在github上的下载链接。

一、前言
搞地图和自动驾驶的都知道,坐标转换是非常频繁的事情,有时候需要在各种坐标之间来回的转换,最近使用python代码处理地图数据,在使用osgeo库中的gdal时,发现了gdal v2和V3的一些不同之处,研究了一下,这里分享出来。

二、问题描述
经纬度转高斯的过程中,发现3.0一直出现的转换结果是’inf’,经过查看官方github上的issue,才知道,gdal V3.0以后,转换需要设置转换策略,具体看后面代码中的说明,现象截图如下:
在这里插入图片描述

三、解决后封装的代码
下面代码使用osgeo库和pyproj库分别实现,底层调用都是gdal,代码经过测试。

#!/usr/bin/python3

__author__ = 'ISmileLi'

from osgeo import gdal, ogr, osr
from pyproj import Transformer

'''
osgeo底层坐标转换使用的库还是proj,下面函数中的espg值需要根据自己的需求进行修改,
下文测试使用的是wgs84与中国区高斯-克吕格EPSG码为21460区的转换
'''

def lonLat_to_gauss(lon, lat, from_epsg=4326, to_epsg=21460):
    '''
    经纬度转高斯
    :param lon:
    :param lat:
    :param from_epsg:
    :param to_EPSG:
    :return:
    '''

    from_spa = osr.SpatialReference()
    '''
    gdal版本大于3.0以后必须设置转换策略才能正确显示结果,否则结果将会输出'inf'
    可以了解官方的这个issue说明:https://github.com/OSGeo/gdal/issues/1546
    '''
    if int(gdal.__version__[0]) >= 
在比较 `osgeo/gdal` 镜像中的 `ubuntu-small` `ubuntu-full` 版本时,主要可以从功能集、镜像大小、适用场景等方面进行区分。这两个版本都是基于 Ubuntu 系统构建的 GDAL 容器镜像,但它们在软件包的完整性资源占用上有所不同。 ### ubuntu-small 版本特点 `ubuntu-small` 版本是经过精简的 GDAL 容器镜像,适合对资源占用敏感、只需要基础 GDAL 功能的场景。它通常只包含 GDAL 运行所需的最小依赖集,减少了额外的软件包工具,从而降低了镜像体积。 - 镜像体积较小,加载速度快,适合部署在资源受限的环境中。 - 只包含核心的 GDAL 二进制文件运行时依赖。 - 不包含编译工具链、开发库或额外的 Python 模块,因此不适合用于开发或构建 GDAL 插件[^1]。 ### ubuntu-full 版本特点 `ubuntu-full` 版本则是一个功能完整的 GDAL 容器镜像,包含了 GDAL 所需的全部依赖库、编译工具链以及 Python 支持等,适合开发、测试需要完整 GDAL 功能的生产环境。 - 镜像体积较大,但包含了完整的 GDAL 功能开发环境。 - 支持通过 `pip` 安装 GDALPython 绑定,并可编译扩展模块。 - 包含 `libgdal-dev`、`gdal-bin` 等开发包工具,便于进行 GDAL 源码编译插件开发[^2]。 ### 功能对比总结 | 特性 | ubuntu-small | ubuntu-full | |--------------------------|-------------------------------|------------------------------| | 镜像大小 | 较小 | 较大 | | 是否包含开发工具链 | 否 | 是 | | 是否支持编译 GDAL 模块 | 否 | 是 | | 是否适合生产部署 | 是 | 是 | | 是否适合开发环境 | 否 | 是 | | 是否包含 Python 支持 | 有限 | 完整 | ### 示例:查看 GDAL 版本信息 ```bash gdalinfo --version ``` ### 示例:安装 GDAL Python 模块(适用于 ubuntu-full) ```bash pip install GDAL ``` 如果需要在容器中进行 GDAL 的二次开发、插件构建或 Python 脚本处理,建议使用 `ubuntu-full`。如果只是用于执行 GDAL 命令行工具或作为服务运行,推荐使用更轻量级的 `ubuntu-small`。
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值