pyproj运行效率优化方法

这篇具有很好参考价值的文章主要介绍了pyproj运行效率优化方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 介绍
  • 方法
    • 1. 使用全局变量
    • 2. 开启global_context
    • 3. 批量计算,少用循环
  • 参考

介绍

pyproj是一个常用的地理坐标转换python库,它其实是对proj库的python封装,底层调用proj这个c++库。当我们对大规模地理数据执行坐标转换时,需要尽可能提高pyproj的运行效率,否则会浪费大量时间。下面介绍一些常用的方法,可有效提高pyproj运行效率。

方法

首先import pyproj

import pyproj
from pyproj import Transformer

这里以WSG84地理坐标转UTM北纬51分带投影坐标为例

EPSG_WGS84 = 4326
EPSG_WGS84_UTM_51N = 32651

1. 使用全局变量

使用下面的函数每次执行坐标转换都会new一个transformer对象,函数运行结束则销毁对象并回收内存,内存不断重复分配与回收对程序运行效率影响较大。

def lonlat_to_xy(lon, lat, epsg=EPSG_WGS84_UTM_51N):
    """
    输入经度和纬度,返回x和y(单位:m)
    """

    transformer = Transformer.from_crs("epsg:{}".format(EPSG_WGS84), "epsg:{}".format(epsg), always_xy=True)
    return transformer.transform(lon, lat)

我们使用全局变量来避免这一问题。全局变量初始化可以设置area_of_interest参数,含义为当前所关注的坐标经纬度范围,能进一步提高计算效率。

DEFAULT_TRANS = Transformer.from_crs("epsg:{}".format(EPSG_WGS84), "epsg:{}".format(EPSG_WGS84_UTM_51N), always_xy=True,
                                area_of_interest=AreaOfInterest(119.504167, 31.093677, 120.610871, 32.005928))

def lonlat_to_xy(lon, lat, epsg):
    if epsg == EPSG_WGS84_UTM_51N:
        return DEFAULT_TRANS.transform(lat, lon)
    transformer = Transformer.from_crs("epsg:{}".format(EPSG_WGS84), "epsg:{}".format(epsg), always_xy=True)
    return transformer.transform(lon, lat)

2. 开启global_context

如果代码确定为单线程执行,可以设置global_context为true。

pyproj.set_use_global_context(active=True)

3. 批量计算,少用循环

直接输入坐标数组批量计算,不要在循环体内对单个点进行坐标转换。文章来源地址https://www.toymoban.com/news/detail-664368.html

lngs = [119.50, 119.51, 119.52, 119.49, 119.50]
lats = [31.09, 31.10, 31.08, 31.00, 31.04]
xx, yy = lonlat_to_xy(lngs, lats, EPSG_WGS84_UTM_51N)

参考

  • https://pyproj4.github.io/pyproj/stable/advanced_examples.html#repeated-transformations

到了这里,关于pyproj运行效率优化方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL优化:12种提升SQL执行效率的有效方法

    在数据库管理和优化的世界里,MySQL作为一个流行的关系型数据库管理系统,其性能优化是任何数据密集型应用成功的关键。优化MySQL数据库不仅可以显著提高SQL查询的效率,还能确保数据的稳定性和可靠性。 在本文中,我将介绍12种提升SQL执行效率的有效方法,并通过实用的

    2024年01月16日
    浏览(36)
  • 性能优化-OpenCL运行时API介绍

    「发表于知乎专栏《移动端算法优化》」 本文首先给出 OpenCL 运行时 API 的整体编程流程图,然后针对每一步介绍使用的运行时 API,讲解 API 参数,并给出编程运行实例。总结运行时 API 使用的注意事项。最后展示基于 OpenCL 的图像转置代码。在 865 平台下,对于 4096x4096 的 8

    2024年01月24日
    浏览(69)
  • Vue基础入门(2)- Vue的生命周期、Vue的工程化开发和脚手架、Vue项目目录介绍和运行流程

    Vue生命周期:就是一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个阶段: ① 创建 ② 挂载 ③ 更新 ④ 销毁 1.创建阶段:创建响应式数据 2.挂载阶段:渲染模板 3.更新阶段:修改数据,更新视图 watch 是监听的数据修改就触发, updated 是整个组件的dom更新才触发 4.销毁

    2024年03月10日
    浏览(48)
  • 安装MySQL后如何运行?介绍两种方法

    上一篇文章小白如何安装MySQL——使用安装器安装有写到如何快速安装MySQL 那么这篇就来介绍一下安装后怎么启动MySQL 提供两种方法 一、cmd程序启动 1.首先要找到安装后的mysql目录下的bin文件,该文件下有个mysql的应用程序。不需要打开,复制该目录的地址,比如我的是C:Pr

    2024年02月07日
    浏览(25)
  • 网件路由器网络加速优化的方法介绍

        一、高速缓存技术主要用来解决带宽瓶颈、应用延迟问题。目前市场上有一些产品比较典型的就是采用WEB文件缓存和数据字节缓存技术这两种。将WEB文件缓存到设备中,主要是针对WEB 应用访问,对于TCP应用是没有效果的;另一种是动态缓存,将数据压缩以后按照重复性频

    2024年02月05日
    浏览(55)
  • 机器学习笔记之最优化理论与方法(十)无约束优化问题——共轭梯度法背景介绍

    本节将介绍 共轭梯度法 ,并重点介绍共轭方向法的逻辑与几何意义。 关于 最小化 二次目标函数: min ⁡ f ( x ) = min ⁡ 1 2 x T Q x + C T x begin{aligned}min f(x) = min frac{1}{2} x^T mathcal Q x + mathcal C^T xend{aligned} min f ( x ) = min 2 1 ​ x T Q x + C T x ​ ,其中 Q ∈ R n × n ; Q ≻ 0 mathcal Q

    2024年02月09日
    浏览(34)
  • 25.9 matlab里面的10中优化方法介绍—— 惩罚函数法求约束最优化问题(matlab程序)

    1. 简述          一、算法原理 1、问题引入 之前我们了解过的算法大部分都是无约束优化问题,其算法有:黄金分割法,牛顿法,拟牛顿法,共轭梯度法,单纯性法等。但在实际工程问题中,大多数优化问题都属于有约束优化问题。惩罚函数法就可以将约束优化问题转化为

    2024年02月15日
    浏览(25)
  • web自动化测试系列之selenium的运行原理和常用方法介绍(二)

    在上文中我们编写了一段简单的代码 ,可以驱动浏览器访问百度并搜索 。这里我们再把这段代码再拿来加以说明 。 如果你是初次接触它 ,你可能会想 ,这段代码是怎么驱动浏览器运行的了 ?要知道这个问题的答案 ,就必须搞清楚以下3个问题 。 它(selenium)的运行原

    2024年04月11日
    浏览(32)
  • 25.6 matlab里面的10中优化方法介绍——模拟退火算法(matlab程序)

    1. 简述        相信没有相关物理知识背景的小伙伴看到“退火”二字是一脸懵逼的...固体的退火过程指的是将固体加热至足够高的温度,再使其慢慢冷却的过程。在加热过程中,原本有序排列的内部粒子开始无序运动,此时固体的内能不断增大;而在降温过程中,粒子的排

    2024年02月15日
    浏览(32)
  • 25.2 matlab里面的10中优化方法介绍——插值法(matlab程序)

    1. 简述        插值法又称“内插法”,是 利用函数f (x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f (x)的近似值, 这种方法称为插值法。如果这特定函数是多项式,就称它为插值多项式。常见 分段线性插值法 和

    2024年02月15日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包