[Gdal-dev] GDAL C# bindings exception: Attempted to read or write protected memory

Ben Greene bgreene at rapidmap.com.au
Mon Apr 23 19:49:32 EDT 2007


Tamas,
 
Would the SVN trunk be considered stable enough to release with a commercial product?  If it's probably not a good idea, is there currently a target date for a stable release based on this new code?
 
Thanks

	-----Original Message----- 
	From: Tamas Szekeres [mailto:szekerest at gmail.com] 
	Sent: Mon 4/23/2007 8:29 PM 
	To: Ben Greene 
	Cc: gdal-dev at lists.maptools.org 
	Subject: Re: [Gdal-dev] GDAL C# bindings exception: Attempted to read or write protected memory
	
	

	Ben,
	
	I would suggest to start with the latest SVN trunk. There were some
	fundamental changes compared with the current stable branch. It might
	be more difficult to make this transition later. For more information
	see:
	
	http://trac.osgeo.org/gdal/wiki/GdalOgrCsharpVersions
	http://trac.osgeo.org/gdal/wiki/GdalOgrInCsharp
	
	Best regards,
	
	Tamas
	
	
	
	2007/4/23, Ben Greene <bgreene at rapidmap.com.au>:
	> Hi,
	>
	> I had a problem with the GDAL C# bindings freezing a little while ago, and Tamas managed to find the problem (I was passing in a two-element array instead of a three element for the return value).  However, now I'm having a different issue.
	>
	> I'm working with 1.4.1 binaries compiled myself according to the instructions on this site (I can't find the most recent binaries in the FWTools distribution).  When I run the code below, I get a System.AccessViolationException:Attempted to read or write protected memory exception on the line:
	> transform.TransformPoint(point, px, py, 0.0)
	>
	> It appears that the exception is thrown from this line:
	> public void TransformPoint(double[] argout, double x, double y, double z) {
	>
	> osrPINVOKE.CoordinateTransformation_TransformPoint__SWIG_1(swigCPtr, argout, x, y, z);
	>
	> }
	>
	> The test image I'm using is:
	>
	> o41078a5.tif
	> from
	> http://dl.maptools.org/dl/geotiff/samples/usgs/
	>
	> Here is the VB.Net code I'm using (in VS 2005):
	>
	> Imports GDAL
	>
	> Imports OGR
	>
	> Public Class GeoTiffReader
	>
	> Private Shared image As Dataset
	>
	> Public Shared Function GetGeoReference(ByVal Filename As String) As GeoReference
	>
	> If Not (Filename Is Nothing) Then
	>
	> 'Return Nothing
	>
	> 'if uncommented, the code will not crash
	>
	> End If
	>
	> GDAL.gdal.AllRegister()
	>
	> image = GDAL.gdal.Open(Filename, 0)
	>
	> If (image Is Nothing) Then
	>
	> Return Nothing
	>
	> End If
	>
	> Dim gr(6) As Double
	>
	> image.GetGeoTransform(gr)
	>
	> Dim topLeft() As Double = TransformWGS84(gr(0), gr(3))
	>
	> Dim bottomRight() As Double = TransformWGS84(gr(0) + gr(1) * image.RasterXSize, gr(3) + gr(5) * image.RasterXSize)
	>
	> If (topLeft.Length = 2 And bottomRight.Length = 2) Then
	>
	> Return New GeoReference(topLeft(0), topLeft(1), bottomRight(0), bottomRight(1))
	>
	> Else
	>
	> Return Nothing
	>
	> End If
	>
	> image.Dispose()
	>
	> End Function
	>
	> Public Shared Function TransformWGS84(ByVal px As Double, ByVal py As Double) As Double()
	>
	> Dim point() As Double
	>
	> point = New Double() {0.0, 0.0, 0.0}
	>
	> Dim srWGS84 As New SpatialReference("")
	>
	> srWGS84.SetWellKnownGeogCS("WGS84")
	>
	> If (image.GetProjection() = "") Then
	>
	> Return New Double() {}
	>
	> End If
	>
	> Dim srCurrent As New SpatialReference(image.GetProjection())
	>
	> Dim transform As New CoordinateTransformation(srCurrent, srWGS84)
	>
	> If (transform Is Nothing) Then
	>
	> Return New Double() {}
	>
	> End If
	>
	> Try
	>
	> transform.TransformPoint(point, px, py, 0.0)
	>
	> Catch
	>
	> Return New Double() {}
	>
	> End Try
	>
	> Return point
	>
	> End Function
	>
	> End Class
	>
	>
	> _______________________________________________
	> Gdal-dev mailing list
	> Gdal-dev at lists.maptools.org
	> http://lists.maptools.org/mailman/listinfo/gdal-dev
	>
	





More information about the Gdal-dev mailing list