电子海图开发一百篇第五十三篇,航易电子海图开发接口

一、海图开发示例

1. qt开发为例,选择对应的编译模式,在.Pro文件中加入海图引擎dll文件。

LIBS+=D:\\ECDIS\\ecdis.dll

2,main 函数中载入海图库文件和海图文件。

 

3,在窗口重绘函数中调用海图绘制即可

 

二、主要接口

/**

  *

 * @brief ecsIntil  初始化海图引擎,载入海图lib颜色及符号库文件  *

  */

extern "C"  int  ecsIntil()

/**

  *

 * @brief paintIntil  初始化绘图工具  每次绘制前需初始化

  * @param painter   绘图对象

  * @param w    绘图画布宽

  * @param h    画图画布高

  * @param ecdis  电子海图对象

  */

 void paintIntil(QPainter &painter,int w, int h,Ecdis &ecdis) 

/**

 * 载入电子海图

 * filename:电子海图存储位置

 */

extern "C"  int  loadEcs(char * filename)

/**

 * 缩放比例尺

 * Ecdis:电子海图对象

 */

extern "C"  void    smallScale(Ecdis *ecdis)

/**

 *放大比例尺

 * ecdis:电子海图对象

 */

extern "C"  void   addScale(Ecdis *ecdis)

/**

 * 设置显示模式

 * model  显示模式

 */

extern "C"  void  setDisplaygroup(int model)

/**

 * 设置等深线值

 * contour 等深线值

 */

extern "C"  void  setContour(int contour)

/**

 *设置显示颜色

 *

 *  color 颜色值  1,2,3,4,5

 */

extern "C"   void  setDisplaycolor(int color)

/**

 * @brief setDisplaymodel 设置符号模式

 * @param model 纸质符号,简单符号

 */

void  setDisplaymodel(int model)

/**

 * @brief setText  设置语言文字

 * @param model 本国语言 英文

 */

void  setText(int model)

/**

 * @brief showLight 显示灯标描述文字

 * @param model  显示  不显示

 */

void  showLight(int model)

/**

 * @brief setAlltext  是否显示文字

 * @param model    显示 不显示

 */

void  setAlltext(int model)

/**

 * @brief showSound  是否显示海图边界

 * @param model   显示或者不显示

 */

void  showSound(int model)


/**

 * @brief setDisplaydepth  显示或者关闭等深线

 */

 

void   setDisplaydepthline(){

/**

 * @brief setsafedepthline 设置等深线颜色标识

 * value 颜色等深线值

 */

void   setsafedepthline(int value){


/**

 * @brief moveMap  只移动电子海图

 * @param downx   按下x

 * @param downy    按下y

 * @param upx    弹起x

 * @param upy    弹起y

 * @param ecdis   电子海图对象

 */

void   moveMap(int downx, int downy, int upx, int upy,Ecdis *ecdis)

/**

 * @brief moveMap 移动海图同时移动切片地图

 * @param downx  按下坐标

 * @param downy  按下坐标

 * @param upx    弹起坐标

 * @param upy    弹起坐标

 * @param map    切片地图

 * @param ecdis   电子海图

 */

void   moveEcdisMap(int downx, int downy, int upx, int upy,Map *map,Ecdis *ecdis)

/**

 * @brief getEcslist  获取电子海图列表,此接口没有问题

 * @param ecslist  数组传入时默认传入的是首地址指针

 * @return

 */

 

int  getEcslist( Ecslist ecslist[])

/**

 * @brief getEcsnum  获取电子海图数量

 * @return 数量

 */

int   getEcsnum()

/**

 * @brief getLatlon  获取像素点位置的经纬度

 * @param x  像素点x

 * @param y  像素点y

 * @param geopoint  返回值存储点

 * @param ecdis   地图对象

 */

void  getLatlon(int x, int y, GeoPoint *geopoint,Ecdis *ecdis)

/**

 * @brief getxy  根据经纬点获取像素坐标

 * @param pointout  返回像素点坐标

 * @param point    传入的经纬度坐标

 * @param ecdis   地图对象

 */

void  getxy(POINT_ *pointout , GeoPoint *point,Ecdis *ecdis)

/**

 * @brief getCenter   获取地图中心点

 * @param center   中心点坐标

 * @param ecdis

 */

void  getCenter(GeoPoint * center,Ecdis *ecdis)

/**

 * @brief deleteEcs  删除某张海图

 * @param mapname   海图名称

 * @return

 */

bool  deleteEcs(char * mapname)

/**

 * @brief showBound  显示边界

 * @param model 1 显示 2 不显示

 */

void  showBound(int model)

/**

 *绘制地图

 * ecdis: 地图对象

 */

extern "C"  int   paintEcs(Ecdis *ecdis)

/**

  航迹汇算

 * @brief track

 * @param lat 位置

 * @param lon  位置

 * @param speed  速度

 * @param course_land  航向

 * @param minute   时间

 * @return 返回推算点位置

 */

POINT_  track(double lat ,double lon, float speed,float course_land,float minute) {


/**

 * @brief getBear获取方位

 * @param lon  起始点经度

 * @param lat  起始点纬度

 * @param lat1 目标点纬度

 * @param lon1 目标点经度

 * @return 单位度

 */

double  getBear(double lon,double lat ,double lat1, double lon1) {

/**

 * @brief GetDistance 求距离  精确大圆算法

 * @param lon  起始点经度

 * @param lat  起始点纬度

 * @param lat1 目标点纬度

 * @param lon1 目标点经度

 * @return 距离 单位米

 */

double GetDistance(double lat,double lon ,double lat1, double lng1) {

/**

  获取经纬度处的水深值

 * @brief getdepth

 * @param lat  纬度

 * @param lon   经度

 */

bool getdepth(double lat,double lon,Depth *pdepth){

/**

  * @brief setCentermap  设置电子海图及切片电子海图的中心点

  * @param lat  中心点纬度

  * @param lon   中心点经度

  * @param ecdis  海图

  * @param map   切片地图

  */

 void setCentermap(double lat,double lon,Map *map,Ecdis *ecdis){

     /**

     * @brief paintlatlon  绘制经纬度网格

     * @param painter  绘画对象

     *  @param ecdis  电子海图对象

     */

 

void  paintlatlon(QPainter &painter,Ecdis *ecdis){ 

/**

 * @brief paintm  绘制小方格

 * @param painter  绘制对象

 * @param ecdis   电子海图

 * @param m     间距,单位 :米

 */

void  paintm(QPainter &painter,Ecdis *ecdis,float m){

/**

   * @brief drawDistcircle  测量距离时绘制地理大圆

   * @param start   起始点经纬度

   * @param end    结束点经纬度

   * @param painter   绘制对象

   * @param ecdis    地图对象

   */

  void   drawDistcircle(GeoPoint &start,GeoPoint &end,QPainter &painter,Ecdis *ecdis){

  /**

   * @brief ab_cross_cd  ab是否与cd相交,交点为p。

   * @param a   // 端点

   * @param b  // 端点

   * @param c   // 端点

   * @param d  // 端点

   * @param p  //交点

   * @return 1规范相交,0交点是一线段的端点,-1不相交。

   */

 

  int ab_cross_cd (POINT_ &a,POINT_ &b,POINT_ &c,POINT_ &d,POINT_ &p) //

 /**

   * @brief ab_cross_cd  ab是否与cd相交,交点为p。

   * @param a   // 端点

   * @param b  // 端点

   * @param c   // 端点

   * @param d  // 端点

   * @param p  //交点

   * @return 1规范相交,0交点是一线段的端点,-1不相交。

   */

 

  int ab_cross_cd (POINT_ &a,POINT_ &b,POINT_ &c,POINT_ &d,POINT_ &p) /

/**

   * @brief paintLine  绘制线

   * @param start  起始点

   * @param end    结束点

   * @param width  线宽

   * @param color  颜色

   * @param type  线型

   */

  void paintLine(POINT_ start,POINT_ end,int width, int color,int type){

  /**

   * @brief paintPolygon  绘制多边形

   * @param point   多边形点数组

   * @param pointnum  点的个数

   * @param color   填充颜色,支持透明

   */

  void paintPolygon(POINT_ point[],int pointnum,int color){

  /**

   * @brief PointImg  绘制图标 图像

   * @param point  绘制点

   * @param imgpath  图片地址

   * @param width   图片 宽度

   * @param height  图片宽度

   */

  void PointImg(POINT_ point ,char * imgpath,int width,int height){

  /**

   * @brief PointImg  绘制图标 图像 跟随比例缩放

   * @param point  绘制点

   * @param imgpath  图片地址

   * @param width   图片原始宽度

   * @param height  图片原始宽度

   * @param index 缩放比例

   */

  void PointImg(POINT_ point ,char * imgpath,int width,int height,int index){

  /**

   * @brief Pointarc  绘制圆形

   * @param lefttop   绘制左上角

   * @param bootomright  绘制右下角

   */

  void Pointarc(POINT_ lefttop,POINT_ bootomright){

三、郑重承诺

海图源码可出售,签订正式的购买合同,提供为期一年的售后服务,保证项目集成成功,根据需要在线提供视频教学,讲解海图的相关解析知识,海图引擎的集成,引擎相关接口的使用方法。