Dodanie nazwy pliku do pola atrybutu za pomocą funkcji Oblicz pole?

10

Czy ktoś wie, jak dodać nazwę pliku kształtu do pola w tabeli atrybutów pliku?

Znalazłem opis:

„Musisz użyć zmiennej wbudowanej w CalculateField, takiej jak% Name% w wyrażeniu, aby bez względu na nazwę pliku ciąg został wstawiony na podstawie nazwy pliku dbase!”

Próbowałem narzędzie CalculateField z% Name%, ale dostałem komunikat:

Executing: CalculateField "2011-11-6 15_41_point" DBFName %Name% PYTHON #
Start Time: Thu Dec 08 23:34:23 2011
WARNING 000405: No records within table
Succeeded at Thu Dec 08 23:34:24 2011 (Elapsed Time: 1.00 seconds)

Gdzie jest mój błąd?

Nadia
źródło

Odpowiedzi:

12

Ten kod python dodaje pole FILENAME do wszystkich klas obiektów (z wyjątkiem tych w zestawach danych) i zapełnia się nazwą klasy obiektów.

# Import standard library modules
import arcpy, os, sys
from arcpy import env

# Allow for file overwrite
arcpy.env.overwriteOutput = True

# Set the workspace directory 
env.workspace = r"P:\geodatabase.gdb\filename" 

# Get the list of the featureclasses to process
fc_tables = arcpy.ListFeatureClasses()

# Loop through each file and perform the processing
for fc in fc_tables:
    print str("processing " + fc)

    # Define field name and expression
    field = "FILENAME"
    expression = str(fc) #populates field   

    # Create a new field with a new name
    arcpy.AddField_management(fc,field,"TEXT")

    # Calculate field here
    arcpy.CalculateField_management(fc, field, '"'+expression+'"', "PYTHON")
Nate Bradshaw
źródło
działa w wersji 10.2. ale nie działa w wersji 10.2.2.
Nate Bradshaw,
Nic się nie stanie, jeśli wpiszesz kod w konsoli pythonowej mapy łukowej (10.6) Wygląda na to, że nie działa z tą wersją (?)
David
6

Na stronie internetowej arcscripts znajduje się skrypt, który powinien ci w tym pomóc

http://arcscripts.esri.com/details.asp?dbid=14534

Podsumowanie Prosty skrypt do utworzenia pola o nazwie „FILENAME” i dołączenia nazwy pliku shapefile do każdego wpisu w tabeli atrybutów. Używaj z tyloma plikami kształtów w określonym katalogu. Przydatne przy wybieraniu pozycji z pliku kształtu i łączeniu go w osobny plik, aby zachować ścieżkę nawigacyjną oryginalnej nazwy pliku kształtu.

Uruchom plik w katalogu zawierającym wszystkie pliki shap wymagające modyfikacji

Mam nadzieję, że o to ci chodzi

Loz
źródło
Dla informacji: nie działa w Arcgis 10.X (składnia kodu w Pythonie zmieniła się po Arcgis 9.x).
gisnside
1

Jeśli wszystko powyższe nie działa dla Ciebie z powodu niezgodności wersji lub braku wiedzy (tak jak dla mnie), wypróbuj to obejście:

  • użyj narzędzia do konwersji Eksportuj do CAD i wyeksportuj wszystkie klasy obiektów z geobazy do pliku DWG
  • nazwa klasy obiektów zostanie użyta do wypełnienia pola Warstwa dla pliku CAD
  • użyj narzędzia konwersji CAD do Geodatabase, aby wyeksportować swoje obiekty z powrotem do GDB
  • będziesz mieć teraz pola nazw warstw w tabeli dla każdej pojedynczej operacji
  • użyj narzędzia Scal, aby połączyć klasy elementów z GDB w jeden plik kształtu, który będzie miał pole atrybutu warstwy z oryginalną nazwą klasy elementów, aby można było zidentyfikować elementy
BeBre
źródło
0

Znalazłem ten link do narzędzia ArcGIS US Fish and Wildlife Service, które robi dokładnie to, czego szukasz. Działa jak urok!

Anna Riling
źródło
Jest to to samo narzędzie, które opisano we wcześniejszej odpowiedzi
PolyGeo
Narzędzie z US Fish and Wildlife Service działa tylko wtedy, gdy nazwa pola to „NAME”. Można go uelastycznić, aktualizując narzędzie Oblicz pole „Nazwa pola” za pomocą% Nazwa pola%
Eleza Kollannur