Mehr

Verwenden mehrerer Platzhalterparameter mit arcpy.ListFeatureClasses

Verwenden mehrerer Platzhalterparameter mit arcpy.ListFeatureClasses


Ich weiß, dass es einen Weg geben muss, dies zu tun, aber ich habe Probleme, herauszufinden, wie das geht. Ich möchte eine Liste von Feature-Classes erstellen, für die Operationen ausgeführt werden sollen, aber ich möchte, dass die Liste Feature-Classes enthält, die 2 separate und unterschiedliche Dateinamensbezeichner haben. Der Code würde ungefähr so ​​aussehen:

FCS = arcpy.ListFeatureClasses("X_*" ODER "*_Y")

Ich weiß, dass OR falsch ist, aber gibt es eine Möglichkeit, dies zu tun, ohne Code neu schreiben zu müssen, um mit dem zweiten Platzhalter zu arbeiten. Vielen Dank, dass Sie Gicht geholfen haben, ich weiß, dass es eine Auswahlmethode in der Auswahl nach Attributen gibt, die die Verwendung mehrerer Platzhalter mithilfe der OR-Anweisung ermöglicht.


Addiere die beiden zusammen, es sind nur Listen.

FCS = arcpy.ListFeatureClasses("X_*") + arcpy.ListFeatureClasses("*_Y")

So beseitigen Sie Duplikate:

FCS = set(arcpy.ListFeatureClasses("X_*") + arcpy.ListFeatureClasses("*_Y"))

Du könntest es etwas anders angehen:

import arcpy import os arcpy.env.workspace = 'c:	emp' fcs = [fc für fc in arcpy.ListFeatureClasses() if fc.startswith('X_') or os.path.splitext(fc)[0]. endetmit('_Y')]

Dieses Skript gibt mehrere Platzhalter in einer Liste anFälle[]. Dann durchläuft es eindeutige Fälle und listet die gewünschten Feature-Classes 'arcpy.ListFeatureClasses()' auf. Jede ausgewählte Feature-Class wird der neuen Liste der Feature-Classes mit '.extend' hinzugefügt.

# Erstellen Sie eine Liste der Wildcards case = ["X_*", ""*_Y""] # Erstellen Sie eine leere Liste, um alle ausgewählten Dateien zu speichern fcs= [] # Durchlaufen Sie Dateien, um Dateien nach mehreren Wildcards für Case in Cases auszuwählen: fc = arcpy.ListFeatureClasses(case) # Füge den fc in die Liste ein fcs.extend(fc)

Automatisieren Sie mit Python das Hinzufügen von Tausenden von Funktionen zur Topologie.

Es gab zwei Probleme: Ich habe Python 3.4 verwendet, als 2.7 die Version ist, die mit arcmap10x kompatibel ist. Außerdem musste ich die Topologie validieren, bevor ich Feature-Classes oder Regeln hinzufügen konnte. Ich habe es mit einem kleinen Dataset ausgeführt und das Skript findet erfolgreich Features, fügt sie einer Topologie hinzu und fügt jedem Feature 2 Regeln hinzu. Ich führe es jetzt auf dem großen Datensatz aus. Bisher keine Fehler. Ich lasse es am Wochenende laufen. Wenn es erfolgreich ist, werde ich sehen, ob es möglich ist, Regelverletzungen in arcmap mit einem so großen Datensatz manuell zu bearbeiten. Das wird ein ganz anderes Tier.

Besonderer Dank geht an Plagioclase und all die anderen Redditoren, die mir geholfen haben.

Edit 4: Ich bin beim Hinzufügen von Regeln geblieben. Ich habe versucht zu laufen

Aber ich habe einen Fehler bezüglich der Parameter in der Add-Regel erhalten, also habe ich beschlossen, vorerst nur den direkten Pfad hinzuzufügen, nur um zu sehen, ob ich eine Add-Regel zum Laufen bringen kann.

Zumindest sehe ich jetzt, dass die Regel zur Topologie hinzufügen auftaucht und fehlschlägt. Der Fehler, den ich bekomme, ist

Muss ich dort einen Speichervorgang für den Layer-Prozess hinzufügen?

Der Grund, warum ich dies mit Python tun möchte, sind die Einschränkungen von Arcgis. In arccatalog müssen Sie beispielsweise ein Feature nacheinander mit einer angehängten Regel einfügen. Ich habe Tausende von Funktionen, also würde das ewig dauern. Ich möchte den Prozess irgendwie mit Python automatisieren. Ich habe ursprünglich ein einfaches Skript gepostet, das ich geschrieben hatte und das nicht funktionierte, aber ich frage mich, ob ich das Problem falsch angehe. Irgendwelche Ideen? Vielen Dank!



StackExchange.ready(function() <
var channelOptions = <
Tags: "".split(" "),
ID: "79"
>
initTagRenderer("".split(" "), ".split(" "), channelOptions)

StackExchange.using("externalEditor", function() <
// Muss den Editor nach Snippets feuern, wenn Snippets aktiviert sind
if (StackExchange.settings.snippets.snippetsEnabled) <
StackExchange.using("Schnipsel", Funktion() <
createEditor()
>)
>
sonst <
createEditor()
>
>)

Funktion createEditor() <
StackExchange.prepareEditor( <
HeartbeatType: 'Antwort',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: wahr,
showLowRepImageUploadWarning: true,
ReputationToPostImages: null,
bindNavPrevention: wahr,
Postfix: "",
BildUploader: <
brandingHtml: "Powered by u003ca href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "Benutzerbeiträge lizenziert unter u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 mit Namensnennung erforderlichu003c/au003e u003ca href="https://stackoverflow.com/ rechtliche/inhaltsrichtlinie"u003e(inhaltsrichtlinie)u003c/au003e",
allowUrls: true
>,
onDemand: wahr,
discardSelector: ".discard-answer"
,sofortShowMarkdownHelp:true
>)

Vielen Dank, dass Sie eine Antwort zum Geographic Information Systems Stack Exchange beitragen!


  • Bitten um Hilfe, Klärung oder Antworten auf andere Antworten.
  • Aussagen auf der Grundlage von Meinungen untermauern sie mit Referenzen oder persönlichen Erfahrungen.

Weitere Informationen finden Sie in unseren Tipps zum Schreiben großartiger Antworten.

Einige Ihrer Antworten in der Vergangenheit sind nicht gut angekommen, und Sie laufen Gefahr, an der Beantwortung gehindert zu werden.