Exemple #1
0
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)