Mam współpracownika, który zarządza dużą bazą danych MS Access, która zawiera pola X i Y dla różnych lokalizacji, które śledzi. Wcześniej wyeksportowaliśmy dane do CSV i użyliśmy wtyczki tekstowej rozdzielanej QGIS do wykreślenia lokalizacji.
Chcielibyśmy teraz wykreślić te dane bezpośrednio w QGIS, łącząc się z bazą danych MS Access za pośrednictwem połączenia ODBC (w przeciwieństwie do eksportu do CSV).
- Czy QGIS może pobierać dane z połączenia ODBC w celu wykreślenia lokalizacji XY?
- Czy można go „połączyć na żywo” z połączeniem ODBC, aby po ponownym otwarciu projektu warstwa „replikowała” wszystkie stare i nowo dodane lokalizacje dynamicznie (w przeciwieństwie do eksportu do pliku kształtu, który utworzyłby migawkę w czasie)?
- Czy możesz tworzyć tabelaryczne połączenia ODBC, które można łączyć z tabelami przestrzennymi w QGIS?
Możesz to wszystko zrobić w ArcGIS (narzędzie „Dodaj dane XY”), więc byłoby wspaniale, gdyby ta funkcja istniała w QGIS. Po prostu nie mogę znaleźć nigdzie wzmianki o jego istnieniu.
Nie planuję przejść do przestrzennej bazy danych. Jako osoba GIS, tak, wiem, że sensowne jest przejście do przestrzennej bazy danych i tak, korzystałem z PostGIS do zarządzania tego rodzaju danymi. Ale obecnie nie są to opcje. Użytkownik nie jest osobą GIS ani nie chce nim być, a on zarządza własną bazą danych w MS Access i to się nie zmieni. Ciągnę go i ciągnę za niego, wykopując i krzycząc w świat GIS, i chcę, aby było to możliwie jak najłatwiejsze. On może żyć z eksportowaniem do CSV, miałem tylko nadzieję, że istnieje lepsze rozwiązanie UŻYWANIE ODBC DO MS ACCESS i wyświetlanie danych XY w QGIS.
Odpowiedzi:
Uwaga: nie próbowałem tego, więc jestem skłonny pokłonić się każdemu, kto ma bezpośrednie doświadczenie.
Możesz połączyć się ze źródłem danych ODBC w oknie dialogowym „dodaj warstwę wektorową”, po prostu wybierz „baza danych” jako typ źródła, a ODBC jako typ bazy danych. QGIS używa sterownika ODBC dla OGR , więc obowiązują te same zastrzeżenia - to znaczy, że będziesz potrzebować tabeli o nazwie GEOMETRY_COLUMNS i tak dalej, więc twój kolega prawdopodobnie będzie musiał zmodyfikować bazę danych.
Nie korzystałem z programu Access krótko po wydaniu wersji 1.0, ale ponieważ nie jest on włączony przestrzennie, prawdopodobnie będzie problem z wydajnością. Prawdopodobnie nie porzucisz programu Access i nie zaczniesz korzystać z bazy danych z włączoną przestrzenią, ponieważ jest to mało opłacalne ekonomicznie, ale jeśli twój współpracownik kiedykolwiek odczuje potrzebę zmiany, zdecydowanie polecam przejście na coś więcej potężny.
źródło
Dzięki nowym narzędziom „Przetwarzanie” dostępnym w QGIS 2 staje się to nieco łatwiejsze. Chociaż nadal nie znalazłem sposobu na „linkowanie na żywo” danych (tak, że jeśli zmienisz wartości w tabeli MS Access, punkt przesunie się automatycznie), ta metoda wydaje się działać całkiem dobrze.
Podziękowania dla „Christiny” i „Bernda” w sekcji komentarzy na tej stronie (i oczywiście @underdark na blogu) za sposób utworzenia połączenia ODBC z bazą danych MS Access:
Utwórz połączenie ODBC:
W przypadku Win7, wersja 32-bitowa: Przejdź do panelu sterowania / narzędzi administracyjnych / źródeł danych (ODBC)
W przypadku Win7, wersja 64-bitowa: Zamiast używać domyślnego „panelu sterowania / narzędzi administracyjnych / źródeł danych (ODBC)” - w przypadku wersji 64-bitowych należy użyć C: \ Windows \ SysWOW64 \ odbcad32.exe!
Załaduj warstwę do QGIS:
Konwertuj dane XY na punkty:
źródło
Chociaż nadal jestem zainteresowany wiadomością, czy są dostępne inne opcje, natknąłem się na wiadomość, w której wspomniano, że jest to możliwe przy użyciu wtyczki eVis .
Dokumentacja opisuje w sekcji Połączenie z bazą danych, w jaki sposób można połączyć się z połączeniem MS Access lub ODBC, aby utworzyć lokalizacje punktów XY z bazy danych, bez tworzenia statycznej migawki. Po prostu wpisałem „select * from”, a eVis wyświetliło okno dialogowe z pytaniem o nazwę warstwy i pola XY.
Niestety nie wydaje się to tworzyć połączenia „na żywo” z bazą danych MS Access, ponieważ przy następnym otwarciu projektu QGIS jest zdezorientowany („nie można otworzyć jednej lub więcej warstw projektu”). Rozwiązaniem tego jest jednak utworzenie predefiniowanego zapytania XML, które użytkownik może wybrać.
Chociaż nie jest to idealne rozwiązanie, jest to o jeden krok lepszy niż eksport do CSV. Myślę, że w przyszłości byłoby wspaniale zobaczyć rozszerzenie wtyczki z tekstem rozdzielanym, aby akceptować połączenia ODBC w tym celu.
źródło
alternatywnym podejściem byłoby przeniesienie danych do Postgis. plik csv można odczytać bezpośrednio za pomocą polecenia kopiowania postgresql. następnie możesz utworzyć punkty z pól xy.
następnie jeśli chcesz korzystać z niektórych raportów lub innych funkcji dostępu, możesz połączyć się z Postgis z dostępem.
korzyścią byłoby umieszczenie danych przestrzennych tam, gdzie należą, w bazie danych przestrzennych, a następnie użycie odbc z powrotem w celu uzyskania dostępu do danych nieprzestrzennych, jeśli z jakiegoś powodu nadal chcesz mieć dostęp do swoich danych.
istnieją świetne samouczki dla postgis / postgresql dotyczące dostępu do połączenia w postgresonline.com. samouczki na temat importowania do postgis / postgresql, które ci sami autorzy znajdą na bostongis.org
/ Nicklas
źródło
Istnieje kilka produktów do konwersji, które mogą konwertować dane z dostępem do MS na Postgres lub SQLite iz powrotem. Bardzo szybko przenieś dane z jednej strony na drugą. Korzystanie z jednej z tych aplikacji może dać opcję uruchomienia QGIS na migawce danych.
źródło