Trwale zmieniaj kolejność pól w danych (shp, gdb)


24

Jeśli mam klasę plików shapefile lub geobazę danych, która zawiera pola, które chcę trwale zmienić kolejność, czy istnieje narzędzie, skrypt lub narzędzie, które pomoże mi szybko wykonać to zadanie?

Ogólnie wiem, że musisz utworzyć nowe pole, a następnie wypełnić je starymi wartościami, a następnie usunąć stare pole. Mam nadzieję, że istnieje już coś, co pomoże w tym. Zakładając, że nie masz dostępnego FME lub innego narzędzia ETL, jaka jest następna najlepsza sugestia?

To NIE jest zmiana poziomu widoku (tzn. Przeciąganie / upuszczanie pól w kolejności), ale raczej zapisanie do nowego pliku kształtu lub klasy obiektów. Dzięki.


Trudno mi w to uwierzyć, ale nie mogę znaleźć sposobu, aby to zrobić. Jaki jest Twój przypadek użycia w przypadku konieczności ponownego zamówienia pól? Zmiana kolejności pól na karcie pól właściwości warstwy w ArcMap nie jest rozwiązaniem?
Derek Swingley,

2
Zmiana kolejności pól polega na tym, że dane nie będą używane w ArcMap, ale przy mniej zaawansowanym oprogramowaniu do mapowania, które 1) używa plików kształtów i 2) nie pozwala na zmianę kolejności po stronie klienta i 3) klient musi zobaczyć kluczowe atrybuty pojawiają się u góry drzewa „identyfikuj”.
RyanDalton,

Właśnie edytowałem wcześniej usuniętą odpowiedź. Mam nadzieję, że nie boisz się wiersza poleceń;).
Derek Swingley,


2
@ SaultDon - to nie to samo pytanie. Odwołałeś się do pytania, które chce posortować rekordy (wiersze), ale ja chcę posortować pola (kolumny).
RyanDalton,

Odpowiedzi:


13

Jestem prawie pewien, że możesz to zrobić z klasą elementów na klasę elementów , zmieniając kolejność pól w sekcji mapy pola narzędzia.

Edycja: FC2FC nie robi tego, ale ... ratuje.

Właśnie potwierdziłem, że ogr2ogr może to zrobić. Podaj kolejność nazw pól na przełączniku -select. Na przykład, jeśli mam plik shapefile z dwoma polami, „Name” i „FolderPath” (w tej kolejności), ale najpierw chcę nowy plik shapefile z „FolderPath”:

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

2
Chociaż opcja ta nie była tak przyjazna dla użytkownika, jak się spodziewałem, zdecydowanie działa. Stworzyłem skrypt Pythona ArcGIS, który pomaga budować dla niego dane wejściowe, a użytkownik musi jedynie włączyć opcję -select „field1, field2 itp.”. Możesz go pobrać ze strony resources.arcgis.com/Resources2010/gallery/file/geoprocessing/…
RyanDalton

Mam klasę funkcji na SDE z domenami. Czy to obejmie powiązane domeny?
MjonesGEO,

@joebob no. AFAIK, ogr nie obsługuje zestawów danych z GDB SDE i nie obsługuje też domen.
Derek Swingley,

Dzięki, właśnie użyłem XRay i może on zmieniać kolejność lub zamieniać pola, jednocześnie utrzymując swoje domeny w SDE.
MjonesGEO,


7

Wtyczka QGIS „Table Manager” ma teraz również możliwość łatwego wykonywania tego zadania bez konieczności używania wiersza poleceń.


6

W QGIS możesz teraz korzystać z przybornika przetwarzania (Ctl + Alt + T) i przejść do geo-algorytmów QGIS> Narzędzia tabel wektorowych> Pola refaktoryzujące.

Stamtąd będziesz mieć wszystkie narzędzia do edycji struktury tabeli.

wprowadź opis zdjęcia tutaj


4

Dodatek Arcmap dla X-Ray ma narzędzie do zmiany kolejności pól w formacie Geodatabestutaj narzędzie do zmiany kolejności pól rentgenowskich


To działa bardzo dobrze. Będzie nawet trzymał twoje domeny w polach, jeśli ponownie zamawiasz SDE. Świetna sugestia !!
MjonesGEO,

3

Dla odniesienia: MapInfo może to zrobić również po wyjęciu z pudełka. Wystarczy otworzyć DBF i zmienić kolejność pól na stałe. http://www.dbf-editor.com też to robi (40 USD). Inni redaktorzy DBF prawdopodobnie też mogą to zrobić.


w tej linii infolib prawdopodobnie też powinien działać (przekonwertować na ascii (csv), zmienić kolejność, aby dopasować, ponownie przekonwertować z powrotem na informacje lub dbf), o ile jesteś gotów żyć z ograniczeniami formatu pliku .dbf.
matt wilkie

Masz na myśli życie z ograniczeniami formatu CSV? Punktem wyjścia dla tego pytania jest DBF ...
Uffe Kousgaard,

Miałem na myśli limity dbf, myśląc konkretnie, że csv nie ma ograniczeń długości nazwy pola ani długości wartości rekordu, a punktem początkowym był plik gdb, ale po ponownym odczytaniu QI patrz „shp” jest wspomniany w tytule. A więc granice dookoła ;-)
matt wilkie

3

Miałem podobny problem, a najszybszym sposobem na trwałe zmianę kolejności pól danych, jeśli masz już QGIS, jest użycie wtyczki „Table Manager”, jak wcześniej sugerowano.

Instalacja wtyczek jest prosta i przyjazna dla użytkownika, jak opisano na poniższej stronie:

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

Pozwala przenosić atrybuty w określonej kolejności, zmieniać nazwy pól, wstawiać nowe pola i replikować je. Pozwala także zapisać oryginalny plik lub zmienić jego nazwę i zapisać go inaczej niż oryginał.

wprowadź opis zdjęcia tutaj

Było to szybkie i wygodne rozwiązanie mojego problemu z zarządzaniem tabelą atrybutów i jest wysoce zalecane, szczególnie w przypadku plików z dużą liczbą atrybutów z tym związanych.


3

Wyeksportuj klasy elementów do pustej osobistej geobazy (przeciągnij i upuść najszybciej), otwórz .mdb w programie Access, ponownie zamów pola w Widoku projektu , zapisz, a następnie skopiuj ArcMap / Katalog z powrotem do kształtu lub pliku geobazy.

Ta sama metoda działa w przypadku zmiany nazw pól.

Bądź jednak ostrożny , pracuj tylko na kopiach, wszystko łatwo popsuć. (Jak zauważa Karey Jack w innej odpowiedzi, Esri odradza bezpośredni dostęp do .mdb ). Dla bezpieczeństwa zignoruj ​​wszystkie tabele zaczynające się od, GDB_a także te kończące się na _Shape_Index.


3

Najlepszym sposobem na to jest użycie mapowań pól. Od lat zmagam się z tą funkcją oprogramowania ESRI, ale w końcu jestem zadowolony z tego rozwiązania. Zasadniczo możesz po prostu wykonać kopię klasy obiektów z polami na stałe zmienionymi przy użyciu arcpy.FieldMappings . Wszystkie dane są również przenoszone. Po zakończeniu skryptu zmień nazwę starej klasy elementów na myFeatureClass_old, a nową na myFeatureClass!

Oto skrypt, jest bardzo prosty:

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)

3

Klasa elementów do klasy elementów może teraz wykonywać to w wersji 10.5 za pomocą sekcji Mapowanie pola narzędzia GP.

wprowadź opis zdjęcia tutaj


2

MakeQueryTable pozwoli ci zdefiniować kolejność pól dla tabeli lub FC (tylko Geobaza). Kolejność określania pól jest kolejnością danych wyjściowych. Uważam, że to narzędzie jest trudne w użyciu. YMMV

Arctoolbox, narzędzia do zarządzania danymi, warstwy i widoki tabel, tworzą tabelę zapytania


1

Wypróbuj OGR2OGR. Możesz przekazać zapytanie SQL i ustawić pola w żądanej kolejności.

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

Właśnie to przetestowałem i działa dobrze!

Do Twojej wiadomości, najprostszym sposobem na zainstalowanie OGR jest FWTools .


1

Otwórz plik .mdb w MS Access i zmień kolejność pól, przeciągając i upuszczając w „Widoku projektu”

Chociaż ESRI odradza edytowanie bazy danych w łączu Access ESRI


2
Witamy na naszej stronie, Karey! Czy to nie jest ta sama odpowiedź, którą Matt Wilkie udzielił w tym wątku 18 miesięcy temu ( gis.stackexchange.com/a/5879 )?
whuber

0

Jestem trochę spóźniony na przyjęcie w tej sprawie, ale jestem zaskoczony, że nikt nie wspomniał o diagramie geograficznym ESRI .

Zasób udostępniony przez ESRI do edycji struktury XML twojej geobazy i plików. Moim zdaniem jest to bardzo ważne, jeśli pracujesz nad czymkolwiek, gdzie design musi być idealny (projekt długoterminowy). Dzięki temu nie będziesz musiał ciągle tworzyć plików po popełnieniu prostego błędu.


1
Czy widziałeś komentarz (do samego pytania) stwierdzający, że nie była to reorganizacja bazy danych, ale raczej jest ona potrzebna do wyeksportowania danych?
whuber
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.