IT:Italia/Progetto del Mese/2025/Risultati novembre

From OpenStreetMap Wiki
Jump to navigation Jump to search

Step 1: Download dei dump

Scaricare i dump dei singoli giorni del mese

  1. Aprire https://download.geofabrik.de/europe/italy.html
  2. Cliccare "raw directory index"
  3. Sono disponibili per il download il primo gennaio di ogni anno, il primo del mese corrente e gli ultimi sette giorni; se servono i dump di novembre non più disponibili rivolgersi a User:Danysan che li has scaricati tutti (tranne 2, 3 e 4)

Step 2: Calcolo delle statistiche

Usare questo script bash che sfrutta Osmium per calcolare le statistiche:

DAILY_CSV_FILE="count.csv"
MONTH_BEGINNING="italy-251031.osm.pbf"
last_total=0

echo 'File,Date,Total,With address,With name,With operator,Difference,With november check date' > $DAILY_CSV_FILE
for file in italy-*.pbf ; do
    date="20${file:6:2}-${file:8:2}-${file:10:2}"

    shops_file="shops_$file"
    if [ ! -f "$shops_file" ]; then
        echo "Filtering $file to $shops_file"
        # https://docs.osmcode.org/osmium/latest/osmium-tags-filter.html
        osmium tags-filter --omit-referenced -o "$shops_file" "$file" \
            shop \
            craft \
            amenity=restaurant \
            amenity=fast_food \
            amenity=restaurant \
            amenity=cafe \
            amenity=fuel \
            amenity=pharmacy \
            amenity=bank \
            amenity=bar \
            amenity=pub \
            amenity=dentist \
            office=estate_agent \
            office=insurance \
            office=employment_agency \
            tourism=hotel \
            tourism=guest_house \
            leisure=fitness_centre
    fi
    
    addr_file="addr_$file"
    if [ ! -f "$addr_file" ]; then
        echo "Filtering $shops_file to $addr_file"
        osmium tags-filter --omit-referenced -o "$addr_file" "$shops_file" \
            addr:housenumber \
            contact:housenumber
    fi
    
    name_file="name_$file"
    if [ ! -f "$name_file" ]; then
        echo "Filtering $shops_file to $name_file"
        osmium tags-filter --omit-referenced -o "$name_file" "$shops_file" name
    fi
    
    operator_file="operator_$file"
    if [ ! -f "$operator_file" ]; then
        echo "Filtering $shops_file to $operator_file"
        osmium tags-filter --omit-referenced -o "$operator_file" "$shops_file" \
            'operator' \
            'ref:vatin'
    fi
    
    check_date_file="check_date_$file"
    if [ ! -f "$check_date_file" ]; then
        echo "Filtering $shops_file to $check_date_file"
        osmium tags-filter --omit-referenced -o "$check_date_file" "$shops_file" \
            'check_date=2025-11*' \
            'survey:date=2025-11*'
    fi
    
    echo "Counting $file"
    # https://docs.osmcode.org/osmium/latest/osmium-fileinfo.html
    nodes=`osmium fileinfo -e -g "data.count.nodes" "$shops_file"`
    ways=`osmium fileinfo -e -g "data.count.ways" "$shops_file"`
    rels=`osmium fileinfo -e -g "data.count.relations" "$shops_file"`
    total=$((nodes + ways + rels))
    if [[ $last_total == 0 ]]; then 
        diff=''
    elif [[ $MONTH_BEGINNING == $file ]]; then
        diff=$((total - last_total))
        month_beginning_total=$total
    else
        diff=$((total - month_beginning_total))
    fi
    last_file=$file
    last_total=$total

    nodes_addr=`osmium fileinfo -e -g "data.count.nodes" "$addr_file"`
    ways_addr=`osmium fileinfo -e -g "data.count.ways" "$addr_file"`
    rels_addr=`osmium fileinfo -e -g "data.count.relations" "$addr_file"`
    total_addr=$((nodes_addr + ways_addr + rels_addr))

    nodes_name=`osmium fileinfo -e -g "data.count.nodes" "$name_file"`
    ways_name=`osmium fileinfo -e -g "data.count.ways" "$name_file"`
    rels_name=`osmium fileinfo -e -g "data.count.relations" "$name_file"`
    total_name=$((nodes_name + ways_name + rels_name))

    nodes_operator=`osmium fileinfo -e -g "data.count.nodes" "$operator_file"`
    ways_operator=`osmium fileinfo -e -g "data.count.ways" "$operator_file"`
    rels_operator=`osmium fileinfo -e -g "data.count.relations" "$operator_file"`
    total_operator=$((nodes_operator + ways_operator + rels_operator))

    nodes_check_date=`osmium fileinfo -e -g "data.count.nodes" "$check_date_file"`
    ways_check_date=`osmium fileinfo -e -g "data.count.ways" "$check_date_file"`
    rels_check_date=`osmium fileinfo -e -g "data.count.relations" "$check_date_file"`
    total_check_date=$((nodes_check_date + ways_check_date + rels_check_date))

    echo "$file,$date,$total,$total_addr,$total_name,$total_operator,$diff,$total_check_date" >> $DAILY_CSV_FILE
done



jan_oct_diff_file="diff_jan-oct.diff"
if [ ! -f "$jan_oct_diff_file" ]; then
    echo "Computing January-October diff to $jan_oct_diff_file"
    # https://docs.osmcode.org/osmium/latest/osmium-diff.html
    osmium diff --suppress-common "shops_italy-250101.osm.pbf" "shops_$MONTH_BEGINNING" -f compact -o "$jan_oct_diff_file"
fi

nov_diff_file="diff_$last_file.diff"
if [ ! -f "$nov_diff_file" ]; then
    echo "Computing November diff to $nov_diff_file"
    osmium diff --suppress-common "shops_$MONTH_BEGINNING" "shops_$last_file" -f compact -o "$nov_diff_file"
fi

DIFF_TXT_FILE="diff.txt"
echo "Counting $jan_oct_diff_file"
added_jan_oct=`grep ^+ "$jan_oct_diff_file" | wc -l`
removed_jan_oct=`grep ^- "$jan_oct_diff_file" | wc -l`
diff_jan_oct=$((added_jan_oct - removed_jan_oct))
new_jan_oct=`grep ^+ "$jan_oct_diff_file" | grep v1$ | wc -l`
updated_jan_oct=`grep ^+ "$jan_oct_diff_file" | grep -v v1$ | wc -l`
echo "Differenza dal 1 Gennaio al 31 Ottobre: $diff_jan_oct" > $DIFF_TXT_FILE
echo "Elementi aggiunti dal 1 Gennaio al 31 Ottobre: $new_jan_oct" >> $DIFF_TXT_FILE
echo "Elementi modificati dal 1 Gennaio al 31 Ottobre: $updated_jan_oct" >> $DIFF_TXT_FILE

echo "Counting $nov_diff_file"
added_nov=`grep ^+ "$nov_diff_file" | wc -l`
removed_nov=`grep ^- "$nov_diff_file" | wc -l`
diff_nov=$((added_nov - removed_nov))
new_nov=`grep ^+ "$nov_diff_file" | grep v1$ | wc -l`
updated_nov=`grep ^+ "$nov_diff_file" | grep -v v1$ | wc -l`
echo "Differenza a Novembre: $diff_nov" >> $DIFF_TXT_FILE
echo "Elementi aggiunti a Novembre: $new_nov" >> $DIFF_TXT_FILE
echo "Elementi modificati a Novembre: $updated_nov" >> $DIFF_TXT_FILE

Risultati

count.csv

File,Date,Total,With address,With name,With operator,Difference,With november check date
italy-250101.osm.pbf,2025-01-01,473444,167870,399268,57207,,0
italy-251031.osm.pbf,2025-10-31,503066,184899,427605,60849,29622,0
italy-251101.osm.pbf,2025-11-01,503263,184979,427781,60852,197,102
italy-251105.osm.pbf,2025-11-05,504106,185481,428519,60899,1040,797
italy-251106.osm.pbf,2025-11-06,504270,185608,428653,60912,1204,1020
italy-251107.osm.pbf,2025-11-07,504396,185644,428768,60927,1330,1062
italy-251108.osm.pbf,2025-11-08,504616,185726,428953,60936,1550,1130
italy-251109.osm.pbf,2025-11-09,504857,185871,429174,60957,1791,1289
italy-251110.osm.pbf,2025-11-10,504999,186063,429315,60968,1933,1523
italy-251111.osm.pbf,2025-11-11,505177,186122,429449,60971,2111,1630
italy-251112.osm.pbf,2025-11-12,505294,186180,429553,60977,2228,1691
italy-251113.osm.pbf,2025-11-13,505404,186210,429652,60980,2338,1855
italy-251114.osm.pbf,2025-11-14,505509,186253,429749,60986,2443,1891
italy-251115.osm.pbf,2025-11-15,505686,186307,429897,61013,2620,1924
italy-251116.osm.pbf,2025-11-16,505846,186353,430011,61026,2780,2012
italy-251117.osm.pbf,2025-11-17,505942,186342,430104,61029,2876,2121
italy-251118.osm.pbf,2025-11-18,506003,186382,430178,61030,2937,2134
italy-251119.osm.pbf,2025-11-19,506191,186492,430352,61042,3125,2211
italy-251120.osm.pbf,2025-11-20,506285,186552,430444,61050,3219,2263
italy-251121.osm.pbf,2025-11-21,506393,186572,430540,61050,3327,2304
italy-251122.osm.pbf,2025-11-22,506475,186589,430613,61057,3409,2367
italy-251123.osm.pbf,2025-11-23,506559,186619,430668,61063,3493,2426
italy-251124.osm.pbf,2025-11-24,506616,186672,430721,61067,3550,2440
italy-251125.osm.pbf,2025-11-25,506719,186750,430825,61073,3653,2464
italy-251126.osm.pbf,2025-11-26,506798,186799,430902,61077,3732,2527
italy-251127.osm.pbf,2025-11-27,506875,186855,430974,61079,3809,2606
italy-251128.osm.pbf,2025-11-28,507019,186963,431100,61079,3953,2670
italy-251129.osm.pbf,2025-11-29,507148,187037,431202,61090,4082,2822
italy-251130.osm.pbf,2025-11-30,507223,187075,431260,61095,4157,2865

diff.txt

Differenza dal 1 Gennaio al 31 Ottobre: 29622
Elementi aggiunti dal 1 Gennaio al 31 Ottobre: 26275
Elementi modificati dal 1 Gennaio al 31 Ottobre: 76879
Differenza a Novembre: 4157
Elementi aggiunti a Novembre: 4116
Elementi modificati a Novembre: 10532

Questi risultati sono stati riportati in grafici in questo foglio di calcolo e pubblicati in questo thread.