[mkgmap-splitter] 01/06: Imported Upstream version 0.0.0+svn423

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Mon Jun 1 08:00:40 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository mkgmap-splitter.

commit 514e9688f1538ffa39cef7c95eaab32cdecbde8f
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Mon Jun 1 09:12:52 2015 +0200

    Imported Upstream version 0.0.0+svn423
---
 doc/splitter.1                                     |  9 ++++++++
 doc/splitter.1.xml                                 | 15 +++++++++++++
 resources/splitter-version.properties              |  4 ++--
 src/uk/me/parabola/splitter/Main.java              | 23 ++++++++++++++-----
 .../me/parabola/splitter/ProblemListProcessor.java | 26 ++++++++++++++++++----
 .../me/parabola/splitter/args/SplitterParams.java  |  6 +++++
 6 files changed, 72 insertions(+), 11 deletions(-)

diff --git a/doc/splitter.1 b/doc/splitter.1
index 2920cdc..4092458 100644
--- a/doc/splitter.1
+++ b/doc/splitter.1
@@ -116,6 +116,15 @@ The o5m format is faster to read, but requires more space on the disk.
 There are a number of options to fine tune things that you might want to
 try.
 .TP 
+\*(T<\fB\-\-wanted\-admin\-level=\fR\*(T>\fIint\fR
+Specifies the lowest admin_level value of boundary relations that 
+should be kept complete. Used to filter boundary relations for
+problem-list processing. The default value 5 means that 
+boundary relations are kept complete when the admin_level is
+5 or higher (5..11).
+The parameter is ignored if \*(T<\fB\-\-keep\-complete=false\fR\*(T>. 
+Default: 5
+.TP 
 \*(T<\fB\-\-boundary\-tags=\fR\*(T>\fIstring\fR
 A comma separated list of tag values for relations.
 Used to filter multipolygon and boundary relations for
diff --git a/doc/splitter.1.xml b/doc/splitter.1.xml
index 53789ba..e570b2a 100644
--- a/doc/splitter.1.xml
+++ b/doc/splitter.1.xml
@@ -146,6 +146,21 @@ JAVA_OPTS="<replaceable>-Xmx512m</replaceable>" <command>mkgmap-splitter</comman
     <variablelist>
 
       <varlistentry>
+        <term><option>--wanted-admin-level=<replaceable>string</replaceable></option></term>
+        <listitem>
+          <para>
+            Specifies the lowest admin_level value of boundary relations that 
+						should be kept complete. Used to filter boundary relations for
+            problem-list processing. The default value 5 means that 
+            boundary relations are kept complete when the admin_level is
+            5 or higher (5..11). 
+						The parameter is ignored if <option>--keep-complete=false</option>.
+            Default: 5
+          </para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
         <term><option>--boundary-tags=<replaceable>string</replaceable></option></term>
         <listitem>
           <para>
diff --git a/resources/splitter-version.properties b/resources/splitter-version.properties
index 1d1c589..b3dd098 100644
--- a/resources/splitter-version.properties
+++ b/resources/splitter-version.properties
@@ -1,2 +1,2 @@
-svn.version: 421
-build.timestamp: 2015-01-10T20:01:10+0000
+svn.version: 423
+build.timestamp: 2015-05-22T08:27:25+0100
diff --git a/src/uk/me/parabola/splitter/Main.java b/src/uk/me/parabola/splitter/Main.java
index 3d17514..0e983dc 100644
--- a/src/uk/me/parabola/splitter/Main.java
+++ b/src/uk/me/parabola/splitter/Main.java
@@ -121,6 +121,9 @@ public class Main {
 	private boolean keepComplete;
 	
 	private String problemReport;
+
+	// option for fine tuning the keep-complete processing 
+	private int wantedAdminLevel;
 	
 	private String[] boundaryTags;
 	
@@ -444,7 +447,7 @@ public class Main {
 				overlapAmount = Integer.valueOf(overlap);
 			} 
 			catch (NumberFormatException e){
-				throw new IllegalArgumentException("Error: --overlap=" + overlap + " is not is not a valid option.");
+				throw new IllegalArgumentException("--overlap=" + overlap + " is not is not a valid option.");
 			}
 		}
 		problemReport = params.getProblemReport();
@@ -453,7 +456,16 @@ public class Main {
 			Pattern csvSplitter = Pattern.compile(Pattern.quote(","));
 			boundaryTags = csvSplitter.split(boundaryTagsParm);
 		}
-
+		
+		if (keepComplete){
+			String wantedAdminLevelString = params.getWantedAdminLevel();
+			try {
+				wantedAdminLevel = Integer.valueOf(wantedAdminLevelString);
+			} catch (NumberFormatException e) {
+				throw new IllegalArgumentException("--admin-level=" + wantedAdminLevelString + " is not is not a valid option.");
+			}
+		}
+		
 		// plausibility checks and default handling 
 		if (keepComplete){
 			if (fileNameList.size() > 1){
@@ -500,7 +512,7 @@ public class Main {
 				File f = new File(polygonFile);
 
 				if (!f.exists()){
-					throw new IllegalArgumentException("Error: polygon file doesn't exist: " + polygonFile);
+					throw new IllegalArgumentException("polygon file doesn't exist: " + polygonFile);
 				}
 				PolygonFileReader polyReader = new PolygonFileReader(f);
 				java.awt.geom.Area polygonInDegrees = polyReader.loadPolygon();
@@ -543,14 +555,14 @@ public class Main {
 		}
 		stopAfter = params.getStopAfter();
 		if (Arrays.asList("split", "gen-problem-list" , "handle-problem-list", "dist").contains(stopAfter) == false){
-			throw new IllegalArgumentException("Error: the --stop-after parameter must be either split, gen-problem-list, handle-problem-list, or dist.");
+			throw new IllegalArgumentException("the --stop-after parameter must be either split, gen-problem-list, handle-problem-list, or dist.");
 		}
 		
 		precompSeaDir = params.getPrecompSea();
 		if (precompSeaDir != null){
 			File dir = new File (precompSeaDir);
 			if (dir.exists() == false || dir.canRead() == false){
-				throw new IllegalArgumentException("Error: precomp-sea directory doesn't exist or is not readable: " + precompSeaDir);  
+				throw new IllegalArgumentException("precomp-sea directory doesn't exist or is not readable: " + precompSeaDir);  
 			}
 		}
 		if (polygons.isEmpty() == false && numTiles > 0){
@@ -712,6 +724,7 @@ public class Main {
 			ProblemListProcessor processor = new ProblemListProcessor(
 					dataStorer, writerOffset, numWritersThisPass,
 					problemWaysThisPart, problemRelsThisPart, oneTileOnlyRels, boundaryTags);
+			processor.setWantedAdminLevel(wantedAdminLevel);
 			
 			boolean done = false;
 			while (!done){
diff --git a/src/uk/me/parabola/splitter/ProblemListProcessor.java b/src/uk/me/parabola/splitter/ProblemListProcessor.java
index 69fcdcf..2b4e0fb 100644
--- a/src/uk/me/parabola/splitter/ProblemListProcessor.java
+++ b/src/uk/me/parabola/splitter/ProblemListProcessor.java
@@ -57,7 +57,7 @@ class ProblemListProcessor extends AbstractMapProcessor {
 	private boolean isFirstPass;
 	private boolean isLastPass;
 	private WriterIndex writerIndex;
-
+	private final HashSet<String> wantedBoundaryAdminLevels = new HashSet<>();
 	
 	private final HashSet<String> wantedBoundaryTagValues;
 	
@@ -89,12 +89,21 @@ class ProblemListProcessor extends AbstractMapProcessor {
 		this.problemRels = problemRels;
 		this.oneTileOnlyRels = oneTileOnlyRels;
 		if (boundaryTagList != null && boundaryTagList.length > 0)
-			wantedBoundaryTagValues = new HashSet<String>(Arrays.asList(boundaryTagList));
+			wantedBoundaryTagValues = new HashSet<>(Arrays.asList(boundaryTagList));
 		else 
 			wantedBoundaryTagValues = null;
+		setWantedAdminLevel(5);
 	}
 	
-	
+	public void setWantedAdminLevel(int adminLevel) {
+		int min, max = 11;
+		min = Math.max(2, adminLevel);
+		wantedBoundaryAdminLevels.clear();
+		for (int i = min; i <= max; i++){
+			wantedBoundaryAdminLevels.add(Integer.toString(i));
+		}
+	}
+
 	@Override
 	public boolean skipTags() {
 		if (phase == PHASE1_NODES_AND_WAYS)
@@ -218,7 +227,7 @@ class ProblemListProcessor extends AbstractMapProcessor {
 		}
 	}
 	// default exclude list for boundary tag
-	private final static HashSet<String> unwantedBoundaryTagValues = new HashSet<String>(
+	private final static HashSet<String> unwantedBoundaryTagValues = new HashSet<>(
 			Arrays.asList("administrative", "postal_code", "political"));
 
 	@Override
@@ -230,6 +239,7 @@ class ProblemListProcessor extends AbstractMapProcessor {
 		boolean hasBoundaryTag = false;
 		boolean isWantedBoundary = (wantedBoundaryTagValues == null) ? true:false;
 		Iterator<Element.Tag> tags = rel.tagsIterator();
+		String admin_level = null;
 		while(tags.hasNext()) {
 			Element.Tag t = tags.next();
 			if ("type".equals(t.key)) {
@@ -248,6 +258,8 @@ class ProblemListProcessor extends AbstractMapProcessor {
 					if (unwantedBoundaryTagValues.contains(t.value))
 						isWantedBoundary = false;
 				}
+			} else if ("admin_level".equals(t.key)){
+				admin_level = t.value;
 			}
 			
 			if (useThis)
@@ -255,6 +267,10 @@ class ProblemListProcessor extends AbstractMapProcessor {
 		}
 		if (isMPRelType && (isWantedBoundary || hasBoundaryTag == false))
 			useThis = true;
+		else if (isMPRelType && hasBoundaryTag  && admin_level != null){
+			if (wantedBoundaryAdminLevels.contains(admin_level))
+				useThis = true;
+		}
 		if (!useThis){
 			return;
 		}
@@ -373,4 +389,6 @@ class ProblemListProcessor extends AbstractMapProcessor {
 		// but it is difficult to detect these cases.
 		return writerCombis.cardinality() > 1;
 	}
+
+
 }
diff --git a/src/uk/me/parabola/splitter/args/SplitterParams.java b/src/uk/me/parabola/splitter/args/SplitterParams.java
index 318410b..c17bc8d 100644
--- a/src/uk/me/parabola/splitter/args/SplitterParams.java
+++ b/src/uk/me/parabola/splitter/args/SplitterParams.java
@@ -106,6 +106,12 @@ public interface SplitterParams {
 			+ "Used to filter multipolygon and boundary relations for problem-list processing.")
 	String getBoundaryTags();
 
+	@Option(defaultValue="5", description = "The lowest admin_level value that should be kept complete. Reasonable values are 2 .. 11." 
+			+ "Used to filter boundary relations for problem-list processing. Ignored when keep-complete is false.")
+	String getWantedAdminLevel();
+	
+	
+
 	@Option(defaultValue = "200000", description = "Search limit in split algo. Higher values may find better splits, but will take longer.")
 	int getSearchLimit();
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/mkgmap-splitter.git



More information about the Pkg-grass-devel mailing list