Compare commits

...

8 commits

Author SHA1 Message Date
afischerdev
b1e2fd03c7
Merge pull request #828 from afischerdev/pseudo-dbtags
Some checks are pending
Docker / build (push) Waiting to run
Java CI with Gradle / build (push) Waiting to run
Enable database access for pseudo tags
2025-08-27 18:52:44 +02:00
afischerdev
0ca2c3b569 enable database access for pseudo tags 2025-08-25 17:33:51 +02:00
afischerdev
209c58153d
Merge pull request #826 from jgillich/maven
add components.java to maven publication
2025-08-15 18:12:30 +02:00
Jakob Gillich
4a5f8f2daf add components.java to maven publication 2025-08-14 19:02:05 +02:00
afischerdev
5149e341e6
Merge pull request #823 from devemux86/gradle
Update Android Gradle plugin
2025-08-10 18:28:19 +02:00
afischerdev
07320690ea
Merge pull request #816 from Dosenpfand/trekking-exclude-construction
Trekking: Exclude under construction roads
2025-08-10 18:23:50 +02:00
Emux
1ea117f183
Update Android Gradle plugin 2025-08-05 11:24:17 +03:00
Dosenpfand
76f63dfde1 Trekking: Exclude under construction roads 2025-07-13 17:37:30 +02:00
7 changed files with 98 additions and 13 deletions

View file

@ -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)))) {
@ -164,6 +226,16 @@ public class DatabasePseudoTagProvider {
}
}
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")) {

View file

@ -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

View file

@ -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();

View file

@ -47,6 +47,7 @@ public class StackSampler extends Thread {
}
}
@SuppressWarnings({"deprecation", "RedundantSuppression"}) // Android
public void dumpThreads() {
try {
int wait1 = rand.nextInt(interval);

View file

@ -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

View file

@ -16,6 +16,8 @@ publishing {
}
}
publications {
gpr(MavenPublication)
gpr(MavenPublication) {
from components.java
}
}
}

View file

@ -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=proposed|abandoned|construction ) then 10000
#
# all other exclusions below (access, steps, ferries,..)