前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python高效办公|ArcGIS批量编码

Python高效办公|ArcGIS批量编码

作者头像
罗罗攀
发布2019-06-15 18:02:13
7780
发布2019-06-15 18:02:13
举报
01 前言

首先给各位读者道个歉,公众号停更了半个月。不过,罗罗攀满血复活,从这周起,开始重新更新,每周一、三、五早上9点20,不见不散。

其次,感谢故人兄对于本篇文章的技术指导。

02 问题描述

在工作项目中,对于数据都要进行唯一编码,有的时候是录入一行数据就进行一次编码,但这种方法效率太慢。下图是项目中编码的要求:

  • 不同土地利用类型需要不同缩写,例如,居民点对应JM。
  • 编码为4位数,而且不同类型都是从0001开始。
  • 编码在ArcGIS中完成,要么使用VB,要么使用Python。
03 解决思路

首先,说一下解决的思路:

① 对于土地利用类型的缩写,有两种方法,一是整理成索引表格,到时候利用代码进行索引,第二种,自己定义一个字典进行索引。

考虑到类型不多,加上要共享给同事,选择在代码中定义字典(这样就不用共享表格,比较方便和稳定)。

② 对于按不同土地类型进行顺序编码问题,这里可以先定义一个空字典,土地利用类型为key,值计数为value,最后格式化数据即可。

04 解决代码

以下为解决的代码:

代码语言:javascript
复制
from collections import defaultdict
index_dict = {
    u'采石场':'CS',
    u'工矿用地':'GK',
    u'能源设施':'NY',
    u'交通设施':'JT',
    u'旅游设施':'LY',
    u'养殖场':'YZ',
    u'居民点':'JM',
    u'农业用地':'NT',
    u'其他人工设施':'QT',
    u'道路':'DL'
}

m = defaultdict(int)

def code(x):
    m[x] += 1
    return index_dict[x] + '-' + "{0:04d}".format(m[x])

code( !一级类型! )

这里特别注意 defaultdict 的方法,读者可以自行学习。

在ArcGIS中使用字段计算器,进行如下设置就行了。

今天的分享就到这了,又是充实(摸鱼)的一天。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.06.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01 前言
  • 02 问题描述
  • 03 解决思路
  • 04 解决代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档