(Когда) я должен использовать базу данных с поддержкой ГИС?

22

Я давний программист, новичок в ГИС. Я пытаюсь понять аспекты базы данных ГИС, и я понимаю, что есть некоторые базы данных, которые специализируются для использования ГИС. В основном я пытаюсь понять, использовать ли такую ​​базу данных или придерживаться чрезвычайно популярного, хорошо известного, широко поддерживаемого (и бесплатного) MySql.

Тип приложений, которые я должен кодировать, может быть таким:

  • управление автопарком (наземные или морские транспортные средства)
  • отслеживание сотрудников
  • инвентарный контроль (при детализации физического положения с точностью до метра или около того)
  • эээ, вот и все, на самом деле

Я обычно ожидаю, что буду отслеживать не более 1 сотни (максимум, возможно, несколько тысяч) предметов. Иногда элементы могут быть расположены в том же (большом) здании, серии зданий, городе, стране или по всему миру, в зависимости от применения.

Иногда я буду визуально представлять их либо на индивидуальном плане здания, либо, что более вероятно, в Google Планета Земля и т. П. (Подробнее об этом в другом вопросе).

Мне кажется, что я так же хорошо справляюсь с MySql и добавляю столбцы для lat / long или других позиционных данных, но это может быть только потому, что я знаю MySql.

Есть ли какая-то причина, почему я должен смотреть на более специализированную базу данных?

Mawg
источник

Ответы:

13

Настоящее преимущество пространственных баз данных (PostGIS, пространственных расширений MySQL или чего-либо еще) заключается в том, что вы можете выполнять пространственные операции с пространственными данными. Если вы просто сохраняете координаты точки, то вы не очень выигрываете от пространственного (просто используйте два числовых столбца). Если вы сохраняете комбинации координат точек (где находятся клиенты) и координат линий (куда отправляются грузовики) и полигонов (регионы продаж), а затем выполняете запросы, которые связывают эти различные фрагменты информации (сколько клиентов в продажах зона, сколько грузовиков проехало менее 2 км от клиента сегодня, но не осуществили доставку или вывоз), вы можете получить много.

Как указывает iant, PostGIS, безусловно, стоит посмотреть на серверное приложение. SpatiaLite - это пространственное расширение SQLite, которое может лучше подходить для настольного / встроенного / автономного мобильного приложения, предлагая довольно похожие функции SQL [ Раскрытие информации: я работаю над SpatiaLite ], отмечая, что ничто не мешает вам использовать PostGIS в настольное приложение.

BradHards
источник
+1 и спасибо. Просто любопытно, почему он был основан на Sqlite, а не на MySql ...
Mawg
1
Я думаю, что это просто разные цели дизайна (встроенные, без конфигурации и т. Д.).
BradHards
+1 это было то, что я думал (я тоже из встроенного фона). Спасибо за информацию. Я ожидаю, что в конечном итоге у меня появятся браузерные приложения (большинство из нас, даже если бы мы этого не хотели), поэтому «облегченный» не так уж и необходим. Просто бегло, что за приложения сейчас, где d / b находится во встроенной системе / устройстве? (извините, все еще учусь)
Mawg
1
Внедрение - это большая область, но автономная мобильная связь, похоже, становится новой областью.
BradHards
2
@Mawg Большинство современных телефонов и браузеров используют sqlite в качестве хранилища данных. Это действительно один файл c, а API очень прост и работает в процессе. Сравните это с MySQL, для которой требуется несколько запущенных процессов и архитектура клиент / сервер. Два совершенно разных варианта использования
Ragi Yaser Burhum
8

Вам, безусловно, следует учитывать чрезвычайно популярный, хорошо зарекомендовавший себя, широко поддерживаемый (и бесплатный) PostGIS . Он будет делать все, что может делать MySQL, и обрабатывать пространственные местоположения как объекты первого класса. Таким образом, вы можете выполнять выборки на основе точек в ограничительной рамке (или другом многоугольнике) без необходимости записывать все сравнения и т. Д.

Как только вы начинаете задавать вопросы, например, какие объекты находятся в какой стране (или здании), PostGIS действительно вступает в свои права, и если вы решите, что вам нужно отобразить ваши объекты, тогда все популярные инструменты с открытым исходным кодом будут общаться с PostGIS из коробка.

Ян Тертон
источник
+1 и большое спасибо. Я ухожу, чтобы разобраться в этом сейчас. С точки зрения программистов, я хочу видеть, что он хорошо общается с PHP, если я использую веб-интерфейс, и если я использую настольное приложение Widnwos, то я использую компоненты доступа к базе данных AnyDac для Delphi, поэтому я напишу в службу поддержки AnyDac. Еще раз спасибо!
Mawg
1
To Mawg: Мне все еще нужно увидеть какие-либо сторонние библиотеки базы данных delphi для поддержки любых функций ГИС в postgis, db2, spatiallite, sql server и т. Д. Похоже, это то, что вы должны сделать самостоятельно.
Уффе Кусгаард
+1 @UffeKousgaard Я только нашел это в 295 $ для самого дешевого cartovcl.com
Mawg
1
Cartovcl (которым я пользуюсь почти 10 лет) - это простой файл GIS SDK со встроенной функциональностью ГИС. Это не тонкий API поверх удаленной базы данных с пространственной поддержкой.
Уффе Кусгаард
1
Исторический документ :-) Но TatukGIS, вероятно, является одним из наиболее полных комплексных ГИС SDK (но также и немного дорогим). Но он находится в той же лиге, что и cartovcl, то есть встроенная функция gis не является API поверх удаленной базы данных.
Уффе Кусгаард
2

Чтобы добавить к ответам и повторить некоторые пункты, можно использовать базу данных с пространственной поддержкой, если у вас есть запросы, которые относятся к пространственным отношениям данных, некоторые из которых следующие:

  1. какие точки находятся в пределах x километров от моих достопримечательностей
  2. какие точки ближе
  3. как далеко точка находится от другой точки
  4. какие точки х километров в подъездной дороге

Если такие запросы, относящиеся к WHERE, являются важной особенностью для приложения, то обычно настоятельно рекомендуется использовать пространственную базу данных.

Конечно, для некоторых из этих запросов можно прибегнуть к логике кодирования / приложения, например, используя формулу расстояния для 1, но не нужно заново изобретать колесо.

arcsum
источник