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. _______________________________________________ [hidden email] 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 |
Il 13 marzo 2017 00:55:08 CET, Ely Parker <[hidden email]> 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. > > > > >_______________________________________________ >[hidden email] >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 Saluti. -- Sent from mobile. Sorry for being short _______________________________________________ [hidden email] 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 |
Il 13/03/2017 08:24, Paolo Cavallini ha scritto:
> > Grazie. Potresti metterli su un repo git? > Saluti. > -- > essendo in pratica tre script non so se sia indicato, è piu una procedura che un programma, peraltro va completata con la creazione dello shape finale ho preferito condividerla ora anche se non completamente matura perchè sapete come sono ste cose uno rimanda rimanda e poi non le fa mai se ci sono miglioramenti da fare o dubbi così si vedono assieme comunque saluti SC _______________________________________________ [hidden email] 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 |
Il 13/03/2017 09:47, Ely Parker ha scritto:
> essendo in pratica tre script non so se sia indicato, è piu una > procedura che un programma, peraltro va completata con la creazione > dello shape finale > ho preferito condividerla ora anche se non completamente matura perchè > sapete come sono ste cose uno rimanda rimanda e poi non le fa mai > > se ci sono miglioramenti da fare o dubbi così si vedono assieme comunque scusa se insisto: è poprio per questo che metterli su un repo ha senso. cosa ci vedi di negativo? saluti. -- Paolo Cavallini - www.faunalia.eu QGIS & PostGIS courses: http://www.faunalia.eu/training.html https://www.google.com/trends/explore?date=all&geo=IT&q=qgis,arcgis _______________________________________________ [hidden email] 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 |
Il 13/03/2017 10:21, Paolo Cavallini ha scritto:
> Il 13/03/2017 09:47, Ely Parker ha scritto: > >> essendo in pratica tre script non so se sia indicato, è piu una >> procedura che un programma, peraltro va completata con la creazione >> dello shape finale >> ho preferito condividerla ora anche se non completamente matura perchè >> sapete come sono ste cose uno rimanda rimanda e poi non le fa mai >> >> se ci sono miglioramenti da fare o dubbi così si vedono assieme comunque > scusa se insisto: è poprio per questo che metterli su un repo ha senso. > cosa ci vedi di negativo? > saluti. > quarto che ancora deve nascere i repo li vedo piu per progetti piu complessi e piu omogenei comunque non ho detto che non lo farò, sicuramente lo farò , ma per ora vediamo se ci sono osservazioni interessanti _______________________________________________ [hidden email] 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 |
Free forum by Nabble | Edit this page |