Постійне упорядкування полів у даних (shp, gdb)


24

Якщо у мене є специфічний клас формфайлу або бази даних геоданих, який містить поля, які я хочу назавжди змінити, чи є інструмент, скрипт чи утиліта, яка допоможе мені швидко виконати це завдання?

Як правило, я знаю, що ви повинні створити нове поле, а потім заповнити його старими значеннями, а потім видалити старе поле. Я сподіваюся, що там вже створено щось, що допоможе в цьому. Якщо припустити, що у вас немає FME чи іншого інструменту ETL, що є наступною найкращою пропозицією?

Це НЕ зміна рівня перегляду (тобто перетягування / скидання полів у порядку), а скоріше випишіть у новий файл форми або клас класів. Спасибі.


Мені важко повірити, але я не можу знайти спосіб це зробити. Який ваш випадок використання для необхідності повторного замовлення полів? Переупорядкування полів на вкладці полів властивостей шару в ArcMap не є рішенням?
Дерек Свінглі

2
Переупорядкування полів відбувається через те, що дані не будуть використовуватися в ArcMap, але з менш складним програмним забезпеченням для картографування, яке 1) використовує shapefiles і 2) не дозволяє перенастроювати на стороні клієнта і 3) клієнту потрібно побачити ключові атрибути відображаються у верхній частині дерева "ідентифікувати".
RyanDalton

Щойно відредагував мою раніше видалену відповідь. Сподіваємось, ви не злякалися командного рядка;).
Дерек Свінглі

те саме питання? gis.stackexchange.com/questions/5839/…
SaultDon

2
@ SaultDon - це не те саме питання. Ви посилалися на питання, яке хоче сортувати RECORDS (рядки), але я хочу сортувати FIELDS (стовпці).
RyanDalton

Відповіді:


13

Я впевнений, що ви можете зробити це за допомогою Feature Class до Feature Class , перезавантаживши поля в розділі карти поля в інструменті.

Редагувати: FC2FC не робить цього, але ... на допомогу.

Я щойно підтвердив, що ogr2ogr може це зробити. Вкажіть порядок імені вашого поля за допомогою перемикача -select. Наприклад, якщо у мене є файл форми з двома полями "Ім'я" та "FolderPath" (у такому порядку), але спочатку я хочу новий профіль форми з "FolderPath", я б це зробив:

C:\Temp>ogr2ogr -f "ESRI Shapefile" re_order_ogr.shp re_order1.shp -select "FolderPath,Name"

2
Хоча це був не настільки зручний варіант, як я сподівався, це, безумовно, робить трюк. Я створив скрипт ArcGIS python, який допомагає створити вхідні дані для нього, і користувачеві потрібно просто включити параметр -select "field1, field2 тощо". Завантажити його можна на ресурсах.arcgis.com
Resources2010/gallery/file/geoprocessing/…

У мене є клас функцій на SDE з доменами. Чи буде це утримувати пов’язані домени?
MjonesGEO

@joebob ні. AFAIK, ogr не підтримує набори даних з SDE GDB, а також не підтримує домени.
Дерек Свінглі

Дякую, я щойно використав XRay, і він може або упорядкувати або замінити поля, тримаючи свої домени в SDE.
MjonesGEO

7

Інструмент ET GeoWizards зробить це, і, схоже, безкоштовна версія зробить це без будь-яких обмежень щодо кількості функцій.


Це так, але, на жаль, не зберігає псевдоніми.
Ховейцер

7

Плагін QGIS "Табличний менеджер" тепер також має можливість легко виконувати це завдання без необхідності використання командного рядка.


6

У QGIS тепер можна використовувати інструментарій для обробки (Ctl + Alt + T) та перейти до геоалгоритмів QGIS> Інструменти векторної таблиці> Поля Refactor.

Звідти ви отримаєте всі інструменти для редагування структури таблиці.

введіть тут опис зображення


4

Arcmap для рентгенівських променів має інструмент для впорядкування полів формату GeodatabesТут інструмент рентгенівських полів упорядкування


Це працює дуже добре. Він навіть утримуватиме ваші домени у полях, якщо ви замовляєте SDE. Чудова пропозиція !!
MjonesGEO

3

Довідково: MapInfo також може робити це поза межами коробки. Просто відкрийте DBF і назавжди упорядкуйте поля. http://www.dbf-editor.com робить це теж ($ 40). Інші редактори DBF, можливо, теж можуть це зробити.


у цьому рядку, infolib, ймовірно , також повинен працювати (перетворити на ascii (csv), переставити за відповідним чином, перетворити назад в інформацію або dbf), якщо ви готові жити з обмеженнями формату файлу .dbf.
matt wilkie

Ви маєте на увазі жити з обмеженнями формату CSV? DBF - це відправна точка для цього питання ...
Uffe Kousgaard

Я мав на увазі обмеження dbf, конкретно думаючи, що csv не має обмежень щодо довжини імені поля чи довжини запису, і що початковою точкою був файл gdb, але перечитування QI див. "Shp" згадується у заголовку. Отже, обмежує все навколо ;-)
matt wilkie

3

У мене була подібна проблема, і найшвидший спосіб назавжди змінити поля даних, якщо у вас вже є QGIS, - використовувати плагін "Таблиця менеджерів", як було запропоновано раніше.

Встановити плагіни просто і зручно, як описано на сторінці нижче:

http://www.qgistutorials.com/en/docs/using_plugins.html

Це дозволяє переміщувати атрибути у визначеному порядку, перейменовувати поля, вставляти будь-які нові поля та копіювати їх. Це також дозволяє зберегти оригінальний файл або перейменувати його та зберегти його інакше від оригіналу.

введіть тут опис зображення

Це було швидко та зручно вирішити проблему управління моєю таблицею атрибутів, і настійно рекомендується, особливо для файлів із великою кількістю атрибутів, пов’язаних із нею.


3

Експортуйте класи функції на порожню персональну базу даних геоданих (швидке перетягування та перетягнення), відкрийте .mdb в Access, переупорядкуйте поля в режимі перегляду дизайну , збережіть, а потім скопіюйте ArcMap / Catalog назад у форму або файл бази даних geodata.

Цей же метод працює для перейменування полів.

Будьте обережні, однак працюйте лише над копіями, все легко викрутити. (Як зазначає Карі Джек в іншій відповіді, Есрі перешкоджає прямому .mdb доступу ). Для безпеки ігноруйте всі таблиці, що починаються з, GDB_а також ті, що закінчуються _Shape_Index.


3

Йо, найкращий спосіб зробити це - використовувати Map Maping. Я багато років боровся з цією функцією програмного забезпечення ESRI, але нарешті задоволений цим рішенням. В основному, ви можете просто зробити копію класу Feature з полями, упорядкованими постійно, використовуючи arcpy.FieldMappings . Усі дані також передаються. Після завершення сценарію просто перейменуйте свій старий клас функцій в myFeatureClass_old, а новий - на myFeatureClass!

Ось сценарій, це дуже просто:

import arcpy
'''
This is possible in python using FeatureClasstoFeatureClass with Fieldmappings. You can also rename fields at the same time.
So if you have a Feature Class with FIELD3, FIELD2, FIELD1 and you want the result to be FIELD1, FIELD2, FIELD3 then the following code should accomplish this.
'''
arcpy.env.workspace = r"C:\Users\myself\ArcData\my_geodatabase.gdb"
arcpy.env.overwriteOutput = True

input_fpath = "Lakes"

output_dpath = arcpy.env.workspace
output_fname = "Lakes_new"

fms = arcpy.FieldMappings()

fm = arcpy.FieldMap()
fm.addInputField(input_fpath,"FIELD1")
fms.addFieldMap(fm)

fm = arcpy.FieldMap()
fm.addInputField(input_fpath,"FIELD2")
fms.addFieldMap(fm)

fm = arcpy.FieldMap()
fm.addInputField(input_fpath,"FIELD3")
fms.addFieldMap(fm)

arcpy.conversion.FeatureClassToFeatureClass(input_fpath,output_dpath,output_fname,"",fms)


2

MakeQueryTable дозволить вам визначити порядок своїх полів для таблиці або FC (лише для Geodatabase). Порядок, який ви вказуєте поля, - це порядок виводу. Мені цей інструмент важкий у використанні. YMMV

Arctoolbox, інструменти для управління даними, шари та представлення таблиць, роблять запит Таблиця


1

Спробуйте OGR2OGR. Ви можете передати SQL-запит і ввести поля в потрібному порядку.

ogr2ogr outdataset indataset -sql "SELECT src_field1 AS dst_field1, src_field2 AS dst_field2 FROM sourcelayer"

Просто перевірив це, і це працює чудово!

FYI, найпростіший спосіб встановити OGR - це через FWTools .


1

Відкрийте .mdb файл у MS Access та впорядкуйте поля за допомогою перетягування у розділі "Дизайн дизайну"

Хоча ESRI перешкоджає редагуванню бази даних за посиланням Access ESRI


2
Ласкаво просимо на наш сайт, Каре! Хіба це не та сама відповідь, яку Мет Вілкі дав у цій темі 18 місяців тому ( gis.stackexchange.com/a/5879 )?
whuber

0

Я трохи запізнююся на вечірку на цьому, але я здивований, що ніхто не згадав про ESRI-діаграму геоданих .

Ресурс, що надається ESRI для редагування структури XML вашої бази даних та файлів. Що стосується мене, це важливо, якщо ви працюєте над тим, де дизайн повинен бути ідеальним (довгостроковий проект). Це не дозволить вам постійно створювати файли після простої помилки.


1
Ви бачили коментар (до самого питання), в якому говорилося, що це не реорганізація бази даних, а потрібна для експорту даних?
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.