[mapguide-dev] area calculation conversion to meters

Traian Stanev traian.stanev at autodesk.com
Sun Dec 3 15:49:17 EST 2006


Right, I forgot about state planes. Those would have a central meridian that's closer to the data.

For distance computations, MapGuide has great circle distance functions. Another resource for great circle I've used is here:

http://www.codeguru.com/Cpp/Cpp/algorithms/article.php/c5115


The relevant section about a very accurate distance approximation on the ellipsoid is at the bottom of the page:

==================================================
double ApproxDistance(double lat1, double lon1, double lat2,
                      double lon2)
{
   lat1 = GEO::DE2RA * lat1;
   lon1 = -GEO::DE2RA * lon1;
   lat2 = GEO::DE2RA * lat2;
   lon2 = -GEO::DE2RA * lon2;

   double F = (lat1 + lat2) / 2.0;
   double G = (lat1 - lat2) / 2.0;
   double L = (lon1 - lon2) / 2.0;

   double sing = sin(G);
   double cosl = cos(L);
   double cosf = cos(F);
   double sinl = sin(L);
   double sinf = sin(F);
   double cosg = cos(G);

   double S = sing*sing*cosl*cosl + cosf*cosf*sinl*sinl;
   double C = cosg*cosg*cosl*cosl + sinf*sinf*sinl*sinl;
   double W = atan2(sqrt(S),sqrt(C));
   double R = sqrt((S*C))/W;
   double H1 = (3 * R - 1.0) / (2.0 * C);
   double H2 = (3 * R + 1.0) / (2.0 * S);
   double D = 2 * W * GEO::ERAD;
   return (D * (1 + GEO::FLATTENING * H1 * sinf*sinf*cosg*cosg -
   GEO::FLATTENING*H2*cosf*cosf*sing*sing));
}
=======================================


Traian

-----Original Message-----
From:	Orest Halustchak
Sent:	Sun 12/3/2006 2:33 PM
To:	dev at mapguide.osgeo.org
Cc:	
Subject:	RE: [mapguide-dev] area calculation conversion to meters

Hi,
 
Yes, converting to a UTM zone would work. However, if the original data is in the US, e.g. Sheboygan, you could project to the corresponding State Plane zone. Then you could do length and area calculations more accurately.
 
For UTM, central meridian = zone*6 -183.
 
For lat/long data, the correct way to compute length is on the spheroid. Libraries such as Proj4 or Mentor include distance calculation functions based on a particular spheroid. Most libraries unfortunately do not include an area calculation on the spheroid.
 
Orest.

-----Original Message----- 
From: Paul Spencer (External) 
Sent: Sun 12/3/2006 2:11 PM 
To: dev at mapguide.osgeo.org 
Cc: 
Subject: Re: [mapguide-dev] area calculation conversion to meters



Thanks Traian, it hurts my head too!  All calculations will be  
advertised as approximate, but I'd like them to be close to reality. 

How can I construct a UTM coordinate system definition centered  
around the meridian that crosses the centroid of the feature?  Or  
find the UTM Zone projection that contains the centroid of a feature  
(I manually found it for the Sheboygan data and it gave decent  
results)?  Would I need to manually build an array of UTM Zone -> LL  
mappings? 

Cheers 

Paul 


On 3-Dec-06, at 12:58 PM, Traian Stanev wrote: 

> I'm far from an expert either, but here is what makes sense to me... 
> 
> The simplest solution to me seems to transform to the nearest UTM  
> Zone projection in meters and compute the area of the resulting  
> geometry. I think this will be accurate enough for what you are  
> doing, since it is very likely that the original data (for  
> Sheboygan) was measured in that UTM zone and then converted to  
> LatLon after the fact anyway. That's why it seems to me that this  
> approach will give you exact results, even though in theory it is  
> not exact (since the data can be far away from the UTM Zone's  
> central meridian). 
> 
> Another, more generic approach, that would be good for small  
> features, would be to construct a UTM coordinate system definition  
> centered around the meridian that crosses the centroid of the  
> feature. This will give you an LL-UTM transformation with the least  
> distortion for the feature at hand. 
> 
> My hunch is that computing an exact area on the ellipsoid without  
> projection involves elliptical integrals, since even the area of a  
> whole ellipsoid involves those. Elliptic integrals have no closed  
> form solution so you would need a numerical integration approach,  
> which hurts my head even thinking about it. 
> 
> 
> Traian 
> 
> 
> 
> 
> -----Original Message----- 
> From: Paul Spencer (External) 
> Sent: Sat 12/2/2006 12:04 PM 
> To: dev at mapguide.osgeo.org 
> Cc: 
> Subject: Re: [mapguide-dev] area calculation conversion to meters 
> 
> Trevor, 
> 
> That would work for GetLength() but I wonder if you need to adjust 
> for latitude as well ... and it doesn't work for area.  I pondered 
> doing this for the square root of the area and then squaring the 
> result ... I think that would work, but again it would have to be 
> adjusted for the latitude ... or am I over-engineering this? 
> 
> Paul 
> 
> On 1-Dec-06, at 4:10 PM, Trevor Wekel wrote: 
> 
> > Hi Paul, 
> > 
> > For the most general case, I think you're on the right track.   
> Most of 
> > the geometry classes support the Transform() operation.  The 
> > MgCoordinateSystemTransform allows transformation from one  
> coordinate 
> > system to another.  I'm not a coordinate system expert but from  
> what I 
> > understand most coordinate systems projections have an accurate  
> sweet 
> > spot in the center and become more inaccurate around the edges.  I 
> > wonder if there is a programmatic way to determine the  
> appropriateness 
> > of the target system?  Possibly based on center point of the 
> > projection? 
> > 
> > But if your target system is in decimal degrees, doesn't that  
> imply a 
> > direct mapping to the world space?  Isn't a decimal degree some  
> number 
> > of meters?  Could you just use 
> > MgCoordinateSystem::ConvertCoordinateSystemUnitsToMeters(double  
> units) 
> > as the conversion factor?  I suspect this may also work in the sweet 
> > spot of projected systems as well. 
> > 
> > Thanks, 
> > Trevor 
> > 
> > -----Original Message----- 
> > From: Paul Spencer (External) 
> > Sent: Thursday, November 30, 2006 3:03 PM 
> > To: dev at mapguide.osgeo.org 
> > Subject: [mapguide-dev] area calculation conversion to meters 
> > 
> > Hi all, 
> > 
> > I'm measuring the area and length of features using 
> > MgGeometricEntity::GetArea() and GetLength() in the Sheboygan data. 
> > This returns values in the units of the projection, which happens 
> > to be 
> > decimal degrees.  Not so useful.  I'd like the result to be in  
> meters. 
> > 
> > Since this code needs to be generic, I've implemented some stuff to 
> > transform the geometry into a coordinate system that supports  
> meters. 
> > This is not too accurate since I arbitrarily picked a World LCC 
> > projection wkt :) 
> > 
> > What is the recommended way of doing this calculation? 
> > 
> > Cheers 
> > 
> > Paul 
> > 
> > +-----------------------------------------------------------------+ 
> > |Paul Spencer                          pspencer at dmsolutions.ca    | 
> > +-----------------------------------------------------------------+ 
> > |Chief Technology Officer                                         | 
> > |DM Solutions Group Inc                http://www.dmsolutions.ca/ | 
> > +-----------------------------------------------------------------+ 
> > 
> > 
> > 
> > 
> > 
> >  
> --------------------------------------------------------------------- 
> > To unsubscribe, e-mail: dev-unsubscribe at mapguide.osgeo.org 
> > For additional commands, e-mail: dev-help at mapguide.osgeo.org 
> > 
> > 
> > 
> >  
> --------------------------------------------------------------------- 
> > To unsubscribe, e-mail: dev-unsubscribe at mapguide.osgeo.org 
> > For additional commands, e-mail: dev-help at mapguide.osgeo.org 
> > 
> 
> +-----------------------------------------------------------------+ 
> |Paul Spencer                          pspencer at dmsolutions.ca    | 
> +-----------------------------------------------------------------+ 
> |Chief Technology Officer                                         | 
> |DM Solutions Group Inc                http://www.dmsolutions.ca/ | 
> +-----------------------------------------------------------------+ 
> 
> 
> 
> 
> 
> --------------------------------------------------------------------- 
> To unsubscribe, e-mail: dev-unsubscribe at mapguide.osgeo.org 
> For additional commands, e-mail: dev-help at mapguide.osgeo.org 
> 
> 

+-----------------------------------------------------------------+ 
|Paul Spencer                          pspencer at dmsolutions.ca    | 
+-----------------------------------------------------------------+ 
|Chief Technology Officer                                         | 
|DM Solutions Group Inc                http://www.dmsolutions.ca/ | 
+-----------------------------------------------------------------+ 





--------------------------------------------------------------------- 
To unsubscribe, e-mail: dev-unsubscribe at mapguide.osgeo.org 
For additional commands, e-mail: dev-help at mapguide.osgeo.org 



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapguide-internals/attachments/20061203/49fdebc4/attachment.html


More information about the Mapguide-internals mailing list