2015-07-28 75 views
0

任何人都可以帮助我,我如何使用纬度和经度组来实现面积计算器。如何使用纬度和longitueds实现面积计算器

例如一个人在建筑物周围散步,我正在走路的时候获取纬度和经度。我想计算一下建筑物的平方英尺。

+1

如何对自己努力的东西,然后询问时出现的特定问题? – Cleb

+0

谢谢您提出宝贵的意见 –

回答

2

嗯,我会尽力帮助你,但我不会给出完整的答案。

我认为,第一步是在笛卡尔坐标系中转换lats和longs。你应该计算所有点的中心。 (一个简单的中位数)。

第二步,将所有点ENU坐标集中在它的中心: enter image description here

这一步,我做到了,你在这里:

常量:

#define DEGREES_TO_RADIANS (M_PI/180.0) 

#define WGS84_A (6378137.0)    // WGS 84 semi-major axis constant in meters 
#define WGS84_E (8.1819190842622e-2) // WGS 84 eccentricity 

的Structs:

//To change to ECEF 
typedef struct{ 
double x; 
double y; 
double z; 

} ECEFCoordinate; 

typedef struct{ 
double east; 
double north; 
double up; 

} ENUCoordinate; 

方法,(你需要pa ST通过ECEF):

的#pragma标记大地公用事业定义

-(ECEFCoordinate) ecefFromLatitude:(double)lat longitude:(double)lon andAltitude:(double)alt 
{ 
double clat = cos(lat * DEGREES_TO_RADIANS); 
double slat = sin(lat * DEGREES_TO_RADIANS); 
double clon = cos(lon * DEGREES_TO_RADIANS); 
double slon = sin(lon * DEGREES_TO_RADIANS); 

double N = WGS84_A/sqrt(1.0 - WGS84_E * WGS84_E * slat * slat); 

ECEFCoordinate ecef; 
ecef.x = (N + alt) * clat * clon; 
ecef.y = (N + alt) * clat * slon; 
ecef.z = (N * (1.0 - WGS84_E * WGS84_E) + alt) * slat; 

return ecef; 
} 
// Converts ECEF to ENU coordinates centered at given lat , lon (with ECEFCenter) 
-(ENUCoordinate)enuFromECEFCenter:(ECEFCoordinate)ecefCenter withLat:(double)lat andLon:(double)lon fromEcef:(ECEFCoordinate)ecef 
{ 
double clat = cos(lat * DEGREES_TO_RADIANS); 
double slat = sin(lat * DEGREES_TO_RADIANS); 
double clon = cos(lon * DEGREES_TO_RADIANS); 
double slon = sin(lon * DEGREES_TO_RADIANS); 
double dx = ecefCenter.x - ecef.x; 
double dy = ecefCenter.y - ecef.y; 
double dz = ecefCenter.z - ecef.z; 

ENUCoordinate enu; 
enu.east = -slon*dx + clon*dy; 
enu.north = -slat*clon*dx - slat*slon*dy + clat*dz; 
enu.up = clat*clon*dx + clat*slon*dy + slat*dz; 

return enu; 
} 

最后一步:(我认为最简单的方法是使用三角形,从中心到连续的二点),计算出一堆的区域点在笛卡尔坐标系(东,北)。与(x,y)相同。

祝你好运。

最后的帮助两个计算面积,我认为你可以找到更多的帮助(也许最好的方式)通过互联网。

enter image description here

+0

非常感谢Onik您花了我宝贵的时间并给我重播, –

+0

您能否请出示连续两个点 –

+0

Onik,我遵循您的意见,最后我得到了一堆ENU点(东,北,上)和中心是ECEFC坐标。之后,我计算长度(L1,L2 .... Ln)和角度(alpha1,alpha 2,... alphan)。这是计算 –

相关问题