介绍
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,

2万+

被折叠的 条评论
为什么被折叠?



