postgis Samouczek
Pierwsze kroki z postgis
Szukaj…
Uwagi
PostGIS to zestaw rozszerzeń bazy danych PostgreSQL. Za pomocą PostGIS możesz przechowywać dane geoprzestrzenne i wykonywać zapytania przestrzenne w bazie danych postgres.
W przeciwieństwie do domyślnych typów danych w normalnej bazie danych postgres, dane przestrzenne muszą być obsługiwane inaczej. Zapytania, które można wykonać w bazie danych przestrzennych, są zwykle definiowane przez obwiednie w 2 lub 3 wymiarach. Do przechowywania, indeksowania i obsługi tych typów danych postGIS wykorzystuje koncepcję o nazwie R-Trees , która nie jest częścią domyślnej instalacji postgres.
Dzięki bazie danych postGIS możesz:
- przechowywać dane przestrzenne
- wykonywać zapytania przestrzenne, aby uzyskać i wyodrębnić informacje (punkty, obszary).
- zarządzać informacjami przestrzennymi i metadanymi w tabelach (takich jak: używany system odniesienia coorinate).
- konwertuj geometrie z jednego układu współrzędnych na inny
- porównaj geometrie i wyodrębnij właściwości (takie jak: długość krawędzi drogi lub budynku)
- generować nowe geometrie od innych.
Wersje
| Najnowsze wydania funkcji | Oficjalna dokumentacja | Data wydania |
|---|---|---|
| 2.3.0 | HTML , PDF | 26.09.2016 |
| 2.2.0 | HTML , PDF | 07.10.2015 |
| 2.1.0 | HTML , PDF | 17.08.2013 |
| 2.0.0 | HTML , PDF | 2012-04-03 |
| 1.5.0 | 04.02.2010 | |
| 1.4.0 | 2009-07-24 | |
| 1.3.0 | 2007-08-09 | |
| 1.2.0 | 2006-12-08 | |
| 1.1.0 | 2005-12-21 | |
| 1.0.0 | 19.04.2005 |
Instalacja za pomocą Menedżera pakietów
Łuk:
Dostępny jest oficjalny pakiet Pacman. Zainstaluj pakiet jako root, używając:
pacman -S postgis
OpenSuse:
Aby korzystać z repozytoriów openSuse dla aplikacji geoprzestrzennych, włącz Geo-repozytorium jako root:
zypper ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_[RELEASE]/ GEO
gdzie [RELEASE] to oficjalny numer wydania Twojej dystrybucji Suse. Następnie możesz zainstalować postgis za pomocą:
zypper install postgis
Instalacja ze źródła (z Postgres 9.1 lub nowszą wersją)
Ten przewodnik jest wyraźnie przeznaczony dla PostgreSQL 9.1 lub nowszego na komputerach z systemem Linux. Wykorzystuje funkcję rozszerzeń postgres, która znacznie poprawi import rozszerzeń do istniejącej instalacji postgres. Jeśli musisz pracować ze starszą wersją postgres, zapoznaj się z oficjalnymi dokumentami .
Rozwiąż zależności
PostGIS to złożony projekt, który ma wiele zależności. Aby kontynuować procedurę ręcznej konfiguracji i kompilacji, musisz rozwiązać te zależności i zainstalować następujące pakiety ręcznie lub za pośrednictwem menedżerów pakietów.
Minimalne wymagania
- PostgreSQL 9.1 lub nowszy. Ważne jest, aby zainstalować bazę danych w tym nagłówków serwera, zwykle w -packages dev pakietu kierownika swojego repozytorium.
- Kompilator GNU C gcc .
- Marka GNU. Aby zakończyć proces kompilacji.
- Proj4 . Biblioteka projekcji do transformacji współrzędnych.
- GEOS . Biblioteka geometrii, która implementuje opisy funkcji i proste geometrie. Wersja 3.5 lub nowsza jest zalecana w celu korzystania z nowszych funkcji, takich jak ST_ClipByBox2D i ST_Subdivide .
- GDAL , wersja 1.9 lub wyższa. Biblioteka, która implementuje abstrakcyjne formaty danych dla danych geoprzestrzennych opartych na rastrze i wektorze.
- LibXML2 , wersja 2.5 lub wyższa. Biblioteka do pracy z XML, XSLT i DTD.
- JSON-C , wersja 0.9 lub wyższa. Biblioteka do tworzenia danych wyjściowych w formacie JSON
Wymagania opcjonalne
- GTK (wymaga GTK + 2.0, 2.8+) do kompilacji shp2pgsql-gui.
- SFCGAL , wersja 1.1 (lub wyższa) może być wykorzystana do zapewnienia dodatkowych zaawansowanych funkcji analizy 2D i 3D dla PostGIS.
- PCRE . Biblioteka do dopasowywania wzorców wyrażeń regularnych przy użyciu składni Perl 5. Ta biblioteka jest potrzebna, jeśli chcesz współpracować z Adress Standizer .
- CUnit . Narzędzie do testowania jednostkowego, potrzebne do testowania regresji.
- DocBook (xsltproc) jest wymagany do tworzenia dokumentacji.
- DBLatex jest wymagany do tworzenia dokumentacji w formacie PDF.
- ImageMagick jest wymagany do generowania obrazów używanych w dokumentacji.
Zdobądź źródła
Aby uzyskać kod źródłowy, pobierz najnowszy plik tarball:
wget http://postgis.net/stuff/postgis-2.3.2dev.tar.gz
tar -xvzf postgis-2.3.2dev.tar.gz
lub skorzystaj z oficjalnego repozytorium SVN:
svn checkout http://svn.osgeo.org/postgis/trunk/ postgis-2.3.2dev
Konfiguracja
Jeśli źródła uzyskałeś za pośrednictwem SVN, możesz przygotować skrypt konfiguracyjny za pomocą:
./autogen.sh
Aby skonfigurować proces kompilacji dla konkretnego komputera, uruchom w folderze projektu:
./configure
Istnieje kilka opcjonalnych parametrów kroku konfiguracji. Szczegółowe instrukcje znajdują się w oficjalnej dokumentacji , zwykle jest to opcjonalne i dotyczy tylko serwerów, które używają instalacji innych niż domyślne.
Budować
Po pomyślnym zakończeniu kroku konfiguracji zostanie utworzony plik makefile. Aby uruchomić proces kompilacji:
make
Ostatnim wyjściem powinno być:
"PostGIS was built successfully. Ready to install."
Od wersji 1.4.0 wszystkie funkcje mają komentarze wygenerowane z dokumentacji. Jeśli chcesz później zainstalować te komentarze w swoich przestrzennych bazach danych, uruchom polecenie, które wymaga docbook.
make comments
Instalacja
Zainstaluj wszystkie rozszerzenia za pomocą:
make install
Rozszerzenia PostGIS są budowane i instalowane automatycznie, jeśli używasz PostgreSQL 9.1 lub nowszego. Możesz zainstalować niezbędne rozszerzenia ręcznie, jeśli masz inną konfigurację.
W folderze projektu:
cd extensions
cd postgis
make clean
make
make install
cd ..
cd postgis_topology
make clean
make
make install
cd ..
cd postgis_sfcgal
make clean
make
make install
cd ..
cd address_standardizer
make clean
make
make install
make installcheck
cd ..
cd postgis_tiger_geocoder
make clean
make
make install
make installcheck
Jeśli chcesz ręcznie zainstalować rozszerzenia na innym komputerze, skopiuj następujące pliki z folderu extensions do folderu PostgreSQL/share/extension docelowego. Dla każdego rozszerzenia:
scp extensions/[EXTENSION]/sql/*.sql user@target:[POSTGIS_PATH]/share/extension
gdzie [EXTENSION] jest wybranym rozszerzeniem (postgis, postgis_topology, postgis_sfcgal, address_standardizer, postgis_tiger_geocoder), a [POSTGIS_PATH] to ścieżka instalacji PostGIS na komputerze docelowym.
Weryfikacja instalacji
Jeśli nie masz uruchomionej usługi bazy danych Postgres, najpierw skonfiguruj swoją bazę danych Postgres . Połącz się z bazą danych, używając:
su postgres -c psql
Aby sprawdzić, czy rozszerzenia są dostępne, uruchom następujące zapytania w sesji psql:
SELECT name, default_version,installed_version FROM pg_available_extensions WHERE name LIKE 'postgis%' or name LIKE 'address%';
Dane wyjściowe powinny wyglądać następująco:
name | default_version | installed_version
------------------------------+-----------------+-------------------
address_standardizer | 2.3.2dev | 2.3.2dev
address_standardizer_data_us | 2.3.2dev | 2.3.2dev
postgis | 2.3.2dev | 2.3.2dev
postgis_sfcgal | 2.3.2dev |
postgis_tiger_geocoder | 2.3.2dev | 2.3.2dev
postgis_topology | 2.3.2dev |
(6 rows)
Aby przeprowadzić dokładny test poinstalacyjny, uruchom następujące polecenie w folderze projektu:
make check
Będzie to przebiegać przez różne kontrole i testy przy użyciu wygenerowanej biblioteki w stosunku do faktycznej bazy danych PostgreSQL.
Konfigurowanie geoprzestrzennej bazy danych
Aby utworzyć nową pustą bazę danych, uruchom jako użytkownik postgres:
createdb [yourdatabase]
Połącz się z bazą danych za pomocą sesji psql:
psql -d [yourdatabase]
W sesji psql:
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
aby utworzyć niezbędne rozszerzenia geoprzestrzenne. Gdy to zrobisz, baza danych jest bazą danych z obsługą geoprzestrzenną i jest gotowa do użycia.
Geoprzestrzenny „Hello World”
W tym przykładzie skonfigurujemy bazę danych geoprzestrzennych, zaimportujemy dane z 2 różnych źródeł i wyświetlimy wyniki w aplikacji o nazwie QGIS. Ten przewodnik jest napisany wprost dla maszyn linuxowych, jeśli działasz na innej platformie, niektóre polecenia lub ścieżki mogą nie działać zgodnie z oczekiwaniami.
W celu przeglądania importowanych danych korzystamy z aplikacji o nazwie QGIS . Jeśli nie masz tej aplikacji, zainstaluj ją najpierw , jeśli chcesz użyć innej przeglądarki lub aplikacji geograficznej (np. ArcGIS), możesz pominąć instalację QGIS.
Naszymi źródłami będą dystrykty zgromadzeń stanu Nowy Jork i baza danych map ulic LION w Nowym Jorku . Pobierz odpowiednie pliki z połączonych lokalizacji. Powinieneś także rzucić okiem na sekcję Metadane w materiale, ponieważ zawiera ona informacje o systemie odniesienia za pomocą współrzędnych, z którego korzystają te pliki.
Aby rozpocząć, utwórz folder roboczy „nycgis”, skopiuj pobrane pliki do lokalizacji i rozpakuj archiwa.
mkdir nycgis
cd nycgis
cp ~/Downloads/nyad_16d.zip .
unzip ~/Downloads/nyad_16d.zip
cp ~/Downloads/nylion_16d.zip .
unzip ~/Downloads/nylion_16d.zip
W folderze „nycgis” powinieneś teraz mieć 2 foldery: „nyad_16d”, „lion” z kilkoma plikami.
Podczas pracy z danymi geograficznymi niezwykle ważna jest znajomość układu odniesienia za pomocą współrzędnych (CRS) danych źródłowych i ostatecznych danych wyjściowych. W sekcjach Metadanych powiązanych lokalizacji ( Metadata: Assembly Districts , Metadata: LION Database ) znajdziesz, że CRS dla obu plików to EPSG: 2263, układ współrzędnych używany w odniesieniu do północno-wschodnich Stanów Zjednoczonych.
Załóżmy, że chcemy użyć innego CRS w naszej bazie danych. Może to mieć różne przyczyny, na przykład możemy chcieć współpracować z internetową aplikacją geo w bazie danych. Typowym CRS dla tego rodzaju aplikacji jest WGS: 84 (EPSG: 4326).
Do konwersji układów współrzędnych używamy narzędzia o nazwie ogr2ogr które jest częścią pakietu GDAL. W folderze roboczym najpierw tworzymy 2 foldery reprezentujące ponownie rzutowane dane, a następnie konwertujemy nasze dane.
mkdir nyad_16d_proj_4326
ogr2ogr -f "ESRI Shapefile" ./nyad_16d_proj_4326/nyad_4326.shp ./nyad_16d/nyad_16d.shp -s_srs EPSG:2263 -t_srs EPSG:4326
mkdir nylion_16d_proj_4326
ogr2ogr -f "ESRI Shapefile" ./nylion_16d_proj_4326/ny_str_4326.shp ./nylion_16d/lion/lion.gdb/a0000000d.gdbtable -s_srs EPSG:2263 -t_srs EPSG:4326
Zauważ, że do naszych celów używamy tylko pliku o nazwie: „a0000000d.gdbtable” z bazy danych LION. Składnia ogr2ogr ogr2ogr jest następująca:
ogr2ogr -f [output-format] [output-file] [input-file] -s_srs [source crs] -t_srs [target crs]
Mamy teraz 2 pliki kształtu, rzutowane we właściwym CRS. Aby korzystać z danych w naszej bazie danych, musimy przekonwertować pliki shapefile na sql-statemens. Do tego używamy narzędzia o nazwie shp2pgsql . W katalogu roboczym uruchom następujące polecenia:
shp2pgsql ./nyad_16d_proj_4326/nyad_4326.shp > nyad_4326.sql
shp2pgsql ./nylion_16d_proj_4326/ny_str_4326.shp > ny_streets_4326.sql
Pliki nyad_4326.sql i ny_streets_4326.sql są teraz gotowe do użycia w Postgis. Aby kontynuować i zaimportować dane, utwórz bazę danych włączoną przestrzennie.
sudo su - postgres
createdb nycgis
psql -d nycgis
W sesji psql uruchom:
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
Zakończ sesje psql i postgres-user za pomocą (CTRL + D). I zaimportuj pliki za pomocą:
psql -f nyad_4326.sql -d nycgis
psql -f ny_streets_4326.sql -d nycgis
Baza danych nycgis ma teraz 2 tabele, w których ponownie rzutowane źródła zostały pomyślnie zaimportowane.
Aby to sprawdzić: otwórz QGIS
- użyj opcji Warstwa > Dodaj warstwę > Warstwa PostGIS
- połącz się z bazą danych
- wybierz swoje stoły
- (opcjonalnie) ustaw styl nowo tworzonych warstw.
Et voilà: Masz teraz włączoną przestrzennie bazę danych z importowanymi, ponownie rzutowanymi geodanymi.
