Esben,<br><br>I am not sure why the value is not quoted in the error report. The PostgreSQL driver quotes the string values.<br>When using CreateFeature() you need to make sure to set the feature&#39;s FID to OGRNullFID using SetFID(OGRNullFID). In your error report it shows that ogc_fid is set to 0. Perhaps there is already a feature with that value?<br>
<br><div class="gmail_quote">On Fri, Jul 23, 2010 at 7:05 PM, Esben Taudorf <span dir="ltr">&lt;<a href="mailto:eta@le34.dk">eta@le34.dk</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">









<div link="blue" vlink="purple" lang="DA">

<div>

<p class="MsoNormal"><span lang="EN-US">Hi everybody</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">I just started using the GDAL/OGR CSharp
interface in Visual Studio and it works great. </span></p>

<p class="MsoNormal"><span lang="EN-US">I am trying to append a shapefile to a
postgis table. This I can do with the following lines in ogr2ogr:</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">Fist import the shapefile to postgis a
table</span></p>

<p class="MsoNormal"><span lang="EN-US">ogr2ogr -f &quot;PostgreSQL&quot;
PG:&quot;dbname=&#39;postgis&#39; host=&#39;localhost&#39; port=&#39;5432&#39; user=&#39;...&#39;
password=&#39;...&#39;&quot; -lco PRECISION=NO -lco GEOMETRY_NAME=geom -a_srs
EPSG:25832 &quot;c:\temp\testfile.shp&quot;</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">Then append the same shapefile (this is a
test) to the same postgis table like this</span></p>

<p class="MsoNormal"><span lang="EN-US">ogr2ogr -append -update -f
&quot;PostgreSQL&quot; PG:&quot;dbname=&#39;postgis&#39; host=&#39;localhost&#39; port=&#39;5432&#39;
user=&#39;...&#39; password=&#39;...&#39;&quot; &quot;c:\temp\testfile.shp&quot;</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">But how do I do this in the GDAL/OGR CSharp
interface or which classes and functions do I use?</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">So far what I have done is:</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">Open a layer from the shapefile:</span></p>

<p class="MsoNormal"><span lang="EN-US">string fileShp =
@&quot;c:\temp\testfile.shp&quot;;</span></p>

<p class="MsoNormal"><span lang="EN-US">DataSource InputDataSource =
Ogr.Open(fileShp, 0);</span></p>

<p class="MsoNormal"><span lang="EN-US">Layer inputLayer =
InputDataSource.GetLayerByIndex(0);</span></p>

<p class="MsoNormal"><span lang="EN-US">FeatureDefn def =
inputLayer.GetLayerDefn();</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">Open a datasource to postgis:</span></p>

<p class="MsoNormal"><span lang="EN-US">OutputDriver =
Ogr.GetDriverByName(&quot;PostgreSQL&quot;);</span></p>

<p class="MsoNormal"><span lang="EN-US">DataSource OutputDataSource =
OutputDriver.Open(&quot;PG:dbname=&#39;postgis&#39; host=&#39;localhost&#39; port=&#39;5432&#39;
user=&#39;...&#39; password=&#39;...&#39;&quot;, 1);</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">Copy the layer to the postgis table:</span></p>

<p class="MsoNormal"><span lang="EN-US">Layer outputLayer =
OutputDataSource.CopyLayer(inputLayer, def.GetName(), new string[] {
&quot;GEOMETRY_NAME=geom&quot;, &quot;PRECISION=NO&quot; }); //How to add
-a_srs EPSG:25832?</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">This works to import the shapefile to a
postgis table. But what should I do when to append the same shapefile to the
postgis a table. So far I have done this:</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">Open a layer from the shapefile:</span></p>

<p class="MsoNormal"><span lang="EN-US">string fileShp =
@&quot;c:\temp\testfile.shp&quot;;</span></p>

<p class="MsoNormal"><span lang="EN-US">DataSource InputDataSource =
Ogr.Open(fileShp, 0);</span></p>

<p class="MsoNormal"><span lang="EN-US">Layer inputLayer =
InputDataSource.GetLayerByIndex(0);</span></p>

<p class="MsoNormal"><span lang="EN-US">FeatureDefn def =
inputLayer.GetLayerDefn();</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">Open a datasource to postgis:</span></p>

<p class="MsoNormal"><span lang="EN-US">OutputDriver =
Ogr.GetDriverByName(&quot;PostgreSQL&quot;);</span></p>

<p class="MsoNormal"><span lang="EN-US">DataSource OutputDataSource =
OutputDriver.Open(&quot;PG:dbname=&#39;postgis&#39; host=&#39;localhost&#39; port=&#39;5432&#39;
user=&#39;...&#39; password=&#39;...&#39;&quot;, 1);</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">Layer outputLayer =
OutputDataSource.GetLayerByName(def.GetName());</span></p>

<p class="MsoNormal"><span lang="EN-US">Feature feat;</span></p>

<p class="MsoNormal"><span lang="EN-US">while ((feat = inputLayer.GetNextFeature())
!= null)</span></p>

<p class="MsoNormal"><span lang="EN-US">                             {</span></p>

<p class="MsoNormal"><span lang="EN-US">                                                          outputLayer.CreateFeature(feat);</span></p>

<p class="MsoNormal"><span lang="EN-US">                             }</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">The CreateFeature functions fails with a
syntax error in the INSERT command. Below is a short version of the command
with the syntax error: </span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">Command: INSERT INTO &quot;testfile&quot;
(&quot;geom&quot; , &quot;ogc_fid&quot; , &quot;name&quot;) VALUES
(GeomFromEWKT(&#39;SRID=-1;POINT (701678 6152444)&#39;::TEXT) , 0 , Test)</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">The field &quot;name&quot; is a character
varying in postgis a the command needs single quotes around &#39;Test&#39;.</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">How do I solve this syntax error?</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">I am also wondering how to assign an output
SRS when creating the postgis table like the ogr2ogr flag -a_srs EPSG:25832?</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">Any help or comment would be appreciated.</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal">Regards Esben.</p>

</div>

</div>


<br>_______________________________________________<br>
gdal-dev mailing list<br>
<a href="mailto:gdal-dev@lists.osgeo.org">gdal-dev@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/gdal-dev" target="_blank">http://lists.osgeo.org/mailman/listinfo/gdal-dev</a><br></blockquote></div><br><br clear="all"><br>-- <br>Best regards,<br>Chaitanya kumar CH.<br>
/tʃaɪθənjə/ /kʊmɑr/ <br>+91-9494447584<br>17.2416N 80.1426E<br>