Мне было интересно узнать о разнице в методологии хранения пространственных данных, используемой покрытиями, шейп-файлами и базами геоданных в ArcGIS. Первоначальным форматом был охват, за которым следовали Shape Files и теперь базы геоданных. Так что же улучшилось в этих новых форматах шейп-файлов и баз геоданных?
Было бы здорово, если бы кто-то мог объяснить это примерами.
arcgis-desktop
shapefile
esri-geodatabase
esri-coverage-format
Абхишек Потнис
источник
источник
Ответы:
Это такой замечательный вопрос. Покрытия, шейп-файлы и базы геоданных - это принципиально разные хранилища геопространственных данных с точки зрения реализации, а также с философской точки зрения. Я постараюсь подвести итог, не вдаваясь слишком глубоко в это.
1. Покрытия:
Покрытия - это интересные геопространственные структуры данных . Они концентрируются на хранении топологии. Таким образом, вы увидите, что акцент делается в первую очередь на сохранении геометрических элементов, то есть узлов, ребер, составляющих все геометрии. Затем вы увидите отдельный набор таблиц, которые связывают эти геометрии с атрибутами (и, следовательно, они «становятся» объектами).
«Чистый» покрытие гарантирует определенные правила, например, что есть узлы на каждом узле пересечения, вы не будете иметь два (или более) узлы друг на друга (или даже в пределах нечеткого расстояния допуска), что не существует два ребра друг на друге и т. д. Они также имеют чувство направления (от -> до) и могут различаться между тем, что находится слева и справа.
Покрытия работают очень хорошо для редактирования, которое требует понимания топологических отношений (представьте, что редактирование границы участка). Кроме того, покрытия сжимаются очень хорошо, так как они удаляют геометрическую избыточность по конструкции. Фактически, вы увидите, что в настоящее время современные форматы, такие как TopoJSON, начали использовать те же методы, которые мы изучили из покрытий несколько десятилетий назад.
С покрытиями может быть немного сложнее работать, когда вы имеете дело с трехмерными данными (например, моделирование моста, который имеет верхнюю сторону и нижнюю сторону справа внизу), потому что алгоритмы, которые мы использовали для работы с ними, изначально были предназначены для 2D плоского графа математика.
Так почему же мы отошли от этого? Это займет более длинный ответ, но, возможно, нам следует немного подробнее объяснить, что сделало шейп-файлы ESRI в первую очередь популярными.
2. Шейп-файлы ESRI:
Вдоль Шейп-файла. Вероятно, наиболее важной характеристикой, которую он имел, было то, что это была открытая спецификация, которая была (сравнительно) проста в реализации. Атрибуты использовали файлы DBF , поэтому уже было много библиотек, которые реализовали большую часть спецификации. Не было понятия «чистый», что означало, что каждая отдельная геометрия должна была заботиться только о представлении себя, не принимая во внимание геометрию вокруг них или то, что они пересекались. Это означало, что нам не нужно было выполнять сложные математические вычисления, чтобы убедиться, что шейп-файл был правильным (в отличие от аналога покрытия).
Есть несколько геометрий, которые пересекаются друг с другом? Конечно, почему нет. Две точки друг на друге? Будь моим гостем.
Иногда (возможно) «лучший» формат - это не тот, который побеждает, а тот, который принимается. Если формат легко реализовать, у него больше шансов быть принятым, чем у сложного. Это был Шейп-файл.
Внезапно у вас появилось несколько библиотек (открытых и проприетарных) и поставщиков программного обеспечения, которые его поддерживали. Так что все было отлично.
Тогда возникает очевидный вопрос - почему базы геоданных?
3. Базы геоданных:
Я считаю, что базы геоданных являются одним из самых неправильно понимаемых хранилищ геопространственных данных. Люди обычно считают их просто «геопространственным форматом». Пару лет назад кто-то спросил: «Что такое базы геоданных ESRI?» , Вместо того, чтобы повторять мой ответ, я приглашаю вас сначала прочитать его. Я подожду :)
Теперь, когда вы прочитали этот ответ и знаете, что такое база геоданных, я могу немного подробнее рассказать об этом ответе. В то время было много исследований по оптимизации SQL и написанию оптимизаторов запросов, которые использовали индексы, хранилища столбцов и т. Д. (Все еще есть). Создав базу геоданных поверх хранилища данных SQL, мы можем использовать все эти исследования бесплатно. Нам нужно только сконцентрироваться на геопространственных понятиях, и по мере улучшения хранилищ данных SQL база геоданных тоже улучшается бесплатно . Не плохое предложение, а?
В настоящее время существует несколько спецификаций для геопространственных данных. Жюри все еще там на том, что собирается заменить эти технологии (если что-нибудь). Тем не менее, если вам интересна эта тема, я рекомендую прочитать ответ на вопрос, заданный здесь в GIS.SE несколько лет назад: «Есть ли попытки заменить файл формы»
Надеюсь, это поможет!
источник
Большую часть информации можно найти в справке Esri и в поиске, поэтому я только что собрал несколько полезных текстов.
Как хранятся покрытия? Поскольку это проприетарный формат, вы не найдете никаких технических спецификаций о том, как реализованы алгоритмы (если только @Vince не проливает свет).
Шейп-файлы появились позже и были реализованы как стандарт, обеспечивающий определенный уровень взаимодействия. Техническое описание шейп-файла ESRI содержит полное описание.
Базы геоданных были введены позже. Сначала появились персональные базы геоданных (MS Access), затем файловые базы геоданных (в двоичном зашифрованном формате) и корпоративные (или ArcSDE) базы геоданных, в которых использовались технологии ArcSDE и СУБД. Вы можете узнать больше о базах геоданных здесь: Типы баз геоданных и Архитектура базы геоданных .
Хорошее чтение на GIS.SE: использовать ли файловую базу геоданных (* .gdb), персональную базу геоданных (* .mdb) или шейп-файлы?
Что касается производительности, было выполнено много тестов, и файловые базы геоданных показали, что они являются самыми быстрыми с точки зрения чтения / записи информации. Персональные базы геоданных и шейп-файлы намного медленнее, и, вероятно, единственная причина их использования - поддержка старых систем, которые были построены с учетом некоторой бизнес-логики MS Access или чтения / преобразования шейп-файлов.
При настройке СУБД база геоданных на основе ArcSDE часто работает почти так же хорошо, как файловая база геоданных, но все зависит от типа хранимых данных, сетей и оборудования. Для получения дополнительной информации о тестах см. Ресурсы по стратегиям проектирования систем Esri (и здесь ).
источник
Основное различие между этими форматами заключается в способе, которым функции относятся к геометрии. В период расцвета покрытий языком кодирования был FORTRAN, что означало фиксированный размер буфера в ОБЩИХ блоках. Наиболее ограничивающим из них было 500 вершин на примитив строки («дуга»). Это ограничение ввело понятие «псевдоузлы» (места, где дуги соединяются только с одной другой дугой) и усложнило многие другие операции доступа к данным.
Модель покрытия использовала «список дуг многоугольников» (PAL) для описания многоугольников, для чего требовался алгоритм затенения многоугольников, который считывал один файл для получения списка дуг, затем считывал сами дуги для получения количества вершин, а затем выделял достаточно ОЗУ для сохраните все вершины, затем вернитесь, чтобы снова прочитать дуги, на этот раз скопируйте вершины в прямом или обратном порядке, чтобы собрать полный многоугольник. Только после двух посещений файла ARC можно было бы описать многоугольник адекватным образом, и тогда потребуется доступ ко многим из тех же дуг (в противоположном направлении), чтобы заштриховать соседей многоугольника.
Для сравнения, шейп-файл и различные форматы базы геоданных хранят полную геометрию как один объект (с различными подробностями реализации того, как физически реализован объект). Это имеет недостатки при попытке редактировать общие границы, но эта операция значительно реже, чем заливка полигонов.
Модель хранения "всей формы" является ключевым отличием между форматом покрытия и новыми, и это различие настолько фундаментально, что трудно увидеть реальную разницу между шейп-файлом и различными форматами базы геоданных. Фактически, формат шейп-файла использовался для доступа к геометриям FGDB через API FGDB, хотя FGDB не использует этот точный формат, просто потому, что это было проще, чем введение новой вершинной компоновки.
источник
Еще одно различие между форматами заключается в том, что база геоданных может моделировать отношения между классами пространственных объектов . Как отметил Раги,
Но эта осведомленность существует только в пределах одного покрытия - если вы хотите смоделировать отношения между 2 или более покрытиями, вы несете ответственность за написание кода, который проверяет любые «незаконные» топологические отношения.
Например, если полигоны участков не могут иметь пропусков, а границы участков должны точно совпадать с дорогами, с покрытиями или шейп-файлами, вы должны убедиться, что это так, и вручную исправить все ошибки, если эти правила не соблюдаются.
База геоданных может дополнительно поддерживать объект Topology , который позволяет вам определять допустимые топологические правила для ваших данных. Важно отметить, что эти правила могут встречаться как внутри, так и между классами объектов в вашей базе геоданных.
Инструменты редактирования топологии в ArcMap помогут вам найти топологические нарушения , а в некоторых случаях исправить их автоматически .
До введения топологии базы геоданных («старые добрые времена») было обычным делом писать длинные и сложные сценарии AML для выявления топологических нарушений, а затем редактировать покрытия вручную в ArcEdit (не так уж и весело).
источник