Animare la munnizza a Palermo - dati App RAP

28 views
Skip to first unread message

Totò Fiandaca

unread,
Oct 15, 2018, 7:11:16 AM10/15/18
to opendat...@googlegroups.com
Salve a tutti,
sabato scorso ho scritto un piccolo blog post [0] sul mio blog 'Pigrecoinfinito' con i dati scrapati da Andrea Borruso dal sito della RAP [1],
Andrea ha condiviso l'articoletto nel gruppo OpenDataSicilia su FB,
volevo ringraziare Andrea e il gruppo perché l'articolo sta riscuotendo molto successo.

--
Ing. Salvatore Fiandaca
mobile.:+39 327.493.8955 
m: pigrecoin...@gmail.com
C.F.: FNDSVT71E29Z103G
P.IVA: 06597870820
membro QGIS Italia - http://qgis.it/
socio GFOSS.it - http://gfoss.it/

43°51'0.54"N  10°34'27.62"E - EPSG:4326

“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?” 
R. Stallman

Questo documento, allegati inclusi, contiene informazioni di proprietà di FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario in relazione alle finalità per le quali è stato ricevuto. E' vietata qualsiasi forma di riproduzione o divulgazione senza l'esplicito consenso di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di informare tempestivamente il mittente e distruggere la copia in proprio possesso.


Giovan Battista Vitrano

unread,
Oct 15, 2018, 7:31:25 AM10/15/18
to opendatasicilia
Con gli stessi dati ho realizzato una mappa interattiva http://palermohub.opendatasicilia.it/app_rap.html

Usando i filtri dinamici possiamo analizzare lo stato delle segnalazioni in dettaglio, l’analisi può essere fatta per circoscrizione, quartiere, giorno, mese, ed indirizzo, i filtri posso essere usati singolarmente o combinati tra loro.


Grazie Andrea
Grazie Totò

ciro spataro

unread,
Oct 15, 2018, 7:46:28 AM10/15/18
to opendatasicilia
grazie delle belle cose


--
Sito: http://opendatasicilia.it
Facebook: https://www.facebook.com/groups/opendatasicilia/
twitter: http://twitter.com/opendatasicilia
Gruppo Telegram: https://t.me/opendatasicilia
---
Hai ricevuto questo messaggio perché sei iscritto al gruppo "opendatasicilia" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a opendatasicil...@googlegroups.com.
Per postare in questo gruppo, invia un'email a opendat...@googlegroups.com.
Visita questo gruppo all'indirizzo https://groups.google.com/group/opendatasicilia.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/opendatasicilia/ae95563b-d4d4-4c4c-9234-76e30f46771f%40googlegroups.com.
Per altre opzioni visita https://groups.google.com/d/optout.

Totò Fiandaca

unread,
Oct 15, 2018, 9:24:57 AM10/15/18
to opendat...@googlegroups.com
wow,
sono stato appena intervistato da Repubblica Palermo...
il mio blog post ha colpito il giornalista e mi ha chiesto come ho ottenuto i dati e come mai il centro storico è il quartiere con più segnalazioni; mi ha chiesto anche la genesi dell'articolo e qui ho parlato di Andrea e di quando, passeggiando per le vie di Palermo, si ferma a fotografare i cassonetti gettacarta strapieni... ahahha
tvb Andy

saluti


Per altre opzioni visita https://groups.google.com/d/optout.

Totò Fiandaca

unread,
Oct 15, 2018, 1:40:38 PM10/15/18
to opendat...@googlegroups.com
una anteprima che parla del mio articolo su Repubblica

https://www.facebook.com/repubblica.palermo/videos/514934395642425/?hc_location=ufi

al minuto 3:20

andy

unread,
Oct 16, 2018, 2:43:51 AM10/16/18
to opendatasicilia

Ciao,qualche nota sui dati.

La fonte di partenza è questo sito http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa

Che è dal punto di vista del front-end abbandonato, ma che è in connessione ancora con il db in cui confluiscono via app le segnalazioni dei cittadini.
Se si prova a fare query come quella di sotto, e si visualizza con gli strumenti di sviluppo del browser, si vede come vengono richiesti i dati.

image.png

Se si fa tasto destro su 3) mappa e si scegli Copy > Copy as cURL (bash) avrete questo codice

curl 'http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' \
-H 'Origin: http://www.rapspaservizi.it' -H 'Upgrade-Insecure-Requests: 1' -H 'Content-Type: application/x-www-form-urlencoded' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.54 Safari/537.36' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' \
-H 'Referer: http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' -H 'Accept-Encoding: gzip, deflate' \
-H 'Accept-Language: it,en-US;q=0.9,en;q=0.8' -H 'Cookie: ci_session=bda02ce3618af0531686befe21379b687321ca0b' \
--data 'giorno_dal=10%2F10%2F2018&giorno_al=16%2F10%2F2018&attivita_id=31&circoscrizione_id=T&stato=A' --compressed

cURL è un browser a riga di comando, che chiede sopra i dati dal giorno 10 ottobre 2018 al giorno 16, per le attività aperte (hanno codice 31), per tutte le circoscrizioni del comune di Palermo.
Per questo sito la query si esprime così --data 'giorno_dal=10%2F10%2F2018&giorno_al=16%2F10%2F2018&attivita_id=31&circoscrizione_id=T&stato=A.

La query copia sopra si può ridurre soltanto a:

curl 'http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' \
--data 'giorno_dal=10%2F10%2F2018&giorno_al=16%2F10%2F2018&attivita_id=31&circoscrizione_id=T&stato=A'

Nell’output, una pagina HTML (qui un esempio un po’ ripulito), ci sono le info sulla posizione dei pallini e le info anagrafiche.
Le info sulla posizione hanno questa struttura var myLatlng = new google.maps.LatLng(38.113918,13.377532);.

Le info con data, ora e via invece sono in questo tipo di blocco:

marker_2.set("content", "<h4>15/10/2018  20:20:18<\/h4><p>VIA PASOLINI PIER PAOLO, 25<\/p><p><img style=\"height:400px\" src=\"http://www.rapspaservizi.it/develop1/images/segnalazioni/segnalazione_31627.jpg\" alt=\"Foto non disponibile\"><\/p>");

C’era quindi da creare uno script che scaricasse la pagina HTML e che estraesse queste informazioni e le strutturasse in un file più usabile.
A seguire quello che genera i dati usati da Totò e Gianni. Sfrutta csvkit, cURL, paste (un’utility che unisce in orizzontale più file di testo) e sopratutto le utility di base di Linux per pulire, estrarre e trasformare stringhe di testo (sed, grep, perl, echo, ecc.).

Buona giornata

#!/bin/bash

### requisiti ###
# csvkit
### requisiti ###

set -x

cartella="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# leggo la data di oggi
oggi=$(echo $(date +'%d %m %Y') | sed 's/ /%2F/g')
# Prima scarico i dati
# le segnalazioni aperte
curl -sL 'http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' -H 'Connection: keep-alive' \
-H 'Cache-Control: max-age=0' -H 'Origin: http://www.rapspaservizi.it' -H 'Upgrade-Insecure-Requests: 1' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.40 Safari/537.36' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' \
-H 'Referer: http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' -H 'Accept-Encoding: gzip, deflate' \
-H 'Accept-Language: it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7' \
--data 'giorno_dal=01%2F01%2F2018&giorno_al='"$oggi"'&attivita_id=31&circoscrizione_id=T&stato=A' >"$cartella"/aperte
# poi le segnalazioni chiuse
curl -sL 'http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' -H 'Connection: keep-alive' \
-H 'Cache-Control: max-age=0' -H 'Origin: http://www.rapspaservizi.it' -H 'Upgrade-Insecure-Requests: 1' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.40 Safari/537.36' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' \
-H 'Referer: http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' -H 'Accept-Encoding: gzip, deflate' \
-H 'Accept-Language: it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7' \
--data 'giorno_dal=01%2F01%2F2018&giorno_al='"$oggi"'&attivita_id=31&circoscrizione_id=T&stato=C' >"$cartella"/chiuse

# estraggo info anagrafiche su ogni "pallino" (le info sulle coordinate sono in un blocco diverso da quello anagrafico)
## creo riga di intestazione del file di output delle segnalazioni
echo "data,indirizzo,foto,stato" >"$cartella"/dati.csv
## estraggo info su segnalazioni aperte
<"$cartella"/aperte grep -P 'marker_[0-9]+.set.*' | \
perl -pe  's|(marker_)([0-9]+)(.*?)(<h[0-9]>)(.*?)(<.h[0-9]>)(<p>)(.*?)(<.p>)(.*?)(src=.")(.*?)(.")(.*)$|$5#$8#$12|g' | \
grep -v 'marker' | csvformat -d "#" | sed -e 's/$/,aperta/g' | sed -r 's/^\s+//' >>"$cartella"/dati.csv
## estraggo info su segnalazioni aperte chiuse
<"$cartella"/chiuse grep -P 'marker_[0-9]+.set.*' | \
perl -pe  's|(marker_)([0-9]+)(.*?)(<h[0-9]>)(.*?)(<.h[0-9]>)(<p>)(.*?)(<.p>)(.*?)(src=.")(.*?)(.")(.*)$|$5#$8#$12|g' | \
grep -v 'marker' | csvformat -d "#" | sed -e 's/$/,chiusa/g' | sed -r 's/^\s+//' >>"$cartella"/dati.csv

## estraggo info sulle coordinate
echo "latitude,longitude" >"$cartella"/coords.txt
<"$cartella"/aperte grep -P 'google.maps.LatLng' | tail -n +3 | sed -r 's/^\s+//g' | perl -pe  's/^(.+?\()(.+?)(.;)/$2/g' >>"$cartella"/coords.txt
<"$cartella"/chiuse grep -P 'google.maps.LatLng' | tail -n +3 | sed -r 's/^\s+//g' | perl -pe  's/^(.+?\()(.+?)(.;)/$2/g' >>"$cartella"/coords.txt
# metto insieme le info anagrafiche con quelle spaziali
paste -d , dati.csv "$cartella"/coords.txt >"$cartella"/output.csv

# rimuovo i record che hanno 0 come coordinate e creo geojson
<"$cartella"/output.csv csvgrep -c "latitude,longitude" -r '^.{0,1}0.{0,1}$' -i | csvjson --lat latitude --lon longitude >"$cartella"/output.geojson

mv "$cartella"/output.csv "$cartella"/segnalazioniAppRAP.csv
--
___________________

Andrea Borruso
website: https://medium.com/tantotanto
38° 7' 48" N, 13° 21' 9" E, EPSG:4326
___________________

"cercare e saper riconoscere chi e cosa,
 in mezzo all’inferno, non è inferno, 
e farlo durare, e dargli spazio"

Italo Calvino

Totò Fiandaca

unread,
Oct 17, 2018, 3:44:41 AM10/17/18
to opendat...@googlegroups.com
... ciao
alla fine del mio articolo [0] ho messo l'articolo su Repubblica Palermo in cui si parla anche del Gruppo OpenDataSicilia, di Andrea Borruso, di me e di QGIS.


SALUTI

--
Sito: http://opendatasicilia.it
Facebook: https://www.facebook.com/groups/opendatasicilia/
twitter: http://twitter.com/opendatasicilia
Gruppo Telegram: https://t.me/opendatasicilia
---
Hai ricevuto questo messaggio perché sei iscritto al gruppo "opendatasicilia" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a opendatasicil...@googlegroups.com.
Per postare in questo gruppo, invia un'email a opendat...@googlegroups.com.
Visita questo gruppo all'indirizzo https://groups.google.com/group/opendatasicilia.

Per altre opzioni visita https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages