[Gfoss] geometry from vista?

Salve a tutti e buon anno!

Stavo provando ad interrogare il mio db (Postgresql/Postgis) sia da
p.mapper, qgis che da sql commander facendo una select su una vista
anzichè una tabella, ma evidentemente sbaglio qualcosa!!!!

L'errore che mi dà shp2pgsql è:

sam@debian:~$ shp2img -m /home/sam/www/SISNCMS/config/default/CMS.map -l
vista_sen -o /home/sam/Desktop/vis.png
msDrawMap(): Image handling error. Failed to draw layer named 'vista_sen'.
<br>
prepare_database(): Query error. Error executing POSTGIS DECLARE (the actual
query) statement: 'DECLARE mycursor BINARY CURSOR FOR SELECT
"cod_cai"::text,asbinary(force_collection(force_2d(the_geom)),'NDR'),OID::text
from public.vista_sen WHERE the_geom && setSRID('BOX3D(2614649.00000002
4312948.99999991,2653614.00000012 4351913.99999999)'::BOX3D,
find_srid('','public.vista_sen','the_geom') )'

Postgresql reports the error as 'ERROR: la colonna "oid" non esiste at
character 112
'

More Help:

Error with POSTGIS data variable. You specified 'check your .map file'.
Standard ways of specifiying are :
(1) 'geometry_column from geometry_table'
(2) 'geometry_column from (sub query) as foo using unique column name using
SRID=srid#'

Make sure you put in the 'using unique column name' and 'using SRID=#'
clauses in.

For more help, please see http://postgis.refractions.net/documentation/

Mappostgis.c - version of Jan 23/2004.
<br>

Invece Qgis mi da come errore: sintetizzo io: "non trovo la colonna chiave
primaria"

Sia il primo che il secondo errore di solito mi si presentava
quando non impostavo una chiave primaria
oppure quando creavo una tabella con geometrie WITHOUT OIDS!

Quello che gradirei sapere è se la vista di una tabella si
porta dietro anche le costrizioni (tipo PK ecc) oppure no?...

grazie

SL

-----
Salvatore Larosa
GPG: 0xE504BBE2 (FP: D9B2 CA87 81CD 1B91 E24D 3B42 D0F7 FA01 E504 BBE2)
--
View this message in context: http://www.nabble.com/geometry-from-vista--tp14673520p14673520.html
Sent from the Gfoss mailing list archive at Nabble.com.

Salvator*eL*arosa ha scritto:

Salve a tutti e buon anno!

Ciao, auguroni!

Stavo provando ad interrogare il mio db (Postgresql/Postgis) sia da p.mapper, qgis che da sql commander facendo una select su una vista
anzichè una tabella, ma evidentemente sbaglio qualcosa!!!!

E' proprio necessario? La frequenza di aggiornamento dei tuoi dati è
talmente alta da giustificare l'uso di una vista oppure ci stai provando
per il semplice gusto di farlo? :wink: Tieni conto che ad ogni connessione la
vista comporta l'esecuzione della query che la definisce e pertanto è
molto più lenta in lettura di una normale tabella ed, inoltre, non puoi
definire indici per velocizzare le ricerche (idx).

L'errore che mi dà shp2pgsql è:

sam@debian:~$ shp2img -m /home/sam/www/SISNCMS/config/default/CMS.map -l
vista_sen -o /home/sam/Desktop/vis.png
msDrawMap(): Image handling error. Failed to draw layer named 'vista_sen'.
<br>
prepare_database(): Query error. Error executing POSTGIS DECLARE (the actual
query) statement: 'DECLARE mycursor BINARY CURSOR FOR SELECT
"cod_cai"::text,asbinary(force_collection(force_2d(the_geom)),'NDR'),OID::text
from public.vista_sen WHERE the_geom && setSRID('BOX3D(2614649.00000002
4312948.99999991,2653614.00000012 4351913.99999999)'::BOX3D,
find_srid('','public.vista_sen','the_geom') )'

Postgresql reports the error as 'ERROR: la colonna "oid" non esiste at
character 112
'

More Help:

Error with POSTGIS data variable. You specified 'check your .map file'.
Standard ways of specifiying are :
(1) 'geometry_column from geometry_table'
(2) 'geometry_column from (sub query) as foo using unique column name using
SRID=srid#'

Make sure you put in the 'using unique column name' and 'using SRID=#'
clauses in.

For more help, please see http://postgis.refractions.net/documentation/

Mappostgis.c - version of Jan 23/2004.
<br>

Invece Qgis mi da come errore: sintetizzo io: "non trovo la colonna chiave
primaria"

Sia il primo che il secondo errore di solito mi si presentava quando non impostavo una chiave primaria
oppure quando creavo una tabella con geometrie WITHOUT OIDS!

Quello che gradirei sapere è se la vista di una tabella si porta dietro anche le costrizioni (tipo PK ecc) oppure no?...

La vista è una sorta di "tabella virtuale dinamica", definita da una
select su tabelle, e come tale si porta dietro alcuni campi delle tabelle
sorgenti, ma non credo le constraint (smentitemi se sbaglio). Definito
un record opportuno nella tabella geometry_columns del tuo schema
(analogamente a quanto si fa per le tabelle), nella query di definizione
della vista prova a portarti dietro anche un gid o qualcosa di simile
preferibilmente univoco e credo che mapserver, qgis o quant'altro
leggano la vista. In gvSIG ci ho provato in passato (sempre per il gusto
di sperimentare, come te...) e lì non ho avuto problemi. Good luck!

Ciao
Antonio

Antonio Falciano wrote:

E' proprio necessario?

SI!

Antonio Falciano wrote:

La frequenza di aggiornamento dei tuoi dati è
talmente alta da giustificare l'uso di una vista oppure ci stai provando
per il semplice gusto di farlo? :wink:

La "view" non la genero $onfly$!, è già presente nel db.
Sto creando una vista per il semplice
fatto che vorrei visualizzare più info, che stanno sparse per tabelle,
in un unico record ad esempio attraverso p.mapper e/o QGIS.
Il db è stato normalizzato per evitare ridondanze varie....ecc.ecc

Antonio Falciano wrote:

Tieni conto che ad ogni connessione la
vista comporta l'esecuzione della query che la definisce e pertanto è
molto più lenta in lettura di una normale tabella

..vedi sopra!

Antonio Falciano wrote:

ed, inoltre, non puoi
definire indici per velocizzare le ricerche (idx).

Se ricordi, nella giornata conclusiva del master, feci vedere
che tutte le tabelle del db sono indicizzate e perchè!

Antonio Falciano wrote:

La vista è una sorta di "tabella virtuale dinamica", definita da una
select su tabelle, e come tale si porta dietro alcuni campi delle tabelle
sorgenti, ma non credo le constraint (smentitemi se sbaglio).

???

Antonio Falciano wrote:

Definito
un record opportuno nella tabella geometry_columns del tuo schema
(analogamente a quanto si fa per le tabelle), nella query di definizione
della vista prova a portarti dietro anche un gid o qualcosa di simile
preferibilmente univoco e credo che mapserver, qgis o quant'altro
leggano la vista.

per adesso ho risolto in qgis semplicemente inserendo gli OIDS!
l'unico problema adesso è p.mapper che continuo a darmi
lo stesso errore!

Antonio Falciano wrote:

In gvSIG ci ho provato in passato (sempre per il gusto
di sperimentare, come te...) e lì non ho avuto problemi. Good luck!

Ormai sei diventato un "guru" di gvSIG!

Antonio Falciano wrote:

Ciao
Antonio

Ciao, grazie e a presto!

-----
Salvatore Larosa
GPG: 0xE504BBE2 (FP: D9B2 CA87 81CD 1B91 E24D 3B42 D0F7 FA01 E504 BBE2)
--
View this message in context: http://www.nabble.com/geometry-from-vista--tp14673520p14679528.html
Sent from the Gfoss mailing list archive at Nabble.com.

Finalmente.....(insomma è tardissimo!)Bastava aggiungere la colonna OID
(spuntando "Has OIDS" in pgadmin3)!Per quanto riguarda p.mapper bisogna
aggiungere nel mapfile:DATA "geom from public.vista_sen as foo USING UNIQUE
oid USING SRID=26592"anzichèDATA "geom from vista_sen"PerfettoGrazie a
tutti!

-----
Salvatore Larosa
GPG: 0xE504BBE2 (FP: D9B2 CA87 81CD 1B91 E24D 3B42 D0F7 FA01 E504 BBE2)
--
View this message in context: http://www.nabble.com/geometry-from-vista--tp14673520p14679881.html
Sent from the Gfoss mailing list archive at Nabble.com.

Salvator*eL*arosa ha scritto:

Finalmente.....(insomma è tardissimo!)Bastava aggiungere la colonna OID
(spuntando "Has OIDS" in pgadmin3)!Per quanto riguarda p.mapper bisogna
aggiungere nel mapfile:DATA "geom from public.vista_sen as foo USING UNIQUE
oid USING SRID=26592"anzichèDATA "geom from vista_sen"PerfettoGrazie a
tutti!

Perfetto!
Solo una piccola osservazione Salvo: come SRID ti conviene utilizzare
3004, anzichè 26592, visto che quest'ultimo è deprecato dal 2003 e
probabilmente a breve potrebbe scomparire dall'EPSG Geodetic Parameter
Dataset. Se realizzi ad es. un WMS, utilizzando 3004, faciliti anche il
lavoro delle proiezioni al volo nei client che utilizzano il tuo servizio.

Ciao
Antonio