Bazy danych


Nowa konferencja o bazach danych – dBConf 2014 (24.10.2014)

Do serii dobrze znanych w polskim środowisku IT konferencji organizowanych przez stowarzyszenie Polska Grupa Użytkowników Linuxa (PLUG), takich jak Jesień Linkuksowa, PHPCon Poland czy PyCon PL, dołączyła kolejna: dBConf. Tematem konferencji są szeroko pojęte bazy danych. Ponieważ współczesny GIS – a zwłaszcza WebGIS – bez baz danych obejść się nie może, jest to tematyka obowiązkowa dla każdego kto interesuje się tematyką współdzielenia i publikacji danych przestrzennych.

Na konferencji nie zabraknie GIS Support. Michał Mackiewicz wygłosi prelekcję: MongoDB w aplikacjach lokalizacyjnychMongoDB to nierelacyjna baza danych (NoSQL), która jest dość nową technologią, szczególnie w zastosowaniach w GIS. Z powodzeniem wykorzystujemy MongoDB w naszych najnowszych produktach, z korzyścią dla szybkości i niezawodności działania.

Serdecznie zapraszamy do zapoznania się i rejestracji na stronie konferencji. Osoby, które chciałyby jeszcze wygłosić własną prelekcję, mogą zgłaszać propozycje organizatorom do końca lipca.

Tagi: , ,
Osm2gis – nowy sposób na pobieranie danych OSM?

Pod adresem http://www.osm974.re/osm2gis francuska firma GeoTribu uruchomiła usługę, umożliwiającą pobieranie wycinków bazy danych w formatach zgodnych z aplikacjami GIS. W odróżnieniu od innych podobnych usług, łączy w sobie możliwość wybrania obszaru niezależnie od granic administracyjnych, dostępność standardowych formatów GIS i łatwość obsługi.

Pobieranie danych za pomocą osm2gis jest bardzo proste. Korzystając z wyświetlonej mapy, należy wybrać obszar zainteresowania – nie może być on zbyt duży, aplikacja akceptuje obszary o powierzchni rzędu pojedynczego powiatu lub dużej aglomeracji miejskiej.

Strona główna osm2gis

Strona główna osm2gis

Po dopasowaniu właściwego obszaru, możemy przystąpić do „zamówienia“ danych. Możemy wybrać format (KML,GML,TAB,SHP lub SQLite) i układ współrzędnych (WGS84 albo Google Mercator). Kolejnym krokiem jest podanie adresu e-mail, na który zostanie przesłane powiadomienie o możliwości pobrania danych wraz z linkiem.

Wybór opcji pobierania danych

Wybór opcji pobierania danych

Aplikacja umożliwia pobranie porcji danych raz na godzinę z jednego adresu IP. Dane pochodzą z kopii bazy danych OSM utrzymywanej przez stowarzyszenie OpenStreetMap France.

Dane pobieramy w postaci archiwum ZIP, gdzie w podkatalogach umieszczono poszczególne formaty. Niezależnie od formatu, tworzone są 3 niezależne warstwy – osm_point, osm_line i osm_polygon.

Tabela atrybutów każdej warstwy składa się z 75 kolumn, zawierających większość używanych tagów, oprócz tego dołączona jest kolumna o nazwie tags w której zapisano wszystkie tagi obiektu w formacie klucz => wartość oddzielone przecinkami. Jest to więc znacznie bogatsza tabela, niż tworzona przez standardową wtyczkę QGIS.

Do tego etapu wszystko wygląda wspaniale, jednak usługa ta ma bardzo istotne wady. Po pierwsze – używany konwerter zupełnie nie radzi sobie z obiektami powierzchniowymi. Zdarzają się niezamknięte linie zamiast poligonów, lub wręcz zupełnie nieużyteczne warstwy bez czytelnej geometrii. Z uwagi na skomplikowany sposób zapisu poligonów w modelu danych OSM, generowanie ich geometrii w prawidłowy sposób jest sporym wyzwaniem – nie jest to jednak żadne wytłumaczenie, ponieważ istniejące konwertery radzą sobie z problemem dość dobrze.

Po drugie, w przypadku wyboru opcji zapisu w SQLite dostaniemy wynik w „czystym“ SQLite, bez użycia rozszerzenia SpatiaLite. Nie skorzystamy więc z dobrodziejstw jakie daje przestrzenna baza danych, czyli zaawansowanych indeksów przestrzennych i możliwości wykonywania analiz wprost z poziomu zapytań SQL. Ponadto zamiast jednego pliku z bazą i trzema tabelami wewnątrz, nadal otrzymamy trzy odrębne.

Podsumowując, narzędzie osm2gis jest niewątpliwie krokiem w dobrym kierunku – zwiększenia dostępności i interoperacyjności danych OSM – lecz wykonanie pozostawia wiele do życzenia. Obecnie nadal lepiej jest korzystać z wybranego programu do konwersji, lub gotowych plików Shapefile od Geofabrik.

Bardziej skutecznym rozwiązaniem problemu może być funkcja konwersji danych OSM wbudowana w bibliotekę GDAL/OGR – jednak najnowsza wersja 1.10 w chwili pisania artykułu nie była jeszcze dostępna dla wszystkich systemów operacyjnych.

Tagi: , ,
PostGIS 2.0

Po ponad dwóch latach pracy pojawiła się nowa wersja PostGIS, relacyjno-obiektowego rozszerzenia bazy danych PostgreSQL, oznaczona numerem 2.0 . Jest to obecnie najpopularniejsza i najbardziej rozbudowana otwarta baza danych operująca na danych przestrzennych. Więcej informacji o PostGIS można znaleźć w artykule “Dlaczego warto zaprzyjaźnić się ze słoniem?

Najważniejsze zmiany w wersji 2.0:
  • dodanie modelu topologicznego dla obiektów posiadających wspólne granice,
  • możliwość trój- i czterowymiarowego indeksowania obiektów,
  • natywne wsparcie danych rastrowych i możliwość ich analizowania,
  • wprowadzenie modyfikatora typu (typmod) dla kolumn zawierających geometrię,
  • Nowe funkcje dla wektorów:
    • ST_Split,
    • ST_Node,
    • ST_MakeValid,
    • ST_OffsetCurve,
    • ST_ConcaveHull,
    • ST_AsX3D,
    • ST_GeomFromGeoJSON,
    • ST_3DDistance,
  • integracja z systemem rozszerzeń dostępnych w PostgreSQL od wersji 9.1,
  • możliwość jednoczesnego importu wielu plików oraz eksport wielu tabel przez GUI.

Najnowszą wersję można ściągnąć ze strony głównej projektu. Dostępna jest również skompilowana wersja dla systemów Windows.

Tagi: , ,
Aggregate Polygons – generalizacja zabudowy w PostGIS

Wstęp

Jednym z bardziej istotnych problemów kartograficznych przy tworzeniu map w skali 1:50 000 i 1: 100 000 jest dokonanie generalizacji pojedynczych budynków do bardziej ogólnych obiektów – obszarów zabudowanych. Tradycyjnie dokonywano tego ręcznie, w oparciu o określone reguły, ale też i subiektywne odczucia kartografa. Obecnie jednak, gdy coraz częściej słyszymy o wielorozdzielczych i wieloreprezentacyjnych bazach danych, pojawia się problem automatycznej i powtarzalnej generalizacji.

Szwajcarska firma Kappasys opracowała dodatkowe funkcje do bazy PostGIS, dzięki którym możliwe stało się przeprowadzenie takiej generalizacji przy pomocy oprogramowania Open Source. Dostarczone są w postaci zwykłych skryptów w języku PL/SQL, dzięki czemu nie musimy nic kompilować ani instalować w systemie operacyjnym – wystarczy wykonać je w bazie, by uzyskać dostęp do funkcji.

Instalacja

Skrypty SQL dostępne są do pobrania ze strony Kappasys: http://www.kappasys.org/cms/index.php?id=65&L=5

Należy ściągnąć obydwa skrypty – cleanGeometry oraz aggregatePolygons. Następnie wykonujemy skrypty (użytkownik musi mieć prawa superużytkownika bazy, domyślnie jest to postgres):

psql -d <baza> -U  -h <serwer> -f cleanGeometry.sql
psql -d <baza> -U  -h <serwer> -f aggregatePolygons.sql

Postgres powinien odpowiedzieć „CREATE FUNCTION“ oraz „CREATE AGGREGATE“. Od tego momentu zyskujemy dostęp do funkcji.

Użycie 

Funkcja może być wywołana przy użyciu dowolnego interfejsu bazy danych, a więc linii komend, programu pgAdmin, wtyczki PostGIS Manager czy własnego programu.

Składnia funkcji jest następująca:

SELECT aggregatepolygons (<kolumna geometrii>,<odległość>,<kształt ortogonalny>) FROM 

Pierwszy argument jest to po prostu nazwa kolumny geometrii tabeli, w której znajdują się budynki, np. the_geom. Drugi – to maksymalna odległość między budynkami, poniżej której będą traktowane jako należące do jednego obszaru zabudowanego. Trzeci argument jest typu Boolean, czyli może mieć wartość true albo false i określa, czy wynikowe poligony mają mieć kształt geometryczny z dużą ilością kątów prostych, czy też dowolny. Przy wartości true wynik będzie bardziej zbliżony do reprezentacji na mapie topograficznej, zaś przy false będzie przypominał CORINE Land Cover. Poniżej przedstawiam przykładowe wyniki generalizacji dla różnych ustawień – z opcją ortogonalną i bez, przy różnych odległościach między budynkami.

Wyniki generalizacji za pomocą funkcji aggregatePolygons.

Jeżeli budynki mają przypisany atrybut określający ich wielkość, przeznaczenie itp. można dodać do zapytania klauzulę GROUP BY i otrzymać osobne poligony dla np. budynków przemysłowych i mieszkalnych lub jedno i wielorodzinnych.

[warning]Generalizacja tą metodą przebiega bardzo wolno i pożera dużą część zasobów procesora, dlatego stanowczo niewskazane jest używanie funkcji aggregatepolygons() w widokach albo dynamicznych Query Layers. [/warning]

Tagi: ,

Szkolenia GIS i QGIS

Szkolenia podstawowe i dedykowane w formie zdalnej oraz stacjjonarnej

Zobacz ofertę szkoleń