Mehr

Verwenden des Feldrechners für ein Zeichenfolgenfeld, das einige leere Werte enthält?

Verwenden des Feldrechners für ein Zeichenfolgenfeld, das einige leere Werte enthält?


Ich habe ein CityState-Feld, das die Stadt und die Bundesstaaten der Grundbesitzer enthält. Bellingham WA zum Beispiel. Ich erstelle zwei neue Felder, OwnerCity und OwnerState, in denen ich die letzten beiden Zeichen von CityState für OwnerCity (RTrim([CityState],2) entferne und die letzten beiden Zeichen für OwnerState (Right([CityState],2)) erfasse der CityState-Zellen sind leer, sodass ich den Taschenrechner nicht ausführen kann.

Was kann ich hinzufügen, damit die Berechnung dort ausgeführt wird, wo Text vorhanden ist, und den Wert leer hält, wenn kein Text vorhanden ist? Ich bin sicher, es gibt eine einfache Antwort darauf, aber ich habe es noch nicht herausgefunden.


Mit Python-Parser im Feldrechner können Sie die folgenden Funktionen verwenden, um die Aufteilungen von Stadt / Bundesstaat auszuführen und diese Datensätze mit leeren Werten zu ignorieren (ich weiß, dass dies kein Vbscript ist, aber auch sehr einfach zu implementieren):

Beachten Sie, dass es wahrscheinlich besser wäre, "," die Stadt-/Bundesstaatennamen im CityState-Feld abzugrenzen, um eine robustere Aufteilung für Städte mit mehreren Namen / Leerzeichen zu gewährleisten.

RUN auf dem neuen Stadtfeld:

def splitValue(x): if"in x: return x.split(")[0] # Angenommen, Sie haben ein Leerzeichen zwischen Stadt und Bundesland, können Sie auch durch teilen sonst: return x

splitValue(!CityState!)

RUN auf neuem Statusfeld:

def splitValue(x): if"in x: return x.split(")[1] # Angenommen, Sie haben ein Leerzeichen zwischen Stadt und Bundesland, können Sie auch durch teilen sonst: return x

splitValue(!CityState!)


Es gibt auch eine Split-Funktion in VB Script.

Ihr Code würde also etwa so aussehen (VB-Skript-Parser überprüft und Codeblock aktiviert anzeigen):

Vorlogik-Skriptcode:

Dim result a = Split([IHR FELD], " ") 'erster Parameter ist der Feldname, 2. ist das Trennzeichen result = a(0) 'oder a(1), je nachdem, welchen Teil der geteilten Zeichenfolge Sie benötigen

FELDNAME = Teil

Ergebnis

Für fehlende Werte

Wenn Sie wissen, dass Ihnen möglicherweise ein Feldwert fehlt, können Sie diesen leeren Wert überprüfen. Ich habe gefunden mitungebunden(a)um Ihnen die obere Grenze des Arrays zu geben, das von der erstellt wurdeTeiltFunktion. Um zu überprüfen, ob die Funktion nicht aufgeteilt werden konnte (nur 1 Wert, keine Leerzeichen usw.), können Sie Folgendes tun:

if ubound(a) = 0 then result = "was auch immer" end if

Sie werden feststellen, dass die Python-Route viel einfacher ist, da Sie die.LängeEigenschaft des Arrays, anstatt diese andere Funktion aufrufen zu müssen.

Es ist etwas kniffliger als der Python-Parser, aber Sie finden es möglicherweise einfacher, wenn Sie mit VB Script vertrauter sind. Den Beispielen von ESRI mangelt es schrecklich an guten VB-Skriptbeispielen, aber es sieht so aus, als ob Sie in der Lage sein sollten, die paar einfachen Beispiele, die sie haben, zu nehmen und sie zu erweitern.


Schau das Video: Oppgave - Etablere applikasjonslag mot wms-server