Ich möchte die Attributtabelle eines Straßen-Shapefiles für alle Einträge in den Feldern bereinigen.
Zum Beispiel: Wie unten gezeigt, habe ich eine Straßenfunktion mit einem "Namen", einem Namen von und einem Namen bis in der Attributliste. In der ausgewählten Zeile heißt das Segment Louis Botha.
Der NameFrom enthält auch diesen Segmentnamen (Louis Botha & Unknown).
Nachdem ich die Daten bereinigt habe, möchte ich nur Folgendes in den relevanten Feldern anzeigen:
Name = Louis Botha Name Von = Unbekannter Name Bis = Janeke
Gibt es eine Möglichkeit, dies in den Feldern "Name von" und "Name bis" für ALLE Attribute zu entfernen?
arcpy
arcgis-10.1
fields-attributes
Dean van den Heever
quelle
quelle
Antworten:
Das folgende Skript führt die Aktionen aus, die Sie nach Verwendung eines Cursors ausführen. Es gibt eine Menge Fehlerbehandlung, um viele potenzielle Probleme zu lösen - entfernen Sie sie nach Bedarf. Dadurch werden die Originaldaten geändert. Führen Sie diese also auf einer Kopie aus, um sicherzustellen, dass die Ergebnisse Ihren Wünschen entsprechen. Ich habe dem Skript Kommentare hinzugefügt, anstatt sie hier hervorzuheben.
quelle
Sie können die folgende Python-Funktion im Feldrechner verwenden.
Kopieren Sie das Obige in den Codeblock Codeblock / Pre-Logic Script. Sie können es einmal laufen Name_From Verwendung
remove_name(!Name!, !Name_From!)
als Ausdruck, und ein zweites Mal für Name_To mitremove_name(!Name!, !Name_To!)
.Dieser Code funktioniert nicht nur in Fällen, in denen sich der Name- Wert am Anfang oder Ende von Name_From / Name_To befindet , sondern auch in Fällen , in denen er sich in der Mitte befindet. Gibt zum Beispiel
remove_name('Janeke', 'Hereeniging & Janeke & Willemse')
zurück'Hereeniging & Willemse'
. Damit dies funktioniert, werden die Eingangsnamen müssen durch Et - Zeichen getrennt werden (&
).quelle