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?

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")

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


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

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!


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.