Comme promis ce week-end j'ai fait un petit script pour ça. Tout est là,
c'est sur la comcom :
http://f.rodrigo.free.fr/tmp/orange.tar.bz2
Pour les curieux voila les scripts overpass api et ruby (sans dépendances) :
[out:xml][timeout:25];
// gather results
(
node["addr:housenumber"](area:3602156557);
way["addr:housenumber"](area:3602156557);
relation["addr:housenumber"](area:3602156557);
way["highway"]["name"](area:3602156557);
);
// print results
out body;
>;
out skel qt;
require "rexml/document"
file = File.new( "osm.xml" )
doc = REXML::Document.new file
stock = Hash.new{ |h, k| h[k] = {street: [], house: []} }
REXML::XPath.each( doc, '/osm/*' ) { |n|
name = REXML::XPath.first(n, 'tag[@k="name"]/@v')
if name
fantoir = REXML::XPath.first(n, 'tag[@k="ref:FR:FANTOIR"]/@v')
stock[name.value][:street] << [n.attributes['id'], n.name,
fantoir && fantoir.value]
end
addr = REXML::XPath.first(n, 'tag[@k="addr:street"]/@v')
if addr
stock[addr.value][:house] << [n.attributes['id'], n.name]
end
}
id = 0
puts "<?xml version='1.0' encoding='UTF-8'?>"
puts "<osm version='0.6' generator='Overpass API'>"
stock.each{ |name, h|
puts "<relation id='#{id-=1}' visible='true'>"
puts " <tag k='type' v='associatedStreet'/>"
puts " <tag k='name' v='#{name.gsub('&', '&').gsub('\'',
''').gsub('\"', '"').gsub('<', '<')}'/>"
fantoir = h[:street].select{ |c| c }.collect{ |c| c[2] }.uniq.join(';')
if fantoir != ''
puts " <tag k='ref:FR:FANTOIR' v='#{fantoir}'/>"
end
h[:street].each{ |s|
puts " <member role='street' type='#{s[1]}' ref='#{s[0]}'/>"
}
h[:house].each{ |s|
puts " <member role='house' type='#{s[1]}' ref='#{s[0]}'/>"
}
puts "</relation>"
}
puts "</osm>"
Le 05/11/2014 09:28, Tony Emery a écrit :
Bonjour à tous,
Je suis en train de réaliser un référentiel voirie sur notre
intercommunalité. On a fait le tour des tronçons de rues et on voudrait,
pour chaque voie de chaque commune, créer une relation associated street.
Existe-t-il un script sous josm ou QGIS qui pourrait automatiser ce travail
qui serait, en gros :
- sélectionne les objets qui ont la même valeur pour le tag "name"
- s'il n'y a pas de relation associated street, créé-la
- en option, s'il y a des adresses rattachées au même nom de rue, mets-les
dans la relation.
Merci pour vos réponses.
-----
Tony EMERY
Administrateur OpenStreetMap.fr
Mandataire Grand Sud-Est
Géomaticien & chef de projets
--
View this message in context:
http://gis.19327.n5.nabble.com/Creation-automatique-de-relations-associated-street-tp5823180.html
Sent from the France mailing list archive at Nabble.com.
_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-fr
_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-fr