/* Universal Transverse Mercator inverse equations--mapping line,sample to
   x,y to lat,long 
  -----------------------------------------------------------------------*/
int LSutminv (
    double s,      /* I: sample */
    double l,      /* I: line */
    double *lon,   /* O: longitude (degrees) */
    double *lat    /* O: latitude (degrees) */
)
{
    int ret = 0;             /* return value */
    double x, y;             /* x,y projection coords */
    double dl, dp, dy, dx;   /* delta line, sample and x,y values */
    
    /* Calculate the x,y from the line,sample */
    dl = (l + 0.5) * pixel_size;
    dp = (s + 0.5) * pixel_size;
    dy = (dp * sin_orien) - (dl * cos_orien);
    dx = (dp * cos_orien) + (dl * sin_orien);
    y = ul_corner[1] + dy;
    x = ul_corner[0] + dx;
    
    /* Do the inverse mapping */
    ret = utminv (x, y, lon, lat);
    if (ret != 0)
    {
        printf ("Error in the inverse UTM mapping");
        return (ret);
    }
    
    /* Convert lat/long to degrees */
    *lat *= R2D;
    *lon *= R2D;
    
    return (0);
}
示例#2
0
/* **************************************************************** */
PointLla pointUtmToPointLla(PointUtm pointUtm)
{
	PointLla pointLla = pointLlaCreate();
	
	utminv(pointUtm->xMeters, pointUtm->yMeters, &pointLla->longitudeRadians, &pointLla->latitudeRadians);
	
	return pointLla;
}