[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