[Gfoss] database locale da igm95 online

Paolo Cavallini cavallini a faunalia.it
Lun 13 Mar 2017 08:24:03 CET


Il 13 marzo 2017 00:55:08 CET, Ely Parker <elyparker1 at gmail.com> ha scritto:
>salve a tutti
>
>volevo condividere qualche scritp che ho costruito magari qualcuno 
>suggerisce qualche cambiamento
>
>in particolare volevo costruirmi  una base di dati locale dei punti
>igm95
>
>http://www.igmi.org/geodetica/
>
>immagino che non sia precisa ma tantè visto che è gratis
>
>penso sia una cosa utile
>
>
>prerequisiti bash,wget,python
>
>1)prima fase scaricare capisaldi igm95 che ci interessano
>
>su linux si usa direttamente bash su windows bisogna andare in osgeo 
>shell e lanciare bash
>
>poi dare le seguenti riche di codice dando invio
>
>c=1
>
>while [  $c -lt 1000 ]; do wget -E -k -m 
>http://37.207.194.154/ware/schedaigm95.php?id=$c;
>
>let c=c+1;
>
>done
>
>questo codice prelevere i  punti da 1 al 1000 completi di immagine se
>vi 
>interessa altro  potete variare gli estremi (1 e 1000) su cui varia la 
>c, le opzioni che ho messo su wget creano una copia locale dei punti 
>completi di immagini se non vi interessano potete toglierle
>
>
>2) creare un file gis.py (o come vorreste chiamarlo) nella stessa 
>cartella dove sono le schede con il seguente codice
>
>#!/usr/bin/env python
>
># -*- coding: utf-8 -*-
>
>from BeautifulSoup import BeautifulSoup
>
>import sys
>
>import csv
>
>import argparse
>
>import os
>
>parser = argparse.ArgumentParser(description='legge una scheda igm95 e
>la converte in csv.')
>
>parser.add_argument('--delimiter', '-d', action='store',
>default=';',help="Carattere per separare le colonne csv")
>
>parser.add_argument('--quotechar', '-q', action='store',
>default='"',help="carattere per contenere testi csv")
>
>parser.add_argument('filename',nargs="?",help="SCHEDA HTML IGM95 da cui
>estrarre i dati")
>
>args = parser.parse_args()
>
>if sys.stdin.isatty() and not args.filename:
>
>   parser.print_help()
>
>   sys.exit(-1)
>
>elif not sys.stdin.isatty():
>
>   args.filename = sys.stdin
>
>else:
>
>   args.filename = open(sys.argv[1],'r')
>
>#print "Opening file"
>
>fin  = args.filename.read()
>
>#print "Parsing file"
>
>soup = BeautifulSoup(fin,convertEntities=BeautifulSoup.HTML_ENTITIES)
>
>#print "Preemptively removing unnecessary tags"
>
>[s.extract() for s in soup('script')]
>
>img=soup.findAll('a')
>
>t=soup.findAll("td")
>
>h=[u"n.",u"Nome:",u"Cart S 25:",u"Cart S
>25V:",u"Nazione:",u"Regione:",u"Provincia:",u"Comune:",u"Carabinieri:",\
>
>u"ROMA40 φ:".encode('utf-8'),u" R40 λ:".encode('utf-8'),u"F.O. N.:",u"
>F.O. E.:",u"F.E. N.:",u" F.E. E.:",\
>
>u"ETRF2000 φ:".encode('utf-8'),u"ETRF2000 λ:".encode('utf-8'),u"F.32
>N.:",u" F.32 E.:",u"F.33 N.:",u" F.33 E.:",\
>
>u"Q.S.l.m:",u"
>QEll.:",u"Materializzazione:",u"Accesso:",u"Informazioniausiliare:",u"Categoriadel
>punto:",u"Quota s.l.m.:",\
>
>u"Produttore:",u"Segnalizzato:",u"Ultima
>ricognizione:",u"Collegamenti:",u"M img:",u"C img",u"F img1",u"F img2"]
>
>riga=[]
>
>riga.append((soup.title.text.encode('utf-8')[18:]))
>
>if os.path.isfile('igm95.csv'):
>
>     csvfile=open('igm95.csv',"ab")
>
>fout = csv.writer(csvfile, delimiter=args.delimiter,
>quotechar=args.quotechar, quoting=csv.QUOTE_MINIMAL)
>
>else:
>
>     csvfile=open('igm95.csv',"wb")
>
>fout = csv.writer(csvfile, delimiter=args.delimiter,
>quotechar=args.quotechar, quoting=csv.QUOTE_MINIMAL)
>
>     fout.writerow(h)
>
>for i in (2,4,8,10,12,14,16, 25,33,41,46,51,56, 28,36,43,48,53,58,
>31,39, 61,63,65,67,69,71,73,76,79):
>
>     s=t[i].text.encode('utf-8')
>
>     if i==4 :
>
>         a=s.split(",")
>
>         riga.append(a[0][9:])
>
>         riga.append(a[1][10:])
>
>         continue
>
>     
>
>     elif i>= 41 and i<=58 :
>
>         s=s[2:]
>
>     elif i==61 : s=s.replace(";",".")
>
>     
>
>     riga.append(s)
>
>riga.append(img[0]['href'].encode('utf-8'))
>
>riga.append(img[1]['href'].encode('utf-8'))
>
>riga.append(img[2]['href'].encode('utf-8'))
>
>riga.append(img[3]['href'].encode('utf-8'))
>
>fout.writerow(riga)
>
>
>tra le librerie di python ci deve essere
>BeautifulSoup
>
>se non c'è installatela
>  
>
>a questo punto dentro la cartella con le schede igm
>
>se siete in osgeoshell di windows potete fare
>
>for %i in (*.html) do python gis.py %i
>
>
>mentre se siete in bash potete fare
>
>for i in $( ls ); do python gis.py $i; done
>
>
>scusate  se non sono stato chiarissimo  ma ci dovrebbe essere tutto
>
>saluti
>
>Salvo C.
>
>
>
>
>_______________________________________________
>Gfoss at lists.gfoss.it
>http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
>Questa e' una lista di discussione pubblica aperta a tutti.
>I messaggi di questa lista non hanno relazione diretta con le posizioni
>dell'Associazione GFOSS.it.
>808 iscritti al 07/03/2017

Grazie. Potresti metterli su un repo git?
Saluti.
-- 
Sent from mobile. Sorry for being short


Maggiori informazioni sulla lista Gfoss