Observando o crescente movimento NoSQL e considerando que bancos de dados como o MongoDB oferecem uma nova perspectiva em armazenamento de dados flexível para GIS. Qual é a melhor maneira de armazenar linhas e polígonos em documentos JSON para aproveitar os índices 2D e as funções espaciais?
24
Respostas:
GeoJSON aqui estão os SPECs .
Aqui está um exemplo de uma linha e um polígono:
fonte
Uma coisa a observar é que o suporte do MongoDB para tipos de dados espaciais é terrivelmente ruim para qualquer pesquisa espacial séria, e isso se aplica a todos os aspectos do NoSQL na última vez que verifiquei. Não gosto muito do GeoCouch, mas ele ainda tem um caminho a percorrer.
GeoJSON é um formato fantástico, mas para tirar proveito dos índices espaciais limitados (POINT-ONLY) no Mongo, você precisaria de uma coleção indexada espacialmente contendo apenas um registro para cada um dos pontos do polígono com um valor adicional para o ID do registro do seu registro espacial vivendo em outra coleção, use uma consulta de caixa delimitadora para obter IDs de registro de um e selecionar do outro, emulando efetivamente uma associação.
Você pode ficar pirateado e apenas fazer os cantos da caixa delimitadora como pontos para seus registros, mas as pesquisas da caixa delimitadora podem falhar e tudo isso força alguns padrões de design bastante ineficientes e atribui inadequadamente todos os tipos de responsabilidades ao desenvolvedor.
Como uma implementação de referência, você pode consultar este código que foi apresentado na Esri Developer Summit este ano.
Não fiquei nada satisfeito com o suporte espacial nos vários bancos de dados NoSQL. Eles só vão longe o suficiente para pesquisar na nuvem de pontos, o que faz sentido, considerando que a maioria dos aplicativos que usam isso está apenas inserindo pinos no mapa do Google em um navegador em algum lugar. O PostGIS ainda será o melhor cavalo de batalha de código aberto para gerenciar informações espaciais no futuro próximo.
fonte
Isto simplesmente não é verdade,
"para tirar proveito dos índices espaciais no Mongo, você precisaria de uma coleção espacialmente indexada que não contenha nada além de um registro para cada um dos pontos do polígono, com um valor adicional para o ID do registro espacial do seu registro espacial vivendo em outra coleção e use um consulta de caixa delimitadora para obter IDs de registro de uma [coleção] e selecionar [dados do registro] da outra [coleção], emulando efetivamente uma associação ".
Eu tenho dados de ponto USGS armazenados em uma única coleção Mongo com registros parecidos com este:
Eu sou capaz de fazer consultas de caixa delimitadora nesses dados que retornam todo o registro (sem a necessidade de outra coleção).
Inquerir:
Resposta:
O Mongo também oferece a capacidade de fazer pesquisas de vizinhos mais próximos, bem como apontar pesquisas de polígonos. Isso está bem documentado em mongodb.org
fonte