ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • ArcGIS Pro
  • ArcMap
ArcGIS Desktop

ArcGIS Online

Die Mapping-Plattform für Ihre Organisation

ArcGIS Desktop

Ein vollständiges professionelles GIS

ArcGIS Enterprise

GIS in Ihrem Unternehmen

ArcGIS for Developers

Werkzeuge zum Erstellen standortbezogener Apps

ArcGIS Solutions

Kostenlose Karten- und App-Vorlagen für Ihre Branche

ArcGIS Marketplace

Rufen Sie Apps und Daten für Ihre Organisation ab.

  • ArcGIS Pro
  • ArcMap
Esri
English
  • English
  • Deutsch
  • Español
  • Français
  • 日本語
  • Русский
  • 简体中文
  • Anmelden
user
  • Eigenes Profil
  • Abmelden

ArcMap

  • Startseite
  • Erste Schritte
  • Karte
  • Analysieren
  • Verwalten von Daten
  • Werkzeuge
  • Erweiterungen

ToolValidator-Klasse für "Feld hinzufügen"

Diese ArcGIS 10.7-Dokumentation wurde archiviert und wird nicht mehr aktualisiert. Inhalt und Links sind möglicherweise veraltet. Verwenden Sie die aktuelle Dokumentation.

In diesem Beispiel wird die Feld hinzufügen-Werkzeugvalidierung emuliert. Da Feld hinzufügen ein integriertes Werkzeug ist, verfügt es nicht über eine ToolValidator-Klasse. Wäre dies der Fall, würde sie jedoch in etwa so aussehen.

Dies die Parameter für Feld hinzufügen und die Datentypen:

  • 0 - Eingabe-Tabelle: Zusammengesetzter Datentyp schließt alle Tabellen ein
  • 1 - Feldname: Zeichenfolge
  • 2 - Feldtyp: Zeichenfolge (LONG, SHORT, DOUBLE usw.)
  • 3 - Feldgenauigkeit: Long
  • 4 - Felddezimalstellen: Long
  • 5 - Feldlänge: Long
  • 6 - Feld-Alias: Zeichenfolge
  • 7 - Feld erlaubt NULL-Werte: Boolesch
  • 8 - Erforderliches Feld: Boolesch
  • 9 - Felddomäne: Zeichenfolge
  • 0 - Ausgabe-Tabelle: Abgeleitete Ausgabe, aus Parameter 0 erhalten

In diesem Beispiel wird die "Feld hinzufügen"-Werkzeugvalidierung emuliert

class ToolValidator:

    def __init__(self):
        import arcpy 
        self.params = arcpy.GetParameterInfo()

    def initializeParameters(self):
        # The derived output is a clone (copy) of the input
        #
        self.params[10].parameterDependencies = [0]
        self.params[10].schema.clone = True

        # Set up the field type list
        #
        self.params[2].filter.list = ["TEXT", "FLOAT", "DOUBLE",
                                      "SHORT", "LONG", "DATE",
                                      "BLOB", "RASTER"]

        # The default field type is LONG
        #
        self.params[2].value = "LONG"

        # Field scale & Length are disabled for LONG types
        #
        self.params[4].enabled = False
        self.params[5].enabled = False

        # Set the Boolean filters for IsNullable and IsRequired and
        #  their default values
        #
        self.params[7].filter.list = ["NULLABLE", "NON_NULLABLE"]
        self.params[7].value = "NULLABLE"
        
        self.params[8].filter.list = ["REQUIRED", "NON_REQUIRED"]
        self.params[8].value = "NON_REQUIRED"

        return

    def updateParameters(self):
        # Set the default field type value unless the user altered it
        #
        if not self.params[2].altered:
            self.params[2].value = "LONG"

        # Enable/Disable parameters based on field type
        #
        fieldType = self.params[2].value.upper()
        if fieldType in ["TEXT", "BLOB"]:
            self.params[3].enabled = False
            self.params[4].enabled = False
            self.params[5].enabled = True
        elif fieldType in ["FLOAT", "DOUBLE"]:
            self.params[3].enabled = True
            self.params[4].enabled = True
            self.params[5].enabled = False
        elif fieldType in ["SHORT", "LONG"]:
            self.params[3].enabled = True
            self.params[4].enabled = False
            self.params[5].enabled = False
        elif fieldType in ["DATE", "RASTER"]:
            self.params[3].enabled = False
            self.params[4].enabled = False
            self.params[5].enabled = False
        else:
            # Unknown field type.  Internal validation will catch this
            #  and show an error. We might as well return here and let
            #  internal validation do its work.
            #
            return
        
        # Update the output schema with the new field. Don't do anything
        #  unless we have an input value and a field name
        #
        if self.params[0].value and self.params[1].value:
            newField = arcpy.Field()
            newField.name = self.params[1].value
            newField.type = self.params[2].value

            # Set up the field properties based on type of field
            #
            if self.params[3].value and self.params[3].enabled:
                newField.precision = self.params[3].value
            if self.params[4].value and self.params[4].enabled:
                newField.scale = self.params[4].value
            if self.params[5].value and self.params[5].enabled:
                newField.length = self.params[5].value
                
            if self.params[6].value:
                newField.aliasName = self.params[6].value
                
            newField.isNullable = self.params[7].value

            # Note: IsRequired is not a property on a field object -- it's
            #  handled internally by the Add Field system tool.
            # 
            if self.params[9].value:
                newField.domain = self.params[9].value

            # Set the additional field on the output schema
            #
            self.params[10].schema.additionalFields = [newField]

    def updateMessages(self):
        return

ArcGIS Desktop

  • Startseite
  • ArcGIS Pro
  • ArcMap
  • Dokumentation
  • Support

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS Platform
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Über Esri

  • Über uns
  • Karriere
  • Esri Blog
  • User Conference
  • Developer Summit
Esri
Copyright © 2019 Esri. | Datenschutz | | Rechtliches