10
05/2009

Хранение гео-данных. OpenGIS

The English version of this post

Хранение гео-данных и подводные камниХранение гео-данных — одна из самых актуальных задач в области хранения данных. Будь то каталог автозаправок, база данных городов, система отслеживания пробок — везде требуется эффективная система хранения больших объемов географических данных.

За стандартизацию этой области на данный момент отвечает Open Geospatial Consortium (OGC) или сокращенно Open GIS, в который, если верить Википедии, входит более 370 организаций. В течение нескольких лет они дружно выработали аж 28 стандартов.

Какие преимущества дает этот стандарт:

  • Позволяет хранить геометрический/географический объект в виде одного кортежа и нативно строить реляционные связи между этими объектами и другими данными БД;
  • Позволяет строить индексы по геометрическим полям и выполнять выборки с их помощью;
  • Предоставляет набор функций для манипулирования и выявления отношений между объектами (включение, пересечение, расстояние, соприкасание и т.п.);

Все наиболее известные разработчики СУБД создали расширения, осуществляющие поддержку хранения гео-данных. Перечислю некоторые из них.

Oracle Spatial

Встроенное в корпоративную и стандартную редакции Oracle расширение Oracle Locator позволяет хранить основные типы данных: точки, кривые, области, а также включает все базовые функции сравнения и манипулирования географическими объектами.

Опция Oracle Spatial включает дополнительный функционал по трансформации координат, поддержке сетевой модели данных и дополнительные функции работы с геоданными.

Хорошо проработанные модули. Минус заключается только в платности самой СУБД.

MySQL расширение

MySQL содержит встроенные географические типы данных и функции по их анализу. В плане набора типа данных нареканий никаких, а вот функции по выявлению зависимостей между геометрическими объектами (contains, crosses, distance и т.п.) реализованы неполноценно. Они работают не с самими объектами, а с их MBR (Minimal Bounding Rectangles). Дословно с сайта:

Currently, MySQL does not implement these functions according to the specification. Those that are implemented return the same result as the corresponding MBR-based functions. This includes functions in the following list other than Distance() and Related().

These functions may be implemented in future releases with full support for spatial analysis, not just MBR-based support.

Это ограничение в принципе очень сильно сужает область применимости MySQL для хранения географических и геометрических данных и не позволяет использовать ее в более-менее крупных проектах.

PostGIS для PostgreSQL

Расширение PostGIS для PostgreSQL достаточно проработанно и полноценно поддерживает OpenGIS.

С учетом того, что сама БД PostgreSQL очень неплоха и бесплатна, PostGIS является оптимальным вариантом в соотношении цена/качество.

UPD: В следующем посте я покажу примеры использования этих расширений на практике.

Ссылки по теме:

Презентация про PostGIS

Гео-расширение DB2 Geodetic Extender

Документация по Oracle Spatial

MSSQL Server Spatial Data

8 Comments_5

Хотелось бы увидеть примеры того, что позволяет сделать OpenGIS, а то читать кучу доков как-то не очень хочется.
Ок, в следующем посте покажу примеры использования. Это реально упрощает жизнь при работе с такого типа данными.
Андрей П 11 мая 2009 в 11:36
Oracle XE - бесплатная версия СУБД Oracle, но функционал Locator там есть.

Да, она все же урезанная: 4 Гб данных, 1 Гб ОП – для геоданных это особенно существенно.
Андрей П 11 мая 2009 в 20:47
Да, но может кому то и этого хватит.

Standard Edition столит немного больше $1000, там нет этих ограничений.

А 1000 баксов это не так уж и много, если использовать для бизнеса.

В том-то и вопрос. Здесь обычно учитывается 3 фактора:

1. Разработчик(и) знает одну из СУБД намного лучше и строит на ней проект. С учетом того, что гео-функционал у Oracle Spatial и PostGIS достаточно обширен, фактор достаточно важный.

2. Формируются требования к функционалу проекта, выявляются специфичные и проверяется их наличие в предварительно выбранной СУБД.

3. Смотрится платность/бесплатность СУБД и, как правило, в последнюю очередь. Данный фактор не самый важный, согласен. При условии, что СУБД имеет какие-то важные «примочки», которых нет у других, выбор упадет на нее, пусть она и платная.

Но если явных преимуществ у СУБД нет, то нужно еще раз подумать, стоит ли тратить «денюжку».

Андрей П 12 мая 2009 в 01:52
Ну честно говоря у меня большие сомнения, что PostGIS по функционалу сравним со Spatial.

Но это уже кто как сравнивает

Александр Р 18 мая 2009 в 10:11
А еще бесплатную СУБД могут купить (как например MySQL) и ее будущее развитие станет туманным... :)
Оставить comment
Показать другие цифры

В тексте комментария можно использовать теги <b><i><u><s><sup><code><pre>.
Адреса сайтов автоматически становятся ссылками.

_