Alternativas aos Shapefiles como tipos de conjuntos de dados de plataforma aberta e código-fonte [fechados]

20

Estou trabalhando em um software que é muito orientado a ESRI, mas uma versão futura provavelmente não estará usando o software ESRI. Ele usa Shapefiles e Geodatabases. Estou planejando levar todos os meus dados para o Shapefiles em antecipação a versões futuras do software que provavelmente estarão no Android e em outros dispositivos móveis. Parece que os Shapefiles são o tipo de dados mais comum para recursos no mundo GIS de código aberto, mas quais são os outros e quais benefícios eles trazem? Eu estou familiarizado com GeoJSON e KML, mas tenho certeza que existem outros.

Gostaria de conhecer todas as opções, mas estou particularmente interessado nos tipos de conjuntos de dados mais adequados para armazenamento em dispositivos móveis (os dados devem estar acessíveis sem uma conexão à Internet).

Curtidor
fonte
1
Essa pergunta de 2011 foi feita antes da existência do GeoPackage e as respostas naturalmente não incluem essa alternativa.
User30184
2
O banco de dados geográfico do arquivo Esri possui um tamanho máximo de campo char que rivalizaria com o conteúdo de texto da maioria das bibliotecas pequenas. O banco de dados pessoais do Esri também suporta campos de texto muito longos. Ambos podem ser acessados ​​via QGIS e, claro, Esri ArcGIS, mas o suporte a esses tipos de dados é limitado fora desses pacotes. Porém, tenha cuidado com a versão, eu tentaria criar a versão 9.3, pois a maioria dos softwares da Esri que você provavelmente encontrará mais de 10 e as APIs de geodatabase para QGIS devem oferecer suporte a esta versão. GeoJSON e KML também podem suportar grandes campos de texto, mas não são tão legíveis universalmente.
22617 Michael Stimson
1
Umm, 9.3 não é um bom plano para compatibilidade de geodatabase de arquivos - A API do FGDB não suporta .gdb no estilo 9.x.
Vince
1
Os shapefiles do @ElioDiaz ainda existem, apesar de suas limitações, pois são a mídia de transferência de recursos mais universal - quase todo pacote GIS abre ou pode importar o shapefile Esri. O formato é um padrão aberto para que qualquer pessoa possa ler e implementar à sua maneira. Sem dúvida, existem formatos superiores de recursos GIS, mas eles não são tão universalmente adotados ... esse tópico foi discutido várias vezes no GIS.SE. Por mais que desejássemos, os arquivos de forma provavelmente serão o menor denominador comum para recursos por algum tempo, portanto, apenas precisamos sorrir e suportar.
Michael Stimson

Respostas:

18

Como o @ user890 diz, isso depende muito de como os dados serão usados. Principalmente, existem duas maneiras de acessar os dados:

  1. Ao carregar tudo na memória de uma só vez e acessar / consultar os dados na memória.
  2. Ao consultar recursos específicos, caixas delimitadoras etc.

Formatos como GeoJSON e KML são mais adequados para casos em que você deseja carregar tudo de uma só vez. Os benefícios são que os dados podem ser estruturados de maneira mais adequada para o seu aplicativo. As desvantagens: tamanhos de arquivo maiores (uma vez que são baseados em texto) e a incapacidade de fazer consultas eficientes diretamente do arquivo.

O SQLite / Spatialite é melhor para a consulta (SQL), mas é mais difícil estruturar os dados - você precisa achatar tudo nas tabelas do banco de dados e depois fazer JOINs (o que pode ser caro) ao fazer a consulta.

Não existe realmente um formato de arquivo perfeito que cubra tudo (mas, novamente, os shapefiles estão longe, longe de serem perfeitos). Uma alternativa a considerar é a rolagem do seu próprio formato específico de aplicativo, mas isso só funciona se você não precisar compartilhar os dados com o mundo externo.

Igor Brejc
fonte
14

Eu acho que a lista OGR Vector Format (link atualizado) identifica quase todos os formatos de código aberto que eu já ouvi falar, e muitos mais. Cada um desses formatos tem suas próprias vantagens / desvantagens, por isso é difícil dizer qual é o 'melhor'. Para aplicativos móveis, imagino que o tamanho do arquivo seja um dos fatores decisivos mais importantes.

Para aplicativos móveis, eu acho que o formato sqlite / spatialite seria o formato lógico para começar. Eu sei que o Android fornece suporte nativo para sqlite. Portanto, supondo que você possa carregar as extensões espacial, você terá um GIS muito poderoso disponível.

Dependendo de como você é aventureiro, parece que construir gdal para android não é impossível. Você poderia então ter muitos outros formatos à sua disposição. Tenho certeza de que muitos usuários deste site estariam interessados ​​se você seguisse esse caminho.

user890
fonte
13

Um novo formato que surgiu recentemente é o Geopackage . Essa especificação é construída sobre o banco de dados SQLite, portanto, possui a mesma base de arquivo único, mas com o benefício adicional de ser um padrão OGC .
Quanto ao tamanho do arquivo, é provável que o formato de armazenamento seja mais compacto que o formato .shpe .dbfpara dados espaciais e de atributo usados ​​no Shapefile. Portanto, é provável que o GeoPackage seja do mesmo tamanho ou menor que a totalidade dos mesmos recursos em um shapefile.
Esta foto mostra as redes de esgoto de San Diego salvas como Shapefile e GeoPackage. Como você pode ver, eles são essencialmente do mesmo tamanho. Shapefile vs tamanho do geopackage
Como esse formato é baseado no SQLite, ele deve estar pronto para dispositivos móveis. Muitos aplicativos já usam esse formato de banco de dados para armazenamento, por isso é uma tecnologia comprovada. Pode ser usado em várias plataformas sem necessidade de tradução.

Get Spatial
fonte
4

Concorde com a Lennert, escolha o formato certo para o trabalho.

No entanto, eu achei o Spatialite um formato bastante versátil. Você tem o único arquivo, oferecendo flexibilidade para armazenar e compartilhar dados como um shapefile, mas nega os problemas mencionados com limites de caracteres; enquanto oferece a oportunidade de explorar os benefícios de um banco de dados espacial.

Infelizmente, ele não é totalmente suportado no ArcGIS (eu não tentei há um tempo para estar errado), mas funciona muito bem no QGIS.

Liam G
fonte
4

Existem muitos formatos diferentes e o melhor depende do conjunto de dados que você possui, das ferramentas que você usa e do que deseja fazer com ele.

Alguns dos que eu uso:

  • Banco de dados de geodatabase e spatialite de arquivos: uma lista que eu gosto de usar. Ele pode conter todos os tipos de dados e ter relacionamentos, indexação ... Eu uso o gdb ao trabalhar em um ambiente Esri, espacial para qualquer outra coisa.

  • GeoJson: Formato de fácil leitura que geralmente uso para pequenos conjuntos de dados que não exigem muito na indexação

  • Bancos de dados adequados: costumo usar isso para conjuntos de dados massivos e algoritmos complexos.

Mas há muitos outros também.

Lennert De Feyter
fonte
3

Eu recomendaria usar o banco de dados SQLite / spatiallite. É um único arquivo como o geodatabase (uma a muitas tabelas / camadas) e pode ser usado no ArcGIS Desktop e QGIS.

artwork21
fonte
Salvei dados de polígono no sqlite e carreguei isso com o QGIS, e recebi uma mensagem dizendo "O CRS não foi definido: padronizando para o CRS EPSG: 4326 - WGS84". Não perde informações sobre a projeção?
Ichiro
Com qual software você salvou a camada de polígono no sqlite?
artwork21
1

As opções realmente dependem do idioma que você usará e como os dados serão usados. O Android provavelmente será Java. Cada opção será um tipo de comparação de custo / benefício com base nessa decisão. Todos os formatos de dados são otimizados para determinados casos de uso.

A próxima pergunta é como os dados serão usados. O aplicativo móvel lerá dados espaciais? Ou estará lendo e gravando dados com frequência? Com que frequência ele trocará dados com outros dispositivos ou servidores?

GeospatialPython.com
fonte