Добавление имени файла в поле атрибута с помощью поля «Рассчитать?»


9

Кто-нибудь знает, как добавить имя шейп-файла в поле в таблице атрибутов файла?

Я нашел описание:

«Вы должны использовать встроенную переменную в CalculateField, например,% Name% в выражении, чтобы независимо от имени файла строка вставлялась на основе имени файла базы данных!»

Я пытался инструмент CalculateField с% Name%, но я получил сообщение:

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)

Где моя ошибка?

Ответы:


11

Этот код Python добавляет поле FILENAME ко всем классам объектов (кроме тех, что в наборах данных) и заполняется именем класса объектов.

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

работает в версии 10.2. но не работает в версии 10.2.2.
Нейт Брэдшоу,

Ничего не произойдет, если я наберу код в консоли python карты дуги (10.6). Кажется, не работает с этой версией (?)
David

6

На сайте arcscripts есть скрипт, который должен помочь вам в этом.

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

Резюме Простой скрипт для создания поля с именем «FILENAME» и присоединения имени файла шейп-файла к каждой записи в таблице атрибутов. Используйте как можно больше шейп-файлов в указанном каталоге. Полезно, когда вы выбираете отдельные записи шейп-файла и объединяете их в отдельный файл, чтобы сохранить след исходного имени шейп-файла.

Запустите файл в каталоге, содержащем все шейп-файлы, требующие модификации

Я надеюсь, что это то, что вы после


Для информации: не работает для Arcgis 10.X (синтаксис кода Python изменился после Arcgis 9.x).
Генснсайд


1

Если все вышеперечисленное не работает для вас из-за несовместимости версий или отсутствия знаний (как это для меня), попробуйте этот обходной путь:

  • используйте инструмент преобразования Export To CAD и экспортируйте все свои классы пространственных объектов из базы геоданных в файл DWG
  • имя класса объектов будет использоваться для заполнения поля Layer для файла CAD
  • используйте инструмент преобразования CAD в базу геоданных, чтобы экспортировать ваши объекты обратно в GDB
  • теперь у вас будут поля имени слоя в вашей таблице для каждого отдельного объекта
  • используйте инструмент Merge для объединения ваших классов объектов из GDB в один шейп-файл, который будет иметь поле атрибута слоя с исходным именем класса объектов, чтобы вы могли идентифицировать элементы

0

Я нашел эту ссылку на ArcGIS Tool из Службы охраны рыбы и дикой природы США, которая делает именно то, что вы ищете. Оно работало завораживающе!


Это тот же инструмент, который описан в предыдущем ответе
PolyGeo

Инструмент из Службы охраны рыб и дикой природы США работает только в том случае, если имя поля - «ИМЯ». Это можно сделать гибким, обновив инструмент вычисления поля «Имя поля»,
указав
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.