Re: [OSM-talk-fr] Création automatique de relations associated street
Oups, je t'avais un peu oublié ! Le 25/11/2014 15:44, Tony Emery a écrit : J'ai réussi à relancer le fichier asso.rb. Par contre, je ne pense pas que l'on puisse paramétrer le fichier .sh sous windows, pas avec le bloc-note ou notepad, en tout cas. Si, mais j'en convient que c'est pas très lisible avec tout sur une seule ligne. Tu peux aussi exécuté le code overpass 'en clair' dans dans overpass turbo et l'envoyer sur josm par ex. Du coup, je te donne les relation_id des communes de la CCPRO, si tu peux me faire plusieurs fichiers : Villeosm_relation_id Bédarrides 147 870 Caderousse 148 147 Châteauneuf-du-Pape 148 164 Courthézon 148 169 Jonquières 148 979 Orange 187 038 Sorgues 181 308 J'ai relancé le script pour ça, c'est dispo là : http://f.rodrigo.free.fr/tmp/orange.tar.bz2 Avec une petit mise à jour des scripts. Frédéric. ___ Talk-fr mailing list Talk-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] Création automatique de relations associated street
J'ai réussi à relancer le fichier asso.rb. Par contre, je ne pense pas que l'on puisse paramétrer le fichier .sh sous windows, pas avec le bloc-note ou notepad, en tout cas. Du coup, je te donne les relation_id des communes de la CCPRO, si tu peux me faire plusieurs fichiers : Villeosm_relation_id Bédarrides 147 870 Caderousse 148 147 Châteauneuf-du-Pape 148 164 Courthézon 148 169 Jonquières 148 979 Orange 187 038 Sorgues 181 308 Merci d'avance - 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-tp5823180p5825364.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
Re: [OSM-talk-fr] Création automatique de relations associated street
Je vais être casse-pied mais tu pourrais pas me faire un tuto avec des copies d'écrans ? Parce que le .rb, je le lance avec quoi ? Je dois télécharger un logiciel spécifique ? Du coup, les 2 fichiers asso.xml et osm.xml, je les ouvre dans JOSM pour envoyer les données dans OSM ? Je n'ai pas besoin de recharger à nouveau les voies ? Si le script regroupe les objets par nom dans une relation, ça veut dire que les objets ayant le même nom sur 2 communes différentes se retrouveront dans la même relation ? - 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-tp5823180p5824185.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
Re: [OSM-talk-fr] Création automatique de relations associated street
Le 13/11/2014 11:21, Tony Emery a écrit : Je vais être casse-pied mais tu pourrais pas me faire un tuto avec des copies d'écrans ? Non je ne peux pas, il n'y a pas d'écran ! Et le tuto c'est le contenu de mon dernier mail. Tout est en ligne de commande. Parce que le .rb, je le lance avec quoi ? Je dois télécharger un logiciel spécifique ? Un .rb c'est un script ruby. Il te faut ajour ruby d'installer. Pour l'executer (comme dans mon dernier mail) ruby monscript.rb Du coup, les 2 fichiers asso.xml et osm.xml, je les ouvre dans JOSM pour envoyer les données dans OSM ? Je n'ai pas besoin de recharger à nouveau les voies ? Tu ne va pas pouvoir charger le osm.xml dans JOSM. Le script overpass n'a pas l'option meta info d'activer (mais ça peut se rajouter). Tu peux changer le asso.xml dans JOSM, pour récupérer les voies et les adresses tu peux demander à JOSM de compléter les relations. Si le script regroupe les objets par nom dans une relation, ça veut dire que les objets ayant le même nom sur 2 communes différentes se retrouveront dans la même relation ? Oui, il vaut mieux le faire par commune. Je te le relance sur une/des communes si tu veux, donne moi juste les id des relations; Frédéric. ___ Talk-fr mailing list Talk-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] Création automatique de relations associated street
Le .sh permet de faire l'export des données depuis la requête overpass. Tu peux changer les communes en changeant le numéro de la relation (numéro + 36 pour avoir la surface). Le .rb est un script ruby (pas besoin de dépendances, juste ruby). Tu peux le relancer par # ruby asso.rb osm.xml asso.xml Le script regroupe par nom dans une relation (sur plusieurs commune ça va toujours grouper sur le nom). Le tag fantoir de la relation est une concatenation de tous les fantoir différent trouvés sur les voies. Le résultat ne contient que les relations, pas les numéros et les voies. Le 06/11/2014 08:57, Tony Emery a écrit : Salut Fred, Je te remercie pour ton script. Et en plus, c'est sur toute l'interco Par contre, ça marche comment ? - 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-tp5823180p5823345.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
Re: [OSM-talk-fr] Création automatique de relations associated street
Bonjour, De: Tony Emery tony.em...@yahoo.fr 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. Tu as l'outil disponible ici : http://cadastre.openstreetmap.fr/ qui propose quelque chose d'approchant : création d'une relation associatedStreet par nom de voie d'une commune, avec ajout du code Fantoir, ajout des highways portant le nom, et inclusion des adresses trouvées _sur le cadastre_ pour la voie en question. Une nuance de taille par rapport à ton besoin : ça ne tient pas compte des adresses déjà présentes dans OSM, les points proposés sont des ajouts. Du détail ici : http://wiki.openstreetmap.org/wiki/WikiProject_France/Cadastre/Import_semi-automatique_des_adresses vincent ___ Talk-fr mailing list Talk-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] Création automatique de relations associated street
On travaille actuellement dans les communes de la CCPRO dans lesquelles nous n'avons pas qualifier les adresses. Donc, sauf quelques adresses isolées, ça doit pour être jouable. Le problème est qu'on doit être sûr que la relation qui est créée dans OSM récupère aussi les tronçons de voies correspondant et qui, eux, sont déjà dans OSM. - 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-tp5823180p5823208.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
Re: [OSM-talk-fr] Création automatique de relations associated street
Si tu peux installer le plugin scripting et Jython, j'ai un script qui fait cela. Il fait un peu plus, donc tu devras enlever ce dont tu n'as pas besoin. Jo Ce qui t'intéresse commence à la ligne 122. #!/bin/jython ''' CheckRouteOrNetworkOrCollectionOfRoutes.jy - Validation of a rXn route relation This code is released under the GNU General Public License v2 or later. The GPL v3 is accessible here: http://www.gnu.org/licenses/gpl.html The GPL v2 is accessible here: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html It comes with no warranty whatsoever. This code illustrates how to use Jython (Python in the scripting plugin of JOSM) to: * loop over all members of a route relation * find out whether the member is a node, a way or a relation * add/change properties of a relation * remove properties of a relation * add members to a relation * remove members from a relation * sort all members backwards * How to set an element selected ''' from javax.swing import JOptionPane from org.openstreetmap.josm import Main import org.openstreetmap.josm.command as Command import org.openstreetmap.josm.data.osm.Node as Node import org.openstreetmap.josm.data.osm.Way as Way import org.openstreetmap.josm.data.osm.Relation as Relation import org.openstreetmap.josm.data.Bounds as Bounds import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor as BoundingXYVisitor import org.openstreetmap.josm.data.osm.TagCollection as TagCollection import org.openstreetmap.josm.data.osm.DataSet as DataSet import org.openstreetmap.josm.data.osm.RelationMember as RelationMember import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask as DownloadRelationMemberTask import org.openstreetmap.josm.actions.DownloadReferrersAction as DownloadReferrersAction import org.openstreetmap.josm.actions.AutoScaleAction as AutoScaleAction import org.openstreetmap.josm.plugins.utilsplugin2.replacegeometry.ReplaceGeometryUtils as ReplaceGeometryUtils #import org.openstreetmap.josm.plugins.utilsplugin2.selection.SelectAllInsideAction.java as SelectAllInsideAction import org.openstreetmap.josm.plugins.todo as Todo import org.openstreetmap.josm.plugins.todo.TodoListModel as TodoListModel import org.openstreetmap.josm.plugins.todo.TodoDialog as TodoDialog print dir(TodoDialog) import javax.swing.DefaultListSelectionModel as DefaultListSelectionModel # the file name where the report for the wiki goes, needs to be configurable wikiReportFN = 'C:/data/wikiReport.txt' # comment to disable side effect sideEffects = {} logVerbosity = 30 ''' 10: only report problems that require attention 20: report on collection 30: report on network nodes 40: report on which routes are being checked 50: report everything ''' def getMapView(): if Main.main and Main.main.map: return Main.main.map.mapView else: return None def findSuitableBuilding(node, ignorelist, zoomOutThisManyTimes=2, houseNumber=None, street=None): bboxCalculator = BoundingXYVisitor() bboxCalculator.computeBoundingBox([node]) bboxCalculator.enlargeBoundingBox() if bboxCalculator.getBounds(): mv.recalculateCenterScale(bboxCalculator) mv.zoomTo(node.getEastNorth()) stopPosition = Node() found = False for i in range(1,zoomOutThisManyTimes): candidates = mv.getAllNearest(mv.getPoint(node),ignorelist,Node().nodePredicate) if candidates: for candidate in candidates: if candidate in ignorelist: break for foundway in candidate.getReferrers(): if houseNumber and \ 'addr:housenumber' in foundway.getKeys() and \ foundway.get('addr:housenumber').upper() == houseNumber.upper(): if 'addr:street' in foundway.getKeys() and street and \ foundway.get('addr:street').upper() == street.upper(): continue # if we find a building with the housenumber we were looking for, stop searching print 'Building with same housenumber' found = True; break if 'addr:housenumber' in foundway.getKeys(): # If we find a building with another housenumber, add its nodes to the ignorelist print foundway.get('addr:housenumber') + not a good candidate for node in foundway.getNodes(): ignorelist.append(node) continue if 'building' in foundway.getKeys(): # If we get here, this means we found a building, without housenumber information, which may be a good candidate print 'found a good candidate building without a housenumber' found = True; break else: ignorelist.append(candidate) print
Re: [OSM-talk-fr] Création automatique de relations associated street
Essaye ! Sur les communes où j'ai utilisé ces extractions automatiques, c'était très complet. Pour les communes où il y a déjà des adresses, un script supplémentaire devrait permettre de tout bien ranger. Le 5 novembre 2014 11:37, Tony Emery tony.em...@yahoo.fr a écrit : On travaille actuellement dans les communes de la CCPRO dans lesquelles nous n'avons pas qualifier les adresses. Donc, sauf quelques adresses isolées, ça doit pour être jouable. Le problème est qu'on doit être sûr que la relation qui est créée dans OSM récupère aussi les tronçons de voies correspondant et qui, eux, sont déjà dans OSM. - 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-tp5823180p5823208.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 -- Christian Quest - OpenStreetMap France ___ Talk-fr mailing list Talk-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] Création automatique de relations associated street
Salut Tony, Celui-ci est plus proche de ce que tu cherchais: #!/bin/jython ''' FindWaysBelongingToRoutesStartingFromStops.jy - Given a list of stops, find all ways belonging to the route This code is released under the GNU General Public License v2 or later. The GPL v3 is accessible here: http://www.gnu.org/licenses/gpl.html The GPL v2 is accessible here: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html It comes with no warranty whatsoever. ''' from javax.swing import JOptionPane from org.openstreetmap.josm import Main import org.openstreetmap.josm.command as Command import org.openstreetmap.josm.data.osm.Node as Node import org.openstreetmap.josm.data.osm.Way as Way import org.openstreetmap.josm.data.osm.Relation as Relation import org.openstreetmap.josm.data.Bounds as Bounds import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor as BoundingXYVisitor import org.openstreetmap.josm.data.osm.TagCollection as TagCollection import org.openstreetmap.josm.data.osm.DataSet as DataSet import org.openstreetmap.josm.data.osm.RelationMember as RelationMember import org.openstreetmap.josm.actions.search.SearchAction as SearchAction dummyRelation = Relation(); dummyWay = Way() sideEffects = { 'addWayToRoute': None, 'createStopAreaRelations': None, } logVerbosity = 50 ''' 10: only report problems that require attention 20: report on collection 30: report on network nodes 40: report on which routes are being checked 50: report everything ''' def getMapView(): if Main.main and Main.main.map: return Main.main.map.mapView else: return None dummy_way = Way() dummy_relation = Relation() print print cleanupTags=[['odbl', ['CRAB:huisnrlabel', 'CRAB:hnrLabel', 'CRAB:hnrLabels']], ['tiger:source', ['CRAB:source', 'CRAB:herkomst']], ['yh:TYPE', ['addr:postcode']], ['yh:LINE_NAME', ['addr:city']], ['addr:flats', ['CRAB:message']] ] SearchAction.search('inview new addr:housenumber type:node', SearchAction.SearchMode.fromCode('R')) mv = getMapView() if mv and mv.editLayer and mv.editLayer.data: commandsList = []; i=0; names = {}; modified = False relationStillNeedsToBeCreated = True for node in mv.editLayer.data.getSelectedNodes(): for key in node.getKeys(): if ('addr:street' in node.getKeys()): if relationStillNeedsToBeCreated: notFound = True for relation in node.getReferrers(): if relation.get('type') == 'associatedStreet': notFound = False break if notFound: recycled=False newRelation = Relation(dummyRelation) relationStillNeedsToBeCreated = False else: recycled=True newRelation = Relation(relation) newRelation.removeAll() relationStillNeedsToBeCreated = False newMember = RelationMember('house',node) if not(newMember in newRelation.getMembers()): newRelation.addMember(i, newMember) i+=1 modified = True newNode=Node(node) nodeTags = node.getKeys() for replaceWith, replaceThese in cleanupTags: for replaceThis in replaceThese: if replaceThis in nodeTags: newNode.put(replaceWith, node.get(replaceThis)) newNode.remove(replaceThis) commandsList.append(Command.ChangeCommand(node, newNode)) newRelation.put('type', 'associatedStreet') newRelation.put('name', node.get('addr:street')) newRelation.put('addr:country', 'BE') if ('addr:city' in nodeTags): newRelation.put('addr:city', node.get('addr:city')) elif ('yh:LINE_NAME' in nodeTags): newRelation.put('addr:city', node.get('yh:LINE_NAME')) else: newRelation.put('addr:city', 'GemeenteOnbekend') if ('addr:postcode' in nodeTags): newRelation.put('addr:postcode', node.get('addr:postcode')) elif ('yh:TYPE' in nodeTags): newRelation.put('addr:postcode', node.get('yh:TYPE')) else: newRelation.put('addr:postcode', 'PostnummerOnbekend') newRelation.put('addr:country', 'BE') SearchAction.search(node.get('addr:street') + ' type:way', SearchAction.SearchMode.fromCode('R')) for way in mv.editLayer.data.getSelectedWays(): if way.get('building'): newMember = RelationMember('house',way) else: newMember = RelationMember('street',way) if not(newMember in newRelation.getMembers()): newRelation.addMember(i, newMember) i+=1 modified = True #print dir(mv)
Re: [OSM-talk-fr] Création automatique de relations associated street
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
Re: [OSM-talk-fr] Création automatique de relations associated street
Salut Fred, Je te remercie pour ton script. Et en plus, c'est sur toute l'interco Par contre, ça marche comment ? - 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-tp5823180p5823345.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