Просторова база даних
Просто́рова ба́за да́них — це база даних, яка оптимізована для зберігання та запиту даних, які являють собою об'єкти у геометричному просторі. Більшість просторових баз даних дозволяють відображати прості геометричні об'єкти, такі як: точки, лінії та багатокутники. Деякі просторові бази даних обробляють більш складні структури, такі як: 3D об'єкти, топологічні покриття, лінійні мережі та триангульовані неправильні мережі[en]. Хоча типові бази даних були розроблені для управління різними цифровими та характерними типами даних, такі бази даних потребують додаткової функціональності для ефективної обробки просторових типів даних, та розробники часто додавали геометрію чи особливі типи даних. Open Geospatial Consortium (OGC) розробив специфікацію Simple Features (вперше випущена в 1997)[1] і встановлює стандарти для додавання просторових функціональних можливостей до систем баз даних. [2] Стандарт ISO/EIC просторового інтерфейсу SQL/MM є частиною мультимедійного стандарту SQL/MM та розширює стандарт Simple Features з тими даними, які підтримують кругову інтерполяцію.[3]
База геоданих (також географічна база даних та геопросторова база даних) це база географічних даних, таких як: країни, адміністративно-територіальні одиниці, міста та інша відповідна інформація. Такі бази даних можуть бути корисними для вебсайтів, які бажають визначати місцерозташування користувачів для подальших налаштувань.
Системи баз даних використовують індекси для швидкого пошуку значень, але спосіб, який використовують більшість баз даних для індексування даних не є оптимальним для просторових запитів. Замість такого способу, просторові бази даних використовують просторовий індекс для прискорення роботи бази даних.
Окрім типових SQL-запитів, таких як оператори SELECT, просторові бази даних можуть виконувати різноманітні просторові операції. Наступні операції та багато іншого визначаються стандартом Open Geospatial Consortium:
- Просторові вимірювання: обчислює довжину лінії, площу багатокутника, відстань між геометричними об'єктами, тощо.
- Просторові функції: змінює наявні функції, щоб створювати нові, наприклад, створюючи навколо них буфер, перехресні функції тощо.
- Просторові педанти: Дозволяє отримати правильні / неправильні запити про просторові зв'язки між геометричними об'єктами. Приклади включають «зробіть перекриття двох полігонів» або «чи існує резиденція, розташована в межах милі від площі, яку ми плануємо побудувати на полігоні?» (дивіться DE-9IM[en]).
- Геометричний конструктор: створює нові геометричні об'єкти, зазвичай за допомогою визначення вершин (точок або вузлів), які визначають форму.
- Функція спостерігача: запити, які повертають певну інформацію про функцію, наприклад, місце розташування центра кола.
Деякі бази даних підтримують лише спрощені або модифіковані множини цих операцій, особливо у випадках систем NoSQL, таких як MongoDB та CouchDB.
Просторовий індекс використовується просторовими базами даних (базами даних, які зберігають інформацію, пов'язану з об'єктами у просторі) для оптимізації просторових запитів. Загально прийняті типи індексів не ефективно обробляють просторові запити, такі як: наскільки відрізняються дві точки, чи точка входить у просторову область інтересів. Методи спільного просторового індексу включають:
- HHCode[en]
- Сітка (просторовий індекс)[en]
- Крива порядку Z[en]
- Дерево квадрантів
- Дерево октантів
- Дерево UB
- Дерево R+: Як правило, це основний метод індексації просторових даних. Об'єкти (форми, лінії та точки) згруповані за допомогою мінімального обмежувального прямокутника (МОП). Об'єкти додаються до МОП в межах індексу, що призводить до мінімального збільшення його розміру.
- Дерево R+[en]
- R*-дерево
- Гільберт Р-Дерево[en]
- Дерево Х[en]
- К-вимірне дерево
- Дерево М[en] — індекс m-tree може бути використаний для ефективного вирішення запитів подібності до складних об'єктів порівняно з використанням довільної метрики.
- Точковий метод доступу
- Бінарне розбиття простору (Дерево BSP): Розділяє простір на гіперплощини
Просторовий запит - це спеціальний тип запиту до бази даних, підтримуваний просторовими базами даних. Запити відрізняються від не-просторових SQL запитів кількома важливими аспектами. Два з найважливіших - вони дозволяють використовувати геометричні типи даних, такі як точки, лінії та полігони, і ці запити враховують просторові відношення між цими геометричними примітивами.
Назви функцій для запитів відрізняються в різних просторових базах. Далі показано кілька прикладів функцій, вбудованих в PostGIS, розширення PostgreSQL. (Термін 'geometry' позначає точки, лінії, паралелепіпеди або інші дво- або тривимірні форми):[4]
Опис функції: назваФункції (параметри) : тип результату
- ST_Distance(geometry, geometry) : number
- ST_Equals(geometry, geometry) : boolean
- ST_Disjoint(geometry, geometry) : boolean
- ST_Intersects(geometry, geometry) : boolean
- ST_Touches(geometry, geometry) : boolean
- ST_Crosses(geometry, geometry) : boolean
- ST_Overlaps(geometry, geometry) : boolean
- ST_Contains(geometry, geometry) : boolean
- ST_Length(geometry) : number
- ST_Area(geometry) : number
- ST_Centroid(geometry) : geometry
- ST_Intersection(geometry, geometry) : geometry
Так, просторове з'єднання[en] між містами що задаються точками і країнами що задаються полігонами може бути виконане SQL-виразом, на зразок:
SELECT * FROM cities, countries WHERE ST_Contains(countries.shape, cities.shape)
Операцію перетину (vector overlay[en], одна з основних операцій в ГІС) можна було б відтворити так:
SELECT ST_Intersection(veg.shape, soil.shape) int_poly, veg.*, soil.* FROM veg, soil where ST_Intersects(veg.shape, soil.shape)
- Усі продукти сумісні з специфікаціями OpenGIS[5]
- Просторові бази даних з політикою відкритого коду та API, деякі з них сумісні з OpenGIS[6]
- Просторовий сервер запитів[en] надає можливості Sybase ASE.
- Маленький світ[en] версії керованого зберігання даних[en], рідна база даних GE Маленький світ[en] GIS
- SpatiaLite[en] розширює Sqlite спеціальними типами даних, функціями та утилітами.
- Просторовий розширювач IBM DB2 може розповсюджувати будь-яке видання DB2, включаючи безкоштовний DB2 Express-C, з підтримкою просторових типів.
- Clusterpoint[en] пропонує інтерактивну підтримку для дистанцій, відповідності діапазону та багатокутників, а також агрегації.
- Oracle Spatial [en]
- Oracle Locator[7]
- Vertica Place, геопросторове розширення для HP Vertica, додає в OGC-сумісні просторові функції до бази даних реляційної колонки-магазину.[8]
- Microsoft SQL Server має підтримку просторових запитів 2008
- PostgreSQL СУБД (система управління базами даних) використовує просторову розширювану PostGIS для реалізації стандартизованої геометрії типів даних та відповідних функцій.
- Teradata Geospatial містить функції 2D-простору (OGC-сумісний) у своїй системі зберігання даних.
- Розширення MonetDB / GIS для MonetDB додає прості функції OGS до бази даних реляційної колонки-магазину.[9]
- Linter SQL Server підтримує просторові типи та просторові функції відповідно до специфікацій OpenGIS
- MySQL СУБД реалізує геометрію типу даних, а також деякі просторові функції, реалізовані відповідно до специфікацій OpenGIS.[10] Проте в MySQL версії 5.5 і вище функції, які перевіряють просторові зв'язки, обмежуються роботою з мінімальними обмежуючими прямокутниками, а не фактичними геометріями. Версії MySQL раніше ніж 5.0.16 підтримували лише просторові дані в таблицях MyISAM. Що стосується MySQL 5.0.16, InnoDB, NDB, BDB та ARCHIVE вони також підтримують просторові функції.
- Neo4j — графічна база даних, яка може побудувати 1D та 2D індекси як Б-дерево, Quadtree та криву Гільберт прямо на графу
- AllegroGraph — графічна база даних, яка забезпечує новий механізм для ефективного зберігання та вилучення двовимірних геопросторових координат для даних баз даних опису ресурсів. Він включає синтаксис розширення для запитів SPARQL.
- MarkLogic [Архівовано 5 лютого 2021 у Wayback Machine.], MongoDB, RavenDB [Архівовано 22 березня 2022 у Wayback Machine.], та RethinkDB підтримують геопросторові показники в 2D середовищі.
- Esri має ряд як однокористувацьких, так і багатокористувацьких баз геоданих.
- SpaceBase [Архівовано 18 жовтня 2019 у Wayback Machine.], просторова база даних в реальному часі.[11]
- CouchDB система бази даних на основі документів, яка може бути просторово включена додатком під назвою Geocouch
- CartoDB [Архівовано 24 липня 2015 у Wayback Machine.], хмарна геопросторова база даних на вершині PostgreSQL з PostGIS
- AsterixDB, відкрита система керування великими даними з рідними геопросторовими можливостями.
- Kinetica [Архівовано 2 січня 2018 у Wayback Machine.], база даних прискорених графічних процесорів, оптимізована для геопросторової аналітики великого набору даних.
- MapD [Архівовано 14 грудня 2017 у Wayback Machine.], відкрите джерело GPU-прискореної бази даних та платформи для візуалізації та аналітики в режимі реального часу на великих наборах даних, здебільшого на геопросторових даних.
- SpatialDB [Архівовано 4 лютого 2014 у Wayback Machine.] від MineRP перша у світі просторова база даних з відкритими стандартами (OGC) з розширеннями просторового типу для гірничої промисловості.[12]
- H2 підтримує типи геометрії[13] та просторові показники[14] версії 1.3.173 (2013-07-28). Розширення з назвою H2GIS [Архівовано 16 грудня 2017 у Wayback Machine.] доступне на Maven Central, дає повну підтримку простих функцій OGC.
- GeoMesa — це хмарна просторово-часова база даних, побудована на вершині Apache Accumulo та Apache Hadoop. GeoMesa надає повну підтримку простих функцій OGC і додаток GeoServer.
- Ingres 10S and 10.2 [Архівовано 6 листопада 2016 у Wayback Machine.] включає натуральну комплексну просторову підтримку. Ingres також містить бібліотеку перехресних платформ просторових даних бібліотеки абстракції геопросторових даних.
- Tarantool підтримує геопросторові запити з індексом RTREE [Архівовано 17 грудня 2015 у Wayback Machine.].
- SAP HANA підтримує геопросторовий процес із SPS08
- Redis з Geo API
DBS | Ліцензія | Розподілення | Просторові об'єкти | Просторові функції | Інтерфейс PostgreSQL | Інтерфейс UMN MapServer | Документація | Модифікації | HDFS |
---|---|---|---|---|---|---|---|---|---|
AsterixDB | Apache License 2.0 | так | так (звичайно) | центр, радіус, відстань, площа, перетин та клітинка | ні | ні | добре в Google Code | власні типи даних, функції та індекси | можливо |
Esri GIS для Hadoop | Apache License 2.0 | так | так (власні особливі API) | так (об'єднання, різниця, перетин, кліп, вилучення, буфер, рівність, в межах, належність, дотики, знаки) | ні | ні | лише коротко | вилучення | так |
GeoMesa [Архівовано 8 грудня 2017 у Wayback Machine.] | Apache License 2.0 | так | так Simple Features | так ( JTS [en]) | ні(технологія GeoTools [en]) | ні | частина функцій, кілька прикладів | з Simple Features у віртуальній машині Java та Apache Spark всі проблеми є вирішуваними | так |
H2GIS [Архівовано 16 грудня 2017 у Wayback Machine.] | LGPL(починаючи з v1.3) GPL раніше | ні | так (звичайно, без растру) | Simple Features та спеціальні функції для H2Network | так | ні | так(домашня сторінка) | SQL | ні |
HadoopGIS | GNU General Public License | Приклад | Приклад | так (вміст, покриття, охоплення, знаки, непересічність, перетин, перекриваються, в межах, найближчий сусід) | ні | ні | лише коротко | вилучення | так |
Ingres | GNU General Public License або патентований засіб | так (якщо встановлено розширення) | так (звичайно, без растру) | Приклад | ні | з MapScript | лише коротко | з С та ОМЕ | ні |
spatial/Neo4J-spatial [Архівовано 28 липня 2020 у Wayback Machine.] | Загальна публічна ліцензія GNU | ні | так Simple Features | так (вміст, покриття, охоплення, непересічність, перетин, перетин вікон, перекриття, дотик, в межах, в межах відстані) | ні | ні | лише коротко | Розгалуження топологічного комплекту[en] | ні |
Postgres-XL з PostGIS[en] | Публічна ліцензія Mozilla та загальна публічна ліцензія GNU | так | так Simple Features та растр | так Simple Features Access та функції растру | так | так | PostGIS: так, Postgres-XL: коротко | SQL, у поєднанні з R, Tcl або Python | ні |
Postgres-XL з PostGIS[en] | GNU General Public License | ні | так Simple Features та растр | так Simple Features Access та функції растру | так | так | докладно | SQL, у поєднанні з R | ні |
Rasdaman[en] | сервер GNU, клієнт LGPL, корпоративне підприємство | так | тільки растр | растрові маніпуляції з rasql | так | з Web Coverage Service або Web Processing Service | докладно вікіпедія | власна визначена функція у корпоративному випуску | ні |
RethinkDB | Affero General Public License | так | так |
|
ні | ні | офіційні документи | вилучення | ні |
- Об'єктно-базована просторова база даних[en]
- База даних Spatiotemporal[en]
- Просторовий запит
- Просторовий аналіз
- Геоінформаційна система
- Розташування інтелекту[en]
- Мультимедійна база даних[en]
- ↑ McKee, Lance (2016). «OGC History (detailed)» [Архівовано 12 грудня 2017 у Wayback Machine.] OGC. Retrieved 2016-07-12. […] 1997 […] OGC released the OpenGIS Simple Features Specification, which specifies the interface that enables diverse systems to communicate in terms of 'simple features' which are based on 2D geometry. The supported geometry types include points, lines, linestrings, curves, and polygons. Each geometric object is associated with a Spatial Reference System, which describes the coordinate space in which the geometric object is defined.*
- ↑ Homepage. Архів оригіналу за 12 грудня 2017. Процитовано 10 грудня 2017.
- ↑ (eds.), Wolfgang Kresse, David M. Danko (2010). Springer handbook of geographic information (1. ed.). Berlin: Springer. pp. 82–83. ISBN
- ↑ PostGIS Function Reference. PostGIS Manual. OSGeo. Процитовано 4 січня 2023.
- ↑ Source GIS website. Архів оригіналу за 14 грудня 2017. Процитовано 24 березня 2022.
- ↑ Wei Li (2008). «2.1 Spatio-temporal Databases» [International Standard Book Number|ISBN] Retrieved 2016-07-07. Commercial spatial database management systems include IBM DB2's Spatial Extender [42], Oracle's Spatial and Oracle Locator [66], and Microsoft's SQL Server 2008 [58], etc.
- ↑ Vertica Place"[недоступне посилання з липня 2019]. December 2015.
- ↑ «GeoSpatial — MonetDB» [Архівовано 14 грудня 2017 у Wayback Machine.]. 4 March 2014.
- ↑ https://dev.mysql.com/doc/refman/5.5/en/gis-introduction.html. Архів оригіналу за 9 квітня 2016. Процитовано 10 грудня 2017.
- ↑ product page on the Parallel Universe website[недоступне посилання з липня 2019]
- ↑ product page on the MineRP website[недоступне посилання з липня 2019]
- ↑ geometry type documentation. Архів оригіналу за 12 грудня 2017. Процитовано 10 грудня 2017.
- ↑ create spatial index documentation. Архів оригіналу за 12 грудня 2017. Процитовано 10 грудня 2017.
- ↑ Ingres 10S datasheet on Actian website (PDF). Архів оригіналу за 5 березня 2016. Процитовано 10 грудня 2017.
- Spatial Databases: A Tour [Архівовано 11 вересня 2015 у Wayback Machine.], Shashi Shekhar and Sanjay Chawla, Prentice Hall, 2003 (ISBN 0-13-017480-7)
- ESRI Press [Архівовано 4 липня 2008 у Wayback Machine.]. ESRI Press titles include Modeling Our World: The ESRI Guide to Geodatabase Design, and Designing Geodatabases: Case Studies in GIS Data Modeling , 2005 Ben Franklin Award [Архівовано 23 вересня 2006 у Wayback Machine.] winner, PMA, The Independent Book Publishers Association.
- Spatial Databases — With Application to GIS [Архівовано 20 травня 2013 у Wayback Machine.] Philippe Rigaux, Michel Scholl and Agnes Voisard. Morgan Kaufmann Publishers. 2002 (ISBN 1-55860-588-6)
- Evaluation of Data Management Systems for Geospatial Big Data [Архівовано 18 червня 2018 у Wayback Machine.] Pouria Amirian, Anahid Basiri and Adam Winstanley. Springer. 2014 (ISBN 9783319091563)
- An introduction to PostgreSQL PostGIS
- PostgreSQL PostGIS as components in a Service Oriented Architecture [Архівовано 28 лютого 2006 у Archive.is] SOA
- A Trigger Based Security Alarming Scheme for Moving Objects on Road Networks[недоступне посилання] Sajimon Abraham, P. Sojan Lal, Published by Springer Berlin / Heidelberg-2008.
- geodatabase [Архівовано 9 березня 2019 у Wayback Machine.] ArcGIS Resource Center description of a geodatabase