Hi Ricardo,<div><br></div><div>I am planning to do sort of the same thing in the near future... Any progress? Keep us updated!</div><div><br></div><div>Sorry I'm not of any help... What you could try: how do other GIS packages interact with your updatable view?</div>
<div><br></div><div><br></div><div>Rob<br><br><div class="gmail_quote">2009/10/24 Ricardo Filipe Soares Garcia da <span dir="ltr"><<a href="mailto:ricardo.garcia.silva@gmail.com">ricardo.garcia.silva@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hello list<br>
I am using Qgis 1.3.0 compiled from the release tarball on Kubuntu 9.04.<br>
<br>
I am trying to create an updateable postgis view that will be updated<br>
through Qgis.<br>
<br>
I have a postgis DB with spatial and non-spatial tables. I'm using a<br>
view to abstract the relational connections between several tables and<br>
a spatial table and present the user (me) with a flat-file-like type<br>
of visualization through Qgis, so that I can see the real values of my<br>
spatial data instead of a bunch of foreign keys. This visualization is<br>
working fine, I have created the postgis view and can use it inside<br>
Qgis.<br>
<br>
Now I'd like to be able to use Qgis to insert and update my view and<br>
have postgresql do the real inserting and updating to my tables in the<br>
background. For this purpose I am creating some postgresql rules as in<br>
shown in [1] and [2]. So far I have succeeded in creating the UPDATE<br>
rule, which is working really nice and I think I have successfully<br>
created the INSERT rule as well, but I'm unable to test it due to Qgis<br>
crashing.<br>
<br>
My problem lies with the creation of new geometries.<br>
So far Qgis is crashing with the 'Segmentation fault' message when I<br>
try to create a new polygon on the view layer:<br>
To replicate the crash:<br>
    1 - load postgis layer (this layer is a postgis view, definded<br>
with SQL code in [3]) in Qgis<br>
    2 - toggle the edit mode to 'on'<br>
    3 - select the 'capture polygon' tool<br>
    4 - click anywhere on the map canvas<br>
    5 - ugly crash (segmentation fault reported on the console)<br>
<br>
Is it not possible to draw a new feature on a view layer? can someone<br>
replicate this behaviour? If not, it really should because the insert<br>
rule on postgres's side will (hopefully and most likely) accept that.<br>
Please note than I can update an already existing feature (for example<br>
moving some vertices around) and it works ok.<br>
<br>
Thanks in advance<br>
<br>
[1] - <a href="http://www.postgresonline.com/journal/index.php?/archives/11-Database-Abstraction-with-Updateable-Views.html" target="_blank">http://www.postgresonline.com/journal/index.php?/archives/11-Database-Abstraction-with-Updateable-Views.html</a><br>

[2] - <a href="http://www.postgresql.org/docs/8.1/interactive/rules-update.html" target="_blank">http://www.postgresql.org/docs/8.1/interactive/rules-update.html</a><br>
[3] - SQL code follows:<br>
<br>
CREATE OR REPLACE VIEW salasp1 AS<br>
        SELECT s.sa_gid, s.the_geom,<br>
                e.sigla AS edificio, p.numero AS piso,<br>
                s.nome AS sala, t.tipo, f.funcionalidade,<br>
                d.sigla AS sigla_dep_servico, d.nome AS dep_servico,<br>
                s.descricao, s.lugares, s.tomadas, s.telefones<br>
        FROM sala s, tipo t, funcionalidade f, piso p, edificio e, deptoservico d<br>
        WHERE p.numero=1 AND p.pi_gid=s.pi_gid<br>
                AND s.ti_id=t.ti_id AND s.fu_id=f.fu_id<br>
                AND e.sigla='C8' AND d.dep_id=s.depserv_id;<br>
<font color="#888888"><br>
<br>
--<br>
___________________________ ___ __<br>
Ricardo Garcia Silva<br>
_______________________________________________<br>
Qgis-user mailing list<br>
<a href="mailto:Qgis-user@lists.osgeo.org">Qgis-user@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/qgis-user" target="_blank">http://lists.osgeo.org/mailman/listinfo/qgis-user</a><br>
</font></blockquote></div><br></div>