def get_dict_fantoir(code_departement, code_commune):
    """ Retourne un dictionnaire qui mappe un nom normalizé 
        du Fantoir (nature + libele de la voie)
        vers un tuple (string, boolean) représentant le CODE FANTOIR, et 
        s'il s'agit d'un lieu dit non bâti (place=locality).
    """
    code_insee = cadastre.code_insee(code_departement, code_commune)
    dict_fantoir = {}
    try:
        db_cursor = addr_fantoir_building.get_pgc().cursor()
        sql_query = ''' SELECT  code_insee||id_voie||cle_rivoli,
                                nature_voie||' '||libelle_voie,
                                type_voie, ld_bati
                        FROM  fantoir_voie
                        WHERE code_insee = \'''' + code_insee + '''\' 
                              AND caractere_annul NOT IN ('O','Q');'''
        db_cursor.execute(sql_query)
        for result in db_cursor:
            code_fantoir = result[0]
            nom_fantoir = ' '.join(result[1].replace('-',' ').split())
            #lieu_dit_non_bati = (result[2] == '3') and (result[3] == '0')
            highway = result[2] in ['1', '4', '5']
            dict_fantoir[normalize(nom_fantoir)] = (code_fantoir, highway)
        assert(len(dict_fantoir) > 0)
        return dict_fantoir
    except:
        # La connexion avec la base SQL a du échouer, on 
        # charge les fichiers zip fantoir manuellement:
        filename = FANTOIR_ZIP
        ok_filename = filename + ".ok"
        if not (os.path.exists(filename) and os.path.exists(ok_filename)):
            sys.stdout.write("Téléchargement du fichier Fantoir " + FANTOIR_URL  + "\n")
            if os.path.exists(filename): os.remove(filename)
            if os.path.exists(ok_filename): os.remove(ok_filename)
            write_stream_to_file(urllib2.urlopen(FANTOIR_URL), filename)
            open(ok_filename, "a").close()
        else:
            sys.stdout.write("Lecture du fichier FANTOIR.zip")
        sys.stdout.flush()
        num_commune = code_insee[2:5]
        debut = get_fantoir_code_departement(code_departement) + num_commune
        for line in ZipFile(filename, "r").open("FANTOIR.txt"):
            if line.startswith(debut):
               if line[108:109] != ' ':
                  # C'est un unregistrement de voie
                  if line[73] == ' ':
                      # la voie n'est pas annulée
                      assert(code_insee == line[0:2] + line[3:6])
                      id_voie = line[6:10]
                      cle_rivoli = line[10]
                      nature_voie = line[11:15].strip()
                      libele_voie = line[15:41].strip()
                      code_fantoir = code_insee + id_voie + cle_rivoli
                      nom_fantoir = nature_voie + " " + libele_voie
                      #lieu_dit_non_bati = line[108:110] == '30'
                      highway = line[108:109] in ['1', '4', '5']
                      dict_fantoir[normalize(nom_fantoir)] = \
                          (code_fantoir, highway)
        return dict_fantoir
def open_osm_ways_commune(code_departement, code_commune, type_way, filtre="", nodes=False):
    cache_filename = code_commune + "-" + type_way + "s.osm"
    code_insee = cadastre.code_insee(code_departement, code_commune)
    area = 3600000000 + addr_fantoir_building.dicts.osm_insee[code_insee]
    requete_overpass = '******' % (area, type_way, filtre)
    if nodes: requete_overpass += "(._;>;);"
    requete_overpass += "out meta;"
    sys.stdout.write((u"Récupération des " + type_way + " de la commune\n").encode("utf-8"))
    return open_osm_overpass(requete_overpass, cache_filename, metropole=code_departement.startswith("0"))
def open_osm_ways_commune(code_departement, code_commune, type_way, filtre="", nodes=False):
    cache_filename = code_commune + "-" + type_way + "s.osm"
    code_insee = cadastre.code_insee(code_departement, code_commune)
    area = 3600000000 + addr_fantoir_building.dicts.osm_insee[code_insee]
    requete_overpass = '******' % (code_insee, type_way, filtre)
    if nodes: requete_overpass += "(._;>;);"
    requete_overpass += "out;"
    sys.stdout.write((u"Récupération des " + type_way + " de la commune\n").encode("utf-8"))
    return open_osm_overpass(requete_overpass, cache_filename, metropole=code_departement.startswith("0"))
def open_osm_multipolygon_s_ways_commune(code_departement, code_commune, type_multipolygon, filtre="", nodes=False):
    cache_filename = code_commune + "-multipolygon_" + type_multipolygon + "s.osm"
    code_insee = cadastre.code_insee(code_departement, code_commune)
    area = 3600000000 + addr_fantoir_building.dicts.osm_insee[code_insee]
    requete_overpass = '******' % (area, type_multipolygon, filtre)
    if nodes: requete_overpass += "(._;>;);"
    requete_overpass += "out meta;"
    sys.stdout.write((u"Récupération des multipolygon " + type_multipolygon + " de la commune\n").encode("utf-8"))
    return open_osm_overpass(requete_overpass, cache_filename, metropole=code_departement.startswith("0"))
示例#5
0
def get_dict_fantoir(code_departement, code_commune):
    """ Retourne un dictionnaire qui mappe un nom normalizé 
        du Fantoir (nature + libele de la voie)
        vers le code Fantoir.
    """
    code_insee = cadastre.code_insee(code_departement, code_commune)
    try:
        addr_fantoir_building.pgc = addr_fantoir_building.get_pgc()
        addr_fantoir_building.dicts.load_fantoir(code_insee)
        assert len(addr_fantoir_building.dicts.fantoir) > 0
        return addr_fantoir_building.dicts.fantoir
    except:
        # La connexion avec la base SQL a du échouer, on
        # charge les fichiers zip fantoir manuellement:
        dict_fantoir = {}
        zip_filename = get_fantoir_zip_filename(code_departement)
        filename = os.path.join(FANTOIR_DIR, zip_filename)
        ok_filename = filename + ".ok"
        if not (os.path.exists(filename) and os.path.exists(ok_filename)):
            sys.stdout.write("Téléchargement du fichier Fantoir " + zip_filename + "\n")
            if os.path.exists(filename):
                os.remove(filename)
            if os.path.exists(ok_filename):
                os.remove(ok_filename)
            if not os.path.exists(FANTOIR_DIR):
                os.mkdir(FANTOIR_DIR)
            write_stream_to_file(urllib2.urlopen(FANTOIR_URL + zip_filename), filename)
            open(ok_filename, "a").close()
        else:
            sys.stdout.write("Lecture du fichier Fantoir " + zip_filename + "\n")
        sys.stdout.flush()
        txt_filename = get_fantoir_txt_filename(code_departement)
        num_commune = code_insee[2:5]
        for line in ZipFile(filename, "r").open(txt_filename):
            if line[3:6] == num_commune:
                if line[108:109] != " ":
                    # C'est un unregistrement de voie
                    if line[73] == " ":
                        # la voie n'est pas annulée
                        assert code_insee == line[0:2] + line[3:6]
                        id_voie = line[6:10]
                        cle_rivoli = line[10]
                        nature_voie = line[11:15].strip()
                        libele_voie = line[15:41].strip()
                        code_fantoir = code_insee + id_voie + cle_rivoli
                        nom_fantoir = nature_voie + " " + libele_voie
                        dict_fantoir[normalize(nom_fantoir)] = code_fantoir
        return dict_fantoir
def get_dict_fantoir(code_departement, code_commune):
    """ Retourne un dictionnaire qui mappe un nom normalizé 
        du Fantoir (nature + libele de la voie)
        vers le code Fantoir.
    """
    code_insee = cadastre.code_insee(code_departement, code_commune)
    try:
        addr_fantoir_building.pgc = addr_fantoir_building.get_pgc()
        addr_fantoir_building.dicts.load_fantoir(code_insee)
        assert(len(addr_fantoir_building.dicts.fantoir) > 0)
        return addr_fantoir_building.dicts.fantoir
    except:
        # La connexion avec la base SQL a du échouer, on 
        # charge les fichiers zip fantoir manuellement:
        dict_fantoir = {}
        zip_filename = get_fantoir_zip_filename(code_departement)
        filename = os.path.join(FANTOIR_DIR, zip_filename)
        ok_filename = filename + ".ok"
        if not (os.path.exists(filename) and os.path.exists(ok_filename)):
            sys.stdout.write("Téléchargement du fichier Fantoir " + zip_filename  + "\n")
            if os.path.exists(filename): os.remove(filename)
            if os.path.exists(ok_filename): os.remove(ok_filename)
            if not os.path.exists(FANTOIR_DIR): os.mkdir(FANTOIR_DIR)
            write_stream_to_file(urllib2.urlopen(FANTOIR_URL + zip_filename), filename)
            open(ok_filename, "a").close()
        else:
            sys.stdout.write("Lecture du fichier Fantoir " + zip_filename  + "\n")
        sys.stdout.flush()
        txt_filename = get_fantoir_txt_filename(code_departement)
        num_commune = code_insee[2:5]
        for line in ZipFile(filename, "r").open(txt_filename):
            if line[3:6] == num_commune:
               if line[108:109] != ' ':
                  # C'est un unregistrement de voie
                  if line[73] == ' ':
                      # la voie n'est pas annulée
                      assert(code_insee == line[0:2] + line[3:6])
                      id_voie = line[6:10]
                      cle_rivoli = line[10]
                      nature_voie = line[11:15].strip()
                      libele_voie = line[15:41].strip()
                      code_fantoir = code_insee + id_voie + cle_rivoli
                      nom_fantoir = nature_voie + " " + libele_voie
                      dict_fantoir[normalize(nom_fantoir)] = code_fantoir
        return dict_fantoir