zoukankan      html  css  js  c++  java
  • SHP矢量属性字段操作

    利用Python脚本往shp图层矢量添加、修改、删除属性字段。


    添加字段:

    import sys
    import arcpy
    from arcpy import env
    
    #输入sde连接、要素类
    print "shp add fields"
    env.workspace = r"D:	est"
    infc = "xxx.shp"
    print "in workspace: " + env.workspace
    print "in featureclass:" + infc
    
    iid = 100000000
    
    #添加字段
    arcpy.AddField_management(infc, "BZ", "TEXT", "", "", 200)
    arcpy.AddField_management(infc, "DATEFROM", "DATE")
    arcpy.AddField_management(infc, "XH", "LONG", 38)
    arcpy.AddField_management(infc, "IID", "LONG", 18)
    arcpy.CalculateField_management(infc, "IID", iid)
    
    print "done"


    修改字段:

    import time
    import sys
    import arcpy
    from arcpy import env
    
    #直接运行参数
    print "shp add fields"
    env.workspace = r"D:	est"
    infc = "xxx.shp"
    print "in workspace: " + env.workspace
    print "in featureclass:" + infc
    
    bz = "bzstring"
    
    codeblock = """def StringToTime(stime):
      if stime == None :
        return None
      stime = stime.replace(" ", "")
      stime = stime.replace("T16:00:00.000Z", "")
      stime = stime.replace(".", "-")
      stime = stime.replace("-0", "-")
      if len(stime) == 0 :
        return None
      if stime.endswith("-") :
        stime = stime + "1"
      if stime.count("-") == 1 :
        stime = stime + "-1"
      return stime"""
    
    #从字段1复制值到字段2
    arcpy.CalculateField_management(infc, 'FIELD2', '!FIELD1!', 'PYTHON_9.3')
    
    #转换字符串日期为标准日期格式(2021-7-20),然后直接插入
    arcpy.AddField_management(infc, "FIELD2", "DATE")
    expression = "StringToTime(!FIELD1!)"
    arcpy.CalculateField_management(infc, 'FIELD2', expression, 'PYTHON_9.3', codeblock)
    
    #填充字段值
    arcpy.AddField_management(infc, "BZ", "TEXT", "", "", 200)
    if len(fsrctable) > 0:
        arcpy.CalculateField_management(infc, "BZ", """ + bz + """)
    
    print "done"


    删除字段:

    import time
    import sys
    import arcpy
    from arcpy import env
    
    #直接运行参数
    print "shp add fields"
    env.workspace = r"D:	est"
    infc = "xxx.shp"
    print "in workspace: " + env.workspace
    print "in featureclass:" + infc
    
    arcpy.DeleteField_management(infc, "FIELD1")
    
    print "done"
  • 相关阅读:
    Linux多线程Pthread学习小结
    TCP三次握手/四次挥手
    内存管理内幕
    Delphi 中分发设计时包
    一个小的算法问题解决
    写了一个验证数字范围的正则表达式
    用 XML 文件持久化和恢复图片信息
    string.Empty 和 "" 并不总是可以互换的
    博客园用的 FreeTextBox 有 bug
    乱花渐欲迷人眼。。。
  • 原文地址:https://www.cnblogs.com/publiter/p/15075581.html
Copyright © 2011-2022 走看看