mirror of
https://github.com/mollyim/osmdroid.git
synced 2025-05-13 07:10:36 +01:00
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:
parent
8bc4f6d943
commit
ddfef5ec55
9 changed files with 62 additions and 60 deletions
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue