Come caricare un layer di umap da csv fatto con Google Sheets.

Come caricare un layer di umap da csv fatto con Google Sheets.

Immaginiamo di aver creato un Modulo in Google Drive che carica i dati in un Foglio Google .
https://docs.google.com/forms/d/e/1FAIpQLSelrE4PA4-LxK8PdN34mCkcIg4QE5GG7x0JREw16U7NFt6lTA/viewform

Rispondendo alle domande e cliccando Invia, una riga viene aggiunta al primo Foglio di Google, chiamato "Risposte del modulo 1".
A questo punto per umap servono le coordinate dove piazzare i segnaposto.

Per ottenere le coordinate geografiche (longitudine e latitudine) di un indirizzo occorre chiamare un servizio internet che si chiama nominatim e funziona così:

https://nominatim.openstreetmap.org/search?q=via%20valera%202%20crema&format=json 

dove %20 significa "spazio".


Il servizio nominatim risponde così:


[{
"place_id":89809479,
"licence":"Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
"osm_type":"way",
"osm_id":54952940,
"boundingbox":["45.3621467","45.3624285","9.6907444","9.6928743"],
"lat":"45.3623504",
"lon":"9.6917809",
"display_name":"Via Valera, Crema Nuova, Crema, Cremona, Lombardia, 26013, Italia",
"class":"highway",
"type":"residential",
"importance":0.5
}]

Occorre dunque estrarre i numerelli a fianco di lat e long.

Questo si fa con Google Fogli prima con =IMPORTDATA(https://nominatim.openstreetmap.org/search?q=via%20valera%202%20crema&format=json )

e poi andando a cercare la colonna che contiene lat e quella che contiene long.
Diciamo che tutto questo verrà fatto indirizzo per indirizzo nel foglio chiamato "geocoder".

dopodiché a umap va passato un foglio, che chiamo 'umap_csv' per esempio  con 3 colonne minimo dove si riportano le info ottenute:

namelatlong
buca45.36235049.6917809
strisce45.36523079.6854846
cartello stradale45.36521829.6857546
buca45.36031219.6880439
rifiuti45.3693799.6905468
ennesima buca45.36478769.6883965
rifiuti abbandonati45.39551129.6390469
segnaletica45.36017449.6789169
segnaletica45.36274789.6865147

Siccome ogni risposta aggiunge una riga e tutto si sposta , c'è uno script che si attiva ogni volta che arriva una risposta del Modulo e copia gli indirizzi nel foglio geocoder.

function prepara_csv() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A7').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('umap_csv'), true);
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Risposte del modulo 1'), true);
  spreadsheet.getRange('C2:C100').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('geocoder'), true);
  spreadsheet.getRange('C2').activate();
  spreadsheet.getRange('\'Risposte del modulo 1\'!C2:C100').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('umap_csv'), true);
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Risposte del modulo 1'), true);
  spreadsheet.getRange('B2:B100').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('umap_csv'), true);
  spreadsheet.getRange('A2').activate();
  spreadsheet.getRange('\'Risposte del modulo 1\'!B2:B100').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
  spreadsheet.getRange('A12').activate();
};

Poi su File-> Pubblica occorre specificare il foglio (umap_csv) con questi dati essenziali e che la pubblicazione sia in formato csv.

Prendere nota del link di questa pubblicazione perché andrà messa in umap.

(https://docs.google.com/spreadsheets/d/1MhIBXkpZ8Ji8ZH8Iv2EDF6qwS0KJ_a7V7mUAl7Ra2z0/edit?usp=sharing)

Passiamo a umap.
Creata la mappa occorre modificare (matitone): cercare il simbolo della gestione layer sulla destra:
di nuovo la matita per modificare il layer e impostare "dati remoti" dove bisogna mettere il link al foglio pubblicato, specificare 'csv', dinamico ON, proxy ON e usare la cache.



https://umap.openstreetmap.fr/it/map/problemi_372969#16/45.3630/9.6885 
fine.






Commenti