La tecnica che ho suggerito scova i doppioni all'interno di un foglio elettronico, dopodichè costruisce l'interrogazione SQL da incollare in Qgis. 1] lancia l'opensource Libreoffice, e setta la lingua come "inglese" 2] apri una copia PIPPO del file .DBF contenuto nello shapeset PLUTO 3] cancellare tutto tranne la colonna contenente i doppioni 4] sortare alfabeticamente la colonna A 5] supponendo che in A1 ci sia il nome del campo, inserisci in B2 la formula =IF(A3=A2) 6] propaga il contenuto di B1 a tutta la colonna B 7] dove vedi TRUE significa che c'è un doppione 8] DATA => FILTER => AUTOFILTER ed estrapoli solo i valori TRUE (che in Libreoffice sono marcati come "1") 9] copia la sotto-colonna A in un foglio vuoto, ottenendo i valori doppi come occorrenze univoche Rifatti vivo quando sei arrivato a questo punto, grazie. |
...ho intuito la procedura che fai. ma riesco anche con openoffice? Il giorno 30 ottobre 2013 08:15, Novarese <[hidden email]> ha scritto: Matteo Asioli wrote/ _______________________________________________ [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. 666 iscritti al 22.7.2013 |
In reply to this post by Novarese
ok ci sono riuscito anche con openoffice ad individuare i doppioni...ora però se non mi sbaglio e vado a modificare il dpf togliendoli...non mi dovrebbe ritornare lo shape in quanto gli mancano dei record...o mi sbaglio?
Il giorno 30 ottobre 2013 08:15, Novarese <[hidden email]> ha scritto: Matteo Asioli wrote/ _______________________________________________ [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. 666 iscritti al 22.7.2013 |
In reply to this post by Novarese
ok Grazie Novarese alla fine ci sono riuscito....grazie mille della tua procedura unita alla pazienza! Matteo Il giorno 30 ottobre 2013 08:15, Novarese <[hidden email]> ha scritto: Matteo Asioli wrote/ _______________________________________________ [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. 666 iscritti al 22.7.2013 |
In reply to this post by Matteo Asioli
...e difatti ho scritto di usare una copia PIPPO dell'originale PLUTO, per evitare che "per sbaglio" ti scappasse il mouse sull'icona di salvataggio. Congratulazioni per il successo, e per curiosita': come hai assemblato l'istruzione di query per selezionare i doppioni in Qgis..? |
In reply to this post by Matteo Asioli
lista_di tutti_i_record = [lista_di tutti_i_record] lista_dati_rec_corrente = [contiene i valori della prima riga] lista_di tutti_i_record.sort() n = 1
for singolo_record in range(len(lista_di tutti_i_record)): if n > len(lista_di tutti_i_record): return
2013/10/30 Matteo Asioli <[hidden email]>
_______________________________________________ [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. 666 iscritti al 22.7.2013 |
Scusate, mi è scappata la mail...stavo provando a mettere giù le linee guida di Novarese in codice pseudopython, magari ci facciamo un piccolo plugin...Scusate ancora....continuo nel prossimo post... Ciao
Luca 2013/10/30 Luca Mandolesi <[hidden email]>
_______________________________________________ [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. 666 iscritti al 22.7.2013 |
Salve, riprendo la mia prova.
Provando a guardare la procedura indicata da novarese e aggiungendo le appropriate classi di pyqgis per accedere ai vettori credo che la procedura possa essere questa. ################# lista_di tutti_i_record = [lista_di tutti_i_record] lista_dati_rec_corrente = [contiene i valori della prima riga]
lista_di tutti_i_record.sort() n = 1
for singolo_record in range(len(lista_di tutti_i_record)): if n > len(lista_di tutti_i_record):
return lista_id_record_doppi else: if lista_dati_rec_corrente == lista_di tutti_i_record[n]:
lista_id_record_doppi.append(id_record) n+=1
else: lista_dati_rec_corrente = lista_di tutti_i_record[n] n+=1
funzione_rimuovi_tutti_gli_id_doppi(lista_id_record_doppi ) #################### Scritta al volo...diciamo che per un database avrei già pronte le varie funzioni...per uno shape devo solo guardare le classi di pyQgis per i vettoriali...
Suggerimenti? Errori macroscopici? Ciao Luca 2013/10/30 Luca Mandolesi <[hidden email]>
_______________________________________________ [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. 666 iscritti al 22.7.2013 |
Il 30/10/2013 20:11, Luca Mandolesi ha scritto:
> > Suggerimenti? Errori macroscopici? Non ho seguito la discussione per intero ma in Python un modo molto rapido ed efficiente di ottenere un insieme di valori non ripetuti da una lista è set(): In [1]: lista = [1, 2, 3, 4, 5, 1, 3, 5] In [2]: set(lista) Out[2]: set([1, 2, 3, 4, 5]) Credo che possa essere utile anche in questo caso, magari scrivendo la procedura in modo più "pythonico" :-) Ciao steko -- Stefano Costa http://steko.iosa.it/ _______________________________________________ [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. 666 iscritti al 22.7.2013 |
Ciao Stefano, provo a ragionarci, ma qui si tratterebbe di ricavare i record duplicati che hanno uguali valori dentro le colonne Set funziona anche su una lista di liste? lista = [[1, 2, 3], [1, 2, 4], [1, 2, 3]] set(lista) out = set([1, 2, 3], [1, 2, 4]) 2013/10/30 Stefano Costa <[hidden email]> Il 30/10/2013 20:11, Luca Mandolesi ha scritto: _______________________________________________ [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. 666 iscritti al 22.7.2013 |
In reply to this post by Novarese
...be forse mi sono mosso in maniera più artigianale, ma ho fatto cosi. nella copia dello shape file ho lavorato sul DB come hai detto te, creandomi prima un campo numerico ID per poter poi riposizionare alla fine i record
alla fine del processo. In un campo nuovo ho creato la tua formula *IF=(A2=A3; "doppioni")* proprio come mi hai detto tu. Poi ho copiato tali valori "doppioni" in una nuova colonna solo come testo. Ho poi riposizionato i record come ID. In Quantum mi è bastato selezionare i valori "doppioni" e cancellarli.
Senza il tuo suggerimento non ci sarei arrivato....lo so forse un po artigianale, ma alla fine conta anche il risultato...o mi sbaglio? Grazie ancora! Il giorno 30 ottobre 2013 17:59, Novarese <[hidden email]> ha scritto: Matteo Asioli wrote/ _______________________________________________ [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. 666 iscritti al 22.7.2013 |
In reply to this post by mando
Il 30/10/2013 20:36, Luca Mandolesi ha scritto:
> Set funziona anche su una lista di liste? Liste no (non sono hashable) ma tuple sì: In [7]: lista = [(1, 2, 3), (1, 2, 4), (1, 2, 3)] In [8]: set(lista) Out[8]: set([(1, 2, 4), (1, 2, 3)]) Comunque se metti insieme una versione funzionante della procedura proviamo a migliorarla seguendo questa pista. Penso che ne vada anche dell'efficienza nell'esecuzione. Ciao, steko -- Stefano Costa http://steko.iosa.it/ _______________________________________________ [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. 666 iscritti al 22.7.2013 |
Ottimo! Grazie! Allora proviamo a mettere su una prima versione. Ciao ps: hai visto la mail con l'evoluzione del tuo script per il matrix con pygraphviz? 2013/10/30 Stefano Costa <[hidden email]> Il 30/10/2013 20:36, Luca Mandolesi ha scritto: _______________________________________________ [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. 666 iscritti al 22.7.2013 |
In reply to this post by Matteo Asioli
Ho paura che così "perdi per strada" N record, tanti quanti sono i valori multipli, e mi spiego con la seguente simulazione: http://novarese.t15.org/gfoss/if.gif ![]() Come vedi, il tuo metodo estrarrebbe solo il secondo e terzo record, perdendosi (giustamente) il quarto. Opterei per un altro approccio, precisamente "usando" il DBF come file temporaneo, senza usare ID fittizi. Una volta che sei arrivato al punto 9 del mio metodo, devi estrapolare SOLTANTO le singole occorrenze, e quindi non: CAIO CAIO SEMPRONIO SEMPRONIO SEMPRONIO TIZIO TIZIO TIZIO TIZIO bensì CAIO,SEMPRONIO,TIZIO una volta soltanto. Per fare questo, io uso l'editor gratuito NoteTab, che sorta una lista eliminando automaticamente i duplicati. Ora, quando hai: CAIO SEMPRONIO TIZIO li copi in Libreoffice, ed assembli la seguente clausola SQL mediante la funzione "Concatenate" del foglio elettronico: "NOME"="CAIO" or "NOME"="SEMPRONIO" or "NOME"="TIZIO" e la dai in pasto a Qgis (menu LAYER => INTERROGAZIONE) In questo modo, hai la certezza matematica che verranno selezionati TUTTI i doppioni, senza perderne per strada alcuno. |
In reply to this post by Matteo Asioli
Ciao..ma in QGIS riesci a selezionare i valori univoci ??
Che comando hai usato per individuarli ?
A.Ummarino
|
>Ciao..ma in QGIS riesci a selezionare i valori univoci ?? >Che comando hai usato per individuarli ? Per individuare i valori univoci c'è un comando in vettore\strumenti di analisi\lista valori univoci. Ti permette di fare una lista ma non ho ancora capito come selezionarli direttamente da QGis.
Come spiegavo sopra ho utilizzato la procedura di Novarese, adattandola in maniera artigianale..
Il giorno 31 ottobre 2013 09:05, Ummarino <[hidden email]> ha scritto: Ciao..ma in QGIS riesci a selezionare i valori univoci ?? _______________________________________________ [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. 666 iscritti al 22.7.2013 |
Te l'ho scritto nel post di stamattina 31.10.2013 alle ore 8:43, quello con la schermata lampeggiante di Libreoffice... |
Grazie Novarese...ma quale è il tuo nome? Si il tuo metodo è completo e me lo studio bene, perchè so che mi tornerà utile. Ti scoccerò in privato per approfondire se ho difficoltà. Nel mio caso ero sicuro che erano solo veri doppioni perchè lo shape era generato dalla fusione di due shape con particelle catastali, essendo due erano per forza due geometrie doppie.
Ma il tuo considera anche se ci sono doppioni, triploni, e quadriploni...;) Matteo Il giorno 31 ottobre 2013 10:59, Novarese <[hidden email]> ha scritto: Matteo Asioli wrote/ _______________________________________________ [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. 666 iscritti al 22.7.2013 |
Scusate, ma ho seguito questa discussione molto distrattamente, e quindi è molto probabile che lo abbiate già detto. Ma cosa vi impedisce di usare la funzione "Maintenance - Remove duplicate rows" di SpatiaLite ?_______________________________________________ [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. 666 iscritti al 22.7.2013 |
Ciao Matteo, mi faresti capire se i doppioni presenti nel tuo shapefile sono doppi a livello di dati o anche a livello di geometria duplicata, quindi medesime coordinate? Grazie Luca 2013/10/31 Geo DrinX <[hidden email]>
_______________________________________________ [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. 666 iscritti al 22.7.2013 |
Free forum by Nabble | Edit this page |