Updated NGA GEOPackage core from 2.0.1 to 6.5.0 (#1853)

* Updated NGA GEOPackage core from 2.0.1 to 6.5.0

* Updated all references of old NGA core version

* updated other libraries

* fixed index mistake

* updated geopackage-android 6.6.0 -> compileSDK was reverted back

* updated references to new Objects

* testing suggestions

* Fixed imports

* had to raise minSdkVersion in osmdroid-geopackage gradle
This commit is contained in:
PWRxPSYCHO 2023-03-31 18:36:43 -04:00 committed by GitHub
parent 8bc4f6d943
commit ddfef5ec55
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 62 additions and 60 deletions

View file

@ -34,8 +34,8 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import mil.nga.geopackage.GeoPackage; import mil.nga.geopackage.GeoPackage;
import mil.nga.geopackage.GeoPackageFactory;
import mil.nga.geopackage.GeoPackageManager; import mil.nga.geopackage.GeoPackageManager;
import mil.nga.geopackage.factory.GeoPackageFactory;
import static org.osmdroid.samplefragments.events.SampleMapEventListener.df; import static org.osmdroid.samplefragments.events.SampleMapEventListener.df;

View file

@ -37,13 +37,13 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import mil.nga.geopackage.GeoPackage; import mil.nga.geopackage.GeoPackage;
import mil.nga.geopackage.GeoPackageFactory;
import mil.nga.geopackage.GeoPackageManager; import mil.nga.geopackage.GeoPackageManager;
import mil.nga.geopackage.factory.GeoPackageFactory;
import mil.nga.geopackage.features.user.FeatureCursor; import mil.nga.geopackage.features.user.FeatureCursor;
import mil.nga.geopackage.features.user.FeatureDao; import mil.nga.geopackage.features.user.FeatureDao;
import mil.nga.geopackage.features.user.FeatureRow; import mil.nga.geopackage.features.user.FeatureRow;
import mil.nga.geopackage.geom.GeoPackageGeometryData; import mil.nga.geopackage.geom.GeoPackageGeometryData;
import mil.nga.wkb.geom.Geometry; import mil.nga.sf.Geometry;
import static org.osmdroid.samplefragments.events.SampleMapEventListener.df; import static org.osmdroid.samplefragments.events.SampleMapEventListener.df;

View file

@ -45,8 +45,8 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import mil.nga.geopackage.GeoPackageFactory;
import mil.nga.geopackage.GeoPackageManager; import mil.nga.geopackage.GeoPackageManager;
import mil.nga.geopackage.factory.GeoPackageFactory;
/** /**
* lets you pick one or more offline tile archives/providers * lets you pick one or more offline tile archives/providers

View file

@ -10,7 +10,7 @@ android {
compileSdkVersion findProperty('android.compileSdkVersion').toInteger() compileSdkVersion findProperty('android.compileSdkVersion').toInteger()
defaultConfig { defaultConfig {
minSdkVersion 14 minSdkVersion 23
} }
buildTypes { buildTypes {
release { release {
@ -25,7 +25,10 @@ android {
withJavadocJar() withJavadocJar()
} }
} }
packagingOptions {
excludes += "DebugProbesKt.bin"
excludes += "com/j256/ormlite/core/LICENSE.txt"
}
} }
dependencies { dependencies {
@ -35,19 +38,21 @@ dependencies {
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
api project(':osmdroid-android') api project(':osmdroid-android')
api ("mil.nga.geopackage:geopackage-android:2.0.1"){ api ("mil.nga.geopackage:geopackage-android:6.6.0"){
exclude group: 'com.google.android.gms', module:'play-services' exclude group: 'com.google.android.gms', module:'play-services'
exclude group: 'com.google.maps.android', module:'android-maps-utils' exclude group: 'com.google.maps.android', module:'android-maps-utils'
exclude group: 'com.android.support',module: 'support-v13' exclude group: 'com.android.support',module: 'support-v13'
exclude group: 'org.osmdroid.gpkg'
exclude module: 'ormlite-core'
exclude group: 'com.j256.ormlite'
} }
api 'com.j256.ormlite:ormlite-android:5.0' api 'mil.nga.geopackage:geopackage-core:6.5.0'
api 'mil.nga.geopackage:geopackage-core:2.0.1'
api 'ar.com.hjg:pngj:2.1.0' api 'ar.com.hjg:pngj:2.1.0'
api 'mil.nga:tiff:1.0.3' api 'mil.nga:tiff:3.0.0'
api 'ar.com.hjg:pngj:2.1.0' api 'ar.com.hjg:pngj:2.1.0'
api 'mil.nga:tiff:2.0.0' api 'mil.nga:tiff:3.0.0'
} }
task androidSourcesJar(type: Jar) { task androidSourcesJar(type: Jar) {

View file

@ -55,25 +55,26 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import mil.nga.geopackage.GeoPackageException; import mil.nga.geopackage.GeoPackageException;
import mil.nga.geopackage.projection.Projection;
import mil.nga.geopackage.projection.ProjectionConstants; import mil.nga.proj.Projection;
import mil.nga.geopackage.projection.ProjectionTransform; import mil.nga.proj.ProjectionConstants;
import mil.nga.wkb.geom.CircularString; import mil.nga.proj.ProjectionTransform;
import mil.nga.wkb.geom.CompoundCurve; import mil.nga.sf.CircularString;
import mil.nga.wkb.geom.Curve; import mil.nga.sf.CompoundCurve;
import mil.nga.wkb.geom.CurvePolygon; import mil.nga.sf.Curve;
import mil.nga.wkb.geom.Geometry; import mil.nga.sf.CurvePolygon;
import mil.nga.wkb.geom.GeometryCollection; import mil.nga.sf.Geometry;
import mil.nga.wkb.geom.GeometryType; import mil.nga.sf.GeometryCollection;
import mil.nga.wkb.geom.LineString; import mil.nga.sf.GeometryType;
import mil.nga.wkb.geom.MultiLineString; import mil.nga.sf.LineString;
import mil.nga.wkb.geom.MultiPoint; import mil.nga.sf.MultiLineString;
import mil.nga.wkb.geom.MultiPolygon; import mil.nga.sf.MultiPoint;
import mil.nga.wkb.geom.Point; import mil.nga.sf.MultiPolygon;
import mil.nga.wkb.geom.Polygon; import mil.nga.sf.Point;
import mil.nga.wkb.geom.PolyhedralSurface; import mil.nga.sf.Polygon;
import mil.nga.wkb.geom.TIN; import mil.nga.sf.PolyhedralSurface;
import mil.nga.wkb.geom.Triangle; import mil.nga.sf.TIN;
import mil.nga.sf.Triangle;
/** /**
* created on 8/19/2017. * created on 8/19/2017.
* *
@ -169,7 +170,8 @@ public class OsmMapShapeConverter {
*/ */
public Point toWgs84(Point point) { public Point toWgs84(Point point) {
if (projection != null) { if (projection != null) {
point = toWgs84.transform(point); double[] transformedPoint = toWgs84.transform(point.getX(), point.getY());
point = new Point(transformedPoint[0], transformedPoint[1]);
} }
return point; return point;
} }
@ -182,7 +184,8 @@ public class OsmMapShapeConverter {
*/ */
public Point toProjection(Point point) { public Point toProjection(Point point) {
if (projection != null) { if (projection != null) {
point = fromWgs84.transform(point); double[] transformedPoint = toWgs84.transform(point.getX(), point.getY());
point = new Point(transformedPoint[0], transformedPoint[1]);
} }
return point; return point;
} }
@ -195,14 +198,12 @@ public class OsmMapShapeConverter {
*/ */
public GeoPoint toLatLng2(Point point) { public GeoPoint toLatLng2(Point point) {
point = toWgs84(point); point = toWgs84(point);
GeoPoint latLng = new GeoPoint(point.getY(), point.getX()); return new GeoPoint(point.getY(), point.getX());
return latLng;
} }
public GeoPoint toLatLng(Point point) { public GeoPoint toLatLng(Point point) {
point = toWgs84(point); point = toWgs84(point);
GeoPoint latLng = new GeoPoint(point.getY(), point.getX()); return new GeoPoint(point.getY(), point.getX());
return latLng;
} }
@ -716,7 +717,6 @@ public class OsmMapShapeConverter {
* Add a Polygon to the map * Add a Polygon to the map
* *
* @param map * @param map
* @return * @return
*/ */
public static org.osmdroid.views.overlay.Polygon addPolygonToMap( public static org.osmdroid.views.overlay.Polygon addPolygonToMap(

View file

@ -33,7 +33,8 @@ package org.osmdroid.gpkg.overlay.features;
import java.util.List; import java.util.List;
import mil.nga.wkb.geom.GeometryType; import mil.nga.sf.GeometryType;
/** /**
* Google Map Shape * Google Map Shape

View file

@ -11,8 +11,8 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import mil.nga.geopackage.GeoPackage; import mil.nga.geopackage.GeoPackage;
import mil.nga.geopackage.GeoPackageFactory;
import mil.nga.geopackage.GeoPackageManager; import mil.nga.geopackage.GeoPackageManager;
import mil.nga.geopackage.factory.GeoPackageFactory;
import mil.nga.geopackage.features.index.FeatureIndexManager; import mil.nga.geopackage.features.index.FeatureIndexManager;
import mil.nga.geopackage.features.index.FeatureIndexType; import mil.nga.geopackage.features.index.FeatureIndexType;
import mil.nga.geopackage.features.user.FeatureDao; import mil.nga.geopackage.features.user.FeatureDao;

View file

@ -7,6 +7,7 @@ import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.util.Log; import android.util.Log;
import org.locationtech.proj4j.ProjCoordinate;
import org.osmdroid.api.IMapView; import org.osmdroid.api.IMapView;
import org.osmdroid.config.Configuration; import org.osmdroid.config.Configuration;
import org.osmdroid.tileprovider.modules.IFilesystemCache; import org.osmdroid.tileprovider.modules.IFilesystemCache;
@ -24,13 +25,13 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import mil.nga.geopackage.GeoPackage; import mil.nga.geopackage.GeoPackage;
import mil.nga.geopackage.GeoPackageFactory;
import mil.nga.geopackage.GeoPackageManager; import mil.nga.geopackage.GeoPackageManager;
import mil.nga.geopackage.factory.GeoPackageFactory;
import mil.nga.geopackage.projection.ProjectionConstants;
import mil.nga.geopackage.projection.ProjectionTransform;
import mil.nga.geopackage.tiles.retriever.GeoPackageTile; import mil.nga.geopackage.tiles.retriever.GeoPackageTile;
import mil.nga.geopackage.tiles.retriever.GeoPackageTileRetriever; import mil.nga.geopackage.tiles.retriever.GeoPackageTileRetriever;
import mil.nga.geopackage.tiles.user.TileDao; import mil.nga.geopackage.tiles.user.TileDao;
import mil.nga.proj.ProjectionConstants;
import mil.nga.proj.ProjectionTransform;
/** /**
* Geopackage raster tile provider * Geopackage raster tile provider
@ -59,9 +60,9 @@ public class GeoPackageMapTileModuleProvider extends MapTileModuleProviderBase {
// Import database // Import database
for (int i = 0; i < pFile.length; i++) { for (File file : pFile) {
try { try {
manager.importGeoPackage((pFile[i])); manager.importGeoPackage(file);
} catch (Exception ex) { } catch (Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
} }
@ -128,7 +129,8 @@ public class GeoPackageMapTileModuleProvider extends MapTileModuleProviderBase {
TileDao tileDao = open.getTileDao(tileTables.get(k)); TileDao tileDao = open.getTileDao(tileTables.get(k));
ProjectionTransform transform = tileDao.getProjection().getTransformation(ProjectionConstants.EPSG_WORLD_GEODETIC_SYSTEM); ProjectionTransform transform = tileDao.getProjection().getTransformation(ProjectionConstants.EPSG_WORLD_GEODETIC_SYSTEM);
mil.nga.geopackage.BoundingBox boundingBox = transform.transform(tileDao.getBoundingBox()); double[] transformed = transform.transform(tileDao.getBoundingBox().getMinLongitude(), tileDao.getBoundingBox().getMinLatitude(), tileDao.getBoundingBox().getMaxLongitude(), tileDao.getBoundingBox().getMaxLatitude());
mil.nga.geopackage.BoundingBox boundingBox = new mil.nga.geopackage.BoundingBox(transformed[0], transformed[1], transformed[2], transformed[3]);
BoundingBox bounds = new BoundingBox(Math.min(tileSystem.getMaxLatitude(), boundingBox.getMaxLatitude()), BoundingBox bounds = new BoundingBox(Math.min(tileSystem.getMaxLatitude(), boundingBox.getMaxLatitude()),
boundingBox.getMaxLongitude(), boundingBox.getMaxLongitude(),
Math.max(tileSystem.getMinLatitude(), boundingBox.getMinLatitude()), Math.max(tileSystem.getMinLatitude(), boundingBox.getMinLatitude()),
@ -157,8 +159,8 @@ public class GeoPackageMapTileModuleProvider extends MapTileModuleProviderBase {
TileDao tileDao = open.getTileDao(tileTables.get(k)); TileDao tileDao = open.getTileDao(tileTables.get(k));
ProjectionTransform transform = tileDao.getProjection().getTransformation(ProjectionConstants.EPSG_WORLD_GEODETIC_SYSTEM); ProjectionTransform transform = tileDao.getProjection().getTransformation(ProjectionConstants.EPSG_WORLD_GEODETIC_SYSTEM);
mil.nga.geopackage.BoundingBox boundingBox = transform.transform(tileDao.getBoundingBox()); double[] transformed = transform.transform(tileDao.getBoundingBox().getMinLongitude(), tileDao.getBoundingBox().getMinLatitude(), tileDao.getBoundingBox().getMaxLongitude(), tileDao.getBoundingBox().getMaxLatitude());
mil.nga.geopackage.BoundingBox boundingBox = new mil.nga.geopackage.BoundingBox(transformed[0], transformed[1], transformed[2], transformed[3]);
BoundingBox bounds = new BoundingBox(Math.min(tileSystem.getMaxLatitude(), boundingBox.getMaxLatitude()), BoundingBox bounds = new BoundingBox(Math.min(tileSystem.getMaxLatitude(), boundingBox.getMaxLatitude()),
boundingBox.getMaxLongitude(), boundingBox.getMaxLongitude(),
Math.max(tileSystem.getMinLatitude(), boundingBox.getMinLatitude()), Math.max(tileSystem.getMinLatitude(), boundingBox.getMinLatitude()),
@ -174,11 +176,9 @@ public class GeoPackageMapTileModuleProvider extends MapTileModuleProviderBase {
@Override @Override
public void detach() { public void detach() {
if (tileSources != null) { if (tileSources != null) {
Iterator<GeoPackage> iterator = tileSources.iterator(); for (GeoPackage tileSource : tileSources) {
while (iterator.hasNext()) { tileSource.close();
iterator.next().close();
} }
tileSources.clear(); tileSources.clear();
} }
@ -191,11 +191,9 @@ public class GeoPackageMapTileModuleProvider extends MapTileModuleProviderBase {
@Override @Override
public Drawable loadTile(final long pMapTileIndex) { public Drawable loadTile(final long pMapTileIndex) {
try { try {
Drawable mapTile = getMapTile(pMapTileIndex); return getMapTile(pMapTileIndex);
return mapTile;
} catch (final Throwable e) { } catch (final Throwable e) {
Log.e(IMapView.LOGTAG, "Error loading tile", e); Log.e(IMapView.LOGTAG, "Error loading tile", e);
} finally {
} }
return null; return null;

View file

@ -20,11 +20,10 @@ import org.osmdroid.tileprovider.util.SimpleRegisterReceiver;
import org.osmdroid.util.BoundingBox; import org.osmdroid.util.BoundingBox;
import java.io.File; import java.io.File;
import java.util.Iterator;
import mil.nga.geopackage.GeoPackage; import mil.nga.geopackage.GeoPackage;
import mil.nga.geopackage.projection.ProjectionTransform;
import mil.nga.geopackage.tiles.user.TileDao; import mil.nga.geopackage.tiles.user.TileDao;
import mil.nga.proj.ProjectionTransform;
/** /**
* GeoPackage + * GeoPackage +
@ -91,9 +90,7 @@ public class GeoPackageProvider extends MapTileProviderArray implements IMapTile
} }
public GeopackageRasterTileSource getTileSource(String database, String table) { public GeopackageRasterTileSource getTileSource(String database, String table) {
Iterator<GeoPackage> iterator = geopackage.tileSources.iterator(); for (GeoPackage next : geopackage.tileSources) {
while (iterator.hasNext()) {
GeoPackage next = iterator.next();
if (next.getName().equalsIgnoreCase(database)) { if (next.getName().equalsIgnoreCase(database)) {
//found the database //found the database
if (next.getTileTables().contains(table)) { if (next.getTileTables().contains(table)) {
@ -101,7 +98,8 @@ public class GeoPackageProvider extends MapTileProviderArray implements IMapTile
TileDao tileDao = next.getTileDao(table); TileDao tileDao = next.getTileDao(table);
mil.nga.geopackage.BoundingBox boundingBox = tileDao.getBoundingBox(); mil.nga.geopackage.BoundingBox boundingBox = tileDao.getBoundingBox();
ProjectionTransform transformation = tileDao.getProjection().getTransformation(tileDao.getProjection()); ProjectionTransform transformation = tileDao.getProjection().getTransformation(tileDao.getProjection());
boundingBox = transformation.transform(boundingBox); double[] transformed = transformation.transform(boundingBox.getMinLongitude(), boundingBox.getMinLatitude(), boundingBox.getMaxLongitude(), boundingBox.getMaxLatitude());
boundingBox = new mil.nga.geopackage.BoundingBox(transformed[0], transformed[1], transformed[2], transformed[3]);
BoundingBox bounds = new BoundingBox(boundingBox.getMaxLatitude(), boundingBox.getMaxLongitude(), boundingBox.getMinLatitude(), boundingBox.getMinLongitude()); BoundingBox bounds = new BoundingBox(boundingBox.getMaxLatitude(), boundingBox.getMaxLongitude(), boundingBox.getMinLatitude(), boundingBox.getMinLongitude());
return new GeopackageRasterTileSource(database, table, (int) tileDao.getMinZoom(), (int) tileDao.getMaxZoom(), bounds); return new GeopackageRasterTileSource(database, table, (int) tileDao.getMinZoom(), (int) tileDao.getMaxZoom(), bounds);
} }