注册 登录
编程论坛 VB6论坛

【求助】经纬度的数学问题

xiangyue0510 发布于 2018-01-03 15:48, 2917 次点击
现在手上有一条管道,知道其各点的经纬度坐标,业主要求绘制出一个管线附件2km的一个安全区域。
找到一个很好用的地图软件——奥维,支持kml文件导入,自己编写VBA生成kml来绘制管道很方便,但是安全区遇到问题了。
简单的说问题是,如何实现经纬度表示端点的线段的偏移,也就是经纬度的平移。
下面是一张图,简单的一根直线,我按照直角坐标系的矢量旋转计算的结果,明显不对,正常的两端都是一个半圆,中间也是相对于管道(中间的黄线)对称的。
或者另一个思路就是知道参考点的经纬度,知道向东、向北平移的量,如何计算得到平移之后的点的经纬度
只有本站会员才能查看附件,请 登录
7 回复
#2
wds12018-01-03 17:04
我觉得原来坐标如果是(x1,y1),向东移X2,向北移Y2
你直接获得(x1+x2,y1+y2)就是新坐标么。

对于新坐标的值换算经纬度,需要你自己根据地图实际比例计算。




#3
xiangyue05102018-01-04 08:49
以下是引用wds1在2018-1-3 17:04:03的发言:

我觉得原来坐标如果是(x1,y1),向东移X2,向北移Y2
你直接获得(x1+x2,y1+y2)就是新坐标么。

对于新坐标的值换算经纬度,需要你自己根据地图实际比例计算。

谢一个先
是一个思路,我也想到了。但是有两个问题:
1. 向东移X2,向北移Y2——这个垂直方向,或者说平移方向如何确定??
2. 没有找到X、Y坐标系与经纬度坐标系之间的转换关系。网上只能找到经纬度距离的计算。
#4
wds12018-01-04 09:46
经纬度换算关系为1°经纬度大约是111kM。

下面连接可以输出经纬度,计算距离
http://www.
例如:
同纬度,经度35-36距离111.3195;
纬度0,10,经度35-36距离912.6659;
同理你要知道经纬度偏移可以算距离偏移。

多查查百度,一般都会有。

#5
xiangyue05102018-01-04 11:09
以下是引用wds1在2018-1-4 09:46:19的发言:

经纬度换算关系为1°经纬度大约是111kM。

下面连接可以输出经纬度,计算距离
http://www.
例如:
同纬度,经度35-36距离111.3195;
纬度0,10,经度35-36距离912.6659;
同理你要知道经纬度偏移可以算距离偏移。

多查查百度,一般都会有。

这个链接是距离的计算,这个都没问题了
我也找到了高斯克吕格坐标系统与经纬度的换算,但是结果还是不大对,我再研究研究吧
#6
wds12018-01-04 13:36
我再仔细看了你的需求,我觉得这么做。
1、定义区间:
  直线部分:上端假设A1-A2,下端B1-B2
  半圆部分:定义相邻点例如上半圆C1-Cn,下半圆,D1-Dn
2、计算垂直距离
  直线部分,根据坐标是否落在A1-A2上【或附近】,按照直线斜率计算出垂直2KM的区域点;B1-B2类似
  半圆部分,根据坐标是否落在C1-C2,C2-C3,。。。Cn-1-Cn上【或附近】,按照曲线,计算出切线面的垂直2KM的区域点;B1-B2类似


#7
xiangyue05102018-01-04 15:37
以下是引用wds1在2018-1-4 13:36:16的发言:

我再仔细看了你的需求,我觉得这么做。
1、定义区间:
  直线部分:上端假设A1-A2,下端B1-B2
  半圆部分:定义相邻点例如上半圆C1-Cn,下半圆,D1-Dn
2、计算垂直距离
  直线部分,根据坐标是否落在A1-A2上【或附近】,按照直线斜率计算出垂直2KM的区域点;B1-B2类似
  半圆部分,根据坐标是否落在C1-C2,C2-C3,。。。Cn-1-Cn上【或附近】,按照曲线,计算出切线面的垂直2KM的区域点;B1-B2类似

你说的是如何画圆的问题,这部分没啥疑问。我解决不了的还是坐标系转换的问题,按照你的提醒找到了高斯坐标系(话说也挺恶心的)。
两端圆不对的原因找到了,三角运算的时候角度忘记转换为弧度了。现在已经OK了。
只有本站会员才能查看附件,请 登录

#8
csl5912018-01-05 16:04
这个学习了,人要不断地学习。
1