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('&', '&amp;').gsub('\'', '&apos;').gsub('\"', '&quot;').gsub('<', '&lt;')}'/>"
    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

Répondre à