在线客服
  • |
  • 400-821-8800
  • |
  • 手机西域
    手机西域下载二维码

    开发者:西域智慧供应链(上海)股份公司

    版本:4.6.8

    扫一扫,下载西域客户端
    手机采购 移动办公
    iPhone Android
  • |
  • 快速下单
  • |
  • 我的西域
  • ArcGIS中字段计算器的问题

    文/ 发布于2018-06-05 浏览次数:681

      这几天在给同门师兄处理一个土地利用数据,需要将原先的分类转换为另一种新的分类,其实就是根据一个已经存在土地利用代码生成新的字段,这个字段是按照新的分类标准来组织,国内的的土地利用代码有好几套,比如二调的代码体系和中科院的代码体系,师兄由于研究的需要在此基础还自己发展了一套新的地类编码。所以有时候就需要在这几套编码之间进行转换,师兄的数据是二调数据,就需要将编码转为自己发展的地类编码,这里就需要用到字段计算器

      传统的方法是添加字段之后,选择相应的代码,在属性表中,将其批量修改。这种方法适合于比较小的数据,不然速度很慢,尤其是二调数据这种一个县有几十万各图斑的数据来说,选中和显示对计算机的性能是一个考验。

      当然ArcGIS的字段计算器的功能就是在这里发挥出来,它支持VB和python两种编码语言,非常方便,对于熟悉excel和word宏编写的大神们来说使用VB就很便利,而ArcGIS的脚本都是python,相信包括笔者在内的很多小伙伴都是用python吧,毕竟通用性最高。对于本文的问题,使用的是python的条件if函数,通过条件控制语句分别赋值。

      这种条件赋值语句的用处很多,比如矢量数据的重分类,各位小伙伴们可以尽情发挥自己聪明才智。然而,问题并没有结束,而本文重点也就来了,在代码执行过程中,出现了一个前所未料的问题。 我们使用代码先行转换了其中一类(有林地),然后再去转换其他类(水田)时,发现之前计算的有林地的结果消失了,属性表中之前的计算部分显示为空。几次试验发现,后一次计算时前一次的计算结果就会消失。

      之前计算好的其他林地或者有林地就会消失,先计算水田,再计算其他类i,水田的计算结果也会消失,于是笔者开始脑补各种可能的问题,包括文件格式,放在个人地理数据库和文件数据库的区别,是否打开编辑器,是否字段太多,是否字段名为中文或者太长,是否是软件版本问题或者是电脑缓存问题,逐一排除,结果仍未能找到问题所在。最后只有使出终极大杀招,在代码中一次写完所有的类型转换,虽然代码长度大幅增加,但问题解决了。

    免责声明:文章仅供学习和交流,如涉及作品版权问题需要我方删除,请联系我们,我们会在第一时间进行处理。
    相关标签:
    相关资讯
    沪公网安备 31011502008645号 | 沪ICP备09003861号 | 增值电信业务经营许可证:合字B2-20200044 | 第二类医疗器械经营备案编号:沪浦药监械经营备20200151号 | 医疗器械经营许可证编号:沪浦药监械经营许20200092号 | 互联网药品信息服务资格证书编号:(沪)-经营性-2020-0028 | 危险化学品经营许可证:沪(浦)应急管危经许[2022]204062(DYS)