[Gfoss] View in postgis per qgis

Salve a tutti.
Da una serie di punti (ordinati per timestamp) voglio ricostruire in pstgres/postgis una traiettoria.

CREATE OR REPLACE VIEW prova AS
select nextval(‘contatore’)::int4 as ID,
makeline(geometria)
from (select geometria, id_linea from fix_caprioli
where hr_code is not null order by time_stamp) as foo
group by id_linea;
ALTER TABLE prova OWNER TO postgres;

la cosa funziona perfettamente in postgres.

se però provo a visualizzare in postgis mi dice:
“Qgis requires that the view has a column that can be used as a unique key. Such a column should be derived from a table column of type int4 and be a primary key, have a unique constraint on it, or be a PostgreSQL oid column.”
Il che va bene, è noto. M più che aver creato un contatore e pure assicurato che fosse un int4 non saprei che fare. ovviamente data la funzione makeline non posso riferirmi alla primary key della tabella di origine, visto che si utilizza un group by.

Qualcuno ha suggerimenti?

Grazie

Ferdinando


Ciao Ferdinando,
la mia soluzione non e' elegantissima ma quando mi ci sono trovata ho
fatto cosi' :slight_smile:

Una volta mi era capitato un caso simile con i fagiani. Facevo un group
by id_fagiano della tabella fix.
Ho usato quindi un join su una tabella in cui avevo tutti gli animali
con una chiave primaria.

Non so se hai modo di riferirti ad una tabella in cui ci sia un record
per ogni id_linea. Usandola in un join dovrebbe andare.

Se mi viene in mente altro ti faccio sapere.
ciao
lia

feurbano@clix.pt ha scritto:

    Salve a tutti.
    Da una serie di punti (ordinati per timestamp) voglio ricostruire in
    pstgres/postgis una traiettoria.

    CREATE OR REPLACE VIEW prova AS
    select nextval('contatore')::int4 as ID,
    makeline(geometria)
    from (select geometria, id_linea from fix_caprioli
    where hr_code is not null order by time_stamp) as foo
    group by id_linea;
    ALTER TABLE prova OWNER TO postgres;

    la cosa funziona perfettamente in postgres.

    se però provo a visualizzare in postgis mi dice:
    "Qgis requires that the view has a column that can be used as a unique key.
    Such a column should be derived from a table column of type int4 and be a
    primary key, have a unique constraint on it, or be a PostgreSQL oid column."
    Il che va bene, è noto. M più che aver creato un contatore e pure assicurato
    che fosse un int4 non saprei che fare. ovviamente data la funzione makeline
    non posso riferirmi alla primary key della tabella di origine, visto che si
    utilizza un group by.

    Qualcuno ha suggerimenti?

    Grazie

    Ferdinando

--------------------------------------------------------------------------------

------------------------------------------------------------------------

_______________________________________________
Gfoss mailing list: 220 iscritti (28-05-2007)
Gfoss@faunalia.com
http://www.faunalia.com/cgi-bin/mailman/listinfo/gfoss

--
Emilia Venturato
email+jabber: venturato@faunalia.it
www.faunalia.it
Tel: (+39) 347-2770007 Tel+Fax: (+39) 0587-213742
Piazza Garibaldi 5 - 56025 Pontedera (PI), Italy
http://www.faunalia.it/ev

feurbano@clix.pt ha scritto:

    "Qgis requires that the view has a column that can be used as a
    unique key. Such a column should be derived from a table column of
    type int4 and be a primary key, have a unique constraint on it, or
    be a PostgreSQL oid column."

Beh, puoi provare con un altro visualizzatore (uDig dovrebbe riuscirci),
oppure l'altra soluzione brutale è quella di fare una create table as select *** e poi una alter table per aggiungere la chiave primaria.

Nessuna delle due è una soluzione "ideale", ma non so suggerire di meglio.

Ciao
Andrea