RU:SpatiaLite

From OpenStreetMap Wiki
Jump to navigation Jump to search
SpatiaLite
Spatialite-logo-big.png
Лицензия: MPL 1.1, GPL v2.0, и LGPL v2.1: три лицензии под разными условиями
Платформ: Linux, Free BSD, и Unix
Статус: активно
Язык:
sql
Веб-сайт: https://www.gaia-gis.it/gaia-sins/
Языки
программирования:
C и редко C++

ГИС расширение для СУБД SQLite

Features
Feature Value
Map Display
?
Routing
?
Navigating
?
Tracking
?
Monitoring
?
Editing
?
Rendering
?
Accessibility
?

SpatiaLite (gaia-gis.it) это библиотека с открытым исходным кодом, предназначенная для расширения функций ядра SQLite до полноценной поддержки пространственных запросов и ГИС функций. Библиотека легко добавляется к SQLite для создания полноценной и мощной пространственной СУБД (в основном совместимой с OGC-SFS). SQLite и SpatiaLite образуют эффективную пространственную СУБД с открытым исходным кодом, примерно эквивалентную PostgreSQL с PostGIS. Большинство дистрибутивов Linux имеют SpatiaLite в собственных репозиториях как готовый комплект программ. SpatiaLite распространяется на условиях тройной лицензии MPL.

Маршрутизация

Поддерживаются функции маршрутизации.

Объединение с PostGIS, прозрачный перенос и использование данных

Оболочка внешних данных для SQLite работающая в PostgreSQL (SQLite FDW) поддерживает прозрачный перенос геометрических данных между SpatiLite и PostGIS средствами PostgreSQL. Данные происходящие из внешней БД SpatiLite включаются в SQL контекст PostGIS, где обрабатываются таким же способом, как и остальные данные, хранящиеся в самой БД.

При помощи SQLite FDW можно использовать БД или таблицы SpatiaLite как дополнительную форму хранения, полностью совмещённую с работой в контексте PostGIS при помощи прозрачного преобразования SpatiaLite ↔ PostGIS на лету. Для доступа к данным SpatiaLite убедитесь, что файл БД доступен для чтения и записи пользователю операционной системы, от которого работает сервер PostgreSQL. После этого администратор PostgreSQL должен создать внешний сервер FOREIGN SERVER для файла SpatiaLite и передать права на его использование обычному пользователю. Пример:

CREATE EXTENSION sqlite_fdw; 
CREATE SERVER "SpatiaLite проверочный сервер"  FOREIGN DATA WRAPPER sqlite_fdw OPTIONS ( database '/home/osgeo/Пример БД SpatiaLite.sqlite' );
GRANT USAGE ON FOREIGN SERVER "SpatiaLite проверочный сервер" TO osgeo;

Для использования данных SpatiLite в режиме без записи, то есть только на чтение, есть настройка force_readonly для внешнего сервера FOREIGN SERVER, которую можно выставить в true при создании или в любой момент после него.

После созданиея внешнего сервера FOREIGN SERVER и передачи прав GRANT обычному пользователю, можно работать дальше без администраторских прав и создавать внешние таблицы FOREIGN TABLE для данных из SpatiaLite БД.

Пример доступа во внешнюю таблицу SaptiaLite из PostgreSQL/PostGIS

Для таблицы Osaka_2025-01-20 в файле БД SpatiaLite, которую отобразим в PostgreSQL под именем "OSM 大阪市" команда доступа может быть такой:

CREATE FOREIGN TABLE "OSM 大阪市" (
	  g geometry,
	  tags json
	)
	SERVER "SpatiaLite проверочный сервер"
	OPTIONS (
	  table 'Osaka_2025-01-20'
	);

После этого можете использовать данные из SpatiaLite в контексте PostgreSQL и PostGIS как будто они ничем не отличаются от того, что хранится внутри PostgreSQL. Вот примеры для какого-то памятника архитектуры в Японии:

SELECT * FROM "OSM 大阪市";
SELECT * FROM "OSM 大阪市" WHERE tags->>'building' = 'yes';
SELECT * FROM "OSM 大阪市" WHERE g  = (SELECT geom FROM "UNESCO Japan" where city='大阪市' AND name='大坂城');
SELECT * FROM "OSM 大阪市" WHERE g  = (SELECT geom FROM "UNESCO Japan" where city_lat='Osaka' AND name='大坂城');
CREATE TABLE osaka_buildings AS SELECT * FROM "OSM 大阪市" WHERE tags->>'building' = 'yes';
INSERT INTO "OSM 大阪市" SELECT geom, tags FROM dumps."osaka_2025-01-21";

Примеры проектов с применением SpatiaLite

Логотип SaptiaLite height=200px
Логотип SaptiaLite (CC BY-NC-ND 3.0)

Другие см. в категории SpatiaLite/Examples.

Ссылки на программы из группы SpatiaLite