Глядя на растущее движение NoSQL и учитывая, что базы данных, такие как MongoDB, предлагает новую перспективу в гибком хранилище данных для ГИС. Как лучше всего хранить линии и многоугольники в документах JSON, чтобы использовать преимущества двумерных индексов и пространственных функций?
24
Ответы:
GeoJSON вот спецы .
Вот пример линии и многоугольника:
источник
Следует отметить, что поддержка MongoDB пространственных типов данных ужасно плоха для любого серьезного пространственного поиска, и это применимо ко всем аспектам с NoSQL, когда я проверял последний раз. Я немного не люблю GeoCouch, но у него еще есть путь.
GeoJSON - фантастический формат, но чтобы воспользоваться ограниченными пространственными индексами (POINT-ONLY) в Mongo, вам понадобится пространственно проиндексированная коллекция, содержащая только запись для каждой из точек многоугольника с дополнительным значением для идентификатора записи вашего Пространственная запись, находящаяся в другой коллекции, затем используйте ограничивающий прямоугольник для получения идентификаторов записей из одного и выбора из другого, эффективно эмулируя объединение.
Вы можете пойти не так, как надо, и просто сделать углы ограничивающего прямоугольника точками для своих записей, но тогда поиск ограничивающего прямоугольника может потерпеть неудачу, и в целом это вызовет некоторые довольно неэффективные шаблоны проектирования и ненадлежащим образом возлагает все виды ответственности на разработчика.
В качестве эталонной реализации вы можете обратиться к этому коду, который был представлен на Саммите разработчиков Esri в этом году.
Я совсем не был доволен пространственной поддержкой различных баз данных NoSQL. Они заходят достаточно далеко для поиска в тупых облаках, что имеет смысл, учитывая, что большинство приложений, использующих это, просто сбрасывают метки на карте Google в браузере. PostGIS по-прежнему будет лучшей рабочей лошадкой с открытым исходным кодом для управления пространственной информацией в обозримом будущем.
источник
Это просто неправда,
«Чтобы воспользоваться пространственными индексами в Mongo, вам понадобится пространственно проиндексированная коллекция, содержащая только запись для каждой точки многоугольника, с дополнительным значением для идентификатора записи вашей пространственной записи, находящейся в другой коллекции, а затем используйте ограничивающий запрос, чтобы получить идентификаторы записей из одной [коллекции] и выбрать [записи данных] из другой [коллекции], эффективно эмулируя объединение. "
У меня есть данные точек USGS, хранящиеся в одной коллекции Mongo с записями, которые выглядят так:
Я могу выполнять ограничивающие запросы к этим данным, которые возвращают всю запись (без необходимости в другой коллекции).
Запрос:
Отклик:
Mongo также предоставляет возможность выполнять поиск ближайших соседей, а также указывать в поисках полигонов. Это хорошо задокументировано на mongodb.org
источник