.

Obsługiwane formaty danych

Do odczytu i zapisu danych wektorowych, w tym ESRI Shapefile, plików w formatach MapInfo i MicroStation, AutoCAD DXF, baz danych PostGIS, SpatiaLite, Oracle Spatial i MSSQL Spatial i wielu innych, QGIS wykorzystuje bibliotekę OGR. Obsługa danych wektorowych GRASS i baz PostgreSQL odbywa się za pomocą natywnych wtyczek QGIS. Można też załadować do odczytu dane wektorowe znajdujące się w archiwach zip lub gzip. Obecnie, gdy tworzona jest ta dokumentacja, za pomocą biblioteki OGR obsługiwanych jest 69 różnych formatów wektorowych (zob. OGR-SOFTWARE-SUITE in Literature and Web References). Kompletna lista formatów dostępna jest pod adresem http://www.gdal.org/ogr/ogr_formats.html.

Informacja

Może się zdarzyć, że nie wszystkie z przedstawionych formatów będą działać w QGIS. Niektóre z nich mogą, na przykład, wymagać zewnętrznych komercyjnych bibliotek lub GDAL/OGR dla twojego systemu został skompilowany bez obsługi formatu, którego chcesz użyć. Na liście typów plików podczas ładowania warstwy wektorowej do QGIS będą się pojawiały tylko te formaty, które zostały dobrze przetestowane. Inne, nieprzetestowane formaty, mogą być załadowane po wybraniu *.*.

Praca z danymi wektorowymi GRASS została opisana w rozdziale GRASS GIS Integration.

Bieżący rozdział poświęcony jest sposobom pracy z kilkoma popularnymi formatami: ESRI shapefile, warstwami PostGIS i SpatiaLite, danymi wektorowymi OpenStreetMap oraz danych w formacie tekstowym (CSV).

ESRI Shapefiles

Standardowym formatem danych wektorowych wykorzystywanym w QGIS jest ESRI shapefile. Jest on obsługiwany za pomocą biblioteki OGR Simple Feature Library ( http://www.gdal.org/ogr/ ).

Shapefile składa się właściwie z kilku plików. Wymagane są trzy poniższe:

  1. .shp zawierający geometrię obiektów

  2. .dbf zawierający atrybuty w formacie dBase

  3. .shx plik indeksu

Shapefile mogą również zawierać plik z rozszerzeniem .prj z informacją o układzie współrzędnych. Plik z układem jest bardzo przydatny, ale nie jest obowiązkowy. Zbiór danych Shapefile może zawierać jeszcze inne dodatkowe pliki. Więcej informacji o specyfikacji technicznej ESRI znajduje się pod adresem: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf.

Ładowanie Shapefile

Ładowanie shapefile odbywa się za pomocą polecenia mActionAddOgrLayer Dodaj warstwę wektorową z paska narzędziowego lub za pomocą kombinacji klawiszy Ctrl+Shift+V. Spowoduje to otwarcie nowego okna (zob. figure_vector_1).

Figure Vector 1:

../../../_images/addvectorlayerdialog.png

Okno dodawania warstwy wektorowej nix

Wybierz opcję radiobuttonon Plik. Naciśnij przycisk [Przeglądaj]. Otworzy się standardowe okno otwierania pliku (zob. figure_vector_2), w którym można przeglądać system plików i załadować Shapefile lub dane w innym obsługiwanym formacie. Pasek wyboru Filtr selectstring umożliwia wyświetlanie plików o określonym formacie, obsługiwanym przez OGR.

Jeśli zachodzi taka potrzeba, można również wybrać typ kodowania dla otwieranego shapefile.

Figure Vector 2:

../../../_images/shapefileopendialog.png

Okno otwierania warstwy wektorowej obsługiwanej przez OGR nix

Zaznaczenie któregoś Shapefile z listy i naciśnięcie [Otwórz] załaduje go do QGIS. Obrazek Figure_vector_3 pokazuje jak wygląda QGIS po załadowaniu pliku alaska.shp.

Figure Vector 3:

../../../_images/shapefileloaded.png

QGIS załadowanym plikiem Shapefile z Alaską nix

Wskazówka

Kolory warstwy

Gdy ładujesz warstwę do mapy, zostaje jej przypisany losowy kolor. Jeśli ładujesz naraz wiele warstw, wówczas każdej z nich przypisany zostaje inny kolor.

Po załadowaniu shapefile możesz go przeglądać w dowolnym powiększeniu korzystając z narzędzi nawigacji mapy. Jeśli chcesz zmienić styl wyświetlania warstwy, otwórz okno Właściwości warstwy dwukrotnie klikając lub klikając prawym przyciskiem myszy na nazwie warstwy w legendzie i wybierając z menu kontekstowego polecenie Properties. Zobacz rozdział Style Menu poświęcony nadawaniu stylu warstwom.

Wskazówka

Ładowanie warstwy i projektu z zewnętrznego źródła danych w OS X

W OS X zewnętrzne nośniki danych montowane poza głównym dyskiem nie są widoczne w menu Plik ‣ Otwórz projekt, chociaż tego właśnie byśmy oczekiwali. Pracujemy nad stworzeniem okna otwierania/zapisywania plików o naturze bliższej OS X, co powinno rozwiązać ten problem. Można obejść ten problem wpisując /Volumes w polu nazwy pliku i naciskając Enter. Możesz potem przeglądać dyski zewnętrze i sieciowe.

Zwiększanie wydajności pracy z Shapefile

Można polepszyć wydajność wyświetlania Shapefile poprzez utworzenie przestrzennego indeksu. Indeks ten poprawi szybkość powiększania i przeciągania widoku. Indeksy przestrzenne, z których korzysta QGIS mają rozszerzenie .qix.

Indeks przestrzenny tworzy się w następujący sposób:

  • Załaduj shapefile klikając ikonkę paska narzędziowego mActionAddOgrLayer Dodaj warstwę wektorową lub naciskając klawisze Ctrl+Shift+V.

  • Otwórz okno Właściwości warstwy dwukrotnie klikając na nazwie Shapefile lub klikając prawym przyciskiem myszy i wybierając z menu podręcznego Właściwości.

  • W zakładce Ogólne kliknij przycisk [Twórz indeks przestrzenny].

Problemy z ładowaniem pliku .prj z Shapefile

Gdy QGIS w czasie ładowania shapefile nie jest w stanie określić układu współrzędnych na podstawie pliku .prj, będziesz musiał samodzielnie określić układ w zakładce Ogólne okna Właściwości warstwy klikając przycisk [Podaj...]. Problem ten wynika z tego, że pliki .prj często nie zawierają kompletnej informacji o układzie współrzędnych w rozumieniu QGIS, jak to widać w zakładce Układ współrzędnych.

Z tego względu, gdy tworzysz nowy Shapefile w QGIS, tworzone są dwa różne pliki z układem współrzędnych. Plik .prj z ograniczoną ilością parametrów, kompatybilny z oprogramowaniem ESRI, oraz plik .qpj, zawierający komplet parametrów układu współrzędnych. Gdy QGIS napotka na plik .qpj, użyje go zamiast pliku .prj.

Ładowanie warstwy MapInfo

mActionAddOgrLayer To load a MapInfo layer, click on the mActionAddOgrLayer Add Vector Layer toolbar button; or type Ctrl+Shift+V, change the file type filter Files of type selectstring: to ‘Mapinfo File [OGR] (*.mif *.tab *.MIF *.TAB)’ and select the MapInfo layer you want to load.

Ładowanie ArcInfo Binary Coverage

mActionAddOgrLayer Aby załadować ArcInfo Binary Coverage, naciśnij przycisk mActionAddOgrLayer Dodaj warstwę wektorową z paska narzędzi lub naciśnij kombinację klawiszy Ctrl+Shift+V. Otworzy się okno Dodaj warstwę wektorową. Wybierz pole radio radiobuttonon Katalog w polu:guilabel:Typ źródła danych. Zmień filtr typów na Pliki typu selectstring na ‘Arc/Info Binary Coverage’. Przejdź do katalogu, który zawiera plik coverage i wybierz go.

W podobny sposób można załadować warstwy zapisane w strukturze katalogu w formacie UK National Transfer Format oraz TIGER opracowany w US Census Bureau.

Pliki tekstowe z danymi rozdzielanymi separatorami

Dane rozdzielane tabulatorem są bardzo popularnym i chętnie używanym formatem ze względu na jego prostotę i możliwości odczytu – dane mogą być przeglądane i edytowane nawet w w prostym edytorze tekstu. Tekst rozdzielany separatorami może stanowić tabelę atrybutów, której kolumny rozdzielone są pewnym umownym znakiem, a wiersze rozdziela znak złamania wiersza. Pierwszy wiersz zawiera zwykle nazwy kolumn. Popularnym typem tekstu rozdzielanego separatorem jest CSV (Comma Separated Values), w którym kolumny rozdzielone są przecinkiem.

Takie pliki danych mogą również zawierać informację przestrzenną w postaci:

  • współrzędnych punktów w oddzielnych kolumnych

  • jako geometria w postaci WKT (well-known text)

QGIS umożliwia załadowanie tekstu rozdzielanego separatorami jak warstwy lub zwykłej tabeli. Najpierw jednak upewnij się, że plik spełnia poniższe warunki:

  1. Plik musi posiadać nagłówek z nazwami pól rozdzielonymi separatorem. Musi to być pierwsza linia pliku tekstowego.

  2. Wiersz nagłówkowy musi zawierać pole lub pola definiujące geometrię. Pola te mogą mieć dowolną nazwę.

  3. Współrzędne X i Y (jeśli geometria opisana jest współrzędnymi) muszą być podane jako liczby. Układ współrzędnych nie ma znaczenia.

Jako przykład poprawnego pliku importujemy punktowe dane wysokościowe z pliku elevp.csv zawartego w przykładowym zestawie danych QGIS (zob. rozdział Przykładowe dane):

X;Y;ELEV
-300120;7689960;13
-654360;7562040;52
1640;7512840;3
[...]

Uwagi dotyczące pliku tekstowego:

  1. W przykładowym pliku znakiem rozdzielającym jest ; (średnik). Można użyć dowolnego innego znaku do rozdzielenia pól.

  2. Pierwszy wiersz to nagłówki. Zawiera on pola X, Y oraz ELEV.

  3. Nie używa się cudzysłowu (") dla pól typu tekstowego.

  4. Współrzędne x podane są w polu X.

  5. Współrzędne y zawarte są w polu Y.

Ładowanie pliku tekstowego z separatorami

W celu otwarcia okna dialogowego Utwórz warstwę na podstawie pliku rozdzielanego separatorem, pokazanego na rysunku figure_delimited_text_1, kliknij ikonkę delimited_text Dodaj warstwę tekstową CSV na pasku narzędziowym Zarządzaj warstwami.

Figure Delimited Text 1:

../../../_images/delimited_text_dialog.png

Okno dialogowe pliku tekstowego z separatorem nix

Najpierw zaznacz plik do importu (np. qgis_sample_data/csv/elevp.csv) klikając na przycisk [Przeglądaj]. Po wybraniu pliku QGIS próbuje go sparsować używając ostatnio wykorzystanego separatora, w tym przypadku średnika (;). Aby umożliwić QGIS właściwe sparsowanie pliku, istotne jest, aby dobrać prawidłowy separator. Możesz go dobrać włączając radiobuttonon Rozdzielone innym znakiem lub radiobuttonon Wyrażenie regularne i wpisując odpowiedni tekst w pole Wyrażenie. Na przykład w celu zmiany separatora na tabulację, wpisz \t (jest to wyrażenie regularne dla znaku tabulacji).

Gdy ładowany plik zostanie sparsowany, określ Geometrię jako radiobuttononWspółrzędne punktowe i wybierz atrybuty X i Y z list rozwijalnych. Jeśli współrzędne podane są w stopniach/minutach/sekundach, zaznacz pole wyboru checkbox Współrzędne SMS.

Na koniec podaj nazwę dla tworzonej warstwy (np. elevp) jak pokazano na rys. figure_delimited_text_1 . Aby dodać warstwę do mapy kliknij [OK]. Od tej chwili plik z danymi rozdzielanymi separatorem można traktować jak normalną warstwę QGIS.

Istnieje również możliwość obcinania spacji poprzedzających i następujących po tekście poprzez zaznaczenie pola wyboru checkbox Usuń spacje przed/po. W każdym rekordzie można też checkbox Pominąć puste kolumny. Można też, jeśli zachodzi taka konieczność, określić checkbox Przecinek jako separator dziesiętny.

Jeśli informacja przestrzenna ma postać WKT, zaznacz pole radiobuttonon WKT (well known text) i wybierz pole, zawierające definicję WKT obiektów punktowych, liniowych lub poligonowych. Jeśli plik nie zawiera informacji przestrzennych, zaznacz pole radiobuttonon bez geometrii (tylko tabela atrybutów), co spowoduje załadowanie pliku jako zwykłej tabeli.

Możesz też dodatkowo włączyć:

  • checkbox Indeks przestrzenny aby poprawić wydajność wyświetlania i zapytań przestrzennych

  • checkbox Indeks filtrowania.

  • checkbox :guilabel:Śledź plik` w celu obserwowania zmian w pliku dokonanych przez inne aplikacje, podczas gdy QGIS jest uruchomiony.

Dane OpenStreetMap

W ostatnich latach projekt OpenStreetMap zyskał popularność ponieważ w wielu krajach nie są dostępne dane przestrzenne dotyczące dróg. Celem projektu OSM jest stworzenie wolnej edytowalnej mapy świata sporządzonej na podstawie danych GPS, zdjęć lotniczych i wiadomościach lokalnych. QGIS obsługuje dane OSM, aby wspierać realizację tego celu.

Ładowanie warstw wektorowych OpenStreetMap

Import danych OpenStreetMap jest jednym z podstawowych narzędzi QGIS.

  • Aby połączyć się z serwerem OSM i ściągnąć dane otwórz menu Wektor‣ Openstreetmap ‣ Pobierz dane. Możesz pominąć ten krok, jeśli już ściągnąłeś plik XML .osm za pośrednictwem JOSM, Overpass API lub z innego źródła.

  • Polecenie Wektor ‣ OpenStreetMap ‣ Wczytaj topologię z XML... przetworzy plik .osm do bazy SpatiaLite i utworzy stosowne połączenie z tą bazą.

  • Polecenie Wektor ‣ OpenStreetMap ‣ Eksportuj topologię do SpatiaLite... umożliwia otwarcie połączenia z bazą, wybór typu danych (punkty, linie lub poligony) oraz tagów do importu. Spowoduje to utworzenie warstwy SpatiaLite, którą można załadować poleceniem mActionAddSpatiaLiteLayer Dodaj warstwę SpatiaLite z paska narzędzi lub mActionAddSpatiaLiteLayer Dodaj warstwę SpatiaLite... z menu Warstwa (zob. rozdz. Warstwy SpatiaLite).

Warstwy PostGIS

Warstwy PostGIS umieszczone są w bazie danych PostgreSQL. Plusem korzystania z PostGIS są oferowane przez niego możliwości przestrzennego indeksowania warstw, filtrowania i tworzenia zapytań. Użycie PostGIS sprawia, że mechanizmy zaznaczania i uzyskiwania informacji o obiektach warstw wektorowych działają w QGIS lepiej niż z warstwami OGR.

Tworzenie połączenia z bazą danych

mActionAddPostgisLayer Zanim skorzystasz z danych PostGIS, musisz utworzyć połączenie z bazą danych, w której zapisane są te dane. Można zacząć od kliknięcia przycisku na pasku narzędziowym mActionAddPostgisLayer Dodaj warstwę PostGIS, od polecenia mActionAddPostgisLayer Dodaj warstwę PostGIS... z menu Warstwa lub wciśnięcia kombinacji klawiszy Ctrl+Shift+D. Można też skorzystać z polecenia Dodaj warstwę wektorową i w oknie zmienić typ źródła danych na radiobuttonon Baza danych. Przycisk [Nowe] uruchamia menedżera połączeń w oknie Utwórz nowe połączenie PostGIS. Wymagane do połączenia parametry to:

  • Nazwa: nazwa połączenia. Może być taka sama jak Baza danych

  • Usługa: parametr usługi, który może być używany zamiennie z host/port (i potencjalnie również z bazą danych). Można to zdefiniować w pg_service.conf.

  • Host: nazwa hosta, na którym znajduje się baza danych. Musi to być rozpoznawalna nazwa hosta, taka sama, jaka mogłaby zostać użyta do otwarcia połączenia telnet lub pingowania hosta. Jeśli baza znajduje się na tym samym komputerze, co QGIS, wpisz po prostu ‘localhost’.

  • Port: numer portu, na którym nasłuchuje serwer bazy danych PostgreSQL. Domyślnym portem jest 5432.

  • Baza danych: nazwa bazy danych.

  • Tryb SSL: określa, jak będzie nawiązywane połączenie SSL z serwerem. Zauważ, że można uzyskać znaczne przyspieszenie wyświetlania warstw PostGIS, gdy wyłączy się SSL. Możliwe są tutaj następujące opcje:

    • Wyłącz: nawiązane będzie połączenie nieszyfrowane.

    • Zezwól: spróbuj nawiązać połączenie bez SSL, a gdy będzie to niemożliwe, spróbuj nawiązać połączenie SSL.

    • Preferuj (domyślne): spróbuj nawiązać połączenie SSL, a gdy jest to niemożliwe, spróbuj nawiązać połączenie bez SSL.

    • Wymagaj: próbuj nawiązać jedynie połączenie SSL.

  • Użytkownik: nazwa użytkownika logującego się do bazy danych.

  • Hasło: hasło Użytkownika logującego się do bazy danych.

Można też zaznaczyć następujące pola wyboru:

  • checkbox Zapisz nazwę użytkownika

  • checkbox Zapisz hasło

  • checkbox Wyświetlaj tylko zarejestrowane warstwy

  • checkbox Nie sprawdzaj typu dla kolumn GEOMETRY

  • checkbox Sprawdź tylko schemat ‘public’

  • checkbox Pokaż także tabele bez geometrii

  • checkbox Użyj szacunkowych metadanych tabeli

Po podaniu parametrów i opcji połączenia można przetestować połączenie klikając na przycisk [Test połączenia].

Wskazówka

Ustawienia użytkownika QGIS a bezpieczeństwo

Depending on your computing environment, storing passwords in your QGIS settings may be a security risk. Your customized settings for QGIS are stored based on the operating system:

  • nix Ustawienia przechowywane są w twoim katalogu domowym w ~/.qgis2.

  • win Ustawienia przechowywane są w rejestrze.

Ładowanie warstwy PostGIS

mActionAddPostgisLayer Po zdefiniowaniu połączenia możesz ładować dane z bazy PostgreSQL. Oczywiście wymaga to posiadania danych w PostgreSQL. Zobacz rozdział Importowane danych do PostgreSQL poświęcony importowi danych do bazy.

W celu załadowania warstwy PostGIS wykonaj następujące czynności:

  • Jeśli okno Dodaj tabele PostGIS jeszcze otwarte, użyj polecenia mActionAddPostgisLayer Dodaj warstwę PostGIS... z menu Warstwa lub skorzystaj ze skrótu klawiaturowego Ctrl+Shift+D aby je otworzyć.

  • Wybierz połączenie z bazą z listy rozijalnej i naciśnij [Połącz].

  • Wybierz lub odznacz checkbox Pokaż także tabele bez geometrii.

  • Możesz również skorzystać z checkbox Opcji wyszukiwania aby określić, które obiekty z zaznaczonej warstwy załadować lub wykorzystać przycisk [Ustaw filtr], żeby otworzyć okno kreatora zapytań.

  • Na liście dostępnych warstw yszukaj warstwę(y), które chcesz dodać.

  • Zaznacz ją poprzez kliknięcie. Można zaznaczać więcej warstw przytrzymując w czasie klikania klawisz Shift. Zobacz Query Builder, gdzie opisano wykorzystanie kreatora zapytań PostgreSQL do jeszcze dokładniejszego określania warstw.

  • Naciśnij przycisk [Dodaj] aby dodać warstwę do mapy.

Wskazówka

Warstwy PostGIS

Zwykle warstwa PostGIS zdefiniowana jest przez wpis w tabeli geometry_columns. Począwszy od wersji 0.9 QGIS może ładować warstwy, które nie mają wpisu w tabeli geometry_columns. Dotyczy to zarówno tabel jak i widoków. Definiowanie widoków daje potężne możliwości wizualizacji danych. Informacje o tworzeniu widoków znajdziesz w podręczniku PostgreSQL.

Kilka szczegółów o warstwach PostgreSQL

Ten rozdział zawiera kilka szczegółów o dostępie QGIS do warstw PostgreSQL. W większości przypadków QGIS powinien zwyczajnie pokazać listę tabel bazy danych, które mogą być załadowane i, jeśli sobie tego życzysz, załadować je. Jeśli jednak okaże się, że masz kłopot z załadowaniem tabeli PostgreSQL do QGIS, to poniższe informacje mogą okazać się pomocne w zrozumieniu komunikatów QGIS i zawiera wskazówki, jak zmodyfikować tę tabelę lub zdefiniować widok, aby QGIS mógł ją załadować.

QGIS wymaga, aby warstwy PostgreSQL zawierały kolumnę, która może być jej unikatowym kluczem. W przypadku tabel oznacza to, że tabela musi posiadać klucz główny lub kolumnę z wymogiem niepowtarzalności. Kolumna ta musi mieć w QGIS typ int4 (4-bajtowa liczba całkowita). Można też użyć kolumny ctid jako klucza głównego. Jeśli kolumna ich nie posiada, wówczas używana jest do tego kolumna oid. Wydajność będzie większa, jeśli kolumna ta jest zindeksowana (zauważ, że klucze główne są w PostgreSQL indeksowane automatycznie).

Jeśli warstwa PostgreSQL jest widokiem, obowiązują te same wymagania, ale widoki nie posiadają kluczy głównych czy kolumn z ograniczeniem niepowtarzalności. Musisz zdefiniować klucz główny (musi to być typu integer) w oknie QGIS zanim będziesz mógł załadować widok. Jeśli widok nie posiada odpowiedniej kolumny, QGIS go nie załaduje. Sposobem na rozwiązanie może być wówczas przedefiniowanie widoku tak, aby zawierał odpowiednią kolumnę (typu integer, z ograniczeniem niepowtarzalności, najlepiej zindeksowaną).

W QGIS istnieje opcja Wybierz poprzez id, która domyślnie jest aktywna. Oznacza to, że pobierane jest jedynie pole id, co zwykle pozwala przyspieszyć pracę. W przypadku podłączania widoków, które długo się generują, warto rozważyć odznaczenie tej opcji.

Importowane danych do PostgreSQL

Import danych do bazy PostgreSQL/PostGIS może się odbyć przy pomocy kilku narzędzi, takich jak wtyczka SPIT lub narzędzia linii poleceń shp2pgsql i ogr2ogr.

Zarządzanie bazami

QGIS posiada wbudowaną wtyczkę icon_dbmanager DB Menadżer. Można jej użyć do załadowania do bazy plików shp i danych w innych formatach. Narzędzie to obsługuje schematy bazy. Więcej informacji znajduje się w rozdziale DB Manager Plugin.

shp2pgsql

PostGIS zawiera narzędziezwane shp2pgsql, które może być wykorzystane do importu shapefile do bazy PostGIS. Na przykład, aby zaimportować shapefile o nazwie lakes.shp do bazy PostgreSQL o nazwie gis_data, skorzystaj z następującego polecenia:

shp2pgsql -s 2964 lakes.shp lakes_new | psql gis_data

Spowoduje to utworzenie nowej warstwy o nazwie lakes_new w bazie danych gis_data. Warstwa będzie miała miała nadany układ współrzędnych o identyfikatorze (SRID) 2964. Więcej informacji o układach odniesienia i odwzorowaniach znajdziesz w rozdziale Praca z układami współrzędnych.

Wskazówka

Eksportowanie zbiorów danych z PostGIS

Podobnie do narzędzia importu shp2pgsql istnieje również narzędzie do eksportowania zbiorów danych z PostGIS jako shapefile: pgsql2shp. Jest ono dołączone do twojej dystrybucji PostGIS.

ogr2ogr

Oprócz shp2pgsql i DB Menadżera jest jeszcze jedno narzędzie, któe może posłużyć do wsadzania danych do bazy PostGIS: ogr2ogr. Jest ono częścią instalacji GDAL.

Importowanie shapefile do PostGIS odbywa się w następujący sposób:

ogr2ogr -f "PostgreSQL" PG:"dbname=postgis host=myhost.de user=postgres
password=topsecret" alaska.shp

Spowoduje to wgranie shapefile alaska.shp do bazy danych PostGIS postgis przy użyciu użytkownika postgres z hasłem topsecret na hoście myhost.de.

Zwróć uwagę, że OGR musi być skompilowany z PostgreSQL, aby obsługiwać PostGIS. Można to sprawdzić wpisując (w nix)

ogrinfo --formats | grep -i post

Jeśli chciałbyś wykorzystać polecenie PostgreSQL COPY zamiast domyślnej metody INSERT INTO możesz określić następującą zmienną środowiskową (przynajmniej na nix i osx):

export PG_USE_COPY=YES

ogr2ogr nie tworzy indeksów przestrzennych, tak jak shp2pgsql. Musisz utworzyć go ręcznie osobnym poleceniem SQLa CREATE INDEX (opis znajdziesz w następnym rozdziale Zwiększanie wydajności).

Zwiększanie wydajności

Wczytywanie obiektów z bazy danych PostgreSQL może zajmować dużo czasu, zwłaszcza po sieci. Można poprawić wydajność wyświetlania warstw PostgreSQL sprawdzając, czy każda z warstw w bazie posiada indeks przestrzenny PostGIS. PostGIS pozwala na tworzenie indeksów GiST (Generalized Search Tree) w celu przyspieszenia przestrzennego wyszukiwania danych (informacje o indeksie GIST zaczerpnięte są z dokumentacji PostGIS dostępnej pod adresem http://postgis.refractions.net).

Składnia tworzenia indeksu GIST jest następująca:

CREATE INDEX [indexname] ON [tablename]
  USING GIST ( [geometryfield] GIST_GEOMETRY_OPS );

Zwróć uwagę, że dla większych tabel tworzenie indeksu może trwać długo. Po utworzeniu indeksu należy przeprowadzić VACUUM ANALYZE. Więcej informacji znajdziesz w dokumentacji PostGIS (POSTGIS-PROJECT Literature and Web References).

Poniżej znajduje się przykład tworzenia indeksu GIST:

gsherman@madison:~/current$ psql gis_data
Welcome to psql 8.3.0, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

gis_data=# CREATE INDEX sidx_alaska_lakes ON alaska_lakes
gis_data-# USING GIST (the_geom GIST_GEOMETRY_OPS);
CREATE INDEX
gis_data=# VACUUM ANALYZE alaska_lakes;
VACUUM
gis_data=# \q
gsherman@madison:~/current$

Warstwy wektorowe przechodzące przez południk 180

Wiele pakietów GIS nie zawija map wektorowych w geograficznym układzie odniesienia (długość/szerokość) przechodzących przez południk 180 (http://postgis.refractions.net/documentation/manual-2.0/ST_Shift_Longitude.html). W rezultacie, gdy otworzymy taką mapę w QGIS, zobaczymy dwie oddalone od siebie lokalizacje, które powinny przecież znajdować się blisko siebie. Na rysunku Figure_vector_4 mały punkt z lewej strony obszaru mapy (Wyspy Chatham) powinien znajdować się w siatce, z prawej strony Nowej Zelandii.

Figure Vector 4:

../../../_images/vectorNotWrapping.png

Mapa w układzie geograficznym przechodząca przez południk 180° nix

Można to obejść korzystając z funkcji PostGIS o nazwie ST_Shift_Longitude. Czyta ona każdy punkt/wierzchołek wszystkich części każdego obiektu w geometrii warstwy i, jeśli długość geogr. < 0°, dodaje do niej 360°. W wyniku tego otrzymujemy wersję danych w przedziale 0° - 360° wycentrowaną na południku 180°.

Figure Vector 5:

../../../_images/vectorWrapping.png

Przejście przez południk 180° z zastosowaniem funkcji ST_Shift_Longitude

Sposób użycia

  • Zaimportuj dane do PostGIS (Importowane danych do PostgreSQL) korzystając np. z wtyczki DB Menadżer.

  • Skorzystaj z linii poleceń PostGIS i wydaj następujące polecenie (jest to przykład, w którym “TABLE” jest właściwą nazwą tabeli PostGIS): gis_data=# update TABLE set the_geom=ST_Shift_Longitude(the_geom);

  • Jeśli wszystko pójdzie dobrze, otrzymasz potwierdzenie z liczbą obiektów, które zostały zaktualizowane i będziesz mógł załadować mapę i zobaczyć różnicę (Figure_vector_5)

Warstwy SpatiaLite

Gdy ładujesz warstwy z bazy SpatiaLite po raz pierwszy, zacznij od kliknięcia na przycisk mActionAddSpatiaLiteLayer Dodaj warstwę SpatiaLite z paska narzędziowego lub wybierz polecenie mActionAddSpatiaLiteLayer Dodaj warstwę SpatiaLite... z menu Warstwa lub naciśnij skrót Ctrl+Shift+L. Spowoduje to otwarcie okna, w którym będzie można nawiązać połączenie z jakąś bazą zarejestrowaną już w QGIS , którą można wybrać z listy rozwijalnej lub zdefiniować nowe połączenie do nowej bazy. Nowe połączenie definiuje się za pomocą przycisku [Nowe] i wskazanie położenia nowej bazy SpatiaLite, która jest plikiem z rozszerzeniem .sqlite.

Jeśli chcesz zapisać warstwę wektorową w formacie SpatiaLite, możesz to zrobić klikając prawym przyciskiem warstwę w legendzie i wybierając polecenie Zapisz jako...`Następnie podaj nazwę pliku, jako format zapisu wybierz SpatiaLite i określ docelowy układ współrzędnych. Można również wybrać jako format zapisu ‘SQLite’, a następnie, w okienku opcji danych wpisać ``SPATIALITE=YES`. W ten sposób OGR utworzy bazę SpatiaLite. Zobacz również http://www.gdal.org/ogr/drv_sqlite.html.

QGIS obsługuje edytowalne widoki SpatiaLite.

Tworzenie nowej warstwy SpatiaLite

Jeśli chcesz utworzyć nową warstwę SpatiaLite, zajrzyj do rozdziału Creating a new SpatiaLite layer.

Wskazówka

Wtyczki do zarządzania danymi SpatiaLite

Do zarządzania danymi w bazach SpatiaLite można użyć również kilku wtyczek: QSpatiaLite, SpatiaLite Manager lub Zarządzanie bazami (ta ostatnia jest wtyczką domyślnie instalowaną z programem i jest polecana). Można je pobrać i zainstalować za pomocą Menadżera Wtyczek.

Warstwy MSSQL Spatial

mActionAddMssqlLayer QGIS posiada także wbudowaną obsługę MS SQL 2008. Zanim skorzystasz z danych MSSQL Spatial, kliknij przycisk z paska narzędziowego mActionAddMssqlLayer Dodaj warstwę MSSQL Spatial, lub wybierz polecenie mActionAddMssqlLayer Dodaj warstwę MSSQL Spatial... z menu Warstwa lub wciśnij kombinację klawiszy Ctrl+Shift+M.

Warstwy Oracle Spatial

Narzędzia przestrzenne Oracle Spatial umożliwiają użytkownikom natywną obsługę danych geograficznych w bazie Oracle. QGIS obsługuje te warstwy.

Tworzenie połączenia z bazą danych

mActionAddOracleLayer Zanim skorzystasz z danych Oracle Spatial, musisz utworzyć połączenie z bazą danych, w której zapisane są te dane. Można zacząć od kliknięcia przycisku na pasku narzędziowym mActionAddOracleLayer Dodaj warstwę Oracle Spatial, od polecenia mActionAddOracleLayer Dodaj warstwę Oracle Spatial... z menu Warstwa lub wciśnięcia kombinacji klawiszy Ctrl+Shift+O. Przycisk [Nowe] uruchamia menedżera połączeń w oknie Utwórz nowe połączenie Oracle. Wymagane do połączenia parametry to:

  • Nazwa: nazwa połączenia. Może być taka sama jak Baza danych

  • Database: SID lub SERVICE_NAME instancji Oracle.

  • Host: nazwa hosta, na którym znajduje się baza danych. Musi to być rozpoznawalna nazwa hosta, taka sama, jaka mogłaby zostać użyta do otwarcia połączenia telnet lub pingowania hosta. Jeśli baza znajduje się na tym samym komputerze, co QGIS, wpisz po prostu ‘localhost’.

  • Port: numer portu, na którym nasłuchuje serwer bazy danych Oracle. Domyślnym portem jest 1521.

  • Użytkownik: nazwa użytkownika logującego się do bazy danych.

  • Hasło: hasło Użytkownika logującego się do bazy danych.

Można też zaznaczyć następujące pola wyboru:

  • checkbox Zapisz użytkownika Wskazuje, czy w danych konfiguracyjnych połączenia zapisać również nazwę użytkownika.

  • checkbox Zapisz hasło Wskazuje, czy w konfiguracji połączenia zapisać hasło użytkownika bazy.

  • checkbox Przeszukaj tylko meta data table Ogranicza wyświetlane tabele tylko do zapisanych w widoku all_sdo_geom_metadata. Może to znacząco przyspieszyć pierwsze wyświetlenie tabel przestrzennych.

  • checkbox Szukaj tylko tabel użytkownika Ogranicz poszukiwanie tabel przestrzennych do będących własnością użytkownika.

  • checkbox Pokaż także tabele bez geometrii. Wskazuje, czy wyszczególnione mają zostać również tabele bez geometrii.

  • checkbox Użyj szacunkowych metadanych tabeli Oracle przechowuje liczne metadane o tabelach, takie jak liczba rekordów, typ geometrii, zasięg przestrzenny danych geometrycznych. Jeśli tabela ma wiele rekordów, uzyskanie tych informacji może być czasochłonne. Włączenie tych opcji spowoduje przyspieszenie tych operacji poprzez: oszacowanie liczby rekordów z all_tables.num_rows. Zasięg tabeli będzie zawsze określany funkcją SDO_TUNE.EXTENTS_OF, nawet jeśli użyto filtra warstwy. Tabela geometrii jest określana z pierwszych 100 niepustych (NOT NULL) rekordów geometrii.

  • checkbox Tylko istniejące typy geometrii. Wyszczególniaj tylko istniejące typy geometrii i nie oferuj dodawania nowych.

Po podaniu parametrów i opcji połączenia można przetestować połączenie klikając na przycisk [Test połączenia].

Wskazówka

Ustawienia użytkownika QGIS a bezpieczeństwo

W zależności od tego, w jakim środowisku pracujesz, przechowywanie haseł w twoich ustawieniach QGIS może narazić twoje bezpieczeństwo. Hasła zapisywane są otwartym tekstem w ustawieniach systemowych i plikach projektu! Twoje ustawienia QGIS są, w zależności od systemu operacyjnego, przechowywane w:

  • nix The settings are stored in your home directory in .config/QGIS/QGIS2.conf.
  • win Ustawienia przechowywane są w rejestrze.

Ładowanie warstwy Oracle Spatial

mActionAddOracleLayer Po zdefiniowaniu połączenia możesz ładować dane z bazy Oracle. Oczywiście wymaga to posiadania danych w Oracle.

W celu załadowania warstwy z Oracle Spatial wykonaj następujące kroki/l

  • Jeśli okno Dodaj tabele Oracle nie jest otwarte, kliknij mActionAddOracleLayer Dodaj warstwę Oracle Spatial z paska narzędzi.

  • Wybierz połączenie z bazą z listy rozijalnej i naciśnij [Połącz].

  • Wybierz lub odznacz checkbox Pokaż także tabele bez geometrii.

  • Możesz również skorzystać z checkbox Opcji wyszukiwania aby określić, które obiekty z zaznaczonej warstwy załadować lub wykorzystać przycisk [Ustaw filtr], żeby otworzyć okno kreatora zapytań.

  • Na liście dostępnych warstw yszukaj warstwę(y), które chcesz dodać.

  • Zaznacz ją poprzez kliknięcie. Można zaznaczać więcej warstw przytrzymując w czasie klikania klawisz Shift. Zobacz Query Builder, gdzie opisano wykorzystanie kreatora zapytań Oracle do jeszcze dokładniejszego określania warstw.

  • Naciśnij przycisk [Dodaj] aby dodać warstwę do mapy.

Wskazówka

Warstwy Oracle Spatial

Zwykle warstwa Oracle Spatial zdefiniowana jest poprzez wpis w tabeli USER_SDO_METADATA.