zoukankan      html  css  js  c++  java
  • ArcGIS 字段计算器 Python 坑

    最近要处理个简单数据,一个字段中为文本类型,包含各种描述。要求是包含平方米的数值提取出来,变成数值,如果包含多个,则把各个值累加起来。

    比如 字段值为 “非法占用100平方米” 处理后结果为 100

    字段值为 “工棚3间” 处理结果为0

    字段值为 “工棚3间,瓦屋2间,非法占用100平方米” 处理结果100

    字段值为 “工棚100平方米,瓦屋100平方米” 处理结果为200

    由于一直写.net,上述功能在.net中做起来并不麻烦。但是觉得应该是字段计算器写写就解决的问题,懒得在用.net搭。就尝试了一下ArcGIS中的Python字段计算器

    四五年前学过一点python,虽然现在啥都不记得了

    搜索了一些arcgis字段计算器的资料,大体瞄了一眼代码,就开始写。amazing Python

    (1)python是用代码缩进表示C#中{}啊,字段计算器中的编辑页面就是个txt,啥功能也没有啊,自己一边写逻辑,一边改缩进。而且网上复制粘贴的代码,很容易缩进就乱掉了

    (2)python中,定义函数名之后有个 “:”, if条件之后也有个 “:”,而且ArcMap的字段计算器不能调试

    (3)神奇的 unicode decode error: 'ascii' codesc can't decode 0xe5 in position 异常,检索了半天资料,后来发现,是编码的问题。不知道什么原因,按错误描述,应该是ArcMap字段计算器读取的值是 ascii,而我要判断的值是 中文,就出了这个 错误,可我字段中的值明明是中文啊。该错误对新手很不友好啊

    虽然上述功能没有完全实现,也不想实现了,下面记录一下这段神奇的代码

    def fuxkPython(ss):
     flag="平方米"
     result=-1
     tp=ss.encode('utf-8');
     # tp =ss
     id=tp.find(flag)
    
     if(id>=0):
       jq=tp[0:id]
       if jq.isdigit():
         result= float(jq)
    
     return result
    

      

    amazing

  • 相关阅读:
    我拒绝接受的几个最佳编程实践方法
    女人千万别写代码
    Visual Studio原生开发的10个调试技巧(二)
    20个很有用的PHP类库
    8个开发必备的PHP功能
    青少年如何使用 Python 开始游戏开发
    rmdir 删除空目录
    rm 删除文件或目录
    mv 移动或重命名文件
    cp 复制文件或目录
  • 原文地址:https://www.cnblogs.com/DayDreamEveryWhere/p/11156244.html
Copyright © 2011-2022 走看看