You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python提取长字符串中[]内的键对应值?GeoDjango提取EPSG值需求

提取PROJCS字符串中EPSG值的Python方案

方案1:正则表达式快速提取

直接用正则匹配AUTHORITY["EPSG","XXX"]格式的内容,提取其中的数字:

import re

crs_str = 'PROJCS["WGS_1984_UTM_Zone_42N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",69],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1],AXIS["Easting",EAST],AXIS["Northing",NORTH]]'

# 提取所有EPSG编号
all_epsg = re.findall(r'AUTHORITY\["EPSG","(\d+)"\]', crs_str)
print(all_epsg)  # 输出 ['7030', '6326']

# 提取大地基准对应的EPSG(如WGS84的6326)
geog_epsg = re.search(r'GEOGCS\[[^\]]+AUTHORITY\["EPSG","(\d+)"\]', crs_str).group(1)
print(geog_epsg)  # 输出 6326

方案2:GeoDjango内置工具(更可靠)

既然使用GeoDjango,推荐用官方的SpatialReference类解析CRS字符串,无需手动处理格式:

from django.contrib.gis.gdal import SpatialReference

crs_str = 'PROJCS["WGS_1984_UTM_Zone_42N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",69],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1],AXIS["Easting",EAST],AXIS["Northing",NORTH]]'

srs = SpatialReference(crs_str)
# 获取当前投影的EPSG编号(UTM 42N对应32642)
print(srs.srid)  # 输出 32642

# 获取大地基准的EPSG编号(WGS84对应6326)
datum_epsg = srs.get_attr_value('AUTHORITY', 1)
print(datum_epsg)  # 输出 6326

# 获取椭球体的EPSG编号(WGS84椭球对应7030)
spheroid_epsg = srs.GetAttrValue('SPHEROID', 2)
print(spheroid_epsg)  # 输出 7030

注意事项

  • 正则方案适合简单场景,但如果CRS字符串格式出现变体(如空格、引号差异)可能失效;
  • GeoDjango内置方案能准确解析CRS的所有元数据,是生产环境的优先选择。

内容的提问来源于stack exchange,提问作者Alae Tube

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:06:29