计算圆形坐标时如何将pyproj 1.x代码适配到pyproj 3.6.0?
适配pyproj 3.6.0的圆形坐标计算代码修改
以下是消除弃用警告的修改后的代码:
from shapely import ops from shapely.geometry import Point from pyproj import CRS, Transformer def circleByPoint(lat, lon, km=5): # WGS84坐标系(EPSG:4326) crs_wgs84 = CRS.from_epsg(4326) # 以目标经纬度为中心的等距方位投影 aeqd_crs = CRS.from_proj_string(f'+proj=aeqd +lat_0={lat} +lon_0={lon} +x_0=0 +y_0=0') # 创建坐标转换器(从投影坐标系转WGS84) transformer = Transformer.from_crs(aeqd_crs, crs_wgs84, always_xy=True) # 创建指定半径的缓冲圆(单位:米) buf = Point(0, 0).buffer(km * 1000) # 转换几何对象并提取圆形边界坐标 return ops.transform(transformer.transform, buf).exterior.coords[:]
关键改动说明:
- 替换旧的
Proj类为CRS类:pyproj 2.x+版本推荐使用CRS管理坐标参考系,更规范且避免弃用问题 - 用
Transformer.from_crs替代transform函数:这是pyproj新版本的标准坐标转换方式,完全替代旧的partial(transform, ...)写法 - 添加
always_xy=True参数:确保坐标转换时始终遵循**经度(x)/纬度(y)**的顺序,避免因投影轴顺序差异导致的坐标混乱 - 移除不必要的
functools.partial依赖:新的Transformer用法无需额外包装函数
内容的提问来源于stack exchange,提问作者mikezang
相关产品推荐
相关产品推荐

