struct pointInEarth
{
double lon;//经度
double lat;//纬度
double height;//高程
};
void surroundPoints(double longtitude, double latitude)
{
pointInEarth points[36];//结果在这里
double dis = 0.001;//两点之间的距离设为1米。单位是千米,即0.001千米=1米
double lonStep = dis / (111 * cos(latitude));//1米对应的经度步长,单位是度
double latStep = dis / 111;//1米对应的纬度步长,单位是度
for (int i = 0; i < 36; i++)//36个点
{
double angle = i * 10;//10度间隔
double lon = 0.0, lat = 0.0;
if (angle >= 0 && angle < 90)
{
lon = longtitude + lonStep *sin(angle*ONEANGLE);
lat = latitude + latStep *cos(angle*ONEANGLE);
}
else if (angle >= 90 && angle < 180)
{
lon = longtitude - lonStep *sin(angle*ONEANGLE);
lat = latitude + latStep *cos(angle*ONEANGLE);
}
else if (angle >= 180 && angle < 270)
{
lon = longtitude - lonStep *sin(angle*ON
地球上一个点(经纬度),求其周围360度,距离1米的采样点的经纬度坐标(每10度采一个点,共36个点)
最新推荐文章于 2024-01-17 10:55:28 发布
这篇博客介绍了一个结构体`pointInEarth`,用于存储经纬度和高程信息。然后提供了一个函数`surroundPoints`,计算给定点周围360度、每隔10度的36个点,每个点距离原始点1米。通过计算经度和纬度的步长,结合三角函数确定新的经纬度坐标,并利用osgEarth获取每个点的高程。最后,博主邀请读者查找可能的错误并提出建议。
摘要由CSDN通过智能技术生成