import_osm: fixes to multipolygons
This commit is contained in:
parent
2958855a2b
commit
5ed6a336df
|
@ -96,10 +96,7 @@ fn process_osm<F: FnOnce(PrimSource) -> R + 'static + Send + Clone, R: Send + 's
|
|||
match f.seek(SeekFrom::Current(0)) {
|
||||
Ok(pos) => {
|
||||
let rate = pos as f64 / 1024f64 / 1024f64 / duration;
|
||||
progress.set_message(format!(
|
||||
"Processed {} MB in {:.2} seconds ({:.2} MB/s)",
|
||||
pos / 1024 / 1024, duration, rate
|
||||
));
|
||||
progress.set_message(format!("{:.2} MB/s", rate));
|
||||
},
|
||||
Err(_) => (),
|
||||
}
|
||||
|
@ -200,17 +197,20 @@ fn main() {
|
|||
}
|
||||
}
|
||||
}
|
||||
println!("{} ways", way_paths.len());
|
||||
let way_paths = Arc::new(way_paths);
|
||||
|
||||
// phase 3: rels
|
||||
let mut multipoly_count = 0;
|
||||
for arg in args().skip(1) {
|
||||
let way_paths = way_paths.clone();
|
||||
process_osm(&arg, move |prim_src| {
|
||||
multipoly_count += process_osm(&arg, move |prim_src| {
|
||||
const DB_URL: &str = "host=10.233.1.2 dbname=treeadvisor user=treeadvisor password=123";
|
||||
|
||||
let mut db = postgres::Client::connect(DB_URL, postgres::NoTls)
|
||||
.expect("DB");
|
||||
|
||||
let mut count = 0;
|
||||
let mut running = true;
|
||||
while running {
|
||||
running = prim_src.recv_primitives(|iter| {
|
||||
|
@ -223,6 +223,10 @@ fn main() {
|
|||
let tags: serde_json::Map<String, serde_json::Value> = rel.tags()
|
||||
.map(|(k, v)| (k.to_string(), serde_json::Value::String(v.to_string())))
|
||||
.collect();
|
||||
if tags.get("type").and_then(|val| val.as_str()) == Some("multipolygon") {
|
||||
continue;
|
||||
}
|
||||
|
||||
let get_members = |target_role| rel.members()
|
||||
.filter_map(|(role, id, member_type)| {
|
||||
if member_type == RelationMemberType::Way && role == target_role {
|
||||
|
@ -260,6 +264,8 @@ fn main() {
|
|||
&[&(rel.id as i64), &(member_id as i64), &path]
|
||||
).unwrap();
|
||||
}
|
||||
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -269,6 +275,9 @@ fn main() {
|
|||
true
|
||||
}).unwrap_or(false);
|
||||
}
|
||||
});
|
||||
|
||||
count
|
||||
}).iter().sum::<usize>();
|
||||
}
|
||||
println!("{} multipolygons", multipoly_count);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue