[Gfoss] QGis e vista PostGIS

Andrea Peri aperi2007 a gmail.com
Mar 4 Feb 2014 11:04:04 CET


La ragione di questa differenza di comportamento tra mapserver e qgis è
legata alla esigenza di supportare l'editing della feature. Mapserver ha la
getfeatureinfo. Il fatto che voglia un intero, ancora me lo domando perché
ciò.
Noi usiamo quasi sempre pk alfanumeriche perché più comode nei dati GIS.
Forse una scarsa analisi iniziale.

Per fortuna ogr aggiunge automaticamente un gid e si può usare quello come
pk.
Il 04/feb/2014 08:12 "francesco marucci" <francesco.marucci a gmail.com> ha
scritto:

> ciao,
> adesso non so se sia il tuo caso, ma spesso questo problema è dato dal
> fatto che il campo chiave della vista geometrica risultante non è univoco.
>
> prova a fare:
> select gid, count(*) from tabella1 group by gid having count(*) >1;
>
> dove gid per me è il campo chiave della tabella che contiene le geometrie.
>
> qGis ha bisogno che questo campo sia univoco e come dice giustamente
> Andrea,
> un LEFT JOIN (in funzione dei dati) non mantiene (giustamente) l'univocità.
> ad esempio, mapserver non ha questo "limite", e puo' mostrare un layer da
> una vista senza avere una chiave primaria univoca.
> ma per qGis è ben diverso perche' per aprire la tabella degli attributi ha
> bisogno di riferirsi ai singoli record e questo è dato solamente dalla
> presenza di un campo i cui valori indentifichino univocamente i singoli
> record.
>
> in questi casi io risolvo creando questo campo univoco per la vista
> risultante, semplicemente con il numero del record:
>
> select row_number() OVER ()::integer AS gid, etc...
>
> ovviamente se ti puoi permettere il lusso di non avere nella vista
> risultante il campo gid originario della tabella geometrica.
>
> spero di essere stato utile (e chiaro).
>
> saluti,
> francesco
>
>
>
>
>
>
>
>
>
>
>
> Il giorno 04 febbraio 2014 00:43, Andrea Peri <aperi2007 a gmail.com> ha
> scritto:
>
>> In effetti dice veramente poco.
>> A lume di naso, direi che probabilmente hai qualcosa di malfunzionante
>> sul tuo qgis, ma dire cosa e come risolvere è difficile.
>> Prova a sentire sulla ML di qgis se sanno darti qualche maggiore
>> informazione.
>> E' veramente curioso questo fatto che con DB-Manager non dia problemi
>> mentre con il provider di qgis li dia.
>>
>> spiacente di non esserti di maggiore aiuto.
>>
>> A.
>>
>>
>>
>> Il giorno 03 febbraio 2014 22:39, Marco Li Volsi <marco.livolsi a gmail.com
>> > ha scritto:
>>
>>  Il log non è molto parlante
>>> dbname='miodb' host=192.168.1.4 port=5432 user='postgres'
>>> password='xxxx' sslmode=disable key='addrpid' srid=4326 type=POINT
>>> table="public"."v_poi_airport" (geom) sql= è un layer non valido; non
>>> caricato
>>>
>>> Il 03/02/2014 20:30, Andrea Peri ha scritto:
>>>
>>> puoi postare l'errore che ti da' ?
>>>
>>>
>>> Il giorno 03 febbraio 2014 19:54, Marco Li Volsi <
>>> marco.livolsi a gmail.com> ha scritto:
>>>
>>>>  Ciao Andrea.
>>>> Provato come dici tu... ma continua a dare errore.
>>>>
>>>> Il 03/02/2014 00:32, Andrea Peri ha scritto:
>>>>
>>>>   Su db-manager non so che dirti.
>>>>
>>>> Pero' puoi fare una controprova.
>>>>
>>>>  definisci sulla tabella principale un campo di tipo "serial" il quale
>>>> si auto-riempira' con dei progressivi.
>>>>
>>>> alter table tabella1 add column id_2 serial;
>>>>
>>>> definisci su tale colonna un indice unique:
>>>>
>>>> create unique index idx-1 on tabella1(id_2);
>>>>
>>>> Poi ridefinisci la vista aggiungendovi tale campo nuovo.
>>>>
>>>> E infine prova a riaggiungere la vista a qgis.
>>>>  A quel punto qgis trova il campo di tipo int4 che cercava con tantodi
>>>> indice unique e se accetta di aggiungerla alla canvas, almeno
>>>> hai trovato dove sta' il problema.
>>>> Altrimenti è da una altra parte.
>>>>
>>>>  A.
>>>>
>>>>
>>>>
>>>> Il giorno 03 febbraio 2014 00:10, Marco Li Volsi <
>>>> marco.livolsi a gmail.com> ha scritto:
>>>>
>>>>>  Il campo PRIMARY KEY (... quello bigint per intenderci) è presente
>>>>> sulla vista, purtroppo ho proprio bisogno di un bigint... mi sono arrivati
>>>>> questi id interi composti da 14 cifre. La tua risposta è coerente... rimane
>>>>> il dubbio del perchè funzioni con DB Manager ?:-)
>>>>>
>>>>> Il 03/02/2014 00:00, Andrea Peri ha scritto:
>>>>>
>>>>>   A quello che ricordo, la regola di qgis è un campo di tipo int4 e
>>>>> bigint non gli va bene.
>>>>>  Inoltre il campo deve essere presente tra quelli esposti nella vista,
>>>>> probabilmente lo è, ma dalla tua risposta sembrerebbe che esso è presente
>>>>> nella tabella LEFT non è in output sulla vista.
>>>>> :)
>>>>>
>>>>>  In ogni caso almeno fino a qgis 1.8 sicuramente un campo bigint non
>>>>> gli sarebbe andato bene.
>>>>> Non so se con qgis 2 è cambiato qualcosa, ma non credo..
>>>>>
>>>>>  qgis vuole tra i campi esposti in output nella vista un campo di
>>>>> tipo int4 con valori univoci e un indice unique (una pk va benissimo)
>>>>>
>>>>>  A.
>>>>>
>>>>>
>>>>>
>>>>> Il giorno 02 febbraio 2014 23:47, Marco Li Volsi <
>>>>> marco.livolsi a gmail.com> ha scritto:
>>>>>
>>>>>>  Ciao Ragà.
>>>>>> La tabella "LEFT" ha un campo id numerico di tipo bigint ed ha una
>>>>>> constraint di PRIMARY KEY.
>>>>>> Per quanto riguarda le varie LEFT JOIN, non fanno altro che collegare
>>>>>> chiavi primarie delle tabelle "RIGHT" con le chiavi esterne nella tabella
>>>>>> "LEFT".
>>>>>> Ho fatto eseguire sulla vista la seguente query e non ha dato
>>>>>> conteggi maggiori di 1.
>>>>>> SELECT id, COUNT(id)
>>>>>>   FROM v_poi_airport
>>>>>>  GROUP BY id
>>>>>> ORDER BY COUNT(id) DESC;
>>>>>>
>>>>>> Il 02/02/2014 23:14, Luca Mandolesi ha scritto:
>>>>>>
>>>>>> Mi ha battuto sul tempo Andrea... io nelle mie view setto sempre la
>>>>>> query con Join per evitare tale problema. Se ad un punto corrispondo più
>>>>>> record della tabella alfanumerica, puoi provare a dare dentro al provider
>>>>>> di postgis come id singolo la chiave primaria e quindi unica della tabella
>>>>>> 2.
>>>>>>
>>>>>>
>>>>>> 2014-02-02 Andrea Peri <aperi2007 a gmail.com>:
>>>>>>
>>>>>>>  ok.
>>>>>>>
>>>>>>>  Un altro suggerimento:
>>>>>>>
>>>>>>>  qgis per il postgres vole disporre di un campo che sia di tipo
>>>>>>> intero e con una primary-key.
>>>>>>> Oppure con un indice di tipo unique.
>>>>>>>  Verifica che questa condizione sia verificata su uno dei campi che
>>>>>>> definisci nella vista.
>>>>>>> Stai attento che la condizione LEFTJOIN potrebbe falsare questa
>>>>>>> consizione provocando la ripetizione di records.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Il giorno 02 febbraio 2014 22:58, Marco Li Volsi <
>>>>>>> marco.livolsi a gmail.com> ha scritto:
>>>>>>>
>>>>>>>  Grazie Andrea... ho provato ma non funge :-(
>>>>>>>>
>>>>>>>> Il 02/02/2014 22:43, Andrea Peri ha scritto:
>>>>>>>>
>>>>>>>>  Prova a modificare la view definendo la geometria in quesot modo:
>>>>>>>>
>>>>>>>> .., tabella1.campogeometrico::geometry(Geometry, 3003) As geom
>>>>>>>>
>>>>>>>>  Io ho scritto 3003 ipotizzando che il dato sia in GaussBoaga, se è
>>>>>>>> utm usa 25832 o altro codice epsg.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Il giorno 02 febbraio 2014 21:47, Marco Li Volsi <
>>>>>>>> marco.livolsi a gmail.com> ha scritto:
>>>>>>>>
>>>>>>>>>  Buona sera a tutti Voi.
>>>>>>>>> Ho un comportamento molto strano riguardo al caricamento di una
>>>>>>>>> vista geografica su PostGIS.
>>>>>>>>> Ho creato una vista su PostGIS del tipo
>>>>>>>>> CREATE OR REPLACE VIEW vista1
>>>>>>>>>     SELECT tabella1.campo1, tabella2.campo2, tabella1.campo2, ...,tabella1.campogeometrico
>>>>>>>>>     FROM tabella1
>>>>>>>>>     LEFT JOIN tabella2 ON ...
>>>>>>>>>     WHERE tabella1.campo2 = valore;
>>>>>>>>> La vista viene correttamente trovata nella vista geometry_columns.
>>>>>>>>> Ho provato a caricare questo layer dal tasto "Aggiungi vettore
>>>>>>>>> PostGIS" e mi viene restituito un messaggio di alert. Verificando il
>>>>>>>>> registro degli eventi il layer risulta non valido. Se provo a caricare il
>>>>>>>>> layer dal DB Manager tutto va come deve andare.
>>>>>>>>> Il sistema in questione è QGIS 2.0.1-Dufour e POSTGIS="2.0.1
>>>>>>>>> r9979" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL
>>>>>>>>> 1.9.2, released 2012/10/08" LIBXML="2.7.8" RASTER.
>>>>>>>>> Qualcuno saprebbe dirmi se sbaglio qualcosa?
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Gfoss a lists.gfoss.it
>>>>>>>>> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
>>>>>>>>> Questa e' una lista di discussione pubblica aperta a tutti.
>>>>>>>>> I messaggi di questa lista non hanno relazione diretta con le
>>>>>>>>> posizioni dell'Associazione GFOSS.it.
>>>>>>>>> 666 iscritti al 22.7.2013
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> -----------------
>>>>>>>> Andrea Peri
>>>>>>>> . . . . . . . . .
>>>>>>>> qwerty àèìòù
>>>>>>>> -----------------
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Gfoss a lists.gfoss.it
>>>>>>>> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
>>>>>>>> Questa e' una lista di discussione pubblica aperta a tutti.
>>>>>>>> I messaggi di questa lista non hanno relazione diretta con le
>>>>>>>> posizioni dell'Associazione GFOSS.it.
>>>>>>>> 666 iscritti al 22.7.2013
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> -----------------
>>>>>>> Andrea Peri
>>>>>>> . . . . . . . . .
>>>>>>> qwerty àèìòù
>>>>>>> -----------------
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Gfoss a lists.gfoss.it
>>>>>>> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
>>>>>>> Questa e' una lista di discussione pubblica aperta a tutti.
>>>>>>> I messaggi di questa lista non hanno relazione diretta con le
>>>>>>> posizioni dell'Associazione GFOSS.it.
>>>>>>> 666 iscritti al 22.7.2013
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Gfoss a lists.gfoss.it
>>>>>> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
>>>>>> Questa e' una lista di discussione pubblica aperta a tutti.
>>>>>> I messaggi di questa lista non hanno relazione diretta con le
>>>>>> posizioni dell'Associazione GFOSS.it.
>>>>>> 666 iscritti al 22.7.2013
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> -----------------
>>>>> Andrea Peri
>>>>> . . . . . . . . .
>>>>> qwerty àèìòù
>>>>> -----------------
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Gfoss a lists.gfoss.it
>>>>> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
>>>>> Questa e' una lista di discussione pubblica aperta a tutti.
>>>>> I messaggi di questa lista non hanno relazione diretta con le
>>>>> posizioni dell'Associazione GFOSS.it.
>>>>> 666 iscritti al 22.7.2013
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> -----------------
>>>> Andrea Peri
>>>> . . . . . . . . .
>>>> qwerty àèìòù
>>>> -----------------
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Gfoss a lists.gfoss.it
>>>> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
>>>> Questa e' una lista di discussione pubblica aperta a tutti.
>>>> I messaggi di questa lista non hanno relazione diretta con le posizioni
>>>> dell'Associazione GFOSS.it.
>>>> 666 iscritti al 22.7.2013
>>>>
>>>
>>>
>>>
>>> --
>>> -----------------
>>> Andrea Peri
>>> . . . . . . . . .
>>> qwerty àèìòù
>>> -----------------
>>>
>>>
>>>
>>> _______________________________________________
>>> Gfoss a lists.gfoss.it
>>> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
>>> Questa e' una lista di discussione pubblica aperta a tutti.
>>> I messaggi di questa lista non hanno relazione diretta con le posizioni
>>> dell'Associazione GFOSS.it.
>>> 666 iscritti al 22.7.2013
>>>
>>
>>
>>
>> --
>> -----------------
>> Andrea Peri
>> . . . . . . . . .
>> qwerty àèìòù
>> -----------------
>>
>> _______________________________________________
>> Gfoss a lists.gfoss.it
>> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
>> Questa e' una lista di discussione pubblica aperta a tutti.
>> I messaggi di questa lista non hanno relazione diretta con le posizioni
>> dell'Associazione GFOSS.it.
>> 666 iscritti al 22.7.2013
>>
>
>
> _______________________________________________
> Gfoss a lists.gfoss.it
> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> Questa e' una lista di discussione pubblica aperta a tutti.
> I messaggi di questa lista non hanno relazione diretta con le posizioni
> dell'Associazione GFOSS.it.
> 666 iscritti al 22.7.2013
>
-------------- parte successiva --------------
Un allegato HTML ? stato rimosso...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20140204/9d7649eb/attachment-0001.html>


Maggiori informazioni sulla lista Gfoss