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 mil.nga.geopackage.GeoPackage;
import mil.nga.geopackage.GeoPackageFactory;
import mil.nga.geopackage.GeoPackageManager;
import mil.nga.geopackage.factory.GeoPackageFactory;
import static org.osmdroid.samplefragments.events.SampleMapEventListener.df;

View file

@ -37,13 +37,13 @@ import java.util.List;
import java.util.Set;
import mil.nga.geopackage.GeoPackage;
import mil.nga.geopackage.GeoPackageFactory;
import mil.nga.geopackage.GeoPackageManager;
import mil.nga.geopackage.factory.GeoPackageFactory;
import mil.nga.geopackage.features.user.FeatureCursor;
import mil.nga.geopackage.features.user.FeatureDao;
import mil.nga.geopackage.features.user.FeatureRow;
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;

View file

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

View file

@ -10,7 +10,7 @@ android {
compileSdkVersion findProperty('android.compileSdkVersion').toInteger()
defaultConfig {
minSdkVersion 14
minSdkVersion 23
}
buildTypes {
release {
@ -25,7 +25,10 @@ android {
withJavadocJar()
}
}
packagingOptions {
excludes += "DebugProbesKt.bin"
excludes += "com/j256/ormlite/core/LICENSE.txt"
}
}
dependencies {
@ -35,19 +38,21 @@ dependencies {
testImplementation 'junit:junit:4.13.2'
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.maps.android', module:'android-maps-utils'
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:2.0.1'
api 'mil.nga.geopackage:geopackage-core:6.5.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 'mil.nga:tiff:2.0.0'
api 'mil.nga:tiff:3.0.0'
}
task androidSourcesJar(type: Jar) {

View file

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

View file

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

View file

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