avrei un quesito se qualcuno può aiutarmi, dovrei compilare in modo
automatico o quasi alcuni campi, di tratte sostiuite con nuove geometrie.
Ho una rete formata da due layer, uno di punti e uno di linee, ogni
geometria lineare all'estremità tocca una geometria puntuale.
Nei due layer esistono due campi STA (che vorrebe significare start
partenza) e END (fine) con codici numerici, questi codici servirebbero o
sarebbero serviti in passato a fare analisi di rete. Ovvero esite un campo
numerico che identifica la partenza e la fine e segue la direzione della
linea. Ovvero avremo un nodo di partenza che avrà un campo STA vuoto e un
campo END. La linea che parte da quel punto avra il campo STA che prende il
numero del campo END del nodo e avrà un campo END con nuovo numero, il nodo
successivo prenderà il campo END dalla linea e lo avrà come campo STA e
avanti così. In caso che più linee si vanno ad unire in un unico punto,
allora il campo END per tutte le linee sarà uguale e il campo STA del punto
di intersezione dovrà avere quel valore di END.
Vorrei evitare di compilare tutto manualmente visto il numero degli elementi
da modificare e purtroppo di questo campo i committenti non vogliono
rinunciare.
Lo sò è un bel casino, se qualcuno sà come affrontare il problema, posso
allegare gli shape.
Ciao,
ammetto di non aver capito il problema: devi aggiornare campi già
esistenti o riempire i campi di tratte nuove con lo stesso criterio
adottato per tratte vecchie? La descrizione che hai fatto mi ha un po'
confuso, ma credo che si possa risolvere scorrendo i due layer e
andando ad annidare un po' di cicli if.
Per favore potresti allegare gli shape di partenza (anche in parte,
giusto per avere un'idea) e un esempio di shape di arrivo (dove fai
vedere quale sia il risultato che si vuole ottenere partendo dagli
shape di partenza)? Grazie.
Marco
Il 15 novembre 2016 12:34, ugi <info@elgeo.it> ha scritto:
Buongiorno a tutti
avrei un quesito se qualcuno può aiutarmi, dovrei compilare in modo
automatico o quasi alcuni campi, di tratte sostiuite con nuove geometrie.
Ho una rete formata da due layer, uno di punti e uno di linee, ogni
geometria lineare all'estremità tocca una geometria puntuale.
Nei due layer esistono due campi STA (che vorrebe significare start
partenza) e END (fine) con codici numerici, questi codici servirebbero o
sarebbero serviti in passato a fare analisi di rete. Ovvero esite un campo
numerico che identifica la partenza e la fine e segue la direzione della
linea. Ovvero avremo un nodo di partenza che avrà un campo STA vuoto e un
campo END. La linea che parte da quel punto avra il campo STA che prende il
numero del campo END del nodo e avrà un campo END con nuovo numero, il nodo
successivo prenderà il campo END dalla linea e lo avrà come campo STA e
avanti così. In caso che più linee si vanno ad unire in un unico punto,
allora il campo END per tutte le linee sarà uguale e il campo STA del punto
di intersezione dovrà avere quel valore di END.
Vorrei evitare di compilare tutto manualmente visto il numero degli elementi
da modificare e purtroppo di questo campo i committenti non vogliono
rinunciare.
Lo sò è un bel casino, se qualcuno sà come affrontare il problema, posso
allegare gli shape.
......
Nei due layer esistono due campi STA (che vorrebe significare start
partenza) e END (fine) con codici numerici, questi codici servirebbero o
sarebbero serviti in passato a fare analisi di rete.....
vuoi costruire una lista linkata di geometrie, ok?
.....
Vorrei evitare di compilare tutto manualmente visto il numero degli elementi
da modificare e purtroppo di questo campo i committenti non vogliono
rinunciare.
in modo automatico, cioè con strumenti nativi di QGIS non saprei (e
certo vale la pena di approfondire), ma con un piccolo script python
non dovrebbe essere difficile testare le estremità di inizio e di fine
della polyline con le altre e registrare le linee interessate;
forse dovrai avere cura di trattare il senso di percorrenza delle
linee e/o anche intersezioni a più di due linee;
Ciao,
devo riempire campi di tratte nuove con lo stesso criterio con cui sono
state riempiti campi delle tratte esistenti. Ti allego un pezzo di shape
dove si vedono i campi esitenti con che logica sono compilati, compreso dei
tratti nuovi da compilare. Premetto che ogni linea parte da un'elemento
punto e finisce ad un'altro elemento punto ed ha una direzione di percorso
che poi i campi compilati dovranno seguire. Quindi se n linee finiscono in
un elemento punto, le n linee avranno come campo END lo stesso codice
numerico e il punto che vanno a toccare prendera il valore come campo START.
Inoltre in questa logica il primo punto di partenza non avrà nessun valore
di START (campo vuoto) e solo un valore END che poi trasmettera alla linea
come lo prenderà come valore di START.
Grazie nel frattempo.
shape li metto in dropbox nel seguente link: https://www.dropbox.com/s/rpf46hfm1db7qpa/test-qgis-userlist.zip?dl=0
grazie
ciao
Ugi
devo riempire campi di tratte nuove con lo stesso criterio con cui sono
state riempiti campi delle tratte esistenti. Ti allego un pezzo di shape
dove ......
ho guardato quel file e queste sono alcune feature che ho selezionato
(ho tagliato la geometria); questo estratto
wkt_geom ID DATERH FIRERH LOGSTA LOGEND
---------------------------------------------------------------------------------------------
POINT 11990 2006-02-03 19 0042080526273700 0042080522044000
LINESTRING 10606 2006-08-03 19 0042080522044000 0042080522033000
LINESTRING 11085 2006-02-03 19 0042080526284100 0042080526273700
LINESTRING 11086 2006-02-03 19 0042080526273600 0042080526273700
sembra suggerire che il campo LOGSTA delle linee duplica il campo
LOGEND del punto e viceversa;
tutto sommato semplice se avessi tutti i punti popolati, invece ho
visto che hai dei punti con i due campi non popolati: come fai a
popolarli? con quale logica?
risolto questo credo tu sia vicino alla soluzione;
Ciao Giuliano
il fatto è proprio che ho uno shape da agiornare che aveva già i campi
compilati e ora mi trovo ad aggiungere nuovi elementi sia lineari che
puntuali , di cui oltre a tanti altri attributi ci sono questi due logsta e
logend che devo compilare utilizzando la stessa logica, per questo motivo
alcuni campi erano vuoti.
Se facciamo l'esempio di una rete per l'illuminazione, la sequenza logica
sarebbe si parte da un punto (es:cassetta) che ha logsta vuoto (NULL) e
logend (100), prosegue una linea che avrà logsta (100) e logend (200), a cui
si attacca un punto (pozzetto) che avrà logsta (200) e logend (300), da cui
magari partiranno n linee che avranno tutte logsta (300) e n diversi logend,
le quali finiranno in n punti che prenderanno come logsta i vari logend
ricevuti dalle linee.
Ora però non riesco a trovare un metodo per popolare i campi vuoti degli
elementi nuovi creati.
ciao
Ugi
il fatto è proprio che ho uno shape da agiornare che aveva già i campi
compilati e ora mi trovo ad aggiungere nuovi elementi sia lineari che
puntuali , .......
Ora però non riesco a trovare un metodo per popolare i campi vuoti degli
elementi nuovi creati.
scusa se ripeto, ma il problema delle linee è forse risolto, è quello
dei punti che richiede la definizione di una policy; non puoi chiedere
lumi a chi l'ha prodotto?
io proverò a guardare ancora se magari intuisco qualche logica
sottostante, ma, come puoi intuire, è un metodo abbastanza poco
scientifico