HOW TO

Migrieren von arcpy.ba.spatialoverlay()-Skripten in arcpy.ba.enrichlayer()-Skripte

Last Published: May 26, 2022

Zusammenfassung

Bei der Migration von ArcGIS Desktop Business Analyst zu ArcGIS Pro Business Analyst wurde das Werkzeug "Räumliche Überlagerung" in das Werkzeug "Layer anreichern" migriert. Obgleich diese Werkzeuge eine vergleichbare Funktionalität bereitstellen, gibt es Unterschiede hinsichtlich der Syntax, wenn sie in einem ArcPy-Skript verwendet werden. Zu diesen Unterschieden gehören Folgende:

  • arcpy.ba.spatialoverlay() verwendet für den Parameter "SelectedSummarizations" ein älteres Variablennamen-Format, wie z. B. "TOTPOP_CY"; "VACANT_FY"; "GENALPHAFY"; "POPFAMHH10"; "X11001_A"; "MP09148a_I".
    • Die Variable kann verschiedene Suffixe am Ende des Variablennamens haben, um unterschiedliche Zusammenfassungstypen anzugeben:
    • CY steht für die Variable des aktuellen Jahres, FY für Fünf-Jahres-Schätzungen, P für eine Prozentvariable, I für eine Indexvariable und A für einen Durchschnitt.
  • arcpy.ba.enrichlayer() verwendet eine Namenskonvention für Variablen, die innerhalb der ArcGIS Business Analyst-Plattform standardisiert ist, wie z. B. "populationtotals.totpop_cy"; "keyusfacts.vacant_cy_p"; "generations.genalphafy"; "householdtype.popfamhh10"; "education.x11001_x_a"; "electronicsinternet.mp09148a_b_i".
    • Die Zeichenfolge vor dem Punkt gibt die Variablenkategorie an, und die Zeichenfolge nach dem Punkt den Variablennamen.
    • cy steht für die Variable des aktuellen Jahres,fy für Fünf-Jahres-Schätzungen, p für eine Prozentvariable, i für eine Indexvariable und a für Durchschnittswerte. 00 oder 10 oder 20 stehen für ein Attribut der alle zehn Jahre stattfindenden Volkszählung.
  • Die Namen der Eingabevariablen werden direkt an die Feldnamen in der Geoverarbeitungsausgabe übergeben, was dazu führt, dass die Werkzeuge "arcpy.ba.spatialoverlay()" und "arcpy.ba.enrichlayer()" unterschiedliche Feldnamen verwenden.

Wenn ein ArcPy 2.x-Skript migriert wird, damit es mit ArcGIS Pro und ArcPy 3.x kompatibel ist, muss der Prozess "Räumliche Überlagerung" in den entsprechenden Prozess "Layer anreichern" migriert werden. Dieser Migrationsprozess erfordert die Migration von "SelectedSummarizations", um den Namenskonventionen gerecht zu werden, damit die Variablenparameter der Business Analyst-Plattform entsprechen. Außerdem ist, wenn die mit diesem Prozess erstellten Felder in einer Anwendung verwendet werden, ein weiterer Schritt erforderlich, um die Feldnamen auf das Format "arcpy.ba.spatialoverlay()" zurückzusetzen.

Vorgehensweise

Konvertieren von ausgewählten Zusammenfassungen räumlicher Überlagerungen in Variablen für "Layer anreichern"

  1. Laden Sie die Datei VariablesConverter_full.zip herunter und entpacken Sie sie. Diese Datei enthält eine Skript-Ressource, die bei der Migration eines Skriptwerkzeugs von "arcpy.ba.spatialoverlay()" zu "arcpy.ba.enrichlayer()" verwendet werden kann.
  2. Führen Sie mit einer IDE Ihrer Wahl, wie z. B. der Eingabeaufforderung, IDLE oder dem Python-Fenster, das Skript VariablesConverter_full.py aus.
    • Dieses Skript fordert zunächst zur Eingabe einer Business Analyst-Datenquelle, zum Beispiel "USA_ESRI_2021" oder "CAN_ESRI_2020", auf.
    • Hinweis: Für diese Lösung ist ein lokal installiertes Business Analyst-Dataset erforderlich.
    • Sie können diese Informationen aus ArcGIS Pro abrufen, indem Sie wie in der folgenden Abbildung gezeigt auf die Registerkarte Analyse > Business-Analyse > Business Analyst-Datenquelle klicken.
image.png
  1. Geben Sie eine durch Semikolons getrennte Liste von Business Analyst-Variablen an, die der Namenskonvention des Parameters "SelectedSummarization" entsprechen. Die Variablennamen können unter Verwendung der unten angegebenen Namenskonventionen formatiert werden, die den vereinfachten Feldnamen oder den Aliasnamen entsprechen, auf die im geführten Workflow "Räumliche Überlagerung" zugegriffen wird.
TSEGNAME;TOTPOP_CY;HHPOP_CY;POPDENS_CY;TOTHH_CY;MEDHINC_CY;AVGHINC_CY;PCI_CY;MEDDI_CY;MP01058h_I;MP01059h_B;MP01059h_I;MP06001a_I;

OR

TSEGNAME.2021 Dominant Tapestry Segment Name (Esri)(USA Esri 2021);TSPOP14_CY.2014 Total Population (Esri 2021)(USA Esri 2021);HHPOP_CY.2021 Household Population (Esri)(USA Esri 2021);POPDENS_CY.2021 Population Density (Pop per Square Mile) (Esri)(USA Esri 2021);TOTHH_CY.2021 Total Households (Esri)(USA Esri 2021);MEDHINC_CY.2021 Median Household Income (Esri)(USA Esri 2021);PCI_CY.2021 Per Capita Income (Esri)(USA Esri 2021);MEDDI_CY.2021 Median Disposable Income (Esri)(USA Esri 2021);MP01058h_I.2021 HH Owns Any Motorcycle: Index(USA Esri 2021);MP01059h_B.2021 HH Bought Any New Motorcycle(USA Esri 2021);MP01059h_I.2021 HH Bought Any New Motorcycle: Index(USA Esri 2021);MP06001a_I.2021 Participated in Any Public Activity Last 12 Mo: Index(USA Esri 2021)
  1. Drücken Sie die Eingabetaste, um das Skript auszuführen.
image.png
  1. Dieses Skript gibt zwei Ausgaben zurück:
  • Eine Liste konvertierter Variablen, die als Eingaben für den Prozess "Layer anreichern" verwendet werden können
image.png
  • Eine Liste konvertierter Variablen für die Verwendung als Feldzuordnung in einem "Feature-Class in Feature-Class"-Prozess
image.png

Konfigurieren des Prozesses "Layer anreichern"

  • Nehmen Sie die erste Ausgabe dieses Skripts, und verwenden Sie die Zeichenfolge mittels Kopieren und Einfügen als Parameter Variable für einen "arcpy.ba.EnrichLayer()"-Prozess.
Hinweis: Aufgrund der Beschränkungen für Feldnamen in einer Enterprise-Geodatabase, sollte die Ausgabe des Prozesses "Layer anreichern" in einer File-Geodatabase erstellt werden, die als Eingabe für den nächsten Schritt dient.

Konvertieren von Ausgabefeldnamen für die Namenskonvention "Räumliche Überlagerung"

  1. Um die Ausgabefeldnamen so zu konvertieren, dass sie mit einem nachgelagerten Prozess kompatibel sind, fügen Sie dem funktionsfähigen Skript einen "arcpy.conversion.FeatureClassToFeatureClass()"-Prozess hinzu:
  2. Geben Sie die "enrichlayer()"-Ausgabe als Eingabe-Layer an.
  3. Löschen Sie alle Business-Analyst-bezogenen Feldzuordnungen, die ausgefüllt wurden, und geben Sie dann die zweite Ausgabe des Skripts "VariableConverter_full" mittels Kopieren und Einfügen in den Parameter Feldzuordnung ein.
    • Löschen Sie keine Feldzuordnung, die Sie in der Ausgabe beibehalten möchten, wie z. B. ID-Felder oder Attribute, die nicht für Business Analyst relevant sind.
    • Die Ausgabe des Prozesses "Feature-Class in Feature-Class" kann in eine Enterprise-Geodatabase geschrieben werden, da die Ausgabefeldnamen die Beschränkungen für Feldnamen in Enterprise-Geodatabases berücksichtigen.

Beispiel für die konfigurierten Prozesse "Layer anreichern" und "Feature-Class in Feature-Class"

import arcpy input_fc = r"C:\Users\<userid>\Documents\ArcGIS\Default.gdb\input_polygons" enrich_fc = r"C:\Users\<userid>\Documents\ArcGIS\Default.gdb\EnrichLayeroutput" output_gdb = r"C:\Users\<userid>\Documents\ArcGIS\Default.gdb" converted_fc = "Enrichtransform" enrich_variables = "AtRisk.tsegname;Age_by_Sex_by_Race_Profile_rep.totpop_cy;populationtotals.hhpop_cy;populationtotals.popdens_cy;Age_by_Sex_by_Race_Profile_rep.tothh_cy;entertainment.x9066_i;entertainment.x9077_i;entertainment.x9077_x;entertainment.x9079_i" arcpy.ba.EnrichLayer(input_fc, enrich_fc, enrich_variables) arcpy.conversion.FeatureClassToFeatureClass(enrich_fc, output_gdb, converted_fc, '', 'ID "ID" true true false 3 Text 0 0,First,#,EnrichLayer1,ID,0,3;TSEGNAME "2021 Dom Tapestry Segment Name" true true false 8 Double 0 0,First,#,test,AtRisk_tsegname,-1,-1;TOTPOP_CY "2021 Total Population" true true false 8 Double 0 0,First,#,test,Age_by_Sex_by_Race_Profile_rep_totpop_cy,-1,-1;HHPOP_CY "2021 Household Population" true true false 8 Double 0 0,First,#,test,populationtotals_hhpop_cy,-1,-1;POPDENS_CY "2021 Population Density" true true false 8 Double 0 0,First,#,test,populationtotals_popdens_cy,-1,-1;TOTHH_CY "2021 Total Households" true true false 8 Double 0 0,First,#,test,Age_by_Sex_by_Race_Profile_rep_tothh_cy,-1,-1;MEDHINC_CY "2021 Median Household Income" true true false 8 Double 0 0,First,#,test,Health_medhinc_cy,-1,-1;AVGHINC_CY "2021 Average Household Income" true true false 8 Double 0 0,First,#,test,AtRisk_avghinc_cy,-1,-1;PCI_CY "2021 Per Capita Income" true true false 8 Double 0 0,First,#,test,householdincome_pci_cy,-1,-1;MEDDI_CY "2021 Median Disposable Income" true true false 8 Double 0 0,First,#,test,disposableincome_meddi_cy,-1,-1;MP01058h_I "2021 Index: HH Owns Any Motorcycle" true true false 8 Double 0 0,First,#,test,AutomobilesAutomotiveProducts_mp01058h_i,-1,-1;MP01059h_B "2021 HH Bought Any New Motorcycle" true true false 8 Double 0 0,First,#,test,AutomobilesAutomotiveProducts_mp01059h_b,-1,-1;MP01059h_I "2021 Index: HH Bought Any New Motorcycle" true true false 8 Double 0 0,First,#,test,AutomobilesAutomotiveProducts_mp01059h_i,-1,-1;MP06001a_I "2021 Index: Participated in Any Public Activity/12 Mo" true true false 8 Double 0 0,First,#,test,CivicActivitiesPoliticalAffiliation_mp06001a_i,-1,-1;MP06002a_I "2021 Index: Attended Public Mtg On Town/School Affairs/12 Mo" true true false 8 Double 0 0,First,#,test,CivicActivitiesPoliticalAffiliation_mp06002a_i,-1,-1')

Artikel-ID: 000027720

Benachrichtigungen erhalten und Lösungen für neue oder häufige Probleme finden

Unser neuer KI-Chatbot stellt zusammengefasste Antworten und Videolösungen für Sie bereit.

Esri Support App herunterladen

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Esri Support App herunterladen

Zu Download-Optionen wechseln