Ich verwende ArcGIS 10.2 für Desktop, habe diese Site durchsucht und kann meine Antwort noch nicht herausfinden. Sehr neu für VBA und Python, aber viele Jahre mit ArcGIS. Ich weiß, dass ich dies mit "Nach Attributen auswählen" langsam tun kann, aber es ist zeitaufwändig.
Ich versuche eine räumliche Verbindung zwischen Krankheitsfällen (Punkteschicht) und US-Volkszählungsgebieten (Polygonschicht). Dies erfordert Zähldaten. Für jeden Punkt / Fall habe ich ein Feld mit der Bezeichnung JAHR mit Datumsbereichen 2001 bis 2012, je nachdem, in welchem Jahr der Fall eingetreten ist. Ich brauche eine Zählspalte für jedes Jahr. Zum Beispiel die erste, die ich COUNT01 anrufe. Wenn das Falldatum in YEAR 2001 ist, enthält COUNT01 eine 1. Wenn es sich um ein anderes Jahr (2002-2012) handelt, muss es eine 0 geben. Ich habe COUNT02, COUNT03 ... COUNT12 Spalten. Kann keinen "Null" -Wert haben.
Folgendes habe ich bisher versucht
Und so sehen die Daten in Arc aus.
vba
undvbscript
durch einpython
Tag zu ersetzen . Obwohl VBScript noch nicht entfernt wurde, wird es derzeit nicht mehr weiterentwickelt . Ich gehe davon aus, dass es mit dem Python-Parser einfach sein wird, wenn Sie eine detailliertere Beschreibung bereitstellen, die ein Bild / eine Tabelle einiger Beispielzeilen enthält, die die tatsächliche Eingabe und die erwartete Ausgabe zeigen. Ist YEAR ein Datumsfeld oder ein ganzzahliges Feld, das Werte enthält, die Jahren entsprechen?Antworten:
Ich denke, das ist, was Sie wollen ... mit Python können Sie Folgendes tun (vorausgesetzt, YEAR- und COUNT0X-Felder sind ganze Zahlen)
Hinweis Python verwendet Einrückungen, um den Code zu analysieren. Stellen Sie daher sicher, dass der Abstand korrekt ist.
quelle
if (int(year) == yearVal):
oder andere (siehe: informit.com/articles/article.aspx?p=459269&seqNum=7 ).Diese Antwort ist im Wesentlichen dieselbe wie die oben aufgeführte, es ist jedoch eine Möglichkeit, den Codeblock nicht verwenden zu müssen. Für das Feld Count01 würden Sie den Parser auf Python setzen und dann Ihre Berechnung auf
Dies lautet folgendermaßen: Setzen Sie das Feld auf 1, wenn das YEAR-Feld 2001 ist, und, wenn es nicht 2001 ist, setzen Sie es auf 0 ...
Wenn Sie mehrere if-Bedingungen haben, können Sie die 2. (und nachfolgende) "if" -Bedingungen in die else-Anweisung einbetten, z. B. diese ...
Dies lautet folgendermaßen: Setzen Sie das Feld auf 1, wenn das YEAR-Feld 2001 ist, wenn es nicht 2001 ist, setzen Sie es auf 2, wenn es 2002 ist, wenn nicht, setzen Sie es auf 0 ...
quelle
1 if !YEAR! == 2001 else (2 if !YEAR! == 2002 else (3 if !YEAR! == 2003 else 0))
Wenn Sie VBScript verwenden, wurde Ihre Feldberechnung falsch eingestellt. Erstens würde ich keine Variable verwenden, die der Name des Feldes ist. Dies ist verwirrend. Verwenden Sie einen anderen Namen, damit klar ist, was Sie eingestellt haben. Ihr "endif" war falsch, es sollte "end if" sein und Ihr Code sollte sich im Abschnitt mit den vorlogischen Skripten befinden. Die richtige Art und Weise, dies einzurichten, ist unten gezeigt. Aber wie die anderen bereits gesagt haben, versuchen Sie, VBScript nicht zu verwenden, da ESRI nur darauf aus ist, es zugunsten von Python zu entfernen.
quelle