zoukankan      html  css  js  c++  java
  • 电子海图开发第十六篇 ,墨卡托海图经纬度c++算法(共一百篇)

    struct GeoPoint
    {
        double lon;
        double lat;
    };
    
    double m_R;
    
    //计算海图的基准维度,一般取30°
    
    void getR(double lat)
    {
    
     lat = lat*PI / 180;
    
     double N = 6378137 / sqrt(1 - 0.08189*0.08189*sin(lat)*sin(lat));
     m_R = N*cos(lat);
    
    }
    
    //将墨卡托海图经纬度坐标转换为平面坐标,单位 :米
    
    void  getMokato(GeoPoint *point)
    {
    
     point->lon = point->lon / m_icoord*PI / 180;
     point->lat = point->lat / m_icoord*PI / 180;
     double Q = log(tan(0.785398163375 + point->lat / 2)) - 0.040945*log((1 + 0.08189*sin(point->lat)) / (1 - 0.08189*sin(point->lat)));
     point->lon = point->lon*m_R ;
     point->lat = m_R*Q ;
    
    }
    
     
    
    double getLat(double pointx, double x)
    {
    
     double d_e = 0.08189;
     double G = d_e / 2 * log((1 + d_e *sin(x)) / (1 - d_e * sin(x))) + pointx / m_R;
     return  2 * atan(exp(G)) - PI / 2;
    }
    
     
    
    //将屏幕坐标转换为墨卡托海图坐标,进行多次迭代计算,
    
    void  getLatlon(GeoPoint *point)
    {
     point->lat = point->lat;
     double d_x = 0.0;
     d_x = getLat(point->lat, d_x);
     d_x = getLat(point->lat, d_x);
     d_x = getLat(point->lat, d_x);
     d_x = getLat(point->lat, d_x);
     point->lat= d_x * 180 / PI;
      point->lon = point->lon / m_R * 180 / PI;   
    }

    参考文章:电子海图开发,web电子海图开发,电子海图二次开发

     
  • 相关阅读:
    FastDFS
    MYSQL日常操作
    SVN安装
    mysql主主配置
    MySQL优化
    nginx反向代理tomacat+keepalived实现动静分离、负载均衡、高可用
    nginx故障及处理
    nginx配置检测及安全配置
    nginx基本优化
    大金空调适配器
  • 原文地址:https://www.cnblogs.com/ecdis/p/13361724.html
Copyright © 2011-2022 走看看