[Gfoss] Connessione a PostGIS in gvSIG

Antonio Falciano afalciano a yahoo.it
Sab 19 Gen 2008 14:39:24 CET


Andrea Peri ha scritto:
> Non conosco Postgres, ma conosco Oracle in abbinamento con gvSig.
> E sospetto che il problema sia analogo a quello che si porrebbe usando
> un Oracle.
> 
> gvSig non guarda la tabella dei dati per capire quale campo ha
> geometria, ma guarda una specie di tabella accessoria (quasi di
> sistema) in cui sono registrate tutte le tabelle dotate di geometria e
> che contiene anche il nome del campo in cui e' presente la geometria.
> 
> Su oracle questa tabella di chiama USER_SDO_GEOM_METADATA.
> 
> A essere precisi ora gvSIG sta usando la ALL_SDO_GEOM_METADATA, ma cosi'facendo
> commette un parziale errore, gli ho gia' segnalato la cosa e
> dovrebbero correggerla in futuro (spero). :)
> 
> Comunque il concetto e' lo stesso.
> 
> Il problema e' che queste tabelle non vengono alimentate in automatico
> quando crei una tabella con geometria, ma va gestita a mano.
> con un insert values.. into USER_SDO_GEOM_METADATA  e se non inserisci
> il valore relativo alla tua tabella con Geometria, per gvSIG non
> esiste geometria nella tua tabella.
> 
> Questa impostazione di gvSig, almeno per oracle e' corretta (salvo
> usare all_sdo_geom che non va bene) perche' e' sbagliato non popolare
> tale tabella. Senza di essa oracle non puo' fare indicizzazioni
> spaziali e cosi' via.
> 
> Quindi, rispondendo alla tua domanda, poiche' ritengo (ma qualcuno
> piu' esperto di postgres puo' smentirmi) che anche su postgres+postgis
> sia la stessa cosa.
> 
> La risposta e' che probabilmente gvSig non elenca le geometrie perche'
> non hai inserito le tua tabelle nella tabella corrispondente alla
> USER_SDO_GEOM_METADATA di oracle.
> 
> Se cosi' e' , devi informarti su quale sia questa tabella e inserirvi
> il riferimento alla tua tabella dei dati con geometria.
> 
> Spero di non essere stato troppo contorto :)

Sei stato chiarissimo, Andrea, ed hai centrato perfettamente il problema!
A tal proposito, in PostGIS la tabella in questione si chiama
geometry_columns.
Infatti, gvSIG riconosce tabelle (e viste) i cui riferimenti sono
presenti nella tabella geometry_columns presente dello stesso schema
della tabella dei ns dati geospaziali. Per risolvere il problema basta
quindi semplicemente eseguire una query del tipo:

INSERT INTO geometry_columns (f_table_catalog, f_table_schema,
f_table_name, f_geometry_column, coord_dimension, srid, type)
VALUES ('"', 'public', 'mia_tabella', 'the_geom', 2, 3004, 'MULTIPOLYGON');

Ciao
Antonio








Maggiori informazioni sulla lista Gfoss