Exemple #1
0
def calc_occurs(target, result, field_name, field_type, field_length):
    """
    Calculates frequencies on a field in target (table, feature, shp) and returns
    a table of results.
    """
    # création du dictionnaire (temporaire) des occurences/fréquences
    dico_freq = {}
    # création de la table résultat (= en sortie)
    new_table(path.split(result)[0], path.split(result)[1])
    # curseurs pour parcourir (r = read) et écrire (w = write) les données ligne par ligne
    curs_r = SearchCursor(target, "", "", field_name)
    curs_w = InsertCursor(result)
    # ajout des 2 champs dans la table résultat
    add_field(result, "OCCUR", field_type, "", "", field_length)
    add_field(result, "FREQ", "SHORT")
    # calcul et ajout au dictionnaire intermédiaire
    for obj in curs_r:
        value = obj.getValue(field_name)
        if dico_freq.has_key(value):
            dico_freq[value] = dico_freq.get(value)+1
        else:
            dico_freq[value] = 1
    del curs_r
    # mise à jour de la table résultats
    for occur in dico_freq.keys():
        row = curs_w.newRow()
        row.OCCUR = occur
        row.FREQ = dico_freq.get(occur)
        curs_w.insertRow(row)
    # nettoyage des curseurs (pour éviter le verrouillage des données = .lock)
    del row, curs_w
    # fin de fonction
    return dico_freq
Exemple #2
0
clc_nat = clc + "_zones_nats"
sel_analyz(clc, clc_nat, expr_sel_codes_nat)
clc_nat_diss = clc_nat + "_dissolved"
dissout(clc_nat, clc_nat_diss)
print u"\n\t- ZONES NATURELLES -\nZones naturelles isolées et fusionnées"



# sélection des routes aux vocations voulues
expr_sel_routes_vocations = '"VOCATION" IN %s' % str(('1', '2', '6'))
routes_class = bd_carto + "_vocas"
sel_analyz(bd_carto, routes_class, expr_sel_routes_vocations)
print u"\n\t- RESEAU ROUTIER -\nRoutes isolées selon les vocations"

# ajout d'un champ destiné à la taille du tampon aux données de routes
add_field(routes_class, "buffer_siz", "SHORT")
print u"Champ pour les zones tampons créé"

# mise à jour du champ du buffer selon les types de route
expr_calc_buffer_routes = "buffer_size(!USAGE!, !NB_VOIES!)"
cb_routes_type_voies = """def buffer_size(usage, nb_voies):
    if usage == '2':
        return '10'
    elif usage == '3':
        return '8'
    elif usage == '1' and nb_voies != '5':
        return '25'
    elif usage == '1' and nb_voies == '5':
        return '15'
    elif usage == '1' and nb_voies == 'S':
        return '8'"""