From e62760ebc00744e70a5b24b82320c8fe8e6e181e Mon Sep 17 00:00:00 2001 From: misaochan Date: Mon, 11 Jan 2016 16:55:17 +1300 Subject: [PATCH 1/6] Added constant, renamed cacheObj to app --- .../main/java/fr/free/nrw/commons/CommonsApplication.java | 2 -- .../java/fr/free/nrw/commons/caching/CacheController.java | 7 +++---- .../java/fr/free/nrw/commons/upload/ShareActivity.java | 6 +++--- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/CommonsApplication.java b/commons/src/main/java/fr/free/nrw/commons/CommonsApplication.java index c2d4eb525..d6e1de079 100644 --- a/commons/src/main/java/fr/free/nrw/commons/CommonsApplication.java +++ b/commons/src/main/java/fr/free/nrw/commons/CommonsApplication.java @@ -147,8 +147,6 @@ public class CommonsApplication extends Application { return bitmapSize / 1024; } }; - - } //For caching area -> categories diff --git a/commons/src/main/java/fr/free/nrw/commons/caching/CacheController.java b/commons/src/main/java/fr/free/nrw/commons/caching/CacheController.java index 41d01c3c2..a5cc63242 100644 --- a/commons/src/main/java/fr/free/nrw/commons/caching/CacheController.java +++ b/commons/src/main/java/fr/free/nrw/commons/caching/CacheController.java @@ -18,6 +18,7 @@ public class CacheController { private double xMinus, xPlus, yMinus, yPlus; private static final String TAG = CacheController.class.getName(); + private static final int EARTH_RADIUS = 6378137; public CacheController() { quadTree = new QuadTree(-180, -90, +180, +90); @@ -75,14 +76,12 @@ public class CacheController { double lat = y; double lon = x; - //Earth’s radius, sphere - double radius=6378137; //offsets in meters double offset = 100; //Coordinate offsets in radians - double dLat = offset/radius; - double dLon = offset/(radius*Math.cos(Math.PI*lat/180)); + double dLat = offset/EARTH_RADIUS; + double dLon = offset/(EARTH_RADIUS*Math.cos(Math.PI*lat/180)); //OffsetPosition, decimal degrees yPlus = lat + dLat * 180/Math.PI; diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index bb40f4fe1..4ab76b949 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -64,7 +64,7 @@ public class ShareActivity if (cacheFound == false) { //Has to be called after apiCall.request() - cacheObj.cacheData.cacheCategory(); + app.cacheData.cacheCategory(); Log.d(TAG, "Cache the categories found"); } @@ -205,11 +205,11 @@ public class ShareActivity if (decimalCoords != null) { Log.d(TAG, "Decimal coords of image: " + decimalCoords); - cacheObj.cacheData.setQtPoint(decLongitude, decLatitude); + app.cacheData.setQtPoint(decLongitude, decLatitude); MwVolleyApi apiCall = new MwVolleyApi(this); - List displayCatList = cacheObj.cacheData.findCategory(); + List displayCatList = app.cacheData.findCategory(); //if no categories found in cache, call MW API to match image coords with nearby Commons categories if (displayCatList.size() == 0) { From 9baafdf82bbca1a09ea821ed2feb71f55e5b214a Mon Sep 17 00:00:00 2001 From: misaochan Date: Mon, 11 Jan 2016 16:56:49 +1300 Subject: [PATCH 2/6] Remove cacheObj --- .../main/java/fr/free/nrw/commons/upload/ShareActivity.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index 4ab76b949..d66543c63 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -191,9 +191,7 @@ public class ShareActivity //convert image Uri to file path FilePathConverter uriObj = new FilePathConverter(this, mediaUri); String filePath = uriObj.getFilePath(); - - //Using global singleton to get CacheController to last longer than the activity lifecycle - cacheObj = ((CommonsApplication)this.getApplication()); + if (filePath != null) { //extract the coordinates of image in decimal degrees From 5d4768e1ee0aec6af9ab24b127b78896bdbfe5b2 Mon Sep 17 00:00:00 2001 From: misaochan Date: Mon, 11 Jan 2016 17:02:02 +1300 Subject: [PATCH 3/6] Simplify catList is empty logic --- .../java/fr/free/nrw/commons/upload/ShareActivity.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index d66543c63..d81aaea6b 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -191,7 +191,7 @@ public class ShareActivity //convert image Uri to file path FilePathConverter uriObj = new FilePathConverter(this, mediaUri); String filePath = uriObj.getFilePath(); - + if (filePath != null) { //extract the coordinates of image in decimal degrees @@ -206,11 +206,11 @@ public class ShareActivity app.cacheData.setQtPoint(decLongitude, decLatitude); MwVolleyApi apiCall = new MwVolleyApi(this); - List displayCatList = app.cacheData.findCategory(); - + boolean catListEmpty = displayCatList.isEmpty(); + //if no categories found in cache, call MW API to match image coords with nearby Commons categories - if (displayCatList.size() == 0) { + if (catListEmpty) { cacheFound = false; apiCall.request(decimalCoords); Log.d(TAG, "displayCatList size 0, calling MWAPI" + displayCatList.toString()); From 9cd0f8fb5ae23026611f004e4cc00e04b7eff48d Mon Sep 17 00:00:00 2001 From: misaochan Date: Mon, 11 Jan 2016 17:05:08 +1300 Subject: [PATCH 4/6] Moved variables inside if block --- .../java/fr/free/nrw/commons/upload/ShareActivity.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index d81aaea6b..c6eb6698b 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -198,17 +198,20 @@ public class ShareActivity Log.d(TAG, "Calling GPSExtractor"); GPSExtractor imageObj = new GPSExtractor(filePath); String decimalCoords = imageObj.getCoords(); - double decLongitude = imageObj.getDecLongitude(); - double decLatitude = imageObj.getDecLatitude(); + if (decimalCoords != null) { + double decLongitude = imageObj.getDecLongitude(); + double decLatitude = imageObj.getDecLatitude(); + Log.d(TAG, "Decimal coords of image: " + decimalCoords); app.cacheData.setQtPoint(decLongitude, decLatitude); MwVolleyApi apiCall = new MwVolleyApi(this); + List displayCatList = app.cacheData.findCategory(); boolean catListEmpty = displayCatList.isEmpty(); - + //if no categories found in cache, call MW API to match image coords with nearby Commons categories if (catListEmpty) { cacheFound = false; From 6537ff217cf38d6b00f8d6d3a43b34e938fc24ea Mon Sep 17 00:00:00 2001 From: misaochan Date: Mon, 11 Jan 2016 17:48:39 +1300 Subject: [PATCH 5/6] Tidied up displayCatList with List cas --- .../nrw/commons/caching/CacheController.java | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/caching/CacheController.java b/commons/src/main/java/fr/free/nrw/commons/caching/CacheController.java index a5cc63242..ba749df28 100644 --- a/commons/src/main/java/fr/free/nrw/commons/caching/CacheController.java +++ b/commons/src/main/java/fr/free/nrw/commons/caching/CacheController.java @@ -46,29 +46,23 @@ public class CacheController { //Convert decLatitude and decLongitude to a coordinate offset range convertCoordRange(); pointsFound = quadTree.searchWithin(xMinus, yMinus, xPlus, yPlus); - List displayCatList = new ArrayList(); + List displayCatList = new ArrayList(); Log.d(TAG, "Points found in quadtree: " + pointsFound); - List flatCatList = new ArrayList(); - if (pointsFound.length != 0) { Log.d(TAG, "Entering for loop"); - int index = 0; + for (Point point : pointsFound) { Log.d(TAG, "Nearby point: " + point.toString()); - Object cat = point.getValue(); - Log.d(TAG, "Nearby cat: " + cat); - displayCatList.add(index, cat); - index++; + displayCatList = (List)point.getValue(); + Log.d(TAG, "Nearby cat: " + point.getValue()); } - //FIXME: temporary, can't figure out why for loop always only accesses 1 point - flatCatList = ((ArrayList)displayCatList.get(0)); - Log.d(TAG, "Categories found in cache: " + flatCatList.toString()); + Log.d(TAG, "Categories found in cache: " + displayCatList.toString()); } else { Log.d(TAG, "No categories found in cache"); } - return flatCatList; + return displayCatList; } public void convertCoordRange() { From 0fe4bcc4c77c4aab32f509268d6caed8b01fafb4 Mon Sep 17 00:00:00 2001 From: misaochan Date: Mon, 11 Jan 2016 17:50:46 +1300 Subject: [PATCH 6/6] Added algorithm link for searchWithin() --- .../main/java/fr/free/nrw/commons/caching/CacheController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/commons/src/main/java/fr/free/nrw/commons/caching/CacheController.java b/commons/src/main/java/fr/free/nrw/commons/caching/CacheController.java index ba749df28..2681fb606 100644 --- a/commons/src/main/java/fr/free/nrw/commons/caching/CacheController.java +++ b/commons/src/main/java/fr/free/nrw/commons/caching/CacheController.java @@ -65,6 +65,7 @@ public class CacheController { return displayCatList; } + //Based on algorithm at http://gis.stackexchange.com/questions/2951/algorithm-for-offsetting-a-latitude-longitude-by-some-amount-of-meters public void convertCoordRange() { //Position, decimal degrees double lat = y;