Há alguma tentativa de substituir o shapefile? [fechadas]

67

Recentemente, passo muito tempo convertendo perfeitamente bons nomes de campos como "Porcentagem de cidadãos com 25 anos ou mais com um diploma de bacharel ou superior" em coisas como "edbchogtr" para atender ao limite de 10 caracteres do DBF no campo.

Em outro tópico ( "Oddities" na especificação técnica Shapefile ), o geospatialpython comentou que "Apesar das falhas, esquisitices e limitações do formato shapefile, ele persiste teimosamente dentro e ao redor do campo de GIS. Todas as outras tentativas de substituí-lo foram inchadas demais para armazenamento vetorial simples ou muito proprietário ".

Esta atividade, juntamente com o comentário do Sr. Lawhead, me fez pensar:

  • alguma tentativa explícita foi feita para substituir o shapefile como o onipresente formato de armazenamento e intercâmbio de dados do GIS?
  • Existem concorrentes?
  • Se houve formatos concorrentes, por que eles falharam?
  • Esri se recusou a apoiá-los ou a história é simplesmente uma inércia tecnológica?
  • Se não houve tentativas ... por que não?

Parece que poderíamos fazer um pouco melhor para nós mesmos, como desenvolvedores e usuários de GIS.

canisrufus
fonte
2
@ Mapperz Além da API do Geodatabase, lançada recentemente, não vejo nenhuma ferramenta para escrever um geodatabase gratuito. Eu não acho que isso possa contar como um substituto, exceto na porção ESRI do mundo.
Canisrufus
2
Você pode escrever e ler geodatabases (via API) usando GDAL gdal.org/ogr/drv_filegdb.html usando resources.arcgis.com/content/geodatabases/10.0/file-gdb-api
Mapperz
11
Gostaria de ver a API do Python para ler / gravar banco de dados de arquivos geográficos (pelo menos Recursos simples) sem licença do ArcGIS - isso seria aberto.
PolyGeo
2
@PolyGeo você e todo mundo :)
Ragi Yaser Burhum
3
@celenius De gdal.org/ogr/drv_shapefile.html "Geometria: o formato Shapefile usa explicitamente compensações de 32 bits e, portanto, não pode ultrapassar 8 GB (na verdade, usa compensações de 32 bits para palavras de 16 bits). Portanto, não é recomendável usar um arquivo tamanho acima de 4 GB. Atributos: O formato dbf não possui nenhuma compensação, portanto pode ser arbitrariamente grande. " Portanto, você pode ter dbfs muito grandes, mas precisa ter cuidado com o shp com mais de 4 GB. Então você está brincando com fogo.
Ragi Yaser Burhum

Respostas:

50

Este é um tópico que sempre aparece. Talvez eu não tenha a resposta certa, mas posso lhe dar minha opinião pessoal .

A razão pela qual eles são suportados pode ser atribuída a várias características sobre eles, então deixe-me mencionar algumas.

  • Primeiro, há uma especificação . Quero dizer, eu tenho trinta e poucos anos e isso existe desde que eu era adolescente. Portanto, é seguro dizer que essa especificação existe há algum tempo. Claro, existem vários outros formatos que também são publicados, mas a diferença sobre este é que ...

  • É relativamente simples! Ele é construído sobre o formato DBF , que na época já existia e era amplamente suportado em várias plataformas / sistemas operacionais. Já havia analisadores que podiam ler metade desse formato (a parte DBF), facilitando o suporte à adição extra. Você tem uma geometria? Claro, apenas serialize e escreva. Você terminou. Compare isso com uma cobertura ! Tente explicar a alguém em termos simples o que uma topologia limpa faz . Não é trivial escrever uma cobertura topologicamente limpa.

  • Mais importante, acho que o principal motivo para os shapefiles ainda serem populares é que eles são suportados nos sistemas Open Source e Proprietary . Que SIG você sabe que não suporta shapefiles?!? Desconhecido de.

Como substituição, ouvimos falar de File GeoDatabases e Spatialite . Ambos os formatos são muito superiores em termos de funcionalidade, flexibilidade, velocidade, etc., quando comparados aos Shapefiles. A seu modo, eles têm certas coisas que os tornam melhores em áreas diferentes, mas uma comparação de spatialite e FileGDB certamente está fora do escopo desta questão.

Eu acho que um desses formatos substituirá os Shapefiles? Não em suas encarnações atuais .

Por quê?

Não por causa de um argumento tecnológico (eu disse que eles eram superiores nesse aspecto, afinal), mas por causa de outra coisa: licenciamento.

Então, quais são os problemas deles?

ArquivoGDB :

O FileGDB fornece interoperabilidade por meio da nova API FileGDB. No entanto, essa API é fornecida em formato bináriopela ESRI. Esta não é uma especificação. Tendo trabalhado na equipe do GeoDatabase no passado, posso dizer que, ao contrário de todos os teóricos da conspiração que usam chapas de alumínio, isso não é nada malicioso. Isso ocorre porque os elementos internos do GeoDatabase mudam a cada versão. A publicação de uma especificação completa implicaria basicamente fornecer todos os detalhes de como tudo deve ser mantido e, em seguida, documentar cuidadosamente as alterações no formato a cada lançamento anual. Isso não faz sentido. Portanto, a API FileGDB, mesmo que não seja uma especificação, abstrai todas essas pequenas alterações. E agora ele pode ser usado em várias plataformas! Lembre-se, este é um grande passo em frente! Considerando a natureza conservadora das ESRI, essa é definitivamente uma reação na direção certa.

E, no entanto, o suporte apenas binário não deixa ninguém feliz no mundo do código aberto. Como você tira vantagem de portar algum código para dizer outro sabor do Linux, se o ESRI não o suportar. Você não pode. É isso que torna o código aberto poderoso e, agora, você não pode tirar proveito disso. Se a ESRI decide parar de apoiar o Debian, é isso. Você terminou. E não há nada que você possa fazer para mudar isso.

Spatialite :

O Spatialite é incrível porque obtém todas as funcionalidades gratuitas do SQLite . SQLite é usado em qualquer lugar. Está no seu telefone Android, no seu iPhone / iPad, no Firefox, no Google Chrome, em vários dispositivos comerciais incorporados - pode durar para sempre. Para realmente transformá-lo em um Geoformat (e não apenas fazer operações estúpidas com caixas delimitadoras), ele precisa aproveitar a mesma biblioteca de geometria que o PostGIS usa: GEOS . Infelizmente, o GEOS é baseado em outra biblioteca de geometria ainda mais impressionante, conhecida como JTS . Todos os algoritmos no JTS são extremamente poderosos, então qual é o problema?

Bem, a JTS é licenciada como Open Source LGPL , e a LGPL é uma licença viral . JTS é LGPL, significa GEOS é LGPL, significa espacialidade vinculada estaticamente com GEOS é LGPL. Isso é péssimo. Por quê? Sem explicar muito as licenças de código aberto , posso dizer-lhe que, por exemplo, não posso usar espacial em um aplicativo para iPhone, por exemplo, porque isso tornaria todo o meu aplicativo automaticamente aberto (o iOS só permite vinculação estática). Qualquer tipo de licença GPL (razoavelmente) assusta a ESRI e, portanto, não a toca com um bastão de três metros. Portanto, o ArcGIS, o sistema GIS mais popular do mundo, não (e provavelmente nunca) suporta espacialmente nativamente. Isso mata automaticamente como um formato viável.

E assim voltamos aos shapefiles ruins que são suportados em todos os lugares.

Atualização :

Aparentemente, minha resposta foi controversa o suficiente para que alguém decidisse que não havia problema em editar e alterar livremente todo o significado da minha resposta para colocar seu ponto de vista. Por favor, não faça isso. Se você não concorda comigo, tudo bem, basta postar sua opinião em uma resposta diferente e deixar a comunidade decidir. Eu rolei apoiando as edições na minha resposta para mostrar o significado original. Estou adicionando esta atualização caso você leia a resposta editada que afirmava que o sqlite era um formato viável.

Ragi Yaser Burhum
fonte
O problema com o SQLite / Spatialite é que ele não é um formato, é um mecanismo de banco de dados relacional com uma biblioteca espacial por cima. Embora faça o que faz muito bem, força os dados a serem armazenados de maneira relacional, o que nem sempre é a maneira mais adequada. Além disso, a complexidade do formato de arquivo SQLite ( sqlite.org/fileformat2.html ) dificulta o acesso aos dados sem o mecanismo SQLite e, portanto, não é adequado para ser um formato de arquivo aberto e facilmente acessível para troca de dados. Não foi realmente projetado para isso.
Igor Brejc
8
Na verdade, a LGPL não é uma licença viral - foi projetada especificamente para evitar isso. Além disso, o Spatialite é licenciado sob a licença tri MPL ( fonte ), o que significa, entre outras coisas, que você pode escolher a Licença Pública Mozilla como a licença mais adequada e operar sob seus termos (copyleft muito fraco). Minha leitura, pelo menos, é que ESRI tem nenhuma razão para não apoiar SpatiaLite por causa da licença - se eles vão (dado que compete em quase o mesmo espaço que FileGDB) é uma outra história ...
om_henners
3
@Ragi, você mistura usando uma biblioteca e portando -a. É claro que a portabilidade terá que ser LGPL, já que esse é, em essência, um trabalho derivado. Mas se você vinculá-lo dinamicamente, não é considerado um trabalho derivado, é "trabalho que usa a biblioteca" e você mantém sua licença ( en.wikipedia.org/wiki/GNU_Lesser_General_Public_License ). Dizer "LGPL é viral" sem explicações adicionais não é exato.
Igor Brejc
2
Mas, novamente, esse é um ponto discutível, já que o Spatialite é licenciado sob um esquema de licença em árvore ( groups.google.com/forum/?fromgroups#!topic/spatialite-users/… ), então você escolhe a licença que melhor se adequa você mais - MPL permite vinculação estática.
Igor Brejc
2
@ bugmenot123 Tudo bem, corrija-o se desejar, mas não me acuse de espalhar FUD sobre o SO porque é um insulto. Escrevo código de SO há mais de uma década (não seria surpresa que você tenha usado alguns dos meus realmente) e isso não foi um discurso de raiva. Era verdade - e ainda é. A vinculação dinâmica no iOS da LGPL (bem, para ser mais preciso, estruturas , foi permitida no iOS 8). Isso nunca foi um problema técnico, mas legal. A distribuição na Appstore requer assinatura de código - e infelizmente para todos os amantes de SO, como eu - a LGPL é uma licença difusa para isso. Nenhum precedente em tribunal.
Ragi Yaser Burhum
18

A parte SHP + SHX em si não é tão ruim. O verdadeiro problema está na parte DBF. Isso pode ser feito com um novo formato, que suporta unicode e todos os tipos de campos modernos. O problema está sendo bem suportado por todo o software disponível.

Uffe Kousgaard
fonte
6
+1 Melhorar a parte DBF também não é nada difícil: realmente se resume a convencer os desenvolvedores de software a concordar com alguma coisa.
whuber
11
Houve uma tentativa?
Canisrufus
5
Eu sempre pedi uma alteração do Shapefile que simplesmente substituísse um arquivo CSV UTF-8 pelo DBF. Seria simples oferecer suporte e exigir alterações mínimas nos pacotes de software existentes.
scw
11
A @canis Fox Software fez uma tentativa menor (proprietária) no final dos anos 80. Depois que a MS os comprou (c. 1990), foi isso. A comunidade criou um padrão DBF 3 e praticamente congelou todo o desenvolvimento. MS lançou o Access; FoxPro morreu; o mundo seguiu em frente.
whuber
11
Pelo contrário, @Uffe, os arquivos CSV podem ser acessados ​​aleatoriamente: você só precisa de um índice, assim como os arquivos DBF para pesquisas eficientes. O maior problema que vejo é que alterações aparentemente menores que ocorrem naturalmente em arquivos CSV, como seqüências de citação ou conversões CR / LF, estragam todos os desvios de bytes. A estrutura de registro de comprimento fixo de um arquivo DBF, embora menos eficiente em armazenamento, não apresenta esse problema.
whuber
7

Pelo menos spatialite tem a intenção, veja, por exemplo, esta apresentação http://www.sourcepole.ch/assets/2010/9/10/foss4g2010_spatialite.pdf

Por outro lado, acredito que a principal razão pela qual ele falhou é que o shp é bem suportado por muitos aplicativos e possui apenas pequenas deficiências.

Outros compartilham essa opinião também:

Isso não ocorre porque o projeto SpatiaLite não nos deu ferramentas para implementar, pois a comunidade pode se importar menos com isso. O SHP funciona para eles e não há motivo para mudar.

http://www.spatiallyadjusted.com/2010/09/16/spatialite-is-not-the-shapefile-of-the-future/

Mais informações sobre o geodatabase do arquivo Esri, spatialite e autodesk sdf aqui: http://www.spatialdbadvisor.com/blog/121/the-shapefile-manifesto

johanvdw
fonte
Por melhor que eu ache o spatiaLite, são cerca de 3 megabytes de sobrecarga em funções, sistemas de referência, etc., que o impedem de ser um bom formato de intercâmbio geral.
Scro
Na verdade, a licença para o spatialite é inferior ao ideal - não tem nada a ver com as ferramentas.
Ragi Yaser Burhum
@ Scro, 3 megabytes é muito grande? Certamente não é muito grande para a área de trabalho. Você deve considerar dispositivos móveis. Além disso, existe outra API espacial, com funcionalidade equivalente, em um tamanho menor que o espacial?
21812 klewis
@klewis - não é muito grande por si só, é apenas muito ineficiente quando você considera que existem muitos conjuntos de dados pequenos (pense <200kb) por aí. Isso representa muita sobrecarga, principalmente pelo fato de que, uma vez recebido, você normalmente deixa cada conjunto de dados em seu arquivo 3mb ou o lança em um banco de dados existente. Só para esclarecer, eu <3 spatiaLite - mas estamos falando de transmissão de dados, onde algum tipo de arquivo simples / xml / wkb seria muito mais eficiente.
Scro
6

A Esri promove os Geodatabases de arquivos há vários anos como um substituto para os shapefiles.

Mais recentemente, eles forneceram uma API que oculta qualquer esquisitice.

Kirk Kuykendall
fonte
Não trabalhei muito com geodatabases. A Wikipedia diz que eles são um padrão "fechado", por exemplo, as especificações do geodatabase não foram publicadas. Parece difícil obter uma adoção muito ampla sem publicar os internos do formato. Embora eu seja jovem demais para conhecer a história, acho que os shapefiles são em parte tão populares por causa da parte pública da especificação. A API parece ser um bom passo.
Canisrufus
11
@canis você está correto. Na época, ninguém adotaria os shapefiles, exceto que a ESRI os promoveu especificamente como um formato aberto de troca de dados GIS. Mesmo com as limitadas ferramentas de software disponíveis na época, com o lançamento da ESRI de uma especificação clara .shp / .shx (e o compromisso de cumpri-la), tornou-se uma questão de apenas algumas horas de trabalho escrever código para ler e ler escreva shapefiles: não é necessária engenharia reversa.
whuber
Enquanto a API for um blob binário de caixa preta, o FGDB não verá a mesma adoção do SHP. Mesmo que a Esri convença todos os seus clientes a mudarem de SHP para FGDB, a API não é realmente compatível com o código aberto.
dericke
3

Um dialeto XML, como o GML, definitivamente não é otimizado para operar grandes conjuntos de dados, mas pode ser usado como um formato de troca entre software ou entre plataformas.

Não acredito que haja nenhum problema com o licenciamento (consulte o post de Ragi Yaser Burhum sobre as características virais do Spatialite) e é bastante fácil adaptar os analisadores existentes, se necessário.

Stéphane Henriod
fonte
11
Acho que não foi mencionado apenas pelo motivo que você mencionou, porque não é otimizado para grandes conjuntos de dados. XML está inchado. Os formatos mencionados aqui são binários, onde o GML armazena pontos como seqüências de caracteres. O tamanho pode ter uma ordem de magnitude diferente.
Canisrufus
3
Canisrufus está certo. Existem vários problemas com o GML. O Infoset pode ser navegado usando o XPath, mas qualquer pessoa que tenha tentado implementar a indexação espacial sobre o XML dirá o quão irracional isso é e o quanto ele é mapeado nos bancos de dados relacionais tradicionais. Sem entrar em muitos detalhes, se algo tão básico como indexação e consulta não se tornar trivial, o formato é inchado e requer basicamente que você tenha todo o conjunto de dados na memória para fazer alguma coisa com ele, então essa não é uma boa opção.
Ragi Yaser Burhum
4
xml fica inchado quando armazenado como texto sem formatação. Existem bibliotecas xml binárias disponíveis gratuitamente (gratuitas e gratuitas para modificar e redistribuir) que podem servir como substitutos para os leitores xml, dando às pessoas a liberdade de utilizar tanto a legibilidade humana do xml quanto a eficiência de desempenho e armazenamento do binário . A única razão pela qual consigo pensar em nunca ter sido abordada de maneira ampla é como johandvw observa acima : ninguém se importa, .shp foi "suficientemente bom" como está.
214122 Mattel
1

Só para entender isso de uma perspectiva diferente, não tenho certeza de que o uso de "Porcentagem de cidadãos com 25 anos ou mais com um diploma de bacharel ou superior" seja um nome de campo perfeitamente bom. Embora a mistura de espaços e apóstrofos possa ser manipulada, se você estiver escrevendo código ou consultas, é mais provável que haja erros.

Na minha opinião, o futuro da distribuição de dados espaciais deve se concentrar na web e nos serviços da web, e a especificação WFS (que usa GML) é aberta e estabelecida. O GeoJSON é menor e pode ser mais fácil trabalhar com JavaScript. No entanto, com a compressão, os tamanhos são comparáveis.

Eu também gostaria de votar nos Geodatabases pessoais da ESRI . Pode ser um formato da Microsoft frequentemente difamado, mas suporta consultas ODBC, SQL, visualizações e permite que não desenvolvedores criem formulários fáceis de entrada de dados e inclua pelo menos algum nível de verificações de integridade de dados (tipos de dados, comprimentos, valores exclusivos) .

geographika
fonte
Esse é um ponto válido. O que há de bom neles é que, dado o conhecimento da língua inglesa, é possível descobrir o que os campos significam.
Canisrufus
Esse é realmente o papel dos metadados dos conjuntos de dados. O shapefile pode usar um arquivo XML com o mesmo nome para armazená-lo.
geographika