Luca,<div><br></div><div>thank you so much for your help. For a programming beginner like me, the obvious is not alway so clear!</div><div><br></div><div>Now I see the light :)</div><div><br>I ended up using the 
ExecuteSQL  method because the 
SetFeature method  deleted the content of the other fields. I&#39;m sure there is an obvious solution to this also but I didn&#39; t find it :)</div><div><br></div><div>I also noticed the CopyLayer function dosen&#39;t write the geometry type of the copied layer. Is this expected behaviour ?</div>
<div><br></div><div>Best regards</div><div><br></div><div>Martin</div><div><br><br><br><div class="gmail_quote">On 14 May 2012 12:07, Luca Sigfrido Percich <span dir="ltr">&lt;<a href="mailto:sigfrido@tiscali.it" target="_blank">sigfrido@tiscali.it</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Martin,<br>
<br>
you&#39;re updating existing features so you don&#39;t want to use the<br>
CreateFeature method. If you try to re-insert an existing feature you<br>
will get the duplicate pk error.<br>
<br>
See the docs for the SetFeature method.<br>
<br>
Moreover, your loop code is a bit confused; usually you would do:<br>
<br>
while True:<br>
    outFeature = dstLayer.GetNextFeature()<br>
    if (outFeature is None):<br>
        break<br>
    outFeature.SetField(&#39;gradient&#39;,666)<br>
    outLayer.SetFeature(outFeature)<br>
<br>
You may also use an SQL UPDATE instruction:<br>
<br>
dataSource.ExecuteSQL(&quot;update gwr.dstlayer set gradient = 666&quot;)<br>
<br>
Sig<br>
<br>
Il giorno sab, 12/05/2012 alle 19.43 +0200, Martin Jensen ha scritto:<br>
<div class="im">&gt; Hi list,<br>
&gt;<br>
&gt;<br>
&gt; I was trying to do the following with ogr python bindings<br>
</div>&gt;      1. Create  srclayer from PostGIS based on sql statement<br>
&gt;      2. Copy srclayer to dstlayer (also PostGIS)<br>
&gt;      3. Add new field to dstlayer<br>
&gt;      4. assign value to new field<br>
<div class="im"><br>
<br>
&gt; outFeature = dstlayer.GetNextFeature()<br>
&gt;<br>
&gt; ## update the new field<br>
&gt;<br>
&gt; for feature in dstlayer:<br>
&gt;<br>
&gt;     outFeature.SetField(&#39;gradient&#39;,666) ##set this field only<br>
&gt;<br>
&gt;     outFeature.SetFID(-1) ## tried to unset ogc_fid so not violating<br>
&gt; pk column constraint<br>
&gt;<br>
&gt;     dstlayer.CreateFeature(outFeature)<br>
&gt;<br>
&gt;     outFeature = dstlayer.GetNextFeature()<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; I get the error:<br>
&gt;<br>
&gt;<br>
&gt; ERROR:  duplicate key value violates unique constraint &quot;dstlayer_pk&quot;<br>
&gt; DETAIL:  Key (ogc_fid)=(1) already exists.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; I have a feeling i&#39;m missing something really simple here.<br>
&gt;<br>
&gt;<br>
&gt; Any suggestions would be much appreciated!<br>
&gt;<br>
&gt;<br>
&gt; Software:<br>
&gt; GDAL 1.9<br>
&gt; PG: PostgreSQL version string : &#39;PostgreSQL 9.1.3 on<br>
&gt; x86_64-apple-darwin11.3.0, compiled by<br>
&gt; i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc.<br>
&gt; build 5658) (LLVM build 2336.9.00), 64-bit&#39;<br>
&gt; PG: PostGIS version string : &#39;2.0 USE_GEOS=1 USE_PROJ=1 USE_STATS=1&#39;<br>
&gt;<br>
&gt;<br>
&gt; Best regards<br>
&gt;<br>
&gt;<br>
&gt; Martin<br>
</div>&gt; _______________________________________________<br>
&gt; gdal-dev mailing list<br>
&gt; <a href="mailto:gdal-dev@lists.osgeo.org">gdal-dev@lists.osgeo.org</a><br>
&gt; <a href="http://lists.osgeo.org/mailman/listinfo/gdal-dev" target="_blank">http://lists.osgeo.org/mailman/listinfo/gdal-dev</a><br>
<br>
<br>
_____________<br>
PRIVACY<br>
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e&#39; consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e&#39; contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).<br>

<br>
PRIVACY<br>
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e&#39; consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e&#39; contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).<br>

</blockquote></div><br><br clear="all"><div><br></div>-- <br>Med venlig hilsen<br><br>Martin Bjærge Jensen<br>
</div>