Ciao e grazie mille con le tue indicazioni e l'aiuto del documento 
http://www.gdal.org/ogr/drv_odbc.html 
siamo riusciti a collegarci dinamicamente ad un db SQL Server, tramite la 
connessione ODBC della funzione Aggiungi Vettore. 

Praticamente ho aggiunto alla vista da visualizzare una colonna GEOMETRY. In 
questa colonna ho fatto scrivere la stringa 'POINT (' + COLX + ' ' + COLY + ')' 
dove COLX e COLY sono i campi contenenti le coordinate. In realtà, per problemi 
di sintassi, nella concatenazione ho dovuto trasformare i campi coordinate in 
stringa ed eliminare gli spazi in più. Questa è la query che ho utilizzato per 
la mia vista: 


SELECT Provincia, Comune, TIPO_VIA + ' ' + NOME_VIA + ' ' + N_CIVICO AS 
INDIRIZZO, Minimo, Massimo, Medio, Dt_Installazione, DT_Prelevamento, 
UTMX_CENTR AS X, UTMY_CENTR AS Y, 'POINT (' + LTRIM(STR(UTMX_CENTR)) + ' ' + 
LTRIM(STR(UTMY_CENTR)) + ')' AS GEOMETRY 
FROM dbo.TBL_INTERVENTI 
WHERE (UTMX_CENTR > 0) AND (UTMY_CENTR > 0) 

Poi ho creato una nuova tabella geometry_columns 
CREATE TABLE geometry_columns ( f_table_catalog     VARCHAR(18),
                                f_table_schema      VARCHAR(18) NOT NULL,
                                f_table_name        VARCHAR(18) NOT NULL,
                                f_geometry_column   VARCHAR(18) NOT NULL,
                                srid                INTEGER NOT NULL,
                                storage_type        INTEGER NOT NULL,
                                geometry_type       INTEGER NOT NULL,
                                coord_dimension     INTEGER NOT NULL,
                                max_ppr             INTEGER NOT NULL) 
e vi ho inserito le informazioni richieste. In particolare il nome della 
tabella/vista da visualizzare, il nome della colonna che contiene la geometria 
nella mia tabella/vista ed il tipo di geometria rappresentata. Queste sono 
tutte le informazioni inserite: 

'','db_emittenti','QGIS_CENTRALINE','GEOMETRY',1978,0,1,2,10 

Così facendo si riesce a avere spazializzata la vista del db e man mano che 
vengono aggiunti record alla vista questi possono essere visualizzati 
immediatamente. 

Alessandro e Diego 





2011/11/23 Paolo Corti <pco...@gmail.com>: 
> 2011/11/23 Colla Diego <diego.co...@arpa.piemonte.it> 
>> 
>> Salve a tutti, 
>> sto cercando di creare in QGIS una connessione dinamica ad un database SQL 
>> Server 8; attraverso la connessione ODBC presente nella funzione 'Aggiungi 
>> vettore', la procedura mi permette di selezionare l'origine dati ODBC 
>> configurata nel Pannello di controllo (Strumenti di amministrazione), si 
>> connette al database, mi permette di selezionare la tabella o la vista da 
>> visualizzare, ma viene aggiunto un layer non georiferito, benchè siano 
>> presenti le colonne X e Y. E' possibile visualizzare la tabella attributi ma 
>> nn si riesce a spazializzarlo. Interrogando le proprietà (Metadati) 
>> compaiono le seguenti informazioni: 
>> 
> 
> Ciao 
> 
> non ho tempo di provare ne conosco le modalita' di collegamento di 
> QGIS con data sources ODBC, ma vado a naso. 
> Immagino che QGIS sfrutti il driver ODBC RDBMS di GDAL [1]. 
> Da una rapida scorsa alla documentazione indicata, devi avere sul tuo 
> db una tabella GEOMETRY_COLUMNS che immagino tu non abbia, altrimenti 
> tutte le tabelle non saranno spazializzate. 
> 
> All'interno di tale tabella devi aggiungere un record per ogni tabella 
> spaziale presente sul tuo database. 
> Segui comunque in maniera pedissequa le istruzioni presenti. 
> 
> NB: e' un driver in sola lettura, quindi non potrai fare editing 
> 
> ciao 
> P 
> 
> [1] http://www.gdal.org/ogr/drv_odbc.html 

Ho riletto bene la tua domanda, in effetti non stai usando SQL Server 
col formato spaziale come pensavo, quindi non hai una colonna 
geometrica, bensi una colonna per le x ed una per le y e la soluzione 
precedente non e' applicabile. 

Una cosa che potresti provare pero' e' la seguente: aggiungi una 
colonna testo sulla tabella (o crea una vista con una nuova colonna). 
La nuova colonna deve presentare le coordinate in formato wkt [1]. 
Ad es per un punto con X=10, Y=20, la nuova colonna dovrebbe essere 
valorizzata a 'POINT (10 20)'. 

Potresti ad es creare una vista con la seguente query (concettuale, 
non ho modo di provarla su SQL Server: 

CREATE MYVIEW AS 
SELECT COL1, COL2, 'POINT (' + COLX + ' ' + COLY + ')' AS GEOMETRY FROM MYTABLE 

A questo punto aggiungi il record in questione sulla tabella GEOMETRY_COLUMNS. 
Da quanto riportato sulla documentazione potrebbe ssere sufficiente 
usare il parametro table_list, senza necessita' di creare la tabella 
GEOMETRY_COLUMNS. 

Facci sapere il risultato ;) 
P 

[1] http://en.wikipedia.org/wiki/Well-known_text 


-- 
Colla Diego 
Arpa Piemonte 
Dipartimento Tematico Radiazioni 
Via Jervis 30 
10015 Ivrea (TO) 
tel: +39 0125 6453540 
fax: +39 0125 6453584 
diego.co...@arpa.piemonte.it 
www.arpa.piemonte.it 


_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
540 iscritti al 4.11.2011

Rispondere a