Zentralisieren von Shapefile-Daten in einer Datenbank


13

Ich habe Hunderte von Shapefiles aus verschiedenen GIS-Projekten, die ich zu einer einzigen Datenbankplattform konsolidieren möchte, und versuche dies derzeit mit Postgres / PostGIS.

Kaum ein der Daten standardisiert - was bedeutet , dass es sich um eine Menge von den gleichen Daten ist Arten , aber die speziellen Attributnamen / Typ nicht übereinstimmen.

Wo soll ich damit anfangen? Sollte ich ein Standardmodell entwickeln, um jedes Shapefile zuerst zu migrieren (z. B. Hydro_line-, transport_line-, Hydro_poly-Standards usw.)?

Eine Alternative besteht darin, jedes Shapefile einzeln in Postgres zu importieren, sodass jedes Shapefile zu einer Tabelle in der Datenbank wird. In Bezug auf Leistung und Organisation bin ich mir jedoch nicht sicher. Es fühlt sich an, als würde man das Unvermeidliche verzögern ...

Irgendwelche Ratschläge zur Bewältigung dieser entmutigenden Aufgabe?

Antworten:


7

Werfen Sie einen Blick auf die Spatial ETL-Software (Extract - Transform - Load), die sich solchen Aufgaben widmet. Am bekanntesten ist FME von Safe, es sind jedoch einige Open-Source-Alternativen (teilweise) verfügbar, wie z . B. SDI (Spatial Data Integrator) und GeoKettle .


2
Ich habe in einer früheren Frage um einen Vergleich gebeten. Wenn Sie also diesen Weg gehen, schreiben Sie bitte etwas nach. gis.stackexchange.com/questions/5049/spatial-etl-comparisons
RyanKDalton

Ich habe mir eine Testversion von FME besorgt und sowohl SDI als auch GeoKettle installiert. Ich werde sie ausprobieren und sehen, ob ich sie verstehen kann. FME sieht aus wie eine Suppe-zu-Nuss-Lösung, aber ich muss erst die Lernkurve überwinden :).
Colemanm

1
@ colemanm- Was hast du am Ende gemacht? Welches Produkt fanden Sie am nützlichsten?
RyanKDalton

6

Hallo

Ich würde es zuerst nach PostGIS importieren. Es gibt Werkzeuge, um mehrere Formen in einzelne Tabellen zu laden. QGIS-Spit-Erweiterung ist eine. Das neue grafische shp2pgsql in PostGIS-Trunk oder experimentellen Binärdateien ist eine weitere Alternative. Oder Sie könnten einfach ein Batch-Skript mit shp2pgsql schreiben.

Ich würde dort anfangen und alles in ein Schema namens original oder so importieren. Daraus würde ich dann die Daten strukturieren. Zusammenführen in Tabellen, wo dies angebracht ist und so weiter.

Das Schöne daran ist, dass Sie, wenn Sie alle Abfragen speichern, die Sie für diese Transformationen verwenden, eine hervorragende Dokumentation über den Verlauf Ihrer Daten haben. Es ist auch sehr einfach, es bei Bedarf zu wiederholen. Sobald Sie mit Ihrer Organisationsarbeit fertig sind, legen Sie ein Backup Ihres Schemas "original" ab und verstauen es irgendwo.

Ich halte dies für eine strukturierte und saubere Vorgehensweise. Und wie bereits erwähnt, erhalten Sie eine sehr solide Dokumentation darüber, welches Feld den Namen in welchen neuen Namen geändert hat und welche Originaltabellen in diese große neue Tabelle eingebunden wurden und so weiter.

In FME und Software wie dieser können Sie natürlich auch speichern, was Sie getan haben, aber im Vergleich zu internen Datenbankabfragen ist es nicht die universelle Art, das zu dokumentieren, was als SQL-Abfragen ausgeführt wird. Sie sind verwendbar und lesbar, solange es Textdateien und relationale Datenbanken gibt.

Am Ende habe ich Textdateien, die ungefähr so ​​aussehen:

-- A query to merge all roads in Norway

Create table road_tables.all_roads as
SELECT id as roadid, status, the_geom from original.big_roads
union all
SELECT rid as roadid, condition as status, the_geom from original.small_roads;

und so weiter. Diese als Textdatei gespeicherte Datei hat nach einigen Jahren einen hohen Wert.

Grüße Nicklas


1
+1 Ich halte das für einen sehr guten Ansatz. Alles geschieht innerhalb von Postgres, sehr transparent und bei Bedarf leicht reproduzierbar.
underdark

1
Keine gute Empfehlung für ESRI-basiertes GIS. Open Source "nur" wäre akzeptabel. ESRI weist viel mehr Abhängigkeiten auf, auf die mit dieser Methode nicht zugegriffen werden kann. eine direkte verbindung zu postgis ist ohne interop, gis server oder arcsde nicht zulässig.
Brad Nesom

2
@Brad Hmm, ich frage mich, ob das ein Argument ist, die Dinge auf transparente, reproduzierbare und schnelle Weise zu erledigen, oder ein Argument gegen das
Eingrenzen

1
@Brad: colemanm hat ESRI nicht erwähnt, daher scheint die Antwort gut zu sein.
underdark

Ich habe ähnliche Arbeiten mit ESRI Sde-Featureclasses und SQL Server 2008 (mit nativer Geometrie) durchgeführt. Ich habe zuerst die Featureclass erstellt und dann mit einer Reihe von insert-Anweisungen geladen. IIRC, ich musste die Feature-Class am Ende in eine neue Feature-Class exportieren, da ich neue Objectids nicht korrekt generieren konnte. Sobald ich das getan habe, geschah es wie gewohnt.
Jay Cummins

4

Mein Vorschlag wäre, 2-5 Ihrer am stärksten genutzten Datenebenen (Shapefiles) auszuwählen und auf ein Rdbms zu migrieren.
Untersuchen und Implementieren von Workflows für diese Daten. Gewöhnung an die Einschränkungen und Anforderungen von rdbms im Vergleich zu dateibasierten Daten.

Zu den Einschränkungen gehören: erforderlicher Export, Landezone, Koordinatensysteme, Dateityp für die Zusammenarbeit.

Es gibt viele Vorteile für das, was Sie vorschlagen.
Seite HINWEIS: (Mein Opa hat meinen Eltern gesagt, dass sie 6 Monate vor dem Kauf nach einem Haus suchen sollen.) Denken Sie daran, dass Sie nach einem Haus (langfristig) für Ihre Daten suchen und dass Sie in 30 Jahren nicht mehr für etwas bezahlen möchten mag nicht.

Meine Empfehlung wäre, eine Baumliste Ihrer Datenquellen (digital oder analog) aufzuschreiben und sie in einem großen Bild anzuzeigen, damit Sie die Daten in präziseren Gruppierungen organisieren können.

In arcgis gibt es Methoden (meine Annahme: Sie haben Ihr bevorzugtes System nicht angegeben), um unterschiedliche Daten zu integrieren.

Sie können einige dieser Informationen ausprobieren, wenn Sie gute Entwurfspraktiken erlernen möchten ...

geodatabase design overview
geodatabase documentaion
Es gibt auch einige ähnliche Links für arc 10.
Resource Center
arc10-Geodatabase

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.