We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

OGC GeoPackage in practice: Implementing a new OGC specification with open-source tools

Formal Metadata

Title
OGC GeoPackage in practice: Implementing a new OGC specification with open-source tools
Title of Series
Number of Parts
183
Author
License
CC Attribution - NonCommercial - ShareAlike 3.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language
Producer

Content Metadata

Subject Area
Genre
Abstract
GeoPackage is a new encoding standard created by the Open Geospatial Consortium as a modern alternative to formats like SDTS and Shapefile. Using SQLite, the single-file relational database can hold raster imagery, vector features and metadata. GeoPackage is an ideal data container for mobile devices such as smartphones, IoT devices, wearables, and even automobiles. We have created a few open-source tools to manipulate this exciting technology in a way that is useful to the geospatial community. Our goal with the GeoPackage specification implementations is simple: Create GeoPackages quickly and reliably while maintaining standard conformance. The single biggest issue we have faced is the speed in which large amounts of imagery can be disseminated to the end user. Data standards reliability was also a concern because we found many vendors interpreted the specification differently or to suite their own needs. Finally, the main problem GeoPackage was created was to solve was interoperability. We set out to create an implementation that would guide other parties towards making a data product that would function as well on one platform as it would on a completely different platform. Our initial implementation of the GeoPackage specification was created using Python 2.7.x. The software design was intended for command line use only in a script-friendly environment where tiling speed was paramount. The Gdal2tiles.py script was improved upon by harnessing the Python multiprocessing library so that multiple tile jobs could run simultaneously. The other piece of the workflow, creating GeoPackages, would be a separate development effort from scratch called tiles2gpkg_parallel.py. In tiles2gpkg_parallel.py, we implemented multiprocessing by writing to separate SQLite databases in parallel and then merging the tiled data sets into one compact database. This implementation worked well and increased the performance of producing these data sets; however, the command line design means that all but the most technically adept users would struggle to use the tools. With the initial Python implementation getting early-adopters a preview of GeoPackage in the short term, our team set out to make a production-quality GeoPackage API that could satisfy all user needs. Named Software to Aggregate Geospatial Data or SWAGD, we created a robust library for tiling raster data, packaging raster data stores into GeoPackages, and viewing either the raw tiles OR the finished GeoPackage products within a map viewer. Additionally, a Geopackage verification tool was created to foster community adoption. For more information, see our Github site here: https://github.com/GitHubRGI/swagd. Many open-source tools are being leveraged on the SWAGD project, including many common build and continuous integration tools including Github, TravisCI, WaffleIO, and Coverity. Using proven software development mechanisms like unit testing and code reviews we now have a consistent, reproducible, and inclusive GeoPackage implementation. We have an aggressive list of future capability that we would like to develop including ad-hoc routing on a mobile device, vector tile data sets, and even 3D support.