当前位置:首页>python>在 ArcGIS Pro 中利用 Python 高效导入 SVG 文件至Style样式库

在 ArcGIS Pro 中利用 Python 高效导入 SVG 文件至Style样式库

  • 2026-10-11 08:22:08
在 ArcGIS Pro 中利用 Python 高效导入 SVG 文件至Style样式库
      SVG是一种专为二维图形设计的矢量图像格式,具有分辨率无关的可缩放能力、易于编辑修改,以及通常比栅格图像更小的文件体积等显著优势。在 ArcGIS Pro 中,SVG 文件可被导入并集成到样式文件(.stylx)中,用于创建高度定制化的地图符号。本文将介绍如何通过 Python 脚本在Pro 中批量导入 SVG 文件至style样式文件。借助 Python 自动化处理,不仅能够高效完成大量符号的导入,还能统一应用元数据,自动生成符合制图信息模型(CIM)规范的可重用样式项,大幅提升工作效率,避免逐一手动添加符号的繁琐操作。

具体步骤:

1、创建用于存放工程和 .svg文件的文件夹:

2、打开ArcGIS Pro工程,新建空的style样式文件如teststyle.stylx,并将该样式保存在主项目文件夹里:

3、打开 Python 窗口,导入必要的模块:

import osimport sqlite3import requests

4、ArcGIS Server或GeoScene Server 提供了SymbolServer 实用工具,用于以构建和生成符号图像。SymbolServer 提供了两个核心操作:

generateImage—用于从 2D 或字典式 Web 样式中生成(提取)符号图像;

generateSymbol—用于将可缩放矢量图形(SVG)图像转换为制图信息模型(CIM)符号。

这里我们用到了generateSymbol这个操作。

接下来准备.svg所在文件夹路径、SymbolServer REST  URL 和样式文件路径:

# 包含SVG文件的文件夹路径folder_path=r"E:\testsvg\symbols"# generateSymbol,这里我们可以使用arcgis SymbolServer在线的服务url地址url="https://utility.arcgisonline.com/arcgis/rest/services/Utilities/Symbols/SymbolServer/generateSymbol"# 指定.stylx 文件作为一个SQLite databasestylx_path=r"E:\testsvg\teststyle.stylx"

5、建立与样式文件的数据库连接:

conn=sqlite3.connect(stylx_path, timeout=60)   cursor=conn.cursor()print("已连接")

6、将SVG文件上传到REST端点,并转换为CIM符号格式。把转换后的符号保存到样式文件中。

for filename in os.listdir(folder_path):  if filename.lower().endswith(".svg"):    svg_path = os.path.join(folder_path, filename)    print(f"Found SVG: 	{svg_path}")    with open(svg_path, "rb") as f:      files = {            "svgImage": (filename, f, "image/svg+xml"),      }      data = {            "f": "json"      }      resp = requests.post(url, files=files, data=data)      print("status:", resp.status_code)      print("body:", resp.content)      new_row = (       3,  # CLASS (symbol class - 3 = Point Symbol)       "",  # CATEGORY       filename,  # NAME       "Custom Symbol",  # TAGS       resp.content,  # CONTENT (CIM symbol JSON)       filename,  # KEY     )       cursor.execute(       "INSERT INTO ITEMS(CLASS, CATEGORY, NAME, TAGS, CONTENT, KEY) VALUES(?,?,?,?,?,?)",       new_row,     )     print(f"Inserted symbol: {filename}") conn.commit() conn.close() print("所有符号均已添加到 .stylx 文件中") 

可以直接在pro的python窗口运行代码:

执行结果:

下图展示了在“符号系统”窗格中以符号形式显示的 SVG 文件:

谢谢观看~

最新文章

随机文章