Compare commits
8 commits
041488b36c
...
b1e2fd03c7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1e2fd03c7 | ||
|
|
0ca2c3b569 | ||
|
|
209c58153d | ||
|
|
4a5f8f2daf | ||
|
|
5149e341e6 | ||
|
|
07320690ea | ||
|
|
1ea117f183 | ||
|
|
76f63dfde1 |
7 changed files with 98 additions and 13 deletions
|
|
@ -90,7 +90,69 @@ public class DatabasePseudoTagProvider {
|
|||
}
|
||||
}
|
||||
|
||||
public DatabasePseudoTagProvider(String filename) {
|
||||
public DatabasePseudoTagProvider(String filename, String jdbcurl) {
|
||||
if (filename != null) doFileImport(filename);
|
||||
if (jdbcurl != null) doDatabaseImport(jdbcurl);
|
||||
}
|
||||
|
||||
private void doDatabaseImport(String jdbcurl) {
|
||||
|
||||
try (Connection conn = DriverManager.getConnection(jdbcurl)) {
|
||||
|
||||
System.out.println("DatabasePseudoTagProvider reading from database: " + jdbcurl);
|
||||
conn.setAutoCommit(false);
|
||||
|
||||
|
||||
Map<Map<String, String>, Map<String, String>> mapUnifier = new HashMap<>();
|
||||
CompactLongMap<Map<String, String>> data = new CompactLongMap<>();
|
||||
|
||||
String sql_all_tags = "SELECT * from all_tags";
|
||||
try(PreparedStatement psAllTags = conn.prepareStatement(sql_all_tags)) {
|
||||
|
||||
psAllTags.setFetchSize(100);
|
||||
|
||||
// process the results
|
||||
ResultSet rs = psAllTags.executeQuery();
|
||||
|
||||
long dbRows = 0L;
|
||||
while (rs.next()) {
|
||||
long osm_id = rs.getLong("losmid");
|
||||
Map<String, String> row = new HashMap<>(5);
|
||||
addDBTag(row, rs, "noise_class");
|
||||
addDBTag(row, rs, "river_class");
|
||||
addDBTag(row, rs, "forest_class");
|
||||
addDBTag(row, rs, "town_class");
|
||||
addDBTag(row, rs, "traffic_class");
|
||||
|
||||
// apply the instance-unifier for the row-map
|
||||
Map<String, String> knownRow = mapUnifier.get(row);
|
||||
if (knownRow != null) {
|
||||
row = knownRow;
|
||||
} else {
|
||||
mapUnifier.put(row, row);
|
||||
}
|
||||
data.put(osm_id, row);
|
||||
dbRows++;
|
||||
if (dbRows % 1000000L == 0L) {
|
||||
System.out.println(".. from database: rows =" + dbRows);
|
||||
}
|
||||
}
|
||||
System.out.println("freezing result map..");
|
||||
dbData = new FrozenLongMap<>(data);
|
||||
System.out.println("read from database: rows =" + dbData.size() + " unique rows=" + mapUnifier.size());
|
||||
}
|
||||
|
||||
} catch (SQLException g) {
|
||||
System.err.format("DatabasePseudoTagProvider execute sql .. SQL State: %s\n%s\n", g.getSQLState(), g.getMessage());
|
||||
System.exit(1);
|
||||
} catch (Exception f) {
|
||||
f.printStackTrace();
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void doFileImport(String filename) {
|
||||
|
||||
try (BufferedReader br = new BufferedReader(new InputStreamReader(
|
||||
filename.endsWith(".gz") ? new GZIPInputStream(new FileInputStream(filename)) : new FileInputStream(filename)))) {
|
||||
|
|
@ -158,12 +220,22 @@ public class DatabasePseudoTagProvider {
|
|||
return l;
|
||||
}
|
||||
|
||||
private static void addTag(Map<String, String> row, String s, String name) {
|
||||
private static void addTag(Map<String, String> row, String s, String name) {
|
||||
if (!s.isEmpty()) {
|
||||
row.put(name, s);
|
||||
}
|
||||
}
|
||||
|
||||
private static void addDBTag(Map<String, String> row, ResultSet rs, String name) {
|
||||
String v = null;
|
||||
try {
|
||||
v = rs.getString(name);
|
||||
} catch (Exception e) {}
|
||||
if (v != null) {
|
||||
row.put("estimated_" + name, v);
|
||||
}
|
||||
}
|
||||
|
||||
public void addTags(long osm_id, Map<String, String> map) {
|
||||
|
||||
if (map == null || !map.containsKey("highway")) {
|
||||
|
|
@ -194,6 +266,6 @@ public class DatabasePseudoTagProvider {
|
|||
pseudoTagsFound.put(key, cnt + 1L);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,7 +113,11 @@ public class OsmCutter extends MapCreatorBase {
|
|||
}
|
||||
|
||||
public void setDbTagFilename(String filename) {
|
||||
dbPseudoTagProvider = new DatabasePseudoTagProvider(filename);
|
||||
dbPseudoTagProvider = new DatabasePseudoTagProvider(filename, null);
|
||||
}
|
||||
|
||||
public void setDbTagDatabase(String jdbcurl) {
|
||||
dbPseudoTagProvider = new DatabasePseudoTagProvider(null, jdbcurl);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ public class OsmFastCutter extends MapCreatorBase {
|
|||
public static void main(String[] args) throws Exception {
|
||||
System.out.println("*** OsmFastCutter: cut an osm map in node-tiles + way-tiles");
|
||||
if (args.length != 11 && args.length != 12 && args.length != 13) {
|
||||
String common = "java OsmFastCutter <lookup-file> <node-dir> <way-dir> <node55-dir> <way55-dir> <border-file> <out-rel-file> <out-res-file> <filter-profile> <report-profile> <check-profile> <map-file> [db-tag-filename]";
|
||||
String common = "java OsmFastCutter <lookup-file> <node-dir> <way-dir> <node55-dir> <way55-dir> <border-file> <out-rel-file> <out-res-file> <filter-profile> <report-profile> <check-profile> <map-file> [db-tag-filename | db-tag-jdbcurl]";
|
||||
|
||||
System.out.println("usage: bzip2 -dc <map> | " + common);
|
||||
System.out.println("or : " + common + " <inputfile> ");
|
||||
|
|
@ -37,10 +37,16 @@ public class OsmFastCutter extends MapCreatorBase {
|
|||
);
|
||||
}
|
||||
|
||||
public static void doCut(File lookupFile, File nodeDir, File wayDir, File node55Dir, File way55Dir, File borderFile, File relFile, File resFile, File profileAll, File profileReport, File profileCheck, File mapFile, String dbTagFilename) throws Exception {
|
||||
public static void doCut(File lookupFile, File nodeDir, File wayDir, File node55Dir, File way55Dir, File borderFile, File relFile, File resFile, File profileAll, File profileReport, File profileCheck, File mapFile, String dbTagInfo) throws Exception {
|
||||
// **** run OsmCutter ****
|
||||
OsmCutter cutter = new OsmCutter();
|
||||
if (dbTagFilename != null) cutter.setDbTagFilename(dbTagFilename);
|
||||
if (dbTagInfo != null) {
|
||||
if (dbTagInfo.toLowerCase().startsWith("jdbc")) {
|
||||
cutter.setDbTagDatabase(dbTagInfo);
|
||||
} else {
|
||||
cutter.setDbTagFilename(dbTagInfo);
|
||||
}
|
||||
}
|
||||
|
||||
// ... inject WayCutter
|
||||
cutter.wayCutter = new WayCutter();
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ public class StackSampler extends Thread {
|
|||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings({"deprecation", "RedundantSuppression"}) // Android
|
||||
public void dumpThreads() {
|
||||
try {
|
||||
int wait1 = rand.nextInt(interval);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ buildscript {
|
|||
google()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:8.10.1'
|
||||
classpath 'com.android.tools.build:gradle:8.11.1'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ publishing {
|
|||
}
|
||||
}
|
||||
publications {
|
||||
gpr(MavenPublication)
|
||||
gpr(MavenPublication) {
|
||||
from components.java
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -247,10 +247,10 @@ assign costfactor
|
|||
if ( and highway= not route=ferry ) then 10000
|
||||
|
||||
#
|
||||
# exclude motorways and proposed roads
|
||||
# exclude motorways and proposed, abandoned under construction roads
|
||||
#
|
||||
else if ( highway=motorway|motorway_link ) then 10000
|
||||
else if ( highway=proposed|abandoned ) then 10000
|
||||
else if ( highway=motorway|motorway_link ) then 10000
|
||||
else if ( highway=proposed|abandoned|construction ) then 10000
|
||||
|
||||
#
|
||||
# all other exclusions below (access, steps, ferries,..)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue