ngageoint / geopackage-mapcache-android Goto Github PK
View Code? Open in Web Editor NEWGeoPackage MapCache Android App
Home Page: https://ngageoint.github.io/geopackage-mapcache-android
License: MIT License
GeoPackage MapCache Android App
Home Page: https://ngageoint.github.io/geopackage-mapcache-android
License: MIT License
Please fill out as much known and relevant information as possible.
What happened instead?
as the geopackage is opened, the rtree trigger in the features tables gets lost.
How often does this occur?
always.
1 - create a geopackage (from Qgis 2.18) with a feature (mine is named "bedding");
2 - get sure that trigger exist to populate rtree_ tables:
select * from sqlite_master where type = 'trigger' and name = 'rtree_bedding_geom_insert':
CREATE TRIGGER "rtree_bedding_geom_insert" AFTER INSERT ON "bedding" WHEN (new."geom" NOT NULL AND NOT ST_IsEmpty(NEW."geom")) BEGIN INSERT OR REPLACE INTO "rtree_bedding_geom" VALUES (NEW."fid",ST_MinX(NEW."geom"), ST_MaxX(NEW."geom"),ST_MinY(NEW."geom"), ST_MaxY(NEW."geom")); END
3 - open from MapCache the geopackage (as an external link); make no change, simply view feature contents on the map.
4 - select * from sqlite_master where type = 'trigger' and name = 'rtree_bedding_geom_insert':
gdal_translate -of GPKG ERDC_Whitehorse_GeoPackage.gpkg ERDC_Whitehorse_GeoPackage.gdal.gpkg
If I try to open the resulting file on my phone, mapcache shortly pauses/freezes, then I get a popup with the following error message:
GeoPackage Errors
ERDC_Whitehorse_GeoPackage.gdal
Errors:near ".": syntax error (code 1): ,while compiling: PRAGMA table_info(ERDC_Whitehorse_GeoPackage.gdal)
E/AndroidRuntime: FATAL EXCEPTION: main
Process: mil.nga.mapcache.test, PID: 26768
java.lang.RuntimeException: Unable to start activity ComponentInfo{mil.nga.mapcache.test/mil.nga.mapcache.view.map.feature.FeatureViewActivity}: java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/user/0/mil.nga.mapcache.test/databases/example
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/user/0/mil.nga.mapcache.test/databases/example
at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1312)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
at com.j256.ormlite.android.compat.JellyBeanApiCompatibility.rawQuery(JellyBeanApiCompatibility.java:21)
at com.j256.ormlite.android.AndroidCompiledStatement.getCursor(AndroidCompiledStatement.java:198)
at com.j256.ormlite.android.AndroidCompiledStatement.runQuery(AndroidCompiledStatement.java:72)
at com.j256.ormlite.stmt.SelectIterator.<init>(SelectIterator.java:56)
at com.j256.ormlite.stmt.StatementExecutor.buildIterator(StatementExecutor.java:254)
at com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:203)
at com.j256.ormlite.dao.BaseDaoImpl.query(BaseDaoImpl.java:281)
at com.j256.ormlite.stmt.QueryBuilder.query(QueryBuilder.java:384)
at com.j256.ormlite.dao.BaseDaoImpl.queryForFieldValues(BaseDaoImpl.java:1171)
at com.j256.ormlite.dao.BaseDaoImpl.queryForFieldValues(BaseDaoImpl.java:296)
at mil.nga.geopackage.extension.schema.columns.DataColumnsDao.queryForId(DataColumnsDao.java:77)
at mil.nga.geopackage.extension.schema.columns.DataColumnsDao.getDataColumn(DataColumnsDao.java:232)
at mil.nga.mapcache.view.map.feature.FeatureViewActivity.setFieldData(FeatureViewActivity.java:303)
at mil.nga.mapcache.view.map.feature.FeatureViewActivity.onCreate(FeatureViewActivity.java:172)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
I/Process: Sending signal. PID: 26768 SIG: 9
Tab on screen inside any of the red circles to crash MapCache
Result
Please fill out as much known and relevant information as possible.
What happened instead?
Despite the fact that the map is displayed when it is enabled after it is loaded, an error appears in the Android logcat twice while loading it. I'm curious as to why it displays such an error.
How often does this occur?
It occurs whenever a new raster Geopackage file with Pseudo Mercator projection is attempted to be loaded into Mapcache. It also happens with previously loaded maps (with Pseudo Mercator projection) when the Mapcache is launched from the beginning.
2022-04-11 09:24:08.348 19309-19942/? W/ProjectionFactory: Failed to create projection for authority: EPSG, code: 3857, definition:
PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984"
,SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]]
,AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG",
"8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]]
,AUTHORITY["EPSG","9122"]]AUTHORITY["EPSG","4326"]],PROJECTION[
"Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER[
"scale_factor",1],PARAMETER["false_easting",0],PARAMETER[
"false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS[
"X",EAST],AXIS["Y",NORTH]
mil.nga.crs.CRSException: Unexpected end of text, null token
at mil.nga.crs.wkt.TextReader.readExpectedToken(TextReader.java:318)
at mil.nga.crs.wkt.CRSReader.readRightDelimiter(CRSReader.java:1159)
at mil.nga.crs.wkt.CRSReader.readProjectedCompat(CRSReader.java:4097)
at mil.nga.crs.wkt.CRSReader.readProjectedCompat(CRSReader.java:3996)
at mil.nga.crs.wkt.CRSReader.read(CRSReader.java:812)
at mil.nga.crs.wkt.CRSReader.read(CRSReader.java:117)
at mil.nga.crs.wkt.CRSReader.read(CRSReader.java:99)
at mil.nga.proj.ProjectionFactory.fromDefinition(ProjectionFactory.java:988)
at mil.nga.proj.ProjectionFactory.getProjection(ProjectionFactory.java:650)
at mil.nga.proj.ProjectionFactory.getProjection(ProjectionFactory.java:582)
at mil.nga.proj.ProjectionFactory.getProjection(ProjectionFactory.java:536)
at mil.nga.proj.ProjectionFactory.getProjection(ProjectionFactory.java:454)
at mil.nga.geopackage.srs.SpatialReferenceSystem.getProjection(SpatialReferenceSystem.java:355)
at mil.nga.geopackage.tiles.matrixset.TileMatrixSet.getProjection(TileMatrixSet.java:268)
at mil.nga.geopackage.tiles.user.TileDao.<init>(TileDao.java:92)
at mil.nga.geopackage.GeoPackageImpl.getTileDao(GeoPackageImpl.java:262)
at mil.nga.geopackage.GeoPackageImpl.getTileDao(GeoPackageImpl.java:336)
at mil.nga.mapcache.repository.GeoPackageRepository.regenerateTableList(GeoPackageRepository.java:457)
at mil.nga.mapcache.viewmodel.GeoPackageViewModel.regenerateGeoPackageTableList(GeoPackageViewModel.java:458)
at mil.nga.mapcache.viewmodel.GeoPackageViewModel.importGeoPackage(GeoPackageViewModel.java:630)
at mil.nga.mapcache.load.ImportTask$ImportGeoTask.doInBackground(ImportTask.java:456)
at mil.nga.mapcache.load.ImportTask$ImportGeoTask.doInBackground(ImportTask.java:321)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)
2022-04-11 09:24:08.352 19309-19942/? W/ProjectionFactory: Failed to create projection for authority: EPSG, code: 3857, definition:
PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984"
,SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]]
,AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG",
"8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]]
,AUTHORITY["EPSG","9122"]]AUTHORITY["EPSG","4326"]],PROJECTION[
"Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER[
"scale_factor",1],PARAMETER["false_easting",0],PARAMETER[
"false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS[
"X",EAST],AXIS["Y",NORTH]
mil.nga.crs.CRSException: Unexpected end of text, null token
at mil.nga.crs.wkt.TextReader.readExpectedToken(TextReader.java:318)
at mil.nga.crs.wkt.CRSReader.readRightDelimiter(CRSReader.java:1159)
at mil.nga.crs.wkt.CRSReader.readProjectedCompat(CRSReader.java:4097)
at mil.nga.crs.wkt.CRSReader.readProjectedCompat(CRSReader.java:3996)
at mil.nga.crs.wkt.CRSReader.read(CRSReader.java:812)
at mil.nga.crs.wkt.CRSReader.read(CRSReader.java:117)
at mil.nga.crs.wkt.CRSReader.read(CRSReader.java:99)
at mil.nga.proj.ProjectionFactory.fromDefinitionParams(ProjectionFactory.java:1030)
at mil.nga.proj.ProjectionFactory.getProjection(ProjectionFactory.java:654)
at mil.nga.proj.ProjectionFactory.getProjection(ProjectionFactory.java:582)
at mil.nga.proj.ProjectionFactory.getProjection(ProjectionFactory.java:536)
at mil.nga.proj.ProjectionFactory.getProjection(ProjectionFactory.java:454)
at mil.nga.geopackage.srs.SpatialReferenceSystem.getProjection(SpatialReferenceSystem.java:355)
at mil.nga.geopackage.tiles.matrixset.TileMatrixSet.getProjection(TileMatrixSet.java:268)
at mil.nga.geopackage.tiles.user.TileDao.<init>(TileDao.java:92)
at mil.nga.geopackage.GeoPackageImpl.getTileDao(GeoPackageImpl.java:262)
at mil.nga.geopackage.GeoPackageImpl.getTileDao(GeoPackageImpl.java:336)
at mil.nga.mapcache.repository.GeoPackageRepository.regenerateTableList(GeoPackageRepository.java:457)
at mil.nga.mapcache.viewmodel.GeoPackageViewModel.regenerateGeoPackageTableList(GeoPackageViewModel.java:458)
at mil.nga.mapcache.viewmodel.GeoPackageViewModel.importGeoPackage(GeoPackageViewModel.java:630)
at mil.nga.mapcache.load.ImportTask$ImportGeoTask.doInBackground(ImportTask.java:456)
at mil.nga.mapcache.load.ImportTask$ImportGeoTask.doInBackground(ImportTask.java:321)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)
in current situation in application when i create new GeoPackage that is default store in
path :- /data/user/0/mil.nga.mapcache.test/databases/(createdPackageName.gpkg)
but i want to create this in my specific path like
path :- /storage/emulated/0/MyAppName/tiles/(createdPackageName.gpkg)
how can i do this ?
The current targetSdkVersion is 21. When upgrading to 23, handle requesting permissions at runtime instead of install time.
http://developer.android.com/training/permissions/requesting.html
Support opening GeoPackage (.gpkg) and GeoPackage extension (.gpkx) files from other apps, including file browsers, Gmail, and Google Drive.
Please fill out as much known and relevant information as possible.
Tiles to show
App crash due to the following output
08-19 20:41:37.832 6038 6038 W ProjectionFactory: Failed to create projection from name: EPSG:0
08-19 20:41:37.832 6038 6038 W ProjectionFactory: org.osgeo.proj4j.UnknownAuthorityCodeException: EPSG:0
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at org.osgeo.proj4j.CRSFactory.createFromName(CRSFactory.java:77)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at mil.nga.geopackage.projection.ProjectionFactory.fromName(ProjectionFactory.java:435)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at mil.nga.geopackage.projection.ProjectionFactory.getProjection(ProjectionFactory.java:214)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at mil.nga.geopackage.projection.ProjectionFactory.getProjection(ProjectionFactory.java:75)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at mil.nga.geopackage.projection.ProjectionFactory.getProjection(ProjectionFactory.java:46)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at org.osmdroid.gpkg.GeoPackageProvider.getTileSource(GeoPackageProvider.java:120)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at org.osmdroid.samplefragments.tileproviders.GeopackageSample.addOverlays(GeopackageSample.java:157)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at org.osmdroid.samplefragments.BaseSampleFragment.onActivityCreated(BaseSampleFragment.java:83)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1983)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1092)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at android.os.Handler.handleCallback(Handler.java:739)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at android.os.Handler.dispatchMessage(Handler.java:95)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at android.os.Looper.loop(Looper.java:148)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at android.app.ActivityThread.main(ActivityThread.java:5417)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at java.lang.reflect.Method.invoke(Native Method)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
08-19 20:41:37.832 6038 6038 W ProjectionFactory: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
08-19 20:41:37.832 6038 6038 D AndroidRuntime: Shutting down VM
08-19 20:41:37.832 6038 6038 E UncaughtException: Got an uncaught exception: mil.nga.geopackage.GeoPackageException: Failed to create projection for authority: EPSG, code: 0, definition: null, params: null
08-19 20:41:37.832 6038 6038 W System.err: mil.nga.geopackage.GeoPackageException: Failed to create projection for authority: EPSG, code: 0, definition: null, params: null
08-19 20:41:37.832 6038 6038 W System.err: at mil.nga.geopackage.projection.ProjectionFactory.getProjection(ProjectionFactory.java:222)
08-19 20:41:37.832 6038 6038 W System.err: at mil.nga.geopackage.projection.ProjectionFactory.getProjection(ProjectionFactory.java:75)
08-19 20:41:37.833 6038 6038 W System.err: at mil.nga.geopackage.projection.ProjectionFactory.getProjection(ProjectionFactory.java:46)
08-19 20:41:37.833 6038 6038 W System.err: at org.osmdroid.gpkg.GeoPackageProvider.getTileSource(GeoPackageProvider.java:120)
The ERDC White Horse tile set
I just updated from 1.3.1 which worked, fine, but 1.4.1 throws the mentioned error message.
Please fill out as much known and relevant information as possible.
Results of SQL queries at each zoom level:
SELECT COUNT(tile_data) from example3 where zoom_level = 0 returns COUNT(tile_data) = 0
SELECT COUNT(tile_data) from example3 where zoom_level = 1 returns COUNT(tile_data) = 0
SELECT COUNT(tile_data) from example3 where zoom_level = 2 returns COUNT(tile_data) = 0
SELECT COUNT(tile_data) from example3 where zoom_level = 3 returns COUNT(tile_data) = 0
SELECT COUNT(tile_data) from example3 where zoom_level = 4 returns COUNT(tile_data) = 0
SELECT COUNT(tile_data) from example3 where zoom_level = 5 returns COUNT(tile_data) = 272
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.