sábado, 6 de abril de 2019

FileGDB no Android? Só com OGR (Parte I)

Para quem está familiarizado com os ArcGIS Runtime para Android, tanto 10.2.x (o 2 foi renomeado 10.2x, lembram-se?) como 100.x, está a par da quantidade de formatos que foram sendo introduzidos.

Não vou enumerar tudo senão nunca mais saia daqui. Ficam de fora os formatos que não estão directamente ligados à evolução dos Runtime, seja os Raster, ou os AGS services, formato neste último caso em sentido lato.
.
A 10.2.x introduziu pelo menos os seguintes formatos:

- .geodatabase - a chamada runtime geodatabase. Não confundir com a FileGDB (File GeoDataBase). A .geodatabase é SQLite puro;
- Tile packages (.tpk) - É uma cache de tiles. Em vez de estarem numa pasta, estão num ficheiro SQLite;
- Map packages (.mpk) - contém um documento .mxd e todos os dados que lhe estão associados. Tudo num só ficheiro;

- Geoprocessing packages (.gpk) - para fluxos offline de geo-processamento, nunca utilizei;

- Locator packages (.gcpk) - para fluxos offline de localização, também nunca utilizei.

Existem vários utilitários open-source para manipular alguns destes formatos, por exemplo tpkutils

A 100.x introduziu pelo menos o seguinte, e retirou alguns dos anteriores:

-  Mobile Map Package (.mmpk).

Havia algumas restrições, umas foram levantadas, outras não, outras ainda, foram introduzidas. Por exemplo uma .geodatabase vinda do Desktop não podia ser editada, tinha que ser descarregada do Portal. Posteriormente, já podia. O .mmpk é para ser gerado no Pro. And so on...para ficarmos trancados à plataforma, seja Pro, AGS, Portal, AGOL. Por exemplo, as .geodabase actualmente, são para fazer sincronização com um serviço.

De qualquer forma, a 10.2.x era muito menos restritiva, Estavam a lançar o produto. 

E a shapefile?

Um dos denominadores comuns é que o suporte offline a shapefile começa sempre por ser inexistente. Depois, por pressão da comunidade (clientes?), o suporte lá aparece. Aconteceu na 10.2.4 e na 100.2 . Claro está, sempre acompanhado do suporte a GeoPackage e KML...porque os standards do OGC são bonitos e recomendam-se. Acrescenta-se WMS, WMTS (na 100.x), e até uma Layer OpenStreetMap, e está composto o ramalhete. Na 10.2.x também havia suporte​ a MBtiles, mas acabaram com isso.

E a FileGDB (File Geodatabase)?

Só existe num componente opcional do Runtime chamado Local Server que só está disponível para .NET (Desktop), Java e Qt. Para Android, não.

Por outro lado a biblioteca OGR tem suporte de leitura e escrita a FileGDB, já desde a versão 1.9. (2011?). Infelizmente, o FileGDB API SDK  não é disponibilizado em binários arm/Linux, a arquitectura do kernel do Android que nos interessa.

Mas entretanto surgiu outro driver que não depende do SDK referido. Trata-se do OpenFileGDB
disponível desde a versão 1.11 da OGR, e permite leitura. Serve perfeitamente!

Agora só falta encontrarmos uma versão da OGR igual ou superior à 1.11 compilada para arm/Linux... com os respectivos bindings em Java, claro está.

Olha, encontrei uma:

https://github.com/nutiteq/advancedlayers/tree/master/libs/armeabi

E as respectivas bindings em Java:

https://github.com/nutiteq/advancedlayers/tree/master/src/main/java/org

Mentira. Já tinha encontrado em 2013!


Na segunda parte vou explicar o que é que se pode fazer com isto.


Continua...

Sem comentários:

Enviar um comentário