Add or update Fire Hydrants from Urdorf
| data | ||
| .gitignore | ||
| .python-version | ||
| find-duplicates-for-josm.py | ||
| find-duplicates.py | ||
| generate-josm.py | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
Data Converter for Fire Hydrants in Urdorf
- Get data from Wasserversorgung Urdorf wasserversorgung@urdorf.ch
- Generate file for JOSM:
python generate-josm.py data/Hydranten_Urdorf_202411.csv - Import into JOSM and validate (see below)
- Upload data to OSM
Changesets:
- 159549130 - 2024-11-24 Add or update all fire hydrants in Urdorf from official data (Wasserversorgung Gemeinde Urdorf)
- 159586213 - 2024-11-25 Manually correct duplicates in iD online editor + 159586356
External tools:
Links:
Data Format
CSV
Headers:
Nummer,Adresse,Druckzone,Hydranten-Art,Abgänge,Statischer Druck,Koordinaten X (N),Koordinaten Y (E)
Example:
100,Dorfstrasse 8,DZ,Ueberflur,55/55,9,1249302.23,2673915.37
Data Validation
Open the Filter window and use these filters:
# Check hydrants by type
type:node emergency=fire_hydrant fire_hydrant:type=pillar
type:node emergency=fire_hydrant fire_hydrant:type=underground
# Check pressure zones
"description"="Druckzone Dorfzone (DZ)"
"description"="Druckzone Hochzone (HZ)"
# Check specific tag combinations
type:node couplings:type=storz -fire_hydrant:type=pillar
type:node pillar:type=dry_barrel -fire_hydrant:type=pillar
# Check coupling values
type:node couplings=2 -"couplings:diameters"=~/.*;.*/
Run the JOSM validator:
- Tools -> Validation -> Validate (or Ctrl+Shift+V)
Duplicates
The two scripts find-duplicates.py and find-duplicates-for-josm.py will help to find duplicates.
Or directly in Overpass:
[out:json][timeout:25];
area["name"="Urdorf"]->.searchArea;
node["emergency"="fire_hydrant"](area.searchArea)->.hydrants;
foreach .hydrants -> .current_hydrant (
node(around.current_hydrant:10)["emergency"="fire_hydrant"]["@id"!="${id}"];
if (count(nodes) > 1) {
.current_hydrant out body;
}
);
Overpass Query
Simple:
[out:json];
{{geocodeArea:"Urdorf"}}->.searcharea;
node["emergency"="fire_hydrant"](area.searcharea);
out;
Complex:
[out:csv(::"type",::"id","fire_hydrant:type","fire_hydrant:position",ref,::"lat",::"lon"; true; ",")];
//[out:json];
// Geografische Eingrenzung:
{{geocodeArea:"Urdorf"}}->.searcharea;
// Filtern der Objekte
(
nwr["emergency"="fire_hydrant"](area.searcharea);
);
// Ausgabe (ggf. andere Ausgaben wählen durch Um-Kommentieren)
//out body; >; out skel qt;
//out center qt;
out;
Disclaimer
The tool was made using Anthropic Claude with some manual adjustments.