Wiekar

在实际工作中,需要将Mapgis图件转换为Arcgis,其中注释通常转换为点的Shp文件,并将注释内容当作属性赋予点。Mapgis与Arcgis上下标标注格式有着较大差别,结合实际工作编写了一个Python函数,利用Arcgis字段计算器将Mapgis上下标标注转换为Arcgis标注格式。


上下标标注格式的区别

  • Mapgis的上下标:

    • 上标:在需要上标的字符前添加"#-"
    • 下标:在需要上标的字符前添加"#-"
    • 恢复正常格式:在字符前添加"#="

    例如:"J3γH2"表示为"J#-3#=γ#-H#+2"

  • Arcgis的上下标:

    • 上标:在需要上标的字符两侧添加"<sub>...</sub>"
    • 下标:在需要上标的字符两侧添加"<sup>...</sup>"

    例如:"J3γH2"表示为"J<sub>3</sub>γ<sub>H</sub><sup>2</sup>"

转换思路

以J#-3#=γ#-H#+2 (J3γH2)为例:

  1. 将字符串按#号切片,并把每个片段存入列表中;

  2. 由于字符串不能直接修改,还需要将切片的每一个字符串转换成单字符列表;

  3. 判断列表中第一个元素:

    • 如果第一个字符为"-",则将其替换为"<sub>",并在其末尾添加"</sub>";
    • 如果第一个字符为"+",则将其替换为"<sup>",并在其末尾添加"</sup>";
    • 如果第一个字符为"=",则将其设为空。
  4. 组合单字符列表,再组合切片列表,得到转换结果。

代码实现

def dh_trans(dh):
    result_list = []

    for i in dh.split(\'#\'): #按#号切片
	
	#将字符串转换为单字符列表
        ilst = []
        for j in i:
            ilst.append(j)

	#判断首个字符
        if ilst[0] == \'-\':
            ilst[0] = \'<sub>\'
            ilst.append(\'</sub>\')
        elif ilst[0] == \'+\':
            ilst[0] = \'<sup>\'
            ilst.append(\'</sup>\')
        elif ilst[0] == \'=\':
            ilst[0] = \'\'
	#组合单字符列表
        result_list.append(\'\'.join(ilst))

	#组合切片列表
    result = \'\'.join(result_list)
    return result

Arcgis中实操

软件版本:Arcgis 10.8

原数据与图面标注

属性表编辑

  1. 新建用于Arcgis标注的文本型字段("DZDH_Arc");
  2. 对新建字段打开 字段计算器
  3. 字段计算器中,解析程序选择 Python,勾选 显示代码块
  4. 预逻辑脚本代码 中输入以上Python代码,在下方输入框中填写dh_trans(!DZDH_Map!)DZDH_Map 为原Mapgis标注字段;
  5. 点击确定并等待计算完成。
    image

转换结果与新字段图面标注


本文章代码为本人编写,欢迎大家留言交流!

分类:

技术点:

相关文章:

  • 2021-11-09
  • 2021-06-13
  • 2021-11-03
  • 2022-12-23
  • 2022-01-10
  • 2021-11-18
猜你喜欢
  • 2021-09-21
  • 2022-02-23
  • 2021-12-02
  • 2021-12-13
  • 2022-02-23
  • 2021-08-05
  • 2021-04-07
相关资源
相似解决方案