Ciao, se leggi questo messaggio significa che non hai fatto il login o che non sei ancora registrato. Se non sei iscritto CLICCA QUI per registrarti e godere di tutti i vantaggi del nostro forum.
Ciao, se leggi questo messaggio significa che non hai fatto il login o che non sei ancora registrato. Se non sei iscritto CLICCA QUI per registrarti e godere di tutti i vantaggi del nostro forum.

Benvenuti nella nostra community - Visita anche il blog

Benvenuto ospite! Login Registrati Login with Facebook



Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
AIUTO QGIS PER PUGSS
#1
Buongiorno a tutti,
sono un disegnatore CAD in uno studio di architettura che ha l'incarico di redigere un PUGSS (piano urbano generale servizi del sottosuolo) per un comune della zona.
Secondo le specifiche imposte dall'ente committente e da regione Lombardia, tutti i sottoservizi (acquedotti-fognature-cavidotti ecc...) vanno censiti e restituiti in formato shape secondo una determinata codifica a campi.
Ho iniziato da poco ad utilizzare QGIS, importando i rilievi da autocad, quindi elementi puntuali (pozzetti) ed elementi lineari a polilinee (tratte di tubazioni che collegano i pozzetti), ed associando ad ogni entità grafica tramite selezione o inserimenti nella tabella dei campi dati, le informazioni richieste.

Vorrei naturalmente automatizzare l'inserimento di alcune informazioni, ma nonostante diverse prove, non ho ottenuto i risultati sperati:

Nello specifico:
- Per le tratte di tubazioni (polilinee in autocad) mi viene richiesto di specificare il nodo iniziale e finale (pozzetti). 
Di tutti i pozzetti naturalmente ho le coordinate spaziali, ed i vertici delle polilinee di collegamento naturalmente hanno le stesse coordinate.
Quale funzione in QGIS posso associare ai campi nodo iniziale/nodo finale per far conoscere il numero del relativo pozzetto al vertice (tenendo conto che il nodo iniziale deve anche avere una quota assoluta più alta del nodo finale)?

-Nel campo "toponimo strada" devo inserire il nome della via dove è interrata la tubazione. Ho scaricato lo stradario della mia provincia dal geoportale della lombardia e mi trovo uno shape con le aree di estensione delle vie e relativo nome. Quale funzione in QGIS per associare al campo "toponimo strada" il nome della via dove è contenuta o intersecata la tratta?

Grazie anticipatamente a chi vorrà darmi una mano!
Cita messaggio }
Thanks given by:
#2
Nessuno può aiutarmi? Primo problema, come estrapolare da qgis le coordinate del primo ed ultimo vertice di una polilinea (tratta i tubazione) ai fini del confronto con le coordinate dei punti (pozzetti)...?
Cita messaggio }
Thanks given by:
#3
Nel calcolatore campi, aggiungi 4 colonne di tipo Real (con 2 decimali di precisione se il sistema e' metrico), e come espressione dagli rispettivamente:

$x_at(0)

$y_at(0)

$x_at(1)

$y_at(1)
Cita messaggio }
Thanks given by: delgiorgio
#4
Ok grazie, con le funzioni citate riesco ad identificare il primo e l'ultimo punto delle polilinee (tratte di tubazioni nel mio caso).... ma ora quale funzione scrivere per nei campi NODO INIZIALE e NODO FINALE delle tratte di tubazioni per far associare il corrispondente punto (pozzetto) posto agli estremi. L'elenco dei pozzetti, con rispettive coordinate e numero identificativo (record tabella) è posto su un'altro layer....
Cita messaggio }
Thanks given by:
#5
(13-05-2017, 12:47 AM)Novarese Ha scritto: Nel calcolatore campi, aggiungi 4 colonne di tipo Real (con 2 decimali di precisione se il sistema e' metrico), e come espressione dagli rispettivamente:

$x_at(0)

$y_at(0)

$x_at(1)

$y_at(1)

Salve, sono arrivato ad un punto morto... ho due layer, POZZETTI con relativi campi e coordinate x,y e TRATTE, con relativi campi e coordinate x1,y1,x,yn (iniziali e finali)....
ho usato JOIN per includere i campi in una tabella unica (anche se ovviamente non hanno campi comuni!)

con l'espressione:
CASE WHEN ( ( "X1tratta" = "punti_Xp" ) and ( "Y1tratta" = "punti_Yp" )) THEN  "NODO_INI" = "punti_N.PUNTO"  
END
pensavo di risolvere il problema, ma i valori sono sempre NULL.

morale: in che modo confrontare i valori che stanno su due layer vettoriali usando un'espressione tipo quella di cui sopra?

grazie mille
Cita messaggio }
Thanks given by:
#6
Cosa intendi per "confrontare"..?

Forse e' meglio che ci mostri un esempio grafico di cio' che vuoi ottenere, grazie.
Cita messaggio }
Thanks given by:
#7
Photo 
(25-05-2017, 12:24 AM)Novarese Ha scritto: Cosa intendi  per "confrontare"..?

Forse e' meglio che ci mostri un esempio grafico di cio' che vuoi ottenere, grazie.

Purtroppo non riesco ad inserire uno stralcio della finestra grafica di qgis in questo post...
comunque riepilogando ho 2 layer: 
- uno con i pozzetti, con relativi campi tra cui le coordinate puntuali x,y,z e numero punto
- uno con le tratte, con relativi campi e coordinate x1,y1,xn,yn (punti iniziali e finali delle tratte)

anni fa programmavo in qbasic, e con quello avrei potuto creare un ciclo for/next dove confrontando le coordinate dei punti iniziali e finali delle tratte con le coordinate dei pozzetti, quando queste corrispondevano, avrei associato punto iniziale/punto finale al numero di pozzetto relativo.

Non son capace di fare la stessa cosa in qgis, probabilmente dovrei creare lo stesso ciclo con pyton.... oppure avere un plugin preciso.... oppure richiamare una particolare funzione in calcolatore campi....

Con confrontare intendo quindi creare questo ciclo di confronto tra coordinate puntuali e lineari poste su layer diversi ed associare determinate azioni al verificarsi di determinati eventi....

Grazie Novarese per le dritte!
Cita messaggio }
Thanks given by:
#8
Mah, non vedendo i dati, la sparo ad occhio...

Piuttosto che fare un improbabile confronto numerico "brute force", opterei per un buffer di 1 metro attorno ai nodi della shape puntuale, dopodiche' con una spatial join "acchiapperei" gli estremi della shape lineare.

E' solo uno spunto teorico, magari qualcuno ha un'idea migliore Wink
Cita messaggio }
Thanks given by:



Vai al forum:


Utenti che stanno guardando questa discussione:
1 Ospite(i)