Felder in Daten dauerhaft neu anordnen (shp, gdb)

24

Wenn ich eine Shapefile- oder Geodatabase-Feature-Class mit Feldern habe, die ich permanent neu anordnen möchte, gibt es ein Tool, Skript oder Dienstprogramm, mit dem ich diese Aufgabe schnell erledigen kann?

Im Allgemeinen weiß ich, dass Sie ein neues Feld erstellen, es mit den alten Werten füllen und dann das alte Feld löschen müssen. Ich hoffe, dass es da draußen bereits etwas gibt, das dabei helfen wird. Angenommen, Sie haben keine FME oder ein anderes ETL-Tool zur Verfügung, was ist der nächstbeste Vorschlag?

Dies ist KEINE Änderung der Ansichtsebene (z. B. Ziehen / Ablegen der Felder in der Reihenfolge), sondern Schreiben in ein neues Shapefile oder eine neue Feature-Class. Vielen Dank.

RyanDalton
quelle
Es fällt mir schwer zu glauben, aber ich finde keinen Weg, dies zu tun. Was ist Ihr Anwendungsfall, wenn Sie Felder nachbestellen müssen? Neuanordnen von Feldern auf der Registerkarte "Felder" der Layer-Eigenschaften in ArcMap ist keine Lösung?
Derek Swingley
2
Die Neuordnung der Felder erfolgt, weil die Daten nicht in ArcMap verwendet werden, sondern mit einer weniger ausgefeilten Kartierungssoftware, die 1) Shapefiles verwendet und 2) keine Neuordnung auf der Clientseite zulässt und 3) der Client das sehen muss Schlüsselattribute werden oben im "Identifizieren" -Baum angezeigt.
RyanDalton
Habe gerade meine zuvor gelöschte Antwort bearbeitet. Hoffentlich hast du keine Angst vor der Kommandozeile;).
Derek Swingley
2
@ Saultdon- das ist nicht die selbe frage. Sie haben auf eine Frage verwiesen, bei der RECORDS (Zeilen) sortiert werden sollen, ich jedoch FIELDS (Spalten).
RyanDalton

Antworten:

13

Ich bin mir ziemlich sicher, dass Sie dies mit Feature-Class zu Feature-Class tun können, indem Sie die Felder im Feldzuordnungsabschnitt des Tools neu anordnen.

Edit: FC2FC macht das nicht, aber ... zur Rettung.

Ich habe gerade bestätigt, dass ogr2ogr dies kann. Geben Sie die Reihenfolge Ihrer Feldnamen an der Option -select an. Wenn ich zum Beispiel ein Shapefile mit zwei Feldern habe, "Name" und "FolderPath" (in dieser Reihenfolge), aber ich möchte zuerst ein neues Shapefile mit "FolderPath":

C:\Temp>ogr2ogr -f "ESRI Shapefile" re_order_ogr.shp re_order1.shp -select "FolderPath,Name"
Derek Swingley
quelle
2
Es war zwar nicht so benutzerfreundlich, wie ich es mir erhofft hatte, aber es ist definitiv der Trick. Ich habe ein ArcGIS-Python-Skript erstellt, mit dessen Hilfe die Eingaben erstellt werden. Der Benutzer muss nur die Option -select "field1, field2, etc" angeben. Sie können es unter resources.arcgis.com/Resources2010/gallery/file/geoprocessing/…
RyanDalton
Ich habe eine Feature-Class für SDE mit Domains. Enthält dies die zugehörigen Domains?
MjonesGEO
@joebob no. AFAIK, OGR unterstützt keine Datensätze aus SDE-GDBs und auch keine Domänen.
Derek Swingley
Danke, ich habe gerade XRay verwendet und es kann Felder entweder neu anordnen oder ersetzen, während die Domänen in SDE gehalten werden.
MjonesGEO
7

Das ET GeoWizards- Tool erledigt dies, und es sieht so aus, als würde die kostenlose Version dies ohne Einschränkungen in Bezug auf die Anzahl der Funktionen tun.

Don Meltz
quelle
Es behält aber leider keine Aliase.
Howeitzer
7

Das QGIS "Table Manager" -Plugin bietet jetzt auch die Möglichkeit, diese Aufgabe einfach und ohne Befehlszeile auszuführen.

Darren Cope
quelle
6

In QGIS können Sie jetzt die Verarbeitungs-Toolbox (Strg + Alt + T) verwenden und zu QGIS-Geoalgorithmen> Vektortabellen-Tools> Refactor-Felder wechseln.

Von dort aus haben Sie alle Werkzeuge, um Ihre Tabellenstruktur zu bearbeiten.

Bildbeschreibung hier eingeben

Chmeul
quelle
4

X-Ray Arcmap Add-In verfügt über ein Tool zum Neuanordnen von Feldern im Geodatabes-FormatWerkzeug zur Umordnung von Röntgenfeldern hier

Geog
quelle
Das funktioniert sehr gut. Es wird sogar Ihre Domains in Feldern halten, wenn Sie eine SDE nachbestellen. Toller Vorschlag !!
MjonesGEO
3

Als Referenz: MapInfo kann dies auch sofort erledigen. Öffnen Sie einfach den DBF und ordnen Sie die Felder dauerhaft neu an. http://www.dbf-editor.com tut es auch ($ 40). Andere DBF-Editoren können das wahrscheinlich auch.

Uffe Kousgaard
quelle
In dieser Zeile sollte Infolib wahrscheinlich auch funktionieren (in ASCII (CSV) konvertieren, neu anordnen, zurück in Info oder DBF konvertieren), solange Sie bereit sind, mit den Einschränkungen des DBF-Dateiformats zu leben.
Matt Wilkie
Du meinst mit den Einschränkungen des CSV-Formats zu leben? DBF ist der Ausgangspunkt für diese Frage ...
Uffe Kousgaard
Ich meinte dbf limits und dachte speziell, dass csv keine Begrenzungen für die Länge von Feldnamen oder Datensatzwerten hat und dass der Ausgangspunkt die Datei gdb war, aber das erneute Lesen des QI, siehe "shp", wird im Titel erwähnt. Also, überall Grenzen setzen
;-)
3

Ich hatte ein ähnliches Problem und die schnellste Möglichkeit, Datenfelder dauerhaft neu zu ordnen, wenn Sie bereits über QGIS verfügen, besteht darin, das Plug-in 'Table Manager' zu verwenden, wie zuvor vorgeschlagen.

Plugins sind einfach zu installieren und benutzerfreundlich, wie auf der folgenden Seite beschrieben:

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

Sie können die Attribute in einer bestimmten Reihenfolge verschieben, die Felder umbenennen, neue Felder einfügen und sie replizieren. Außerdem können Sie die Originaldatei speichern oder umbenennen und anders als das Original speichern.

Bildbeschreibung hier eingeben

Dies war eine schnelle und bequeme Lösung für mein Problem mit der Verwaltung von Attributtabellen und wird dringend empfohlen, insbesondere für Dateien, mit denen eine große Anzahl von Attributen verknüpft ist.

Koje
quelle
3

Der beste Weg, dies zu tun, ist die Verwendung von Feldzuordnungen. Ich habe jahrelang mit dieser Funktion der ESRI-Software zu kämpfen, bin aber schließlich mit dieser Lösung zufrieden. Grundsätzlich können Sie einfach eine Kopie Ihrer Feature-Class mit den Feldern erstellen, die mithilfe von arcpy.FieldMappings dauerhaft neu angeordnet wurden . Alle Daten werden ebenfalls übertragen. Wenn das Skript fertig ist, benennen Sie einfach Ihre alte Feature-Class in myFeatureClass_old und Ihre neue in myFeatureClass um!

Hier ist das Skript, es ist super einfach:

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)
Jason Matney
quelle
3

Feature Class to Feature Class kann dies jetzt in 10.5 mithilfe des Abschnitts GP Tool Field Mapping ausführen.

Bildbeschreibung hier eingeben

Brendan von Esri
quelle
2

Mit MakeQueryTable können Sie die Reihenfolge Ihrer Felder für eine Tabelle oder FC definieren (nur Geodatabase). Die Reihenfolge, in der Sie die Felder angeben, ist die Reihenfolge der Ausgabe. Ich finde dieses Tool schwierig zu bedienen. YMMV

Arctoolbox, Datenverwaltungstools, Layer und Tabellenansichten erstellen Abfragetabelle

klewis
quelle
2

Exportieren Sie die Feature-Classes in eine leere Personal Geodatabase (Drag & Drop ist am schnellsten), öffnen Sie die MDB in Access, ordnen Sie die Felder in der Entwurfsansicht neu an , speichern Sie sie und kopieren Sie sie mit ArcMap / Catalog zurück in die Shape- oder File-Geodatabase.

Die gleiche Methode funktioniert für das Umbenennen von Feldern.

Sei aber vorsichtig , arbeite nur an Kopien, es ist einfach, alles zu vermasseln. (Wie Karey Jack in einer anderen Antwort feststellt, rät Esri vom direkten .mdb-Zugriff ab. ) Ignorieren Sie aus Sicherheitsgründen alle Tabellen, die mit beginnen GDB_und mit enden _Shape_Index.

Matt Wilkie
quelle
1

Versuchen Sie es mit OGR2OGR. Sie können eine SQL-Abfrage übergeben und die Felder in der gewünschten Reihenfolge einfügen.

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

Gerade getestet, und es funktioniert gut!

Der einfachste Weg, OGR zu installieren, ist über FWTools .

Darren Cope
quelle
1

Öffnen Sie die MDB-Datei in MS Access und ordnen Sie die Felder per Drag & Drop in der Entwurfsansicht neu an.

ESRI rät jedoch davon ab, eine Datenbank in der Access ESRI-Verknüpfung zu bearbeiten

Karey Jack
quelle
2
Willkommen auf unserer Seite, Karey! Ist das nicht die gleiche Antwort, die Matt Wilkie vor 18 Monaten in diesem Thread gegeben hat ( gis.stackexchange.com/a/5879 )?
Whuber
0

Ich bin ein bisschen zu spät zur Party, aber ich bin überrascht, dass niemand die ESRI Geodatabase Diagrammer erwähnt hat .

Eine von ESRI bereitgestellte Ressource zum Bearbeiten der XML-Struktur Ihrer Geodatabase und Ihrer Dateien. Für mich ist es wichtig, an etwas zu arbeiten, bei dem Design perfekt sein muss (Langzeitprojekt). Dadurch müssen Sie nach einem einfachen Fehler keine Dateien mehr erstellen.

Roy
quelle
1
Haben Sie den Kommentar (zur Frage selbst) gelesen, der besagt, dass dies keine Umstrukturierung der Datenbank ist, sondern für den Export der Daten erforderlich ist ?
Whuber