Fix GeoPackage support implementation.
Description of the Change
Basic GeoPackage implementation does not support level sets started not in -90, -180 coordinates, but according standard any external system exports GeoPackage files with the tile origin equals south west corner of visible tile set.
That's why GeoPackage requires following improvements:
- Add support of local tile origin based on tile matrix set extent instead of full sphere origin.
- Add surface image name based on content identifier.
- Change level set sector initialization based on tile matrix set extent instead of content extent.
- Change first level tile delta and number of levels calculation based on tile matrix zoom levels.
- Fix row calculation in tile factory.
General API requires following improvements:
- Add tile origin attribute to level set.
- Enhance tile row and column calculation routines with tile origin parameter.
- Fix level width and height calculation in case of non-full sphere level set sector used.
This PR is based on Mercator PR https://github.com/NASAWorldWind/WorldWindAndroid/pull/242 due to this fix also related to MercatorTile calculations.
Why Should This Be In Core?
Support of GeoPackage files exported from ArcGis or GlobalMapper is not possible without this improvements. Now GeoPackage works only with WorldWind test example, which was made with violation of GeoPackage specification requirements. Other words GeoPackage implementation is wrong now.
Benefits
Adding correct support of EPSG 4326 GeoPackage offline cache.
Potential Drawbacks
None. Backward compatible with current incorrect GeoPackage example.