[Gfoss] Connessione a SQL Server

Paolo Corti pcorti a gmail.com
Mer 23 Nov 2011 16:30:34 CET


2011/11/23 Paolo Corti <pcorti a gmail.com>:
> 2011/11/23 Colla Diego <diego.colla a 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

-- 
Paolo Corti
Geospatial software developer
web: http://www.paolocorti.net
twitter: @capooti


Maggiori informazioni sulla lista Gfoss