坐标反算计算起始方位角_从0开发工程测绘大师小程序之坐标反算篇(十二)...

5b70279eb56d57319cff599af0d83218.png

上一篇我们讲了如何进行实现坐标正算。在该篇中我们会讲解如何进行实现坐标反算的程序。

目录 

    1.什么是坐标反算

    2.代码实现

    3.界面展示

侃侃而谈

从该篇开始程序就会慢慢的越往后越开始有点难度了,所以我想大家应该是蛮期待的,希望你无论晴天还是雨天,无论心情好坏,每天安排的任务都按时完成吧,一起加油遇见美好。


01、什么是坐标反算

坐标反算其实就根据直线的起点和终点的坐标,计算直线的水平距离和坐标方位角的过程。

图1-1  坐标正反算图解

eeef711d928460e7302f74ab2aaa6661.png

计算公式

49a89cb23598403542110c7316d5d6e1.png

我们可以从公式中发现坐标反算其实很简单,但是在测绘中他的用途特别广泛,如果你是从事传统测绘的测量,那么你很幸运,因为你天天都在和这个公式打交道。


02、代码实现

因为代码中都有相应注释,这里我不会做过多的说明。你只需要在微信中任意创建一个page页面就可以编写运行,以下文件的名字只是一个参考。其中样式还是与之前第七篇的样式(centralmeridianis.wxss)一致,由于篇幅有限样式不再做过多说明。

该程序主要的难点在于,要根据所得的象限角所在的象限判断方位角所在的象限从而得到方位角,而且要保证公式的严密性。如果你能解决好这个问题那么这个程序也变得非常的简单。

具体请看下面的代码

coordreverse.wxml

<mynavbar  back="true" home="true" tourl="../../../../../pageBar/component/index" color="rgba(0,0,0,.5)" titleText="坐标反算">mynavbar><view class="header-text">  <image src="../../../../../icon/start.png">image>起点坐标view><block wx:for="{
    {listStart}}" wx:key="id">  <view class="centralmerid" id="{
    {item.id}}">    <view class="centralmerid-border {
    {item.border ? 'selected-border' :  '' }}">      <view class="centralmerid-left-icon">        <image class="img-icon" src="{
    {item.url}}">image>        <text class="left-text">{
    {item.text}}text>      view>      <input class="{
    {item.border ? 'selected-border' :  '' }}" type="digit"  value="{
    {cleantext}}" bindfocus="{
    {item.focous}}" bindblur="{
    {item.name}}">input>      <view class="centralmerid-right-text">{
    {item.unit}}view>    view>  view>block><view class="header-text">  <image src&
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算两个经纬度相对的方向角可以使用以下公式: ``` double lat1 = Math.toRadians(lat1Degrees); double lat2 = Math.toRadians(lat2Degrees); double lon1 = Math.toRadians(lon1Degrees); double lon2 = Math.toRadians(lon2Degrees); double y = Math.sin(lon2 - lon1) * Math.cos(lat2); double x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1); double bearing = Math.toDegrees(Math.atan2(y, x)); bearing = (bearing + 360) % 360; ``` 其中,`lat1Degrees`和`lon1Degrees`是第一个经纬度的纬度和经度,`lat2Degrees`和`lon2Degrees`是第二个经纬度的纬度和经度。计算出的方向角`bearing`表示第一个经纬度指向第二个经纬度的方向,以度为单位,范围为0到360。 坐标方位角也可以使用类似的公式进行计算。假设已知点A和点B的经纬度坐标,以及点A与北极的方位角,要求点B与点A的方位角,则可以使用以下公式: ``` double lat1 = Math.toRadians(lat1Degrees); double lat2 = Math.toRadians(lat2Degrees); double lon1 = Math.toRadians(lon1Degrees); double lon2 = Math.toRadians(lon2Degrees); double bearing1 = Math.toRadians(bearing1Degrees); double y = Math.sin(lon2 - lon1) * Math.cos(lat2); double x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1); double bearing2 = Math.toDegrees(Math.atan2(y, x)); bearing2 = (bearing2 + 360) % 360; double bearingAB = (bearing1 + bearing2) % 360; ``` 其中,`bearing1Degrees`表示点A与北极的方位角,`bearing2`表示点A指向点B的方向角,`bearingAB`表示点B与点A的方位角

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值