<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body 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="appendonsend"></div>
<br>
<div id="divRplyFwdMsg" 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-top: 0px; margin-bottom: 0px;margin-right:0cm; margin-left:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-top:0cm; background:#F9F8F6">
<span style="font-size:11.5pt; font-family:"inherit",serif; color:#242729">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-top: 0px; margin-bottom: 0px;margin-right:0cm; margin-left:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-top:0cm; background:#F9F8F6">
<span style="font-size:11.5pt; font-family:"inherit",serif; color:#242729">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:10.0pt; font-family:Consolas; color:#242729; border:none windowtext 1.0pt; padding:0cm">SpatialReference()</span></code><span style="font-size:11.5pt; font-family:"inherit",serif; color:#242729"> and </span><code style="font-family:"Courier New""><span style="font-size:10.0pt; font-family:Consolas; color:#242729; border:none windowtext 1.0pt; padding:0cm">CoordinateTransformation()</span></code><span style="font-size:11.5pt; font-family:"inherit",serif; color:#242729">. </span></p>
<p style="margin-top: 0px; margin-bottom: 0px;margin-right:0cm; margin-left:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-top:0cm; background:#F9F8F6">
<span style="font-size:11.5pt; font-family:"inherit",serif; color:#242729">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-top: 0px; margin-bottom: 0px;margin-right:0cm; margin-left:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-top:0cm; background:#F9F8F6">
<span style="font-size:11.5pt; font-family:"inherit",serif; color:#242729">How can I do this? </span></p>
<p style="margin-top: 0px; margin-bottom: 0px;margin-right:0cm; margin-left:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-top:0cm; background:#F9F8F6">
<span style="font-size:11.5pt; font-family:"inherit",serif; color:#242729"> </span></p>
<p style="margin-top: 0px; margin-bottom: 0px;margin-right:0cm; margin-left:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-top:0cm; background:#F9F8F6">
<span style="font-size:11.5pt; font-family:"inherit",serif; color:#242729">PS: I am not sure if the XY coordinates are right, also not sure how to read Z coordinates.</span></p>
<p style="margin-top: 0px; margin-bottom: 0px;margin-right:0cm; margin-left:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-top:0cm; background:#F9F8F6">
<span style="font-size:11.5pt; font-family:"inherit",serif; color:#242729"> </span></p>
<p style="margin-top: 0px; margin-bottom: 0px;margin-right:0cm; margin-left:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-top:0cm; background:#F9F8F6">
<span style="font-size:11.5pt; font-family:"inherit",serif; color:#242729">Looking forward to hearing from you </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">GdalConfiguration.ConfigureGdal(); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            GdalConfiguration.ConfigureOgr(); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            Gdal.AllRegister(); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            Dataset ds = Gdal.Open(fileName, Access.GA_ReadOnly); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">          </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            double[] gt = new double[6]; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            int Rows = ds.RasterYSize; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            int Cols = ds.RasterXSize; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            double startX = gt[0]; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            double startY = gt[3]; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            double interval; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            Band band = ds.GetRasterBand(1); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            double xx, y; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            for (int k = 0; k < Rows; k++) </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">            { </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                ds.GetGeoTransform(gt); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                interval = gt[1]; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                ds.GetGeoTransform(gt); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                y = startY - k * interval; //Current lat </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                int[] buf = new int[Cols]; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                //ReadRaster parameters are StartCol, StartRow, ColumnsToRead, RowsToRead, BufferToStoreInto, BufferColumns, BufferRows, 0, 0 </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                band.ReadRaster(0, k, Cols, 1, buf, Cols, 1, 0, 0); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                //iterate each item in one line </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                for (int r = 0; r < Cols; r++) </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                { </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                    row = XYZData.NewRow(); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                    if (buf[r] != -32768)   //if pixel value is not NoData value </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                    { </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        xx = startX + r * interval;  //current lon  </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        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 class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        SpatialReference dst = new SpatialReference(""); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        dst.ImportFromProj4("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                       </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">         </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        double[] p = new double[3]; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        p[0] = xx; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        p[1] = y; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        p[2] = 0; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        var coordinateTransform = new CoordinateTransformation(srs, dst); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        coordinateTransform.TransformPoint(p); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        var latLong = new LatitudeLongitude(p[1], p[0]); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        var cartesian = GeoUK.Convert.ToCartesian(new Wgs84(), latLong); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        row["X"] = cartesian.X; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        row["Y"] = cartesian.Y; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        row["Z"] = 0; </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                        XYZData.Rows.Add(row.ItemArray); </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style="">                    } </span></p>
<p class="x_MsoNormal" style="margin-top: 0px; margin-bottom: 0px;margin:0cm; font-size:11pt; font-family:Calibri,sans-serif; margin-right:0cm; margin-left:0cm">
<span style=""> </span></p>
<br>
</div>
</div>
</div>
</body>
</html>