Alternatywy dla Shapefiles jako typy danych typu open source, wieloplatformowe [zamknięte]

20

Pracuję nad oprogramowaniem, które jest bardzo zorientowane na ESRI, ale w przyszłej wersji prawdopodobnie nie będzie używać oprogramowania ESRI. Korzysta z Shapefiles i Geodat baz danych. Planuję przenieść wszystkie moje dane do Shapefiles w oczekiwaniu na przyszłe wersje oprogramowania, które prawdopodobnie będą na Androidzie i innych urządzeniach mobilnych. Wygląda na to, że Shapefiles są najczęstszym typem danych dla funkcji w świecie GIS typu open source, ale jakie są inne i jakie korzyści przynoszą? Znam GeoJSON i KML, ale jestem pewien, że istnieją inne.

Chciałbym poznać wszystkie opcje, ale szczególnie interesują mnie typy zestawów danych, które najlepiej nadają się do przechowywania na urządzeniach mobilnych (dane muszą być dostępne bez połączenia z Internetem).

Garbarz
źródło
1
To pytanie z 2011 roku zostało zadane zanim istniał GeoPackage, a odpowiedzi oczywiście nie zawierają tej alternatywy.
user30184
2
Geobaza plików Esri ma maksymalną długość pola znaków, która mogłaby konkurować z zawartością tekstową większości małych bibliotek, Esri Personal Geodatabase obsługuje również bardzo długie pola tekstowe. Do obu można uzyskać dostęp za pośrednictwem QGIS i oczywiście Esri ArcGIS, ale obsługa tych typów danych jest ograniczona poza tymi pakietami. Uważaj jednak na wersję, spróbuję utworzyć wersję zgodną z 9.3, ponieważ większość oprogramowania Esri, z którym będziesz mieć do czynienia, będzie w wersji 10+ i interfejsy API geobazy dla QGIS powinny obsługiwać tę wersję. GeoJSON i KML mogą również obsługiwać duże pola tekstowe, ale nie są tak powszechnie czytelne.
Michael Stimson,
1
Umm, 9.3 nie jest dobrym planem na zgodność z geobazą plików - API FGDB nie obsługuje .gdb w stylu 9.x.
Vince
1
@LiveDiaz shapefile nadal istnieją, pomimo ich ograniczeń, ponieważ są najbardziej uniwersalnymi nośnikami przenoszenia funkcji - prawie każdy pakiet GIS otwiera się lub może importować plik kształtu Esri. Format jest otwartym standardem, więc każdy może czytać i wdrażać na swój własny sposób. Istnieje niewątpliwie wszelkie formaty funkcji GIS, ale nie są one tak powszechnie przyjęty ... ten temat był omawiany wiele razy na GIS.SE. Tak bardzo, jak byśmy tego chcieli, w przeciwnym razie pliki kształtowe będą prawdopodobnie przez jakiś czas najniższym wspólnym mianownikiem dla funkcji, więc musimy się tylko uśmiechnąć i znieść.
Michael Stimson,

Odpowiedzi:

18

Jak mówi @ user890, zależy to w dużej mierze od sposobu wykorzystania danych. Głównie istnieją dwa sposoby uzyskania dostępu do danych:

  1. Wczytując wszystko do pamięci za jednym razem, a następnie uzyskuj dostęp do danych w pamięci / przeszukuj je.
  2. Poprzez zapytanie o określone funkcje, ramki ograniczające itp.

Formaty takie jak GeoJSON i KML najlepiej nadają się do przypadków, gdy chcesz załadować wszystko za jednym razem. Zaletą jest to, że dane można uporządkować w sposób bardziej odpowiedni dla Twojej aplikacji. Wady: większe rozmiary plików (ponieważ są oparte na tekście) i niemożność wydajnego wykonywania zapytań bezpośrednio z pliku.

SQLite / Spatialite jest lepszy do tworzenia zapytań (SQL), ale trudniej jest ustrukturyzować dane - musisz spłaszczyć wszystko w tabelach bazy danych, a następnie wykonać JOIN (co może być kosztowne) podczas zapytania.

Nie ma tak naprawdę idealnego formatu plików, który obejmowałby wszystkie (ale z drugiej strony pliki kształtów są dalekie, dalekie od ideału). Jedną z alternatyw do rozważenia jest wprowadzenie własnego formatu specyficznego dla aplikacji, ale działa to tylko wtedy, gdy nie trzeba udostępniać danych światu zewnętrznemu.

Igor Brejc
źródło
14

Myślę, że lista formatów wektorowych OGR (zaktualizowany link) identyfikuje prawie każdy format open source, o jakim kiedykolwiek słyszałem, i wiele innych. Każdy z tych formatów ma swoje zalety / wady, więc trudno powiedzieć, który z nich jest „najlepszy”. W przypadku aplikacji mobilnych wyobrażam sobie, że rozmiar pliku będzie jednym z ważniejszych czynników decydujących.

W przypadku aplikacji mobilnych sądzę, że format sqlite / spatialite byłby logicznym formatem na początek. Wiem, że Android zapewnia natywne wsparcie dla sqlite. Zakładając, że możesz załadować rozszerzenia przestrzenne, będziesz mieć do dyspozycji bardzo potężne gis.

W zależności od tego, jak ryzykowny jesteś, wydaje się, że zbudowanie gdal dla Androida nie jest niemożliwe. Można więc mieć do dyspozycji znacznie więcej formatów. Jestem pewien, że wielu użytkowników tej witryny byłoby zainteresowanych, gdybyś wybrał tę trasę.

użytkownik890
źródło
13

Nowym formatem, który powstał niedawno, jest Geopackage . Ta specyfikacja jest oparta na bazie danych SQLite, więc ma tę samą bazę dla jednego pliku, ale ma dodatkową zaletę, że jest standardem OGC .
Jeśli chodzi o rozmiar pliku, prawdopodobnie format przechowywania jest bardziej zwarty niż format .shpi .dbfformat danych przestrzennych i atrybutów używanych w pliku Shapefile. Dlatego pakiet GeoPackage będzie prawdopodobnie tego samego rozmiaru lub mniejszy niż ogół tych samych elementów w pliku kształtu.
To zdjęcie pokazuje sieć kanalizacyjną w San Diego zapisaną jako Shapefile i GeoPackage. Jak widać, są one zasadniczo tego samego rozmiaru. Shapefile vs Geopackage Size
Ponieważ ten format jest oparty na SQLite, powinien być gotowy na urządzenia mobilne. Wiele aplikacji korzysta już z tego formatu bazy danych do przechowywania, więc jest to sprawdzona technologia. Można go używać na wielu platformach bez konieczności tłumaczenia.

Uzyskaj przestrzenny
źródło
4

Zgadzam się z Lennertem, wybierz odpowiedni format zadania.

Jednak uznałem, że Spatialite jest dość uniwersalnym formatem. Pojedynczy plik daje elastyczność przechowywania i udostępniania danych, takich jak plik kształtu, ale negujesz wspomniane problemy związane z limitami znaków; dając jednocześnie możliwość korzystania z zalet przestrzennej bazy danych.

Niestety nie jest w pełni obsługiwany w ArcGIS (od niedawna nie próbowałem, więc mogę się mylić), ale działa świetnie w QGIS.

Liam G.
źródło
4

Istnieje wiele różnych formatów, a najlepsze z nich zależą od posiadanego zestawu danych, używanych narzędzi i rzeczy, które chcesz z nim zrobić.

Niektóre z tych, których używam:

  • Plik Geobaza danych i przestrzenne bazy danych: catchall, którego lubię używać. Może przechowywać wszelkiego rodzaju dane i mieć relacje, indeksowanie ... Używam gdb podczas pracy w środowisku Esri, przestrzennym do wszystkiego innego.

  • GeoJson: Łatwy do odczytu format, którego zwykle używam w przypadku małych zestawów danych, które nie wymagają wiele przy indeksowaniu

  • Właściwe bazy danych: zwykle używam tego do ogromnych zestawów danych i złożonych algorytmów.

Ale jest też mnóstwo innych.

Lennert De Feyter
źródło
3

Polecam korzystanie z bazy danych SQLite / spatiallite. Jest to pojedynczy plik, taki jak geobaza (jedna do wielu tabel / warstw w obrębie) i może być używany w ArcGIS Desktop i QGIS.

grafika 21
źródło
Zapisałem dane wielokąta w sqlite i załadowałem je za pomocą QGIS, i dostałem komunikat „CRS był niezdefiniowany: domyślnie CRS EPSG: 4326 - WGS84”. Czy nie traci informacji o projekcji?
Ichiro
Za pomocą jakiego oprogramowania zapisałeś warstwę wielokąta w sqlite?
grafika 21
1

Opcje naprawdę zależą od używanego języka i sposobu wykorzystania danych. Android najprawdopodobniej będzie Java. Każda opcja będzie rodzajem porównania kosztów i korzyści na podstawie tej decyzji. Wszystkie formaty danych są zoptymalizowane dla określonych przypadków użycia.

Kolejne pytanie dotyczy sposobu wykorzystania danych. Czy aplikacja mobilna po prostu odczytuje dane przestrzenne? Czy będzie to częste odczytywanie i zapisywanie danych? Jak często będzie wymieniać dane z innymi urządzeniami lub serwerami?

GeospatialPython.com
źródło