Ah, GeoPackage. Comments on the current spec.
- Hooray, C extensions were removed. Hope that idea is gone for good.
- Spatial Reference Systems Ah yes. This is a broken system, based on hoping that no SRS systems ever get invented after now, and in the meantime sticking it all together with a big CSV file that nobody wants to think about. Anyway, this is a bad idea but a ubiquitous bad idea, so won't blame that on GPKX.
1.1.3.1.1. Table Definition
Exposes the problem of projecting everything: if you don't have proj4 handy, you won't even be able to get the extent of a data file. This radically de-simplifies simple metadata.
Okay, so maybe we aren't discussing this, but: why? Like, SQLite has its own geospatial geometry encoding, Spatialite has a needlessly incompatible version of that, and now it's time to invent a third?
- Core Geometry Model includes unusual primitives like
MultiCurve
A 1-dimensional geometry is a geometry that has a length, but no area.
That sounds like a 2D line.
- To implement this new geometry encoding, you'll need
ISO/IEC 13249-3:2011
. Cost of specification just increased to $225 USD - Geometry supports Z values (yay) but doesn't specify what they mean: what are the units?
Unfortunately, no applicable existing consensus, national or international specifications have standardized practices in this domain.
Except for the custom used by every major web map service. I wish these intros weren't so flip about prior art: saying "no consensus, national, or international specifications" is kind of a cop-out: most useful specs aren't.
2.2.3. Zoom Levels
: Looks like the zooms-that-aren't-powers-of-two-or-even-constant-between-numbers thing survived the draft process. This will be implemented by <1%.2.4.2. Metadata Table
: That is a lot of standards and a lot of XML.3.1.3. RTree Spatial Indexes
: because, from above, we aren't using SQLite's built in geometry encoding, so we can't use SQLite's built in R*Tree module
I'd say that's an oversimplistic reading.
Basically, my problem is that GeoPackage is primarily a container format, like MBTiles. So, it contains things: and in this case, they are vector and raster features. You have two choices: you can either contain existing things, like MBTiles contains XYZ tiles, or you can invent new things. GeoPackage did the latter - it baked up a new way to encode geometries, and a new tile spec - and I don't think anyone spent nearly enough time thinking about these things. Instead of solving one problem well, it's creating two new problems and solving three problems poorly.
If there was already a great way to encode geometries - one that didn't cost two hundred bucks to access and didn't have multiple incompatible variants and was compact and had all the wonderful bells and whistles. And if there was already a tile system that did projections right and also somehow supported non-power-of-two zoom levels, then sure: I would support a container format that wrapped those well-thought out, battle-tested strategies.
See the GDAL ogr driver, and mapnik's support, and also the part in the private mailing list where I demonstrated the two.
For those at home who don't know the backstory, the stuff about non-power-of-two zoom levels might seem weird. Why such focus? Why that feature? To clarify: the main sponsors of GeoPackage are military, and non-power-of-two zoom levels are useful mainly for data "coming off the bird" in non-multilevel form.
This mismatch between the funders intent and the public face of a standard is one of the things that bothers me: why should a general format have vestigial features of a military usecase?