encyklopedia.space

SpatiaLite

SpatiaLite jest otwartoźródłową biblioteką rozszerzającą możliwości SQLite o funkcje systemu informacji geograficznej (GIS). Dzięki temu bazie danych SQLite można przechowywać, indeksować i zapytać o dane przestrzenne (punkty, linie, poligony) przy użyciu standardu OGC Simple Features. Rozszerzenie to jest często wykorzystywane w aplikacjach mobilnych, systemach zarządzania danymi geoprzestrzennymi oraz w projektach typu OpenStreetMap.

Historia

Projekt SpatiaLite zapoczątkowano w 1999 roku, a pierwsza stabilna wersja została wydana w 2004. Autorami i głównymi deweloperami byli Mike Tomlinson oraz Gaetano Piovanelli. Od tamtej pory biblioteka była regularnie aktualizowana, wprowadzając obsługę nowych typów danych, lepszą wydajność indeksowania oraz kompatybilność z najnowszymi wersjami SQLite.

Architektura

SpatiaLite działa jako rozszerzenie ładowane do silnika SQLite. Po wczytaniu biblioteki, do bazy danych dodawane są:

  • tabele systemowe (np. geometry_columns, spatial_ref_sys) opisujące metadane geometryczne,
  • funkcje SQL umożliwiające manipulację geometrią (np. ST_Intersects, ST_Buffer, ST_Union),
  • indeksy R‑Tree wspierające szybkie zapytania przestrzenne.

Wszystkie te elementy są w pełni zgodne ze standardem SQL‑92, co pozwala na użycie typowych zapytań SELECT … FROM … WHERE … z dodatkiem operatorów przestrzennych.

Funkcje i możliwości

  • Typy danych geometrycznych: POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION.
  • Indeksowanie R‑Tree: przyspiesza zapytania takie jak ST_Intersects czy ST_Within.
  • Obsługa układów współrzędnych: tabela spatial_ref_sys zawiera definicje ponad 4000 układów współrzędnych z bazy EPSG.
  • Transformacje geograficzne: funkcja ST_Transform pozwala konwertować geometrie pomiędzy różnymi układami.
  • Wykonywanie operacji topologicznych: union, intersection, difference, symmetrically difference.
  • Obsługa rasterów: od wersji 4.0 wprowadzono wsparcie dla danych rastrowych (tzw. raster).

Zastosowania

SpatiaLite znajduje zastosowanie w wielu dziedzinach:

Porównanie z innymi rozwiązaniami

CechaSpatiaLitePostGISOracle Spatial
Silnik bazySQLitePostgreSQLOracle Database
Wymagania serweroweBrak – działa lokalnieSerwer PostgreSQLSerwer Oracle
Rozmiar instalacjiKB‑MBMB‑GBGB‑TB
Obsługa R‑TreeTakTakTak
LicencjaMITOpen Source (PostgreSQL License)Komercyjna

Licencja i rozwój

SpatiaLite jest rozpowszechniana na licencji MIT, co umożliwia bezpłatne użycie zarówno w projektach komercyjnych, jak i niekomercyjnych. Rozwój prowadzony jest na platformie GitHub, a społeczność aktywnie przyczynia się do dodawania nowych funkcji, poprawiania błędów oraz tworzenia dokumentacji.

Przykładowe zapytanie

SELECT name, AsText(geom)
FROM cities
WHERE ST_Intersects(geom, BuildMbr(-74.0, 40.5, -73.0, 41.0));

Powyższe zapytanie zwraca nazwę i geometrie miast, które leżą w prostokątnym obszarze obejmującym część Nowego Jorku.

Zobacz także