Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   ASP .Net (http://www.velocityreviews.com/forums/f29-asp-net.html)
-   -   "Attempted to read or write protected memory. This is often an indication that other memory is corrupt" (http://www.velocityreviews.com/forums/t120158-attempted-to-read-or-write-protected-memory-this-is-often-an-indication-that-other-memory-is-corrupt.html)

humbleaptience 02-22-2006 06:23 PM

"Attempted to read or write protected memory. This is often an indication that other memory is corrupt"
 
I'm migrating from 1.1 to 2.0. This code worked fine in 1.1 , but now
it throws an exception.

public static int LLtoUTM(int datumIn, int datumOut, double p_lat,
double p_lon,ref double UTMNorthing,ref double UTMEasting,ref int
UTMZone)
{
int errno;
//This is the formula for calculating which Zone a point is in at a
particular lat/long
int ZoneNumber = Convert.ToInt32((p_lon + 180) / 6) + 1;
double[] x = new double[1];
double[] y = new double[1];
double[] z = new double[1];
y[0] = p_lat*proj_api.Proj.DEG_TO_RAD;
x[0] = p_lon*proj_api.Proj.DEG_TO_RAD;
z[0] = 0.0;
IntPtr src0= proj_api.Proj.pj_init_plus("+proj_api.Proj=latlong
+datum=NAD27");
IntPtr src1 = proj_api.Proj.pj_init_plus("+proj_api.Proj=latlong
+datum=NAD83");
IntPtr dst0 = proj_api.Proj.pj_init_plus("+proj_api.Proj=utm +zone="
+ ZoneNumber + " +datum=NAD27");
IntPtr dst1 = proj_api.Proj.pj_init_plus("+proj_api.Proj=utm +zone="
+ ZoneNumber + " +datum=NAD83");
//This nice little bit of code below is designed to execute
pj_transfrom (the proj_api.Proj lib all around function)
//with the correct parameters so that a datumshift to the correct
datum is included.
if(datumIn==0)
{
if(datumOut==0)
{
errno = proj_api.Proj.pj_transform(src0, dst0, 1, 1, x, y,
z);//NAD27-NAD83
}
else
{
errno = proj_api.Proj.pj_transform(src0, dst1, 1, 1, x, y,
z);//NAD27-NAD27
}
}
else
{
if(datumOut==0)
{
errno = proj_api.Proj.pj_transform(src1, dst0, 1, 1, x, y,
z);//NAD83-NAD27
}
else
{
<!------- ERROR THROWN HERE --------!>
errno = proj_api.Proj.pj_transform(src1, dst1, 1,
1, x, y, z); //NAD83-NAD83
}
}

proj_api.Proj.pj_free(dst1);
proj_api.Proj.pj_free(src1);
proj_api.Proj.pj_free(dst0);
proj_api.Proj.pj_free(src0);
UTMNorthing = y[0];
UTMEasting = x[0];
UTMZone = ZoneNumber;
return errno;
}

pj_transform is a function in a C# wrapper of the Proj library.

public static extern int pj_transform(IntPtr src, IntPtr dst,
int point_count, int point_offset,
[InAttribute, OutAttribute] double[] x,
[InAttribute, OutAttribute] double[] y,
[InAttribute, OutAttribute] double[] z);

I assume it has something to do with assigning in-out attributes to
arrays?

Thanks!



All times are GMT. The time now is 10:58 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.