Law and Oracle
- 1 year ago
- 0
- 0
Oracle Spatial and Graph , ранее Oracle Spatial (от латинского spatial — пространственный), образует бесплатный компонент Oracle Database . Часть этого пакета под названием Oracle Locator доступна в стандартном объёме поставки банка данных. Она не поддерживает такие операции, как объединения и буферы, пересечения, вычисления площади и длины. Исключена также поддержка более продвинутых функций, таких, как системы линейных функций, пространственный анализ, геокодирование и обработка данных растрового формата.
Пространственные функции в Oracle Spatial and Graph поддерживают пользователей в широком спектре приложений, например, при создании геоинформационных систем или привязанного к местности е-бизнеса .
Существуют три основных компоненты системы.
Речь идет об одномерных, двумерных, трехмерных или четырехмерных (включая изменения со временем) объектах, имеющих определенную форму. Например, это географические объекты, данные из САПР и т. п.
Средство для моделирования и анализа физических и логических сетей, используемых в промышленности, таких как транспортные. Сюда же относится поиск быстрейшего или кратчайшего пути в графе (дорожной сети). Oracle Spatial может, поэтому, использоваться при разработке программного обеспечения для навигаторов и маршрутизаторов.
Эта функция поддерживает стандарт RDF , предложенный World Wide Web Консорциумом (W3C).
Два основных формата представления пространственных данных — это растровый и векторный. В растровом виде представлены, например результаты аэрофотосъемки или космические снимки.
Для векторных данных Oracle имеет нативный (собственный, встроенный) тип данных "SDO_GEOMETRY". Т. е., вы можете создать таблицу со следующей структурой:
CREATE TABLE cities ( city_name VARCHAR2(30), population NUMBER(9), shape SDO_GEOMETRY);
Тогда в первых двух колонках будет храниться название и население города, а в третьей — геометрия его расположения на поверхности земли.
Oracle Spatial предоставляет множество встроенных процедур для выполнения операций над пространственными данными. Допустим, нам надо найти все города, лежащие не далее чем 250 км от Денвера. Для этого мы можем воспользоваться функцией SDO_WITHIN_DISTANCE(geom1, geom2, dist):
select p.city_name from cities p where SDO_WITHIN_DISTANCE(p.shape, (select shape from cities where city_name = 'Denver'), 'distance=250 unit=km' ) = 'TRUE';
Группа процедур предназначена для проверки топологических отношений между пространственными объектами. Например:
SDO_CONTAINS(geom1, geom2) - Объект 1 содержит объект 2 внутри себя. SDO_OVERLAPS(geom1, geom2) - Объекты 1 и 2 пересекаются (имеют общий участок). SDO_TOUCH(geom1, geom2) - Объекты 1 и 2 соприкасаются (граничат). SDO_EQUAL(geom1, geom2) - Объекты 1 и 2 равны (это один и тот же участок).
Oracle документация See: