En regardant le mouvement NoSQL croissant et en considérant que les bases de données comme MongoDB offrent une nouvelle perspective dans le stockage de données flexible pour SIG. Quelle est la meilleure façon de stocker des lignes et des polygones dans des documents JSON pour tirer parti des index 2D et des fonctions spatiales?
24
Réponses:
GeoJSON voici les SPECs .
Voici un exemple de ligne et de polygone:
la source
Une chose à noter est que la prise en charge de MongoDB pour les types de données spatiales est horriblement mauvaise pour toute recherche spatiale sérieuse, et cela s'applique à tous les niveaux avec NoSQL la dernière fois que j'ai vérifié. Je n'aime pas beaucoup GeoCouch un peu moins, mais il reste encore du chemin à parcourir.
GeoJSON est un format fantastique, mais pour profiter des index spatiaux limités (POINT-ONLY) dans Mongo, vous auriez besoin d'une collection indexée spatialement ne contenant rien d'autre qu'un enregistrement pour chacun des points du polygone avec une valeur supplémentaire pour l'ID d'enregistrement de votre enregistrement spatial vivant dans une autre collection, puis utilisez une requête de zone de délimitation pour obtenir les ID d'enregistrement de l'un et sélectionner dans l'autre, en émulant efficacement une jointure.
Vous pouvez aller hacky et juste faire les coins de la boîte englobante comme points pour vos enregistrements, mais les recherches dans la boîte englobante peuvent échouer et dans l'ensemble cela force certains modèles de conception assez inefficaces et pousse de manière inappropriée toutes sortes de responsabilités pour le développeur.
En tant qu'implémentation de référence, vous pouvez vous référer à ce code qui a été présenté au Esri Developer Summit cette année.
Je ne suis pas du tout satisfait du support spatial sur les différentes bases de données NoSQL. Ils ne vont que suffisamment loin pour la recherche de nuages de points stupides, ce qui est logique étant donné que la plupart des applications qui utilisent cela ne font que déposer des punaises sur une carte Google sur un navigateur quelque part. PostGIS sera toujours le meilleur cheval de bataille open source pour gérer les informations spatiales dans un avenir prévisible.
la source
Ce n'est tout simplement pas vrai,
"Pour tirer parti des index spatiaux dans Mongo, vous auriez besoin d'une collection indexée spatialement ne contenant qu'un enregistrement pour chacun des points du polygone, avec une valeur supplémentaire pour l'ID d'enregistrement de votre enregistrement spatial vivant dans une autre collection, puis utilisez un "Boîte de délimitation pour obtenir les ID d'enregistrement d'une [collection] et sélectionner [les données d'enregistrement] de l'autre [collection], en émulant efficacement une jointure".
J'ai des données de points USGS stockées dans une seule collection Mongo avec des enregistrements qui ressemblent à ceci:
Je suis capable de faire des requêtes de boîte englobante sur ces données qui retournent très bien l'enregistrement entier (sans avoir besoin d'une autre collection).
Question:
Réponse:
Mongo offre également la possibilité d'effectuer des recherches de voisins les plus proches, ainsi que des recherches de points dans les polygones. Ceci est bien documenté sur mongodb.org
la source