<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(51,51,51)">You're probably going to get more assistance with this if you post it on the gdal-dev list<br><a href="http://osgeo-org.1560.x6.nabble.com/GDAL-Dev-f3742093.html">http://osgeo-org.1560.x6.nabble.com/GDAL-Dev-f3742093.html</a></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(51,51,51)"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(51,51,51)">Thanks</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(51,51,51)"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(51,51,51)">Matt<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 19 Feb 2021 at 15:50, Wael El-Sayegh <<a href="mailto:wael_elsayegh@hotmail.com">wael_elsayegh@hotmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">




<div dir="ltr">
<div style="font-family:Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div>
<div style="font-family:Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div id="gmail-m_5124019779746080523appendonsend"></div>
<br>
<div id="gmail-m_5124019779746080523divRplyFwdMsg" dir="ltr">
<div> </div>
</div>
<div dir="ltr">
<div style="font-family:Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<p style="margin:0cm 0cm 0px;font-size:11pt;font-family:Calibri,sans-serif;background:rgb(249,248,246)">
<span style="font-size:11.5pt;color:rgb(36,39,41)">I am trying to obtain and convert latitude and longitude and altitude values into British National Grid coordinates from GeoTIFF using GDAL C# file, I managed to read the coordinate
 system and corner coordinates as </span></p>
<p style="margin:0cm 0cm 0px;font-size:11pt;font-family:Calibri,sans-serif;background:rgb(249,248,246)">
<span style="font-size:11.5pt;color:rgb(36,39,41)">The thing is, since that GDAL is more of Python documentation and I can't go through it, I am not sure what is the next step or how to do it using </span><code style="font-family:"Courier New""><span style="font-size:10pt;font-family:Consolas;color:rgb(36,39,41);border:1pt none windowtext;padding:0cm">SpatialReference()</span></code><span style="font-size:11.5pt;color:rgb(36,39,41)"> and </span><code style="font-family:"Courier New""><span style="font-size:10pt;font-family:Consolas;color:rgb(36,39,41);border:1pt none windowtext;padding:0cm">CoordinateTransformation()</span></code><span style="font-size:11.5pt;color:rgb(36,39,41)">. </span></p>
<p style="margin:0cm 0cm 0px;font-size:11pt;font-family:Calibri,sans-serif;background:rgb(249,248,246)">
<span style="font-size:11.5pt;color:rgb(36,39,41)">This is the code I tried so far but still getting the wrong numbers, I think its because they are projected coordinate system and needed to be converted in British coordinate system. </span></p>
<p style="margin:0cm 0cm 0px;font-size:11pt;font-family:Calibri,sans-serif;background:rgb(249,248,246)">
<span style="font-size:11.5pt;color:rgb(36,39,41)">How can I do this? </span></p>
<p style="margin:0cm 0cm 0px;font-size:11pt;font-family:Calibri,sans-serif;background:rgb(249,248,246)">
<span style="font-size:11.5pt;color:rgb(36,39,41)"> </span></p>
<p style="margin:0cm 0cm 0px;font-size:11pt;font-family:Calibri,sans-serif;background:rgb(249,248,246)">
<span style="font-size:11.5pt;color:rgb(36,39,41)">PS: I am not sure if the XY coordinates are right, also not sure how to read Z coordinates.</span></p>
<p style="margin:0cm 0cm 0px;font-size:11pt;font-family:Calibri,sans-serif;background:rgb(249,248,246)">
<span style="font-size:11.5pt;color:rgb(36,39,41)"> </span></p>
<p style="margin:0cm 0cm 0px;font-size:11pt;font-family:Calibri,sans-serif;background:rgb(249,248,246)">
<span style="font-size:11.5pt;color:rgb(36,39,41)">Looking forward to hearing from you </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>GdalConfiguration.ConfigureGdal(); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            GdalConfiguration.ConfigureOgr(); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            Gdal.AllRegister(); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            Dataset ds = Gdal.Open(fileName, Access.GA_ReadOnly); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>          </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            double[] gt = new double[6]; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            int Rows = ds.RasterYSize; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            int Cols = ds.RasterXSize; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            double startX = gt[0]; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            double startY = gt[3]; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            double interval; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            Band band = ds.GetRasterBand(1); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            double xx, y; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            for (int k = 0; k < Rows; k++) </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>            { </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                ds.GetGeoTransform(gt); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                interval = gt[1]; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                ds.GetGeoTransform(gt); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                y = startY - k * interval; //Current lat </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                int[] buf = new int[Cols]; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                //ReadRaster parameters are StartCol, StartRow, ColumnsToRead, RowsToRead, BufferToStoreInto, BufferColumns, BufferRows, 0, 0 </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                band.ReadRaster(0, k, Cols, 1, buf, Cols, 1, 0, 0); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                //iterate each item in one line </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                for (int r = 0; r < Cols; r++) </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                { </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                    row = XYZData.NewRow(); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                    if (buf[r] != -32768)   //if pixel value is not NoData value </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                    { </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        xx = startX + r * interval;  //current lon  </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        SpatialReference srs = new SpatialReference("+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.999601271625 +x_0=400000 +y_0=-100000 +ellps=airy +units=m +no_defs"); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        SpatialReference dst = new SpatialReference(""); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        dst.ImportFromProj4("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                       </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>         </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        double[] p = new double[3]; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        p[0] = xx; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        p[1] = y; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        p[2] = 0; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        var coordinateTransform = new CoordinateTransformation(srs, dst); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        coordinateTransform.TransformPoint(p); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        var latLong = new LatitudeLongitude(p[1], p[0]); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        var cartesian = GeoUK.Convert.ToCartesian(new Wgs84(), latLong); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        row["X"] = cartesian.X; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        row["Y"] = cartesian.Y; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        row["Z"] = 0; </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                        XYZData.Rows.Add(row.ItemArray); </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span>                    } </span></p>
<p style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">
<span> </span></p>
<br>
</div>
</div>
</div>
</div>

_______________________________________________<br>
UK mailing list<br>
<a href="mailto:UK@lists.osgeo.org" target="_blank">UK@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/uk" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/uk</a><br>
</blockquote></div>