zoukankan      html  css  js  c++  java
  • ArcGIS内置Python — ArcPy

    ArcGIS在属性计算和Geoprocessing中都用到了Python。

    属性计算请看:https://www.cnblogs.com/2008nmj/p/13813941.html

    Geoprocessing下拉框中的Python:

    >>ArcGIS开发权威指南:https://www.cnblogs.com/2008nmj/p/13801096.html

    用ArcPy创建域Domain:https://desktop.arcgis.com/zh-cn/arcmap/latest/tools/data-management-toolbox/create-domain.htm

    命名空间Database Connectionswuhan.sde

    >>> arcpy.env.workspace = r'Database ConnectionsConnection to DESKTOP-NF3M1HO.sde'

    语法

    CreateDomain(in_workspace, domain_name, {domain_description}, {field_type}, {domain_type}, {split_policy}, {merge_policy})
    参数 说明 数据类型
    in_workspace

    将包含新属性域的地理数据库。

    Workspace
    domain_name

    要创建的属性域的名称。

    String
    domain_description
    (可选)

    要创建的属性域的描述。

    String
    field_type
    (可选)

    要创建的属性域的类型。属性域是描述字段类型合法值的规则。指定的字段类型应与将属性域指定到的字段的数据类型相匹配。

    • SHORT —特定范围内不含小数值的数值;编码值。这是默认值。
    • LONG —特定范围内不含小数值的数值。
    • FLOAT —特定范围内含小数值的数值。
    • DOUBLE —特定范围内含小数值的数值。
    • TEXT —名称或其他文本特性。
    • DATE —日期和/或时间。
    String
    domain_type
    (可选)

    要创建的属性域类型:

    • CODED —指定一组有效的属性值。例如,编码值属性域可能指定有效的管道材料值:CL - 铸铁管、DL - 球墨铸铁管或 ACP - 石棉混凝土管。这是默认值。
    • RANGE —指定数值属性的有效取值范围。例如,如果给水干管的压力介于 50 和 75 psi 之间,则范围属性域会指定这些最大值和最小值。
    String
    split_policy
    (可选)

    所创建属性域的分割策略。分割要素时,属性值的行为受控于它的分割策略。

    • DEFAULT —两个所生成要素的属性使用给定要素类或子类型的默认属性值。
    • DUPLICATE —两个所生成要素的属性使用原始对象的属性值副本。
    • GEOMETRY_RATIO —两个所生成要素的属性是原始要素值的比率。该比率取决于原始几何的分割比例。如果几何被分割成相等的两部分,则每个新要素的属性值将是原始对象属性值的一半。几何比策略仅适用于范围属性域。
    String
    merge_policy
    (可选)

    所创建属性域的合并策略。在将两个要素合并为一个要素时,合并策略控制着新要素的属性值。

    • DEFAULT —所生成要素的属性使用给定要素类或子类型的默认属性值。这是唯一适用于非数字字段和编码值属性域的合并策略。
    • SUM_VALUES —所生成要素的属性使用原始要素属性值的总和。总和值策略仅适用于范围属性域。
    • AREA_WEIGHTED —所生成要素的属性使用原始要素属性值的加权平均值。此平均值取决于原始要素的几何。加权面积策略仅适用于范围属性域。
    String

    代码示例

    创建属性域示例(Python 窗口)

    以下 Python 窗口脚本演示了如何在即时模式下使用 CreateDomain 函数。

    import arcpy
    arcpy.env.workspace = "C:/data"
    arcpy.CreateDomain_management("montgomery.gdb", "Materials", "Valid pipe materials", "TEXT", "CODED")
    
    创建属性域示例 2(独立脚本)

    此独立脚本将 CreateDomain 函数用作工作流的一部分,以创建属性域、为其赋值并将属性域分配给要素类的字段。

    # Name: MakeDomain.py
    # Description: Create an attribute domain to constrain pipe material values
     
    #Import system modules
    import arcpy
     
    try:
        # Set the workspace (to avoid having to type in the full path to the data every time)
        arcpy.env.workspace = "C:/data"
     
        # Set local parameters
        domName = "Material4"
        gdb = "montgomery.gdb"
        inFeatures = "Montgomery.gdb/Water/Distribmains"
        inField = "Material"
     
        # Process: Create the coded value domain
        arcpy.CreateDomain_management("montgomery.gdb", domName, "Valid pipe materials", "TEXT", "CODED")
        
        #Store all the domain values in a dictionary with the domain code as the "key" and the 
        #domain description as the "value" (domDict[code])
        domDict = {"CI":"Cast iron", "DI": "Ductile iron", "PVC": "PVC", 
                    "ACP": "Asbestos concrete", "COP": "Copper"}
        
        # Process: Add valid material types to the domain
        #use a for loop to cycle through all the domain codes in the dictionary
        for code in domDict:        
            arcpy.AddCodedValueToDomain_management(gdb, domName, code, domDict[code])
        
        # Process: Constrain the material value of distribution mains
        arcpy.AssignDomainToField_management(inFeatures, inField, domName)
     
    except Exception as err:
        print(err.args[0])


    除了官网以外,也可以在ArcToolbox的Help中查看帮助:https://jingyan.baidu.com/article/eae07827ba96a51fec548513.html
    >>> arcpy.CreateDomain_management(r'C:UsersAdministratorAppDataRoamingEsriDesktop10.2ArcCatalogwuhan.sde', "管道层级", "按管道层级", "SHORT", "CODED")
    >>> arcpy.AssignDomainToField_management("排水管", "Pipe_Level", "管道层级")
    注意:'Database Connectionswuhan.sde'也可以。
     
  • 相关阅读:
    java之redis篇(spring-data-redis整合) (转)
    web.xml
    点击类名方法名如何连接到相应的Android源代码
    eclipse能够自动提示变量名.
    Android自定义ActionBar
    Android 自定义View
    android 自定义titlebar
    Android SharedPreferences登录记住密码
    Android 正则表达式验证手机和邮箱格式是否正确
    Android 首次进入应用时加载引导界面
  • 原文地址:https://www.cnblogs.com/2008nmj/p/13813969.html
Copyright © 2011-2022 走看看