def get_osm_buildings_and_barrier_ways(code_departement, code_commune): """ Retourne un objet Osm contenant tout les ways de la commune correspondant au buildings et au barrier.""" merge_osm = Osm({}) input_osms = [ open_osm_ways_commune(code_departement, code_commune, "building", nodes=True), open_osm_multipolygon_s_ways_commune(code_departement, code_commune, "building", nodes=True), open_osm_ways_commune(code_departement, code_commune, "barrier", nodes=True), ] for osm in input_osms: for id, node in osm.nodes.iteritems(): if not id in merge_osm.nodes: merge_osm.add_node(node) for id, way in osm.ways.iteritems(): if any([nid not in osm.nodes for nid in way.nodes]): # Il manque des nodes à ce way, ça arrive parfois # dans les résultats d'overpass, je ne sais pas pourquoi # mais cela ferait bugger l'utilisation de ce way # donc on le zap: continue if not id in merge_osm.ways: merge_osm.add_way(way) for id, rel in osm.ways.iteritems(): if not id in merge_osm.relations: merge_osm.add_relation(rel) return merge_osm
def get_osm_buildings_and_barrier_ways(code_departement, code_commune): """ Retourne un objet Osm contenant tout les ways de la commune correspondant au buildings et au barrier.""" merge_osm = Osm({}) input_osms = [ open_osm_ways_commune(code_departement, code_commune, "building", nodes=True), open_osm_multipolygon_s_ways_commune(code_departement, code_commune, "building", nodes=True), open_osm_ways_commune(code_departement, code_commune, "barrier", nodes=True), ] for osm in input_osms: for id,node in osm.nodes.iteritems(): if not id in merge_osm.nodes: merge_osm.add_node(node) for id, way in osm.ways.iteritems(): if any([nid not in osm.nodes for nid in way.nodes]): # Il manque des nodes à ce way, ça arrive parfois # dans les résultats d'overpass, je ne sais pas pourquoi # mais cela ferait bugger l'utilisation de ce way # donc on le zap: continue if not id in merge_osm.ways: merge_osm.add_way(way) for id, rel in osm.ways.iteritems(): if not id in merge_osm.relations: merge_osm.add_relation(rel) return merge_osm
def pdf_vers_osm_limites_parcelles(pdf_filename_list, osm_output): projection, parcelles = pdf_vers_limites_parcelles(pdf_filename_list) cadastre_to_osm_transform = CadastreToOSMTransform(projection) osm = Osm({'upload':'false'}) for parcelle in parcelles: #for linear_ring in list(polygon.interiors) + [polygon.exterior]: for linear_ring in parcelle: points = map(cadastre_to_osm_transform.transform_point, linear_ring) nodes = [Node({'lon':str(p.x), 'lat':str(p.y)}) for p in points] way = Way({}) for n in nodes: osm.add_node(n) way.add_node(n) osm.add_way(way) OsmWriter(osm).write_to_stream(osm_output)