WorldWindEarth / WorldWindAndroid

The WorldWind Android "Community Edition" SDK (WWA-CE) includes the library, examples and tutorials for building 3D virtual globe applications for phones and tablets.
https://worldwind.earth/WorldWindAndroid/
Other
16 stars 7 forks source link

Fix GeoPackage processing #30

Closed ComBatVision closed 4 years ago

ComBatVision commented 4 years ago

Description of the Change

Basic implementation of GeoPackage does not work properly: 1) It does not support tile matrix sets which count tiles from their local tile origin, not from full sphere origin (-90, -180). 2) It calculates wrong GeoPackage row in case tile matrix has height not equals current WWD level height, which is always equals some power of two. 3) It does not copy content identifier into renderable display name.

That's why current PR adds following features: 1) Add tile origin attribute to level set. 2) Enhance tile row and column calculation routines with tile origin parameter. 3) Fix level width and height calculation in case of non-full sphere level set sector used. 4) Add support of local tile origin based on tile matrix set extent instead of full sphere origin. 5) Add surface image name based on content identifier. 6) Change level set sector initialization based on tile matrix set extent instead of content extent. 7) Change first level tile delta and number of levels calculation based on tile matrix zoom levels. 8) Fix row calculation in tile factory.

Why Should This Be In Core?

GeoPackage is the only way to use offline maps in WorldWondAndroid for now, but it does not work properly and should be fixed.

Benefits

Allows to prepare and use offline map GPKG files using some 3rd party software. Works with any GPKG files which comply GeoPackage specification, not only tutorial one.

Potential Drawbacks

Tile origin initialization was added to many dependent places due to current LevelSet initialization architecture.

Applicable Issues