Oracle spatial что это
Oracle Spatial and Graph , ранее называвшаяся Oracle Spatial, является бесплатным дополнительным компонентом базы данных Oracle . Пространственные функции в Oracle Spatial и Graph помогают пользователям управлять географическими данными и данными о местоположении в собственном виде в базе данных Oracle, потенциально поддерживая широкий спектр приложений - от автоматического картографирования , управления объектами и географических информационных систем ( AM / FM / ГИС ), беспроводным службам определения местоположения и электронному бизнесу с определением местоположения . Функции графиков в Oracle Spatial и Graph включают графики модели сетевых данных Oracle (NDM), используемые в традиционных сетевых приложениях на основных транспортных средствах. , телекоммуникационные, коммунальные и энергетические организации и семантические графы RDF, используемые в социальных сетях и социальных взаимодействиях, а также для связывания разрозненных наборов данных для удовлетворения требований исследовательских, медицинских, финансовых, медийных и интеллектуальных сообществ.
Геопространственная функция Oracle Spatial and Graph предоставляет схему и функции SQL, которые упрощают хранение, извлечение, обновление и запрос коллекций пространственных объектов в базе данных Oracle. (Пространственный компонент пространственного объекта состоит из геометрического представления его формы в некотором координатном пространстве, называемого его «геометрией».)
Spatial database and geospatial technologies
Comprehensive spatial, mapping, and location analytics platform that addresses business-critical requirements across industries, including transportation, utilities, retail, energy, public sector, defense, construction, and more.
2D spatial data
Store and query 2D spatial geometries in Oracle Database, such as points of interest, streets, administrative boundaries. Perform queries based on proximity (how far is it?) and containment (is it inside a region?). Access hundreds of functions to filter data, measure distance relationships, and combine/transform geometries.
3D Point Cloud data and Light Detection and Ranging (LiDAR)
Manage spatial sensor data from laser scanning or photogrammetry, for use in enterprise 3D geographic information system (GIS) and Smart City applications. The 3D support is optimized for point cloud and CityGML workflows.
Raster data
Store and process geo-referenced raster data, such as orthophotos, satellite imagery, and gridded data for energy, natural resource management, or national security applications. Perform powerful raster analytics and on-the-fly image processing, with virtual mosaics and an easy-to-use loading tool supporting popular data formats.
Network data
Model road transportation, telco, utility, energy, and other networks and analyze this complex data for shortest path, nearest neighbor, within cost, and reachability.
Topology data
Manage topology data used by mapping and land management organizations with fine-grained feature editing and data integrity across maps and map layers for very large land parcel datasets with high consistency and accuracy.
Streaming point data
Track millions of moving objects against thousands of regions of interest, for logistics and IoT applications. Analyze locations of moving people for the purpose of contact tracing using a scalable, automatic API.
Я сам в свое время долго пытался понять, зачем нужен Oracle Spatial, долго искал, читал документацию. Сейчас по прошествии многих лет мне понятно, что нет какого-то простого и понятного документа. Есть вот такие проспекты, которые сразу начинают говорить о кораблях во вселенной. Есть также документация, которая все-таки скорее справочник, чем учебник. Одно хорошо — есть книга Pro Oracle Spatial for Oracle Database 11g. Она очень даже полезна. В этом посте я надеюсь сделать простое и понятно введение в пространственные технологии Oracle.
Функции
Пространственные функции Oracle Spatial объединены в пакет SDO_GEOM. Их можно подразделить на 4 типа:
- Отношение (возвращает True/False) между двумя объектами: RELATE, WITHIN_DISTANCE
- Проверки: VALIDATE_GEOMETRY_WITH_CONTEXT, VALIDATE_LAYER_WITH_CONTEXT
- Одноаргументные: SDO_ALPHA_SHAPE, SDO_ARC_DENSIFY, SDO_AREA, SDO_BUFFER, SDO_CENTROID, SDO_CONVEXHULL, SDO_CONCAVEHULL, SDO_CONCAVEHULL_BOUNDARY, SDO_LENGTH, SDO_MAX_MBR_ORDINATE, SDO_MIN_MBR_ORDINATE, SDO_MBR, SDO_POINTONSURFACE, SDO_TRIANGULATE, SDO_VOLUME
- Двухаргументные: SDO_CLOSEST_POINTS, SDO_DISTANCE, SDO_DIFFERENCE, SDO_INTERSECTION, SDO_UNION, SDO_XOR
Я не буду подробно останавливаться на каждой функции, а лишь приведу несколько примеров:
SDO_GEOM.WITHIN_DISTANCE
Проверка, что 2 объекта находятся на расстоянии не более 1 км:
SELECT
SDO_GEOM.WITHIN_DISTANCE(c_b.shape, 1, c_d.shape, 0.1, ‘unit=KM’ ) as WITHIN_DISTANCE
FROM cola_markets c_b, cola_markets c_d
WHERE c_b.name = ‘cola_b’ AND c_d.name = ‘cola_d’;
SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT и VALIDATE_GEOMETRY_WITH_CONTEXT
Это очень важная функция — она проверяет корректность геометрического объекта. Она нужна, когда нам приносят геоданные из сторонних систем. Такие данные зачастую содержат логически некорректные объекты. В этой статье не стоит заострять на них внимание, поэтому описание скрыто. Я расскажу об этой процедуре и функции в другом месте.
Например, это может быть полигон с самопересечениями или полилиния с повторяющимися точками. Oracle не даст нам построить пространственный индекс до тех пор пока мы не устраним проблемы с геоданными. Если же мы попытаемся залить некорректные геоданные в таблицы с уже существующим пространственным индексом, то также получим ошибку.
Функция SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT позволяет нам понять, какие проблемы есть в геоданных. Порядок ее применения следующий:
- Создаем таблицу для геоданных
- Заливаем
- Регистрируем метаданные
- Создаем таблицу для результатов валидации
- Запускаем валидацию
Первые 3 шага я опущу из примера, последние 2 выглядят вот так:
CREATE TABLE val_results (sdo_rowid ROWID, result varchar2(1000));
— (Next statement must be on one command line.)
CALL SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT(‘COLA_MARKETS’,'SHAPE’,'VAL_RESULTS’);
SQL> SELECT * from val_results;
Мы видим в результатах работы:
- объект с проблемной геометрией имеет адрес AAABXNAABAAAK+YAAC
- возникла ошибка ORA-13349 (список ошибок)
- проблема в первом элементе, в первом кольце, пересекаются ребра 1 и 3
SDO_GEOM.AREA
Расчет площади объектов:
SELECT name, SDO_GEOM.SDO_AREA(shape, 0.005) FROM cola_markets;
NAME SDO_GEOM.SDO_AREA(SHAPE,0.005)
——————————— ——————————
cola_a 24
cola_b 16.5
cola_c 5
cola_d 12.5663706
Результатом работы этой функции будет новая геометрия, являющаяся объединением двух переданных объектов.
SELECT
SDO_GEOM.SDO_UNION(c_b.shape, c_d.shape, 0.1) as UNION
FROM cola_markets c_b, cola_markets c_d
WHERE c_b.name = ‘cola_b’ AND c_d.name = ‘cola_d’;
UNION
———————————————————————————
SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARR
AY(5, 5, 5, 7, 1, 7, 1, 1, 5, 1, 5, 3, 6, 3, 6, 5, 5, 5))
Семантика RDF
Функция семантического графа RDF поддерживает стандарты RDF Консорциума World Wide Web (W3C) . Он обеспечивает управление данными RDF, запросы и логический вывод, которые обычно используются во множестве приложений, от интеграции семантических данных до анализа социальных сетей и связанных приложений открытых данных . Его особенности включают в себя:
- Тройное хранилище RDF и управление онтологиями с автоматическим разделением и сжатием данных.
- Доказанная масштабируемость до более чем 54 миллиардов троек (эталонный тест LUBM 200K) с масштабируемостью до 8 петабайтного лимита Oracle Database.
- Высокопроизводительная массовая загрузка с параллельной и прямой загрузкой Oracle Database и загрузкой через Jena.
- Параллельные запросы SPARQL и SQL и обновление графов RDF с помощью SPARQL 1.1, веб-сервисы конечных точек SPARQL, SPARQL / Update, API Java с открытым исходным кодом Apache Jena & Sesame, запросы SQL со встроенными шаблонами графов SPARQL, вставка / обновление SQL.
- Запросы к табличным данным с помощью онтологий с использованием операторов SQL для расширения реляционных запросов SQL соответствующими терминами для получения более полных результатов.
- Собственный вывод с параллельными, инкрементными и безопасными операциями для масштабируемого анализа с помощью RDFS, языка веб-онтологий (OWL 2 RL / EL), простой системы организации знаний (SKOS), определяемых пользователем правил, определяемых пользователем расширений вывода и инфраструктуры расширяемости для подключаемые модули рассуждений специального назначения, такие как PelletDB, TrOWL.
- Поддержка GeoSPARQL для хранения / запроса пространственных данных в RDF в соответствии со спецификацией Open GeoSpatial Consortium (OGC).
- RDF просматривает реляционные данные для применения семантического анализа с поддержкой автоматического (прямое сопоставление) и настраиваемого (язык W3C R2RML) сопоставления реляционных данных с тройками RDF .
- Трехуровневая безопасность, отвечающая самым строгим требованиям безопасности с Oracle Label Security.
- Интеграция со средами разработки приложений Apache Jena и Sesame с открытым исходным кодом.
- Интеграция с инструментами на основе XML, такими как Oracle Business Intelligence Enterprise Edition (OBIEE) для отчетов и информационных панелей.
- Интеграция с графической аналитикой сетевой модели данных для определения кратчайшего пути, ближайших соседей, в пределах стоимости и достижимости.
- Интеграция с функциями Oracle Advanced Analytics: Oracle Data Mining для использования прогнозной аналитики и обнаружения шаблонов и Oracle R Enterprise для статистических вычислений и визуализации графических данных в виде диаграмм.
- Семантическое индексирование для интеллектуального анализа текста и анализа сущностей, интегрированное с популярными процессорами естественного языка.
- Интеграция с ведущими коммерческими инструментами и инструментами с открытым исходным кодом для запросов, визуализации и управления онтологиями.
Oracle Spatial и Graph - это вариант для Oracle Enterprise Edition, который необходимо лицензировать отдельно. Бесплатно с 5 декабря 2019 г. Он также включен в Oracle Database Cloud Service (High Performance Edition и Extreme Performance Edition). Он не входит в Oracle Standard Edition или Oracle Standard Edition One. Однако последние две редакции позволяют использовать подмножество пространственных функций (называемое Oracle Locator [3] ) без дополнительных затрат. Приложение к Руководству разработчика Oracle Spatial and Graph определяет функции, разрешенные в Locator.
СУБД Oracle впервые включала в себя возможности обработки пространственных данных с модификацией Oracle 4, сделанной учеными, работающими с Канадской гидрографической службой (CHS). Совместная группа разработчиков, состоящая из сотрудников CHS и Oracle, впоследствии переработала ядро Oracle, в результате чего для Oracle 7. была создана «Опция пространственных данных» или «SDO» (префикс SDO_ продолжает использоваться в реализациях Oracle Spatial). Система пространственной индексации для SDO. включал адаптацию структур данных риманова гиперкуба , вызывая спиральную спираль через 3-мерное пространство, что допускает размер объектов n. Это также позволило обеспечить высокоэффективное сжатие результирующих данных, подходящее для репозиториев данных размером в петабайт, которые требовались CHS и другим крупным корпоративным пользователям, а также сократить время поиска и извлечения. «Спиральный гиперпространственный код», или HHCode , разработанный CHS и реализованный Oracle Spatial, представляет собой форму кривой заполнения пространства .
В Oracle 8 маркетинг корпорации Oracle назвал пространственное расширение просто Oracle Spatial. В первичной системе пространственного индексирования больше не используется HHCode , а используется стандартный индекс r-дерева .
С июля 2012 года эта опция была названа Oracle Spatial и Graph, чтобы выделить возможности графической базы данных в продукте - Сетевая модель данных, представленная в Oracle Database 10g Release 1, и RDF Semantic Graph, представленная в Oracle Database 10g Release 2.
Oracle's spatial database is included in Oracle's converged database, allowing developers and analysts to get started easily with location intelligence analytics and mapping services. It enables Geographic Information System (GIS) professionals to successfully deploy advanced geospatial applications. Organizations can manage different types of geospatial data, perform hundreds of spatial analytic operations, and use interactive map visualization tools with the spatial features in Oracle Autonomous Database and Oracle Database.
Oracle’s location and spatial platform delivers enterprise scalability, security, and performance to power the most demanding applications in Oracle Cloud Infrastructure and on-premises.
Helping fight COVID-19 in Finland using Oracle Cloud (9:29)
Easily load and create spatial data, and visualize it.
See how location intelligence data helps build smarter businesses.
Quickly download and get started with Spatial Studio to explore geospatial data.
Основы Oracle Spatial
Oracle Spatial — это компонент базы данных, состоящий из типов данных, набора функций и процедур, а также внешних по отношению к базе данных веб-сервисов, которые позволяют эффективно хранить, быстро получать доступ и анализировать пространственные данные.
Преимущества хранения данных в Oracle Spatial
- Индустриальный формат. Oracle Spatial поддерживается как стандартный формат хранения всеми крупные ГИС-вендорами и поставщиками пространственных данных, т.е. не требуется конвертировать данные в разные форматы
- Скорость работы. Обработка данных осуществляется в месте их хранения, что очень эффективно и масштабируемо. База данных знает природу данных и "помогает" приложению обрабатывать данных. Операции обработки эффективно распараллеливаются, чтобы использовать многопроцессорные системы. Это, например, позволяет использовать всю мощь Exadata (даже если не используется SmartScan).
- Централизованное хранение. От этого выигрывает безопасность и надежность хранения. Кроме того, легко создать "единый центр правды".
- Преимущества наследуемые от СУБД Oracle. СУБД Oracle — это самая мощная СУБД и в нее встроены мощные возможности по обработке данных: отказоустойчивость, шифрование, репликация, транзакционность, независимость от платформы и т.д. Используя Oracle Spatial мы дополняем ГИС-системы этими преимуществами.
Для использования пространственных данных необходимо:
- Сохранить данные в таблицу СУБД
- Зарегистрировать таблицу
- Проиндексировать
Дальше я опишу эти шаги.
Хранение векторных данных
Для хранения пространственных данных Oracle использует объектно-реляционную модель данных. За счет этого хранить и обрабатывать пространственные данные довольно просто.
Первый тип пространственных данных, который может хранить в Oracle Spatial — это векторные данные. Для векторных данных характерно наличие точных координат вершин объекта. К таким данным можно отнести:
- точки (скважины, остановки общественного транспорта, банкоматы);
- полилинии (нефтепроводы, маршруты движения транспорта, улицы);
- полигоны (нефтеносный участок, зона обслуживания банковского отделения, микрорайон).
Есть также более сложные (иногда многомерные) типы объектов:
- мультиточка (станции метро с несколькими выходами), мультиполигон (Россия — это большая территория + Калининград и острова), мультилиния (нефтепроводы, имеющие несколько ниток), полигон с дыркой (Московская область без территории Москвы), поверхности (стена дома), твердые тела (дом).
Приведенные объекты могут быть как двумерные, так и трехмерными.
Для хранения векторных объектов используется тип данных SDO_GEOMETRY. Он является сложным (complex) объектным типом данных. Его структура приведена ниже:
Название поля | Тип данных | Описание |
SDO_GTYPE | NUMBER | Описывает тип геометрии (точка, полилиния, полигон) и количество измерений. |
SDO_SRID | NUMBER | Систему координат |
SDO_POINT | SDO_POINT_TYPE | Если пространственный объект точка, то содержит координаты точки |
SDO_ELEM_INFO | SDO_ELEM_INFO_ARRAY | Описывает то, как интерпретировать координаты в SDO_ORDINATES |
SDO_ORDINATES | SDO_ORDINATE_ARRAY | Содержит координаты объекта в соответствие со способ описания, заданном в предыдущем поле |
Поскольку SDO_GEOMETRY — это просто тип данных, то мы можем использовать его для создания таблицы. Допустим мы хотим хранить пространственные объекты вместе с их описанием и идентификатором. Тогда мы создадим вот такую таблицу:
CREATE TABLE t1 (
id NUMBER,
description VARCHAR2(50),
geom SDO_GEOMETRY
);
Примеры описания пространственных объектов
Вот пример точечного объекта:
INSERT INTO cola_t1 (id, description, geom)
VALUES( 90, ‘point_only’,
SDO_GEOMETRY( 2001, NULL, SDO_POINT_TYPE(12, 14, NULL), NULL, NULL));
- SDO_GTYPE = 2001. Двумерная точка (3001 — трехмерная точка).
- SDO_SRID = NULL. Локальная система координат.
- SDO_POINT = SDO_POINT_TYPE(12, 14, NULL). X=12, Y=14, Z=NULL
- SDO_ELEM_INFO и SDO_ORDINATES не используются, поскольку это точка.
Вот пример полилинии:
INSERT INTO t1 (id, description, geom)
VALUES (
4,
‘Line string’,
sdo_geometry (2002, null, null, sdo_elem_info_array (1,2,1),
sdo_ordinate_array (1,7, 11, 4, 12, 9, 6, 12))
);
- SDO_GTYPE = 2002. Двумерная полилиния (3002 — трехмерная полилиния).
- SDO_SRID = NULL. Локальная система координат.
- SDO_POINT = NULL. Объект не является точкой
- SDO_ELEM_INFO = (1,2,1). По порядку эти цифры означают: интерпретировать координаты, начиная с первой (1), трактовать как полилинию (2), вершины которой соединены прямыми линиями (1). Более детально можно посмотреть здесь.
- SDO_ORDINATES. Координаты вершин полилинии.
Вот пример полигона:
INSERT INTO t1 (id, description, geom)
VALUES (
11,
‘Polygon’,
sdo_geometry (2003, null, null, sdo_elem_info_array (1,1003,1),
sdo_ordinate_array (1,7, 11, 4, 12, 9, 6, 12, 1,7))
);
- SDO_GTYPE = 2003. Двумерный полигон (3003 — трехмерный полигон).
- SDO_SRID = NULL. Локальная система координат.
- SDO_POINT = NULL. Объект не является точкой
- SDO_ELEM_INFO = (1,1003,1). По порядку эти цифры означают: интерпретировать координаты, начиная с первой (1), трактовать как полигон (1003), вершины которого соединены прямыми линиями (1). Более детально можно посмотреть здесь.
- SDO_ORDINATES. Координаты вершин полигона. Обратите внимание, что первая и последняя точка совпадают.
- TABLE_NAME — название таблицы с пространственными данными
- COLUMN_NAME — это столбец с пространственными данными (пространственных столбцов может быть несколько).
- DIMINFO — описывает границы координат (X,Y,Z) и допуск
- SRID — идентификатор системы координат. Он будет рассмотрен дальше с этой статье.
Пример заполнения представления с метаданными:
INSERT INTO user_sdo_geom_metadata
VALUES (
‘t1′,
‘geom’,
SDO_DIM_ARRAY(
SDO_DIM_ELEMENT(‘Долгота’, -180, 180, 1), — допуск 1 метр
SDO_DIM_ELEMENT(‘Широта’, -90, 90, 1) — допуск 1 метр
),
8307 — SRID для системы координат WGS 84 ‘Долгота / Широта’ — используется в GPS
);
Пространственный индекс (R-Tree)
Для доступа к пространственным данным необходимо создавать R-Tree индекс. В отличие от обычных индексов пространственные индексы обязательны для корректной работы ПО. Создать пространственный индекс можно следующей командой:
CREATE INDEX t1_sidx ON t1(geom) INDEXTYPE is MDSYS.SPATIAL_INDEX;
Наличие индекса позволяет Oracle отвечать на пространственные запросы очень быстро, не выполняя дорогостоящий сплошной перебор.
На рисунке выше:
- 1-9 геометрии, хранящиеся в таблице
- a, b, c и d листовые узлы индекса R-tree. Они содержат координаты прямоугольника, который они описывают, а также ссылки на объекты, содержащиеся в этих прямоугольниках. Например, a содержит прямоугольник (а точнее MBR), охватывающий геометрии 1 и 2, b содержит прямоугольник, охватывающий геометрии 3 и 4, и т.д.
- A содержит прямоугольник, охватывающий a и b, B содержит прямоугольник, охватывающий c и d.
- Корневой узел хранит прямоугольник, охватывающий A и B.
Таким образом, если я захочу найти все объекты, соприкасающиеся с заданным прямоугольником X, то достаточно будет спуститься по иерархии дерева до узла d (получим кандидатов) и проверить условие для всех геометрий из узла d (получим результирующий набор).
Вот в упрощенном виде принцип работы R-Tree индекса. Более детальное и точное описание принципа работы пространственного индекса можно найти в документации.
Сопоставление терминов ГИС и терминов СУБД
Выше я все время говорил про таблицы, но это термины СУБД. В области ГИС используются другие термины. Ниже сопоставлении терминов:
Особенности геопространственных данных
Функции Oracle Spatial для геопространственных данных включают:
- схема - MDSYS (как в «многомерной системе» [1] ) - которая предписывает хранение, синтаксис и семантику поддерживаемых геометрическихтипов данных[2]
- система пространственной индексации
- операторы, функции и процедуры для выполнения запросов области интереса, запросов пространственного соединения и других операций пространственного анализа
- функции и процедуры для служебных программ и операций настройки
- векторное ускорение производительности для существенно более быстрого выполнения запросов и более эффективного использования ЦП, памяти и разделов [ необходима цитата ]
- поддержка параметрических кривых ( NURBS ) для математически точного представления кривых произвольной формы, которые могут быть точно воспроизведены для 2D и 3D данных
- топологиямодель данных для работы с данными об узлах , ребрах и гранях в топологии
- функция GeoRaster для хранения, индексации, запроса, анализа и доставки данных GeoRaster ( растровых изображений и данных с координатной сеткой и связанных с ними метаданных ) с виртуальными мозаиками, операциями растровой алгебры, обработкой изображений, Java API и мастером ETL на основе GDAL
- Трехмерные типы данных и операторы, включая триангулированные нерегулярные сети (TIN) , облака точек и наборы данных LiDAR с индексированием пространственного R-дерева, операторы SQL и функции анализа, а также метаданные для визуализации которое преобразует данные о местоположении и адресе в формальные географические координаты из адресов точек и диапазонов адресов и поддерживает обратное геокодирование
- механизм маршрутизации, который создает самые быстрые или самые короткие маршруты с указанием расстояний, времени, направлений и геометрии поворота на основе коммерческих и общедоступных данных уличной сети, а также ограничений и условий для расширенной маршрутизации, например маршрутизации для конкретного грузовика Совместимые с Open Geospatial Consortiumвеб-службы для геокодирования, маршрутизации, картографии, бизнес-справочника, каталога и транзакций с геопространственными объектами
- Компоненты пространственной визуализации для отображения данных на картах.
Заключение
Oracle Spatial предлагает обширный набор функций и операторов для анализа пространственных данных. Эти функции и операторы реализованы в ядре СУБД Oracle, используют пространственный индекс и могут эффективно распараллеливаться как на одном сервере, так и в кластере. Интеграция с языком SQL позволяет совмещать пространственный и атрибутивный анализ в одном операторе SELECR.
Особенности геопространственных данных
Функции Oracle Spatial для геопространственных данных включают:
- схема - MDSYS (как в «многомерной системе» [1] ) - которая предписывает хранение, синтаксис и семантику поддерживаемых геометрическихтипов данных[2]
- система пространственной индексации
- операторы, функции и процедуры для выполнения запросов области интереса, запросов пространственного соединения и других операций пространственного анализа
- функции и процедуры для служебных программ и операций настройки
- векторное ускорение производительности для существенно более быстрого выполнения запросов и более эффективного использования ЦП, памяти и разделов [ необходима цитата ]
- поддержка параметрических кривых ( NURBS ) для математически точного представления кривых произвольной формы, которые могут быть точно воспроизведены для 2D и 3D данных
- топологиямодель данных для работы с данными об узлах , ребрах и гранях в топологии
- функция GeoRaster для хранения, индексации, запроса, анализа и доставки данных GeoRaster ( растровых изображений и данных с координатной сеткой и связанных с ними метаданных ) с виртуальными мозаиками, операциями растровой алгебры, обработкой изображений, Java API и мастером ETL на основе GDAL
- Трехмерные типы данных и операторы, включая триангулированные нерегулярные сети (TIN) , облака точек и наборы данных LiDAR с индексированием пространственного R-дерева, операторы SQL и функции анализа, а также метаданные для визуализации которое преобразует данные о местоположении и адресе в формальные географические координаты из адресов точек и диапазонов адресов и поддерживает обратное геокодирование
- механизм маршрутизации, который создает самые быстрые или самые короткие маршруты с указанием расстояний, времени, направлений и геометрии поворота на основе коммерческих и общедоступных данных уличной сети, а также ограничений и условий для расширенной маршрутизации, например маршрутизации для конкретного грузовика Совместимые с Open Geospatial Consortiumвеб-службы для геокодирования, маршрутизации, картографии, бизнес-справочника, каталога и транзакций с геопространственными объектами
- Компоненты пространственной визуализации для отображения данных на картах.
Spatial database and geospatial technologies
Comprehensive spatial, mapping, and location analytics platform that addresses business-critical requirements across industries, including transportation, utilities, retail, energy, public sector, defense, construction, and more.
2D spatial data
Store and query 2D spatial geometries in Oracle Database, such as points of interest, streets, administrative boundaries. Perform queries based on proximity (how far is it?) and containment (is it inside a region?). Access hundreds of functions to filter data, measure distance relationships, and combine/transform geometries.
3D Point Cloud data and Light Detection and Ranging (LiDAR)
Manage spatial sensor data from laser scanning or photogrammetry, for use in enterprise 3D geographic information system (GIS) and Smart City applications. The 3D support is optimized for point cloud and CityGML workflows.
Raster data
Store and process geo-referenced raster data, such as orthophotos, satellite imagery, and gridded data for energy, natural resource management, or national security applications. Perform powerful raster analytics and on-the-fly image processing, with virtual mosaics and an easy-to-use loading tool supporting popular data formats.
Network data
Model road transportation, telco, utility, energy, and other networks and analyze this complex data for shortest path, nearest neighbor, within cost, and reachability.
Topology data
Manage topology data used by mapping and land management organizations with fine-grained feature editing and data integrity across maps and map layers for very large land parcel datasets with high consistency and accuracy.
Streaming point data
Track millions of moving objects against thousands of regions of interest, for logistics and IoT applications. Analyze locations of moving people for the purpose of contact tracing using a scalable, automatic API.
Oracle's spatial database is included in Oracle's converged database, allowing developers and analysts to get started easily with location intelligence analytics and mapping services. It enables Geographic Information System (GIS) professionals to successfully deploy advanced geospatial applications. Organizations can manage different types of geospatial data, perform hundreds of spatial analytic operations, and use interactive map visualization tools with the spatial features in Oracle Autonomous Database and Oracle Database.
Oracle’s location and spatial platform delivers enterprise scalability, security, and performance to power the most demanding applications in Oracle Cloud Infrastructure and on-premises.
Helping fight COVID-19 in Finland using Oracle Cloud (9:29)
Easily load and create spatial data, and visualize it.
See how location intelligence data helps build smarter businesses.
Quickly download and get started with Spatial Studio to explore geospatial data.
Заключение
Подведу итог. Oracle Spatial — это де-факто стандарт хранения пространственных данных в корпоративном мире. Его понимают все основное ГИС ПО. Он также прост в понимании, дает возможность работы как из ГИС-систем, так и из отчетных систем с помощью SQL.
Только Oracle Spatial позволяет использовать все преимущества, заложенные в СУБД Oracle, такие как репликация, отказоустойчивость, длинные транзакции, online-операции с индексами и т.д.
В следующей статье я расскажу, как анализировать данные, хранящиеся в Oracle Spatial.
В первой статье на тему Oracle Spatial я привел определение: "Oracle Spatial — это компонент базы данных, состоящий из типов данных, набора функций и процедур, а также внешних по отношению к базе данных веб-сервисов, которые позволяют эффективно хранить, быстро получать доступ и анализировать пространственные данные." Теперь я подчеркну, что Oracle Spatial — это не только способ хранить данные, но также и способ их анализировать.
Задача анализа становится все более востребованной, чем дальше система ГИС уходит от начала проекта. Если на первом этапе актуальной является проблема накопления данных (импорт, векторизация), то на более поздних этапах встает вопрос о быстром анализе данных и эффективной их публикации на внутренний или внешний веб-портал.
Если посмотреть на задачи анализа данных, то я бы их подразделил на 2 типа:
- требуется отображение на карте
- не требуется отображение на карте.
Такое подразделение позволяет отказаться в некоторых задачах от ГИС-среды как избыточной. Представьте себе задачу:
Все эти задачи, очевидно, не требуют графического представления на карте, но все они используют математический аппарат ГИС.
Функции агрегации
Последнее на чем бы я хотел остановиться — это функции агрегации, которые создают новый объект на основе множества поступающих объектов. Эти функции можно сравнить с обычными функциями агрегации Oracle AVG, SUM и т.д.
Вот список этих функций: SDO_AGGR_CENTROID, SDO_AGGR_CONCAT_LINES, SDO_AGGR_CONVEXHULL, SDO_AGGR_LRS_CONCAT, SDO_AGGR_MBR, SDO_AGGR_SET_UNION, SDO_AGGR_UNION. Я опять таки не буду приводить пример по каждой из них. Приведу пример для SDO_AGGR_MBR.
Функция агрегации SDO_AGGR_MBR
SELECT SDO_AGGR_MBR(shape) FROM cola_markets;
SDO_AGGR_MBR(C.SHAPE)(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SD
———————————————————————————
SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(1, 1, 10, 11))
Операторы
Операторы позволяют выявить топологические взаимоотношения между объектами. Общий вид использования оператора следующий:
ОПЕРАТОР (geometry1, geometry2, [param]) = ‘TRUE’
Операторы обычно используются во фразе WHERE. Далее я приведу список и примеры использования операторов.
SDO_FILTER(geometry1, geometry2, [param]) = ‘TRUE’
Самый простой пример, который можно представить — это отрисовка всех объектов, которые попадают в заданный прямоугольник (возникает, когда пользователь в ГИС системе смотрит на карту с определенным приближением). Если ГИС-система не знает о существовании пространственной СУБД, то она вытаскивает все объекты на сторону клиента и там осуществляет отсев объектов, не попадающих в видимый пользователю прямоугольник. Если же ГИС-система знает об Oracle Spatial, то она сразу запросит у СУБД нужные объекты:
SELECT c.mkt_id, c.name
FROM cola_markets c
WHERE SDO_FILTER(c.shape,
SDO_GEOMETRY(2003, NULL, NULL,
SDO_ELEM_INFO_ARRAY(1,1003,3),
SDO_ORDINATE_ARRAY(4,6, 8,8))
) = ‘TRUE’;
Этим запросом мы просим Oracle вернуть все объекты в cola_market, которые попадают в прямоугольник с вершинами 4,6 и 8,8.
SDO_FILTER — это очень быстрый оператор, который использует только индекс для ответа на запрос пользователя. Однако, этот запрос может вернуть лишние объекты, которые нужно отсеивать либо на стороне клиентского приложения, либо другими операторами.
SDO_RELATE(geometry1, geometry2, [param]) = ‘TRUE’
Если нам нужен абсолютно точный ответ запрос и дополнительная гибкость, то мы используем SDO_RELATE:
SELECT c.mkt_id, c.name
FROM cola_markets c
WHERE SDO_RELATE(c.shape,
SDO_GEOMETRY(2003, NULL, NULL,
SDO_ELEM_INFO_ARRAY(1,1003,3),
SDO_ORDINATE_ARRAY(4,6, 8,8)),
‘mask=touch+coveredby’
) = ‘TRUE’;
Это оператор подобно SDO_FILTER осуществляет быстрое отсеивание с использованием индекса, а затем для объектов-кандидатов производит точную проверку на соответствие заданному критерию.
Нужно остановиться на параметре MASK, который набирается из комбинации следующих ключевых слов: TOUCH, OVERLAPBDYDISJOINT, OVERLAPBDYINTERSECT, EQUAL, INSIDE, COVEREDBY, CONTAINS, COVERS, ANYINTERACT, ON. Ниже на рисунке показано, что означают эти ключевые слова:
Операторы, являющиеся сокращением для SDO_RELATE
Для SDO_RELATE есть также набор сокращений: SDO_ANYINTERACT, SDO_CONTAINS, SDO_COVEREDBY, SDO_COVERS, SDO_EQUAL, SDO_INSIDE, SDO_ON, SDO_OVERLAPBDYDISJOINT, SDO_OVERLAPBDYINTERSECT, SDO_OVERLAPS, SDO_TOUCH.
Ниже показан пример:
SELECT c.mkt_id, c.name
FROM cola_markets c
WHERE SDO_ANYINTERACT(c.shape,
SDO_GEOMETRY(2003, NULL, NULL,
SDO_ELEM_INFO_ARRAY(1,1003,3),
SDO_ORDINATE_ARRAY(4,6, 8,8))
) = ‘TRUE’;
В этом примере мы извлекаем все объекты из таблицы cola_market, которые хоть как-то взаимодействуют с прямоугольником с вершинами 4,6 и 8,8.
SDO_WITHIN_DISTANCE(geometry1, aGeom, params) = ‘TRUE’
Этот оператор позволяет найти все объекты, расстояние до которых не превышает заданного. Наиболее важным параметром будет distance. В следующем примере мы ищем все объекты в пределах заданного расстояния.
SELECT c.name FROM cola_markets c WHERE SDO_WITHIN_DISTANCE(c.shape,
SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1003,3),
SDO_ORDINATE_ARRAY(4,6, 8,8)),
‘distance=10 unit=KM’) = ‘TRUE’;
В этом примере ищутся все объекты на расстоянии 10 км от нашего прямоугольника.
SDO_NN(geometry1, geometry2, param [, number]) = ‘TRUE’ и SDO_NN_DISTANCE(number);
С помощью SDO_NN мы ищет некоторое количество объектов ближайших к заданному, а с помощью SDO_NN_DISTANCE выводим в результатах запроса само расстояние. Важным параметром является SDO_NUM_RES, указывающий на кол-во искомых объектов.
SELECT c.mkt_id, c.name, SDO_NN_DISTANCE(1) dist
FROM cola_markets c
WHERE SDO_NN(c.shape, sdo_geometry(2001, NULL,
sdo_point_type(10,7,NULL), NULL, NULL),
‘sdo_num_res=2′, 1) = ‘TRUE’ ORDER BY dist;
В приведенном пример мы ищем с помощью функции SDO_NN два объекта (sdo_num_res=2) из cola_markets ближайших к точке с координатами 10,7 (sdo_point_type(10,7,NULL)). Мы также указали последним параметром в SDO_NN число 1. С помощью этого числа мы можем сослаться на расстояние до найденного объекта в функции SDO_NN_DISTANCE (1). Мы также выполняем сортировку по расстоянию.
SDO_JOIN(table_name1, column_name1, table_name2, column_name2, params, preserve_join_order, table1_partition, table2_partition) RETURN SDO_ROWIDSET;
В приведенных ранее примерах мы брали некий объект и тестировали этот объект на взаимодействие с множеством объектов из таблицы. Это довольно распространенный пример. Но бывают более сложные случаи.
Такой подход имеет право на жизнь, но если его заменить на SDO_JOIN, то скорость можно увеличить до 100 раз! Вот пример решения этой задачи с помощью SDO_JOIN:
SELECT /*+ ordered */ c.rowid1, c.rowid2
FROM TABLE(
SDO_JOIN(‘FORESTS’, ‘SHAPE’, ‘HOUSES’, ‘SHAPE’,
‘mask=ANYINTERACT’)) c
Единственное неудобство — это то, что результатом будут адреса (rowid) найденных объектов, но это терпимо на фоне огромной скорости работы такого запроса.
Встроенные возможности Oracle Spatial для анализа данных
Oracle встроил пространственный анализ непосредственно в язык SQL. Это дает возможность программисту, знающему SQL выполнять пространственный анализ. Также это позволяет ГИС-системам, которым известно о существовании Oracle Spatial, передавать на сторону сервера часть обработки. Условно средства для анализа пространственных данных можно подразделить на следующие типы:
- операторы
- функции
- агрегационные функции
Сетевая модель данных
Сети Функция Data Model представляет собой модель свойства графа используется для моделирования и анализа физических и логических сетей , используемых в таких отраслях, как транспорт, логистику и коммунальные услуги. Его особенности включают в себя:
- Постоянное управление сетевым подключением в базе данных
- Модель данных для представления возможностей или объектов (смоделированных как узлы и связи ) в сети с PL / SQL API для управления сетевыми данными.
- Определяемые пользователем свойства ссылок и узлов, такие как затраты и ограничения, включая временные свойства.
- Связь реальных объектов с сетевыми элементами для упрощения разработки и обслуживания приложений.
- API Java для анализа сетевых путей в памяти, включая кратчайший путь, ближайших соседей, в пределах стоимости и достижимости, с разделенной загрузкой больших сетей в память.
Читайте также: