<div dir="ltr">Hello,<div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Aug 8, 2014 at 10:40 AM, Even Rouault <span dir="ltr"><<a href="mailto:even.rouault@spatialys.com" target="_blank">even.rouault@spatialys.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Le vendredi 08 août 2014 10:26:27, Jorge Arevalo a écrit :<br>
<div><div class="h5">> On Thu, Aug 7, 2014 at 10:28 PM, Even Rouault <<a href="mailto:even.rouault@spatialys.com">even.rouault@spatialys.com</a>><br>
><br>
> wrote:<br>
> > Le jeudi 07 août 2014 22:26:07, Varun Saraf a écrit :<br>
> > > Hello,<br>
> > ><br>
> > > Thanks. I will use that.<br>
> > ><br>
> > > When the PostGISRasterDataset::SetProjection method returns, a<br>
> ><br>
> > segmentation<br>
> ><br>
> > > fault is being shown. The methods I have made changes to IWriteBlock,<br>
> > > IRasterIO are not being called. What is the following flow of methods<br>
> ><br>
> > that<br>
> ><br>
> > > are called? What could be the issue?<br>
> ><br>
> > You're in the best position to know ;-) More seriously without looking at<br>
> > the<br>
> > code, I can only suggest you attaching a debugger or running Valgrind to<br>
> > identify the flaw. (assuming you are developing on Linux)<br>
><br>
> Hello,<br>
><br>
> First of all, I will take guilt for my mistake: as Even said,<br>
> gdal_translate will always call CreateCopy, as stated at<br>
> <a href="http://www.gdal.org/classGDALDriver.html#a2c897da2a6e25169cccc49ef48797ce1" target="_blank">http://www.gdal.org/classGDALDriver.html#a2c897da2a6e25169cccc49ef48797ce1</a>.<br>
> My (wrong) assumption was that if you force a modification with regard to<br>
> the source raster (like providing a different outsize), gdal_translate will<br>
> avoid CreateCopy. My fault.<br>
><br>
> Default implementation of CreateCopy will call Create at the end, but as<br>
> PostGIS Raster driver provides its own implementation of CreateCopy, this<br>
> doesn't happen. Quick fix, as also Even suggested, avoid the PostGIS Raster<br>
> implementation of CreateCopy.<br>
><br>
> Varun, about the use of FetchSRSId, I think is a good idea too. The problem<br>
> is your WKT representation of the SRS is a bit different from the<br>
> representation stored in PostGIS (btw, where does your WKT representation<br>
> come from?). Well, both of them have the authority code 32644. You just<br>
> need a method to get this SRID from the WKT.<br>
<br>
</div></div>There are many possible correct variants of WKT for the same EPSG code.<br>
Depends on if you include all authority nodes, or other optional information.<br>
Like if you strip AXIS order information or not. GDAL has add itself<br>
variations on the way it export EPSG database as WKT.<br>
The one if spatial_ref_sys mentionned by Varun must likely comes from a GDAL<br>
<= 1.6 where we, wrongly (according to the BNF of WKT), put the AXIS nodes<br>
after the AUTHORITY code. This has been fixed in later GDAL versions, but the<br>
PostGIS spatial_ref_sys had not been regenerated since (something I've done in<br>
the recent weeks and that should hopefully go with PostGIS 2.2 :<br>
<a href="http://trac.osgeo.org/postgis/ticket/2737" target="_blank">http://trac.osgeo.org/postgis/ticket/2737</a>). So all in all relying on WKT<br>
strict matching isn't reliable.<br></blockquote><div><br></div><div>Thanks for the confirmation. </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div class=""><br>
><br>
> One way to do it was the query in PostGIS Raster implementation of<br>
> SetProjection (<br>
> <a href="http://trac.osgeo.org/gdal/browser/trunk/gdal/frmts/postgisraster/postgisra" target="_blank">http://trac.osgeo.org/gdal/browser/trunk/gdal/frmts/postgisraster/postgisra</a><br>
> sterdataset.cpp#L3024), but it doesn't work for you (again, the PostGIS WKT<br>
> representation is a bit different, so, the query doesn't return a value).<br>
><br>
> Another way is, like Even suggested, to reuse OGRPGDataSource::FetchSRSId<br>
> (Even, correct me if this isn't what you meant). You just need to build an<br>
> instance of OGRSpatialReference from your WKT string (<br>
> <a href="http://www.gdal.org/classOGRSpatialReference.html#a10e93344649a380d75b9925a" target="_blank">http://www.gdal.org/classOGRSpatialReference.html#a10e93344649a380d75b9925a</a><br>
> d53d86ac), and then call FetchSRSId using a pointer to that instance as<br>
> argument (check the method:<br>
> <a href="http://trac.osgeo.org/gdal/browser/trunk/gdal/ogr/ogrsf_frmts/pg/ogrpgdatas" target="_blank">http://trac.osgeo.org/gdal/browser/trunk/gdal/ogr/ogrsf_frmts/pg/ogrpgdatas</a><br>
> ource.cpp#L1931 )</div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">
</div>Calling directling OGRPGDataSource::FetchSRSId from PostGISRaster isn't<br>
directly doable since it is a member function of OGRPGDataSource. From my<br>
quick look, it only requires the hPGConn member. For Varun's need,<br>
copying&pasting the method and doing the small needed adjustment might be the<br>
quick way for now. In an ideal world, we could think of unifying the 2 drivers<br>
but that's another business !<br>
<span class="HOEnZb"><font color="#888888"><br>
Even<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
--<br>
Spatialys - Geospatial professional services<br>
<a href="http://www.spatialys.com" target="_blank">http://www.spatialys.com</a><br>
</div></div></blockquote></div><br>Yes, that was what I meant. For that reason I said 'reuse', not just 'call'. Sorry if I wasn't clear. A C&P should be enough, for the time being (unifying the drivers sounds right. I'm having the same idea with the QGIS loader for PostGIS, but I think it requires a lot of work).</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">Thanks again, Even</div><div class="gmail_extra"><br></div><div class="gmail_extra">Best regards,</div><div class="gmail_extra"><br></div><div class="gmail_extra">

Jorge</div><div class="gmail_extra"><div><br></div>-- <br>Jorge Arevalo<br><br><a href="http://about.me/jorgeas80" target="_blank">http://about.me/jorgeas80</a>
</div></div>