Ich habe einen Mitarbeiter, der eine große MS Access-Datenbank verwaltet, die X- und Y-Felder für verschiedene Orte enthält, die er verfolgt. Wir haben die Daten zuvor in CSV exportiert und das QGIS Delimited Text Plugin verwendet, um die Speicherorte zu zeichnen.
Wir möchten diese Daten jetzt direkt in QGIS zeichnen, indem wir über eine ODBC-Verbindung eine Verbindung zur MS Access-Datenbank herstellen (im Gegensatz zum Export nach CSV).
- Kann QGIS die Daten aus der ODBC-Verbindung verwenden, um die XY-Positionen zu zeichnen?
- Kann es mit der ODBC-Verbindung "live verbunden" werden, so dass beim erneuten Öffnen eines Projekts alle alten und neu hinzugefügten Speicherorte dynamisch "neu kopiert" werden (im Gegensatz zum Exportieren in ein Shapefile, wodurch eine Momentaufnahme in der Zeit erstellt würde)?
- Können Sie tabellarische ODBC-Verbindungen erstellen, die mit räumlichen Tabellen in QGIS verknüpft werden können?
All dies können Sie in ArcGIS (Tool "XY-Daten hinzufügen") ausführen. Es wäre also großartig, wenn diese Funktion in QGIS vorhanden wäre. Ich kann einfach nirgendwo etwas finden, das seine Existenz erwähnt.
Ich habe nicht vor, in eine räumliche Datenbank zu wechseln. Als GIS-Person weiß ich, dass es sinnvoll ist, in eine räumliche Datenbank zu wechseln, und ich habe PostGIS verwendet, um diese Art von Daten zu verwalten. Dies sind jedoch derzeit keine Optionen. Der Benutzer ist keine GIS-Person und möchte es auch nicht sein. Er verwaltet seine eigene Datenbank in MS Access und das wird sich nicht ändern. Ich bin und ziehe ihn mit Tritten und Schreien in die GIS-Welt und möchte es so einfach wie möglich machen. Er kann mit dem Exportieren in CSV leben, ich hatte nur gehofft, dass es eine bessere Lösung gibt, die ODBC FÜR MS-ZUGRIFF VERWENDET und die XY-Daten in QGIS anzeigt.
Antworten:
Einschränkung: Ich habe das nicht ausprobiert und bin daher bereit, mich vor jemandem mit direkter Erfahrung zu verbeugen.
Sie können im Dialogfeld "Vektorebene hinzufügen" eine Verbindung zu einer ODBC-Datenquelle herstellen. Wählen Sie einfach "Datenbank" als Quelltyp und ODBC als Datenbanktyp aus. QGIS verwendet den ODBC-Treiber für OGR . Daher gelten die gleichen Einschränkungen: Sie benötigen eine Tabelle mit dem Namen GEOMETRY_COLUMNS usw., sodass Ihr Kollege möglicherweise die Datenbank ändern muss.
Ich habe Access seit der Veröffentlichung von Version 1.0 nicht mehr verwendet, aber da es nicht räumlich aktiviert ist, werden Sie wahrscheinlich feststellen, dass die Leistung ein Problem darstellt. Vermutlich werden Sie Access nicht einfach fallen lassen und mit der Verwendung einer räumlich aktivierten Datenbank beginnen, da dies wahrscheinlich nicht wirtschaftlich ist. Sollte Ihr Kollege jedoch jemals den Drang nach Änderungen verspüren, kann ich Ihnen dringend empfehlen, etwas mehr zu tun mächtig.
quelle
Mit den neuen "Processing" -Tools in QGIS 2 wird dies etwas einfacher. Obwohl ich immer noch keine Möglichkeit gefunden habe, die Daten live zu verknüpfen (wenn Sie also die Werte in der MS Access-Tabelle ändern, verschiebt sich der Punkt automatisch), scheint diese Methode ziemlich gut zu funktionieren.
Dank geht an "Christina" und "Bernd" im Kommentarbereich dieser Seite (und natürlich an @underdark für den Blog), wie die ODBC-Verbindung zu Ihrer MS Access-Datenbank hergestellt wird:
Erstellen Sie eine ODBC-Verbindung:
Für Win7, 32 Bit: Gehen Sie zu Systemsteuerung / Verwaltungstools / Datenquellen (ODBC).
Für Win7, 64-Bit: Anstelle der Standardeinstellung "Systemsteuerung / Verwaltung / Datenquellen (ODBC)" müssen Sie bei 64-Bit-Versionen C: \ Windows \ SysWOW64 \ odbcad32.exe verwenden!
Lade die Ebene in QGIS:
Konvertieren Sie die XY-Daten in Punkte:
quelle
Ich bin zwar immer noch daran interessiert zu hören, ob andere Optionen verfügbar sind, aber ich bin auf einen Nachrichtenbeitrag gestoßen , in dem erwähnt wurde, dass dies mit dem eVis-Plugin möglich ist .
In der Dokumentation wird im Abschnitt Datenbankverbindung beschrieben, wie Sie eine Verbindung zu einer MS Access- oder ODBC-Verbindung herstellen können, um XY-Punktpositionen aus der Datenbank zu erstellen, ohne einen statischen Snapshot zu erstellen. Ich habe einfach "select * from" eingegeben und eVis hat ein Dialogfeld geöffnet, in dem nach dem Ebenennamen und den XY-Feldern gefragt wird.
Dies scheint leider keine "live-verknüpfte" Verbindung zur MS Access-Datenbank herzustellen, da QGIS beim nächsten Öffnen des Projekts verwirrt ist ("nicht in der Lage, eine oder mehrere Projektebenen zu öffnen"). Die Lösung hierfür besteht jedoch darin, eine vordefinierte XML-Abfrage zu erstellen , die der Benutzer auswählen kann.
Dies ist zwar keine perfekte Lösung, aber ein Schritt besser als der Export in CSV. Ich denke, dass es in Zukunft großartig wäre, wenn das Delimited Text-Plugin erweitert würde, um ODBC-Verbindungen für diesen Zweck zu akzeptieren.
quelle
Ein alternativer Ansatz wäre, die Daten nach postgis zu verschieben. Sie können die CSV-Datei direkt mit dem Befehl postgresql copy lesen. dann können sie punkte aus den xy-feldern erzeugen.
Wenn Sie Berichte oder andere Funktionen für den Zugriff verwenden möchten, können Sie über den Zugriff eine Verbindung zu Postgis herstellen.
Der Vorteil ist, dass Sie die räumlichen Daten dort ablegen, wo sie hingehören, in einer räumlichen Datenbank und dann mit odbc zurück auf die nicht räumlichen Daten zugreifen, wenn Sie aus irgendeinem Grund Ihre Daten weiterhin im Zugriff sehen möchten.
Es gibt großartige Tutorials für postgis / postgresql, um auf die Verbindung in postgresonline.com zuzugreifen. Anleitungen zum Impöortieren von Postgis / Postgresql finden Sie von denselben Autoren auf bostongis.org
/ Nicklas
quelle
Es gibt verschiedene Konvertierungsprodukte, die MS-Access-Daten in Postgres oder SQLite und zurück konvertieren können. Sie bewegen die Daten sehr schnell von einer Seite zur anderen. Wenn Sie eine dieser Anwendungen verwenden, können Sie möglicherweise QGIS für einen Snapshot der Daten ausführen.
quelle