-
上海意玛软件
YIMAENC
SDK
开发文档
产品版本:
3.3
文档版本:
3.3.1.0
更新日期:
2008-09-10
版权所有
YIMASOFT
上海意玛软件
YimaEnc
文件结构
YimaEnc
组件包括
YimaEnc
核心控件
及
“
S57Lib”
< br>目录下的
7
个库文件
S57ObjectClasses
,
S57A
ttributes
,
S57Colours
< br>,
S57Symbols
,
S5
7ComplexLineStyles
,
S57Patter
ns
,
S57LookupTable
组成。
这些库文件一般情况下您不需要也不建议改动,
但如果有
特别的需求,
在熟悉库文件的定义规则和结构的情况下,可以做一些扩展或改动。
?
S57ObjectClasses
中是所有
S5
7
所有的物标类
(Object
Class,
在
YimaEnc
p>
中也称为图层
--Layer)
的定义,
包括每个类别的名称,缩略语,和所包含的特征属性列表。您可以自
行更改名称项,如在
开发中文系统时将每项名称翻译成中文。您也可增加自己的物标类
定义。
?
S57Attributes
中是所有
S57
的物标特征属性
(feature
< br>attribute)
的定义,包括每个属性的名
称,<
/p>
缩略语,
数据类型和枚举
(enmu)<
/p>
或列表
(list)
类型的各项枚举值。
您可以自行更改名称
项,如在开发中文系统时将每项名称翻译成
中文。您也可增加自己的物标特征属性定义。
?
S57Colours
中是所有
S52
定义的
5
种颜色模式
(Color
Mode
l)
下的颜色列表。包括
DAY_BRIGHT
,
DAY_WHITEBACK
,
DAY_BLACKBACK
,
DUSK
< br>,
NIGHT
五种模式
下的所
有颜色的缩略语,视觉颜色,
CIE
3
分量,
RGB
3
分量值。
?
S57Symbols
中是所有
S52
的点物标符号定义。
您可以在熟悉
S52
符号定义规则的前提下,
增加定义自己的点物标符号。
?
S57ComplexLineS
tyles
中是所有
S52
的线物标循
环符号定义。您可以在熟悉
S52
符号定
义规则的前提下,增加定义自己的线物标符号。
?
S57Patterns
中是所有
S52
的面物标填充符号定义。您可以
在熟悉
S52
符号定义规则的前
提下,
增加定义自己的面物标符号。
上海意玛软件
?
S57LookupTable<
/p>
中是所有
S52
的物标对象显示风格规则
定义。
说明,
在
YimaEnc
中,
您对
S57
定义的物标类及其显示规则的扩展可
以通过两种方式实现:
1
)
p>
按照
S57
每个库文件的规则扩展
S57
库文件本身,
这样每一个
YimaEnc
的海图
(cell)
< br>本身的结构都会相应扩展。如增加了一个物标类即图层
,
并定义了其显示风格,则所
有
YimaEnc
打开的海图结构中都多了该图层,您可以向在图层中添加和编辑物标对
象。
p>
p>
但这种方式要求您对
S57
和
S52
标准有较深的理解并且严谨遵守
S57
库文件的定义
规则,由于
S57
和
S52
标准的定义规则较复杂,如果更改不当,很
容易破坏
S57
的文件结
构。所以该方
式的实行一般是客户提出扩展需求,由
Yimasoft
来帮助
客户实现库文件扩展
定义,然后客户再利用
YimaEnc
SDK
提供的编辑接口进行数据编辑。
2
)
使用
YimaEnc
提供的航行图
MarineMap
接口来自定义图层
和图符进行用户海图扩
展,如自定义航线层,停泊港层等。扩展文件的结构定义相对简单
易掌握,只包括
“
MarineMap
”
下的
“Layers”
和
两个文件。其中
“Layers”
文件用于定义所有
自定
义图层,包括它们的层名,地理类型,属性列表,画图风格。
上海意玛软件
YimaEnc
软件内部结构及功能概要
海图管家
*.001
*.002
...
< br>*.000
*.ymc
海图绘制器
海图库
海图
储存室
(
Map Files
Ca
che)
Ma[
…
,
海图信息表
Maps Info
Table
Map 0 Info
Map 1
Info
Map 2 Info
Map 3
Info
Map 4 Info
Mem Map
m
Map n
Info
内存海图序列
Mem Map 0
Mem Map 1
Screen
A
Scale
Mem Map 2
Mem Mapl 3
Screen
B
一个组件对象内有一个海图管家,它负责所有的海图管理和
显示任务,而海图管家管理
和维护着一个海图库,一个内存海图序列,一个海图绘制器及
多个海图屏幕窗口。通过调用
海图管家的操作接口函数,您可以实现以下所有功能:
p>
1.
海图库管理和内存海图序列的管理功能
(ENC maps
operations)
2.
海图绘制器的管理
(MapDrawer
operations)
3.
海图显示控制
(Display operations)
4.
坐标转换与地理计算
(Coordinate
Conversion)
5. S52
显示全局参数控制
(Global S52 options
control)
6.
海图物标查询和高亮功能
(Query and
Hightlight operations)
内存海
图序列是加载到内存中的海图单元
(Map)
数组。
海图管家负责从海图库的海图储
存室中加载海图
文件到内存海图序列,并负责根据内存海图序列中的索引信息选出需要在海
图屏幕绘制的
海图物标对象来绘制。并在内存海图序列的海图数量超出内存限制时卸载暂时
不需要绘制
的海图单元。
上海意玛软件
海图库由一个称为海图储存室
(Map
Files
Cache)
的文件目录
“
mapLib”
和一个海图信息
表组成
(Maps
Info Table)
组成。
海图储存室中存储着海图库中每个海图单元
(Map)
对应的最新版本的
Yimap
File
海图
文件,
而这些
*.ymc
文件即
是内存海图序列的动态加载文件对象。
存为
Yimap
File
文件的目
的是为了加快加载速度。
海图管家每打开一个海图文件
(
p>
可以是
Base Map, Update
Map
或
Yimap File
三种格
式
)
,
就
会自
动转换成对应的
*.ymc
文件并覆盖海图储存室对应的海图单
元的
ymc
文件,并同时更新
海图信息
表的对应记录。
海图管家可以自动进行内存海图序列的管理:
1
)
自动加载海图
在每一次刷新显示前,
根据当前屏幕区域,
比例尺和屏幕偏移量及海图信息表中
的信息判断海图库哪些海图单元需要加载,
如果某个单元需要加载且当
前不在内存海
图序列中,
则海图管家自动从海图储存室中将该单
元的
*.ymc
文件加载到内存海图序
列中。
其加载方式可分为全部加载和部分加载两种。
其中部分加
载有按图层加载,
区
域加载和最小比例尺加载和综合过滤加载几
种方式。
2
)
自动卸载海图
在每一次进行自动加载
海图单元或批量加载前,
海图管家会判断当前系统内存余
量是否
足够加载新的单元,
如果余量不足,
则会从内存海图序列中自动
卸载海图管家
认为近期使用可能性最小的一个或多个海图单元。
您亦可自行管理内存海图序列,如可执行以下操作:加载海图
,卸载海图,内存海图序
列元素位置控制
(
从而控制重叠海图的显示顺序
)
。
上海意玛软件
多窗口应用支持
YimaEnc <
/p>
可支持多窗口海图屏幕的应用,该性能可用于多级鸟瞰图应用或多点监控的应
用。一个海图绘制器可以为多个海图屏幕绘制海图,但您需自行维护每个窗口的初始参数和
当前参数。每个海图屏幕窗口的参数包括:
1.
窗口大小
(Window
size)
2.
零点偏移量
(original offset
point),
即海图区域相对于海图屏幕窗口的零点偏移量。
3.
当前比例尺和当前屏幕偏移量。
一般而言,您需为每个海图屏幕窗口保存一组上述参数:
1)
在本窗口的所有改变大小,零点
偏移量,比例尺和当前屏幕偏移量的操作后,
将更改后的参数保存
2)
当
需
要
海
图
绘<
/p>
制
器
从
另
外
一
个
窗
口
的
绘
制
转
到
本
窗
口
之
前
时
,
使
用
RefreshDrawer,
SetCurrentScale,
和
SetMapOffset
三个函数来恢复前面存储的
本窗口的屏幕窗口参数
开发要点
1.
经纬度坐标参数说明
:
经纬度坐标值为
4
字节整型数
,
< br>其数值为以度为单位的小数经纬度坐标值乘以一个固
定的乘积因子
(multiFactor = 10000000);
西经为负数;南纬为负数;
2.
(
in
)
型参
数用于向函数传入处理信息,
一般应传入该参数所需类型的值类型;
(out)
型
参数用于函数返
回处理结果,要求传入为该参数所需类型的引用类型
,
在
VB
中直
接传入相
应类型的变量,在
C# <
/p>
中注意需加前缀
。
3.
几个
Pos
的概念:
YimaEnc
中对象的索引为该对象在其序列中的位置
,
< br>是起始值为
0
的整型数
,
以
作为后缀
,
这包括:
上海意玛软件
?
几个一维
Pos
:
#
libMapPos
:海图在图库中的索引
#
memMapPos
:内存海图序列中某幅海图的索引
#
layerPos
:图层索引
#
innerLayerObjectPos
:物标在图层内部的索引
#
attrPos
:属性索引
?
两个多维
Pos
:
#
MEM_GEO_OBJ_POS
:
用于在整个内存海图序列中唯一标识一个物标,
包括
3
个子索引,即
memMapPos,
layerPos, innerLayerObjPos
。
如在
VB
中定义如下:
Private Type MEM_GEO_OBJ_POS
memMapPos
As Long
'
物标所
在海图在内存海图序列中的索引
layerPos
As Long
'
物标所在图层
innerLayerObjPos
As Long
'
物标在图层内部的索引
End Type
#
M_GEO_OBJ_POS
:
<
/p>
用于在某一确定的海图内唯一标识一个物标,包括
2
个
子索引,即
layerPos,
innerLayerObjPos
。
4.
YIMAENC
常用基本数据类型
:
#
M_POINT
:
typedef struct
M_POINT
{
int x;
int y;
}
M_POINT;
定义
:
坐标点,
可以是屏幕坐标点或地理坐标
. <
/p>
屏幕坐标一般以像素为单位,
地理
坐标的
x,
y
值分别为以度为单位的小数经
纬度坐标值乘以一个固定的乘积因子
(multiFactor
=
10000000);
#
M_COLOR
:
typedef struct
M_COLOR
{
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char reserve;
上海意玛软件
}
定义
:
颜色结构体,
r, g, b 3
个属
性分别代表
3
个颜色基本分量,
res
erve
为保留属
性
;
上海意玛软件
方法列表:
1.
bool
Init
()
海图管家基本操作
(Basic Operations)
功能描述
:
初始化海图管家,包括读入所有海图配置文件及其它初始化工作。
2.
?
海图库管理和内存海图序列的管理功能
(ENC maps
operations)
图库管理
bool
OpenMap
(
const
char*
pStrMapPath
)
功能描述
:
打开一幅海图到海图库。
void
CloseMap
(
int
libMapPos
)
功能描述
:
从海图库中删除某幅海图。
int
GetLibMapCount
( )
功能描述
:
得到海图库中海图总数。
bool
GetLibMapInfo
(
int
iLibMapPos
,
char*
pStrMapName
,
float*
pOriginalScale
,
int*
pLeftMost
,
int*
pRightMost
,
int*
pUpMost
,
int*
pDownMost
,
int*
pEditionNum
,
int
*
pUpdateNum
,
int*
pScaleMin
)
功能描述
:
得到海图库中某幅海图的信息。
bool
IsMapInCurrentScrn
(
int
libMapPos
)
功能描述
:
判断海图库中某幅海图是否在当前显示屏幕中。此函数一般用于决定是否将海图
库中某
幅海图调入内存海图序列中。
?
内存海图序列管理
(注意
YIMAENC
支持内存海图序列自动调度管理
,
所
以除非有特殊需求一般
该功能块函数不必使用)
int
GetMemMapCount
( )
功能描述
:
得到内存海图序列海图总数。
上海意玛软件
int
GetMemMapPosInLib
(
int
memMapPos
)
功能描述
:
得到内存海图序列某一海图在海图库中的位置。
bool
InterChangeTwoMapPos
(
int
firstMemMapPos
,
int
secondMemMapPos
)
功能描述
:
交换内存海图序列中两幅海图的位置,从而让大比例尺海图在小比例尺海图之上
显示。
bool
LoadMapToMemory
(
int
libMapPos
)
功能描述
:
将海图库中某幅海图加载到内存海图序列中。
bool
UnloadMapFromMemory
(
Int16
memMapPos
)
功能描述
:
卸载内存海图序列的某一幅海图。
bool
MoveMapPos
(
int
oldMemMapPos
,
int
newMemMapPos
)
功能描述
:
将内存海图序列中的某幅海图移动到一个新的位置。
3.
海图绘制器的管理
(MapDrawer
operations)
bool
RefreshDrawer
(
HWND
hwnd
,
int
scrnWidth
,
int
scrnHeight
,
int
scrnOrgOffsetPoX
,
int
scrnOrgOffsetPoY
)
功能描述
:
为一个新的屏幕窗口或改变了大小的屏幕窗口刷新或称重新初始化海图绘画器。
海图管
家有一个海图绘制器,该海图绘制器由一个主屏幕窗口初始化,但可绘制多个辅屏幕
窗口
,一般情况下要求这些窗口的屏幕大小和主屏幕窗口一致。
HDC
GetDrawerHDC
(
)
功能描述
:
得到海图绘画器的窗口环境句柄。
HWND
GetDrawerHWnd
(
)
功能描述
:
得到海图绘画器的窗口句柄。
int
GetDrawerScreenHeight
(
)
功能描述
:
得到海图绘画器的窗口高度。
上海意玛软件
int
GetDrawerScreenWidth
(
)
功能描述
:
得到海图绘画器的窗口宽度。
4.
海图显示操作
(Display operations)
bool
DrawMapsInScreen
(
HDC
hdc
)
功能描述
:
在屏幕中绘制海图。
bool
DrawDragingMap
(
HDC
destHDc
,
M_POINT
curDragMousePo
,
M_POINT
dragStartPoX
)
功能描述
:
在屏幕中
拖动海图,一般用于使用鼠标拖动的手动漫游功能。
float
GetCurrentScale
( )
功能描述
:
得到当前比例尺。
void
SetCurrentScale
(
float
scale
)
功能描述
:
设置海图绘制器当前比例尺。
void
SetMapOffset
(
int
scrnOffsetX
,
int
scrnOffsetY
)
功能描述
:
设置海图绘制器的屏幕偏移量。
void
SetMapMoreOffset
(
int
scrnMoreOffsetX
,
int
scrnMoreOffsetY
)
功能描述
:
设置海图绘制器更多的屏幕偏移量。
void
CenterMap
(
M_POINT
centerPoGeoCoor
)
功能描述
:
使海图的某一点移到屏幕中心,或称将屏幕中心对准某一经纬度坐标。
void
RotateMapByScrnCenter
(
float
fRotateAngleByDegree
)
功能描述
:
旋转海图屏幕,注意是以屏幕中心点为中心点进行旋转。该函数一般用于船首向
上的显
示模式中,注意应结合
CenterMap
使用,先使用
CenterMap
将本船位置居中,然
后再调用本函数将屏幕旋转。
注意
!!
两个函数调用的顺序不可颠倒!
float
GetMapRoatedAngle
( )
功能描述
:
得到当前海图屏幕旋转角度。
bool
OverViewLibMap
(
int
libMapPos
)
功能描述
:
准备概览海图库中某副海图,
如果该海图不在内存海图序列中,
则会被自动加载。
bool
HighLightSelectedObject
(
MEM_GEO_OBJ_POS
objPos
,
M_COLOR
pointHighlightColor
,
M_COLOR
lineHighlightColor
,
int
lineHighlightWidth
,
M_COLOR
areaHighlightColor
,
bool
ifCenterTheObject
)
功能描述
:
高亮显示某个选中的物标。
上海意玛软件
5.
坐标转换与地理计算
(Coordinate
Conversion)
int
GetGeoCoorMultiFactor
( )
功能描述
:
得到经纬度坐标乘积因子。
float
GetGeoLenFromScrnLen
(
int
scrnLen
,
bool
bScrCorrByPixelUnits
)
功能描述
:
得到屏幕长度对应的实际地理长度。
float
GetScrnLenFromGeoLen
(
float
geoLenByMm
,
bool
bScrCorrByPixelUnits
)
功能描述
:
得到某一地理长度对应的屏幕长度。
M_POINT
GetSpherePoFromMyScrnPo
(
M_POINT
scrnPoint
)
功能描述
:
得到屏幕坐标对应的地理坐标值。
M_POINT
GetMyScrnPoFromSpherePo
(
M_POINT
geoPoint
)
功能描述
:
得到某一地理坐标位置对应的屏幕坐标。
double
GetDistBetwTwoPoint
(
M_POINT
geoStartPo
,
M_POINT
geoEndPo
)
功能描述
:
得到两个地理坐标点之间的距离。
double
GetBearingBetwTwoPoint
(
M_POINT
geoStartPo
,
M_POINT
geoEndPo
)
功能描述
:
得到两个地理坐标点连线的角度方位。
M_POINT
GetDesPointOfCrsAndDist
(
M_POINT
startGeoPo
,
double
distance
,
double
course
)
功能描述
:
得到以起始点为中心相距某一距离值和某一方位的目标点。
6.
S52
显示全局参数控制
(Global S52 options
control)
ENC_COLOR_GROUP
GetColorModel
( )
功能描述
:
得到当前海图颜色模式。
void
SetColorModel
(
ENC_COLOR_GROUP
colorGroupNum
)
功能描述
:
设置海图颜色模式。
DISPLAY_CATEGORY_NUM
GetDisplayCategory
( )
功能描述
:
得到当前显示类别。
void
SetDisplayCategory
(
DISPLAY_CATEGORY_NUM
dspCtgry
)
功能描述
:
设置海图显示类别,包括底层显示,标准显示和全部显示三种。
typedef enum
DISPLAY_CA
TEGORY_NUM
{
上海意玛软件
DISPLAYBASE = 0,
STANDARD = 1,
OTHER = 2,
}DISPLAY_CA
TEGORY_NUM;
bool
GetLanguage
( )
功能描述
:
得到当前显示语言是否英语。
void
SetLanguage
(
bool
bEnglishOrNational
)
功能描述
:
设置海图显示语言。
float
GetSafetyDepth
( )
功能描述
:
得到当前安全深度。
void
SetSafetyDepth
(
float
depth
)
功能描述
:
设置安全深度。
bool
GetUsingTraditionOrSimpleSymbol
( )
功能描述
:
得到当前使用简单海图符号模式还是传统符号模式。
void
SetUsingTraditionOrSimpleSymbol
(
bool
bUseTradSymbol
)
功能描述
:
设置使用传统海图符号还是简单海图符号。
bool
GetUsingPlainOrSymbolBndry
(
)
功能描述
:
得到当前使用平滑边界模式还是符号边界模式。
void
SetUsingPlainOrSymbolBndry
(
bool
bUsePlainOrNot
)
功能描述
:
设置使用平滑边界还是符号边界。
7.
海图物标查询功能
(Query operations)
?
物标地理类型及坐标查询
int
GetObjectGeoType
(
MEM_GEO_OBJ_POS
objectPos
)
功能描述
:
得到某一物标的几何类型。
typedef enum M_GEO_TYPE
{
TYPE_NULL = -1,
TYPE_POINT = 0,
TYPE_LINE = 2,
TYPE_FACE = 3,
TYPE_COMBINED_OBJECT = 10
}M_GEO_TYPE;
上海意玛软件
bool
GetPointObjectCoor
(
MEM_GEO_OBJ_POS
objectPos
,
int
pPointCoorX
,
int
pPointCoorY
)
功能描述
:
得到点
(POINT)
对象的点坐标
,
注意是地理坐标而非屏幕坐标。
int
GetLineObjectCoorCount
(
MEM_GEO_OBJ_POS
objectPos
)
功能描述
:
得到线
(LINE)
对象的外边的所有点坐标个数。
int
GetLineObjectCoors
(
MEM_GEO_OBJ_POS
objectPos
,
M_POINT*
retGeoPoints
)
功能描述
:
得到线
(LINE)
对象的外边的所有点坐标
,
注意是地理坐标而非屏幕坐标。
int
GetFaceInnerBndryCoorCount
(
MEM_GEO_OBJ_POS
objectPos
,
int
innerBoundryPos
)
功能描述
:
得到含有内边的面
(FACE)
对象的某条内边
(Inner
Boundary)
的所有点坐标个数。
int
GetFaceInnerBndryCoors
(
MEM_GEO_OBJ_POS
objectPos
,
int
innerBndryPos
,
M_POINT*
retGeoPoints
)
功能描述
:
得到含有内边的面
(FACE)
对象的某条内边的所有点坐标
,
注意是地理坐标而非屏
幕坐标。
int
GetFaceInnerBndryCount
(
MEM_GEO_OBJ_POS
objectPos
)
功能描述
:
得到面
(FACE)
对象的所含内边
(Inner Boundary)
个数。
int
GetFaceOutBndryCoorCount
(
MEM_GEO_OBJ_POS
objectPos
)
功能描述
:
得到面
(FACE)
对象的外边的所有点坐标个数。
int
GetFaceOutBndryCoors
(
MEM_GEO_OBJ_POS
objectPos
,
M_POINT*
retGeoPoints
)
功能描述
:
得到面
(FACE)
对象的外边的所有点坐标,注意是地理坐
标而非屏幕坐标。
?
统一图层查询与管理
int
GetLayerCount
( )
功能描述
:
得到图层
(
或称物标类别
(Obje
ct Class))
总数。
void
SetLayerDrawOrNot
(
int
layerPos
,
bool
bDrawOrNot
)
功能描述
:
设置某一图层显示与否。
bool
GetLayerDrawOrNot
(
int
layerPos
)
功能描述
:
得到某一图层当前是否显示。
void
SetAllLayerDrawOrNot
(
bool
bDrawOrNot
)
功能描述
:
将所有图层都设为显示或隐藏。
bool
GetLayerInfo
(
int
layerPos
,
char*
retLayerName
,
char *
retLayerNameToken
,
int
retAttrCount
)
上海意玛软件
功能描述
:
得到某一图层的信息
,
包括图层名称
,
缩略名
,
属性总数。
bool
GetLayerObjectAttrInfo
(
int
layerPos
,
int
attrPos
,
int
retDataTypeID
,
char *
retAttrName
,
char *
retAttrToken
)
功能描述
:
得到图层某一物标特征属性的信息。
int
GetLayerObjectCountOfMap
(
int
memMapPos
,
int
layerPos
)
功能描述
:
得到内存中某幅海图的某一图层中所有地理物标总数。
int
GetLayerPosByToken
(
char *
strLayerToken
)
功能描述
:
得到某缩略名标识的图层的位置。
?
物标特征属性查询
bool
GetObjectAttrValue
(
MEM_GEO_OBJ_POS
objectPos
,
int
attrPos
,
char
*
pDesVal
,
bool
*
pFieldValFilled
)
功能描述
:
得到某一物标的属性值,
属性值返回
pDesVal
指针指向的变量中,
注意如果是非
字符串型的属性,传入
pDesVal
参数前要强制转化下指针。代码范例如下:
MEM_GEO_OBJ_POS objPos(0, 1, 1);
int
attrPos = 0; //
该属性为一个
4
字节整形数
int attrVal = 0;
bool bThisFldFilled = true;
GetObjectAttrValue(objPos, attrPos,
(char*)&attrVal, &bThisFldFilled);
?
点击查询
int
SelectObjects
ByScrnPo
(
MEM_GEO_OBJ_POS
*
retSelectedObjectPositions
,
int
scrnPoX
,
int
scrnPoY
)
功能描述
:
得到屏幕中某一点点击选中的所有地理物标。注:对于面物标,如果该点在其内
部,则
该物标即被选中。
8.
航行管理
(Marine operations)
?
目标船
(
OtherVessel)
及本船
(Ownship)
管理
int
AddOtherVessel
(
bool
bArpaOrAisTarget
,
M_POINT
currentGeoPo
,
float
heading
,
float
courseOverGround
,
float
courseThrghWater
,
float
speedOverGround
,
float
speedThrghWater
)
功能描述
:
添加一个目标船。
上海意玛软件
bool
RemoveOtherVessel
(
int
vesselPos
)
功能描述
:
移除某一个目标船。
void
ClearOtherVessels
( )
功能描述
:
清除当前记录的所有其它目标船对象。
int
GetOtherVesselCount
( )
功能描述
:
得到当前目标船个数。
bool
GetOtherVesselCurrentInfo
(
int
otherVesselPos
,
bool*
bArpaOrAisTargetL,
M_POINT*
pCurrentGeoPo
,
float*
pHeading
,
float*
pCourseOverGround
,
float*
pCourseThrghWater
,
float*
pSpeedOverGround
,
float*
pSpeedThrghWater
)
功能描述
:
得到目标船当前信息。
bool
SetOtherVesselCurrentInfo
(
int
otherVesselPos
,
M_POINT
currentGeoPo
,
float
heading
,
float
courseOverGround
,
float
courseThrghWater
,
float
speedOverGround
,
float
speedThrghWater
,
bool
bUseDefaultColor,
M_COLOR
vslColor
)
功能描述
:
设置目标船当前信息。
bool
SetOtherVesselDrawOrNot
(
int
otherVesselPos
,
bool
bDrawOrNot
)
功能描述
:
设置某一目标船是否显示。
bool
HighlightOtherVessel
(
int
otherVesselPos
)
功能描述
:
高亮显示某个目标船。
SHIP_ID
SelectOtherVesselByScrnPoint
(
M_POINT
scrnPoint
)
功能描述
:
得到屏幕中某一点点击选中的目标船。
int
GetOtherVesselID
(
int
vesselPos
)
功能描述
:
得到目标船的
ID
。
int
GetOtherVesselPosOfID
(
int
vesselID
)
功能描述
:
得到具有某一
ID
的目标船的索引值。
void
SetOwnShipBasicInfo
(
const char *
pStrShipName
,
const char *
pStrMmsi
,
float
shipLength
,
float
shipBreath
)
功能描述
:
设置本船基本信息。
bool
GetOwnShipBasicInfo
(
float*
pS
hipLength
,
float*
pShipBreath
,
const char *
pStrShipName
,
const char *
pStrMmsi
)
功能描述
:
得到本船基本信息。
void
SetOtherVesselBasicInfo
(
int
vesslePos
,
float
shipLength
,
float
shipBreath
,
const char *
pStrShipName
,
const char *
pStrMmsi
)
上海意玛软件
功能描述
:
设置目标船当前信息。
bool
GetOtherVesselBasicInfo
(
int
vesslePos
,
float*
pS
hipLength
,
float*
pShipBreath
,
const
char
*
pStrShipName
,
const char *
pStrMmsi
)
功能描述
:
得到目标船基本信息。
void
GetOwnShipCurrentInfo
p>
(
M_POINT*
pCurrentGeoPo
,
float*
pHeading
,
float*
pCourseOverGround
,
float*
pCourseThrghWater
,
float*
pSpeedOverGround
,
float*
pSpeedThrghWater
)
功能描述
:
得到本船当前信息。
void
SetOwnShipCurrentInfo
(
M_POINT
currentGeoPo
,
float
heading
,
float
courseOverGround
,
float
courseThrghWater
,
float
speedOverGround
,
float
speedThrghWater
)
功能描述
:
设置本船当前信息。
void
SetDrawShipOptions
(
bool
bSetOwnshipOrOtherVessel
,
bool
bShowCourseAndSpeedVector
,
bool
bShowVectorStablization
,
bool
bShowTimeMarksOnVector
,
bool
bShowHeadingLine
,
int
vectorLenTimePeriod
,
bool
bVectorStableToGroundOrWater
,
int
vectorTimeMarkIntvl
,
int
memStoreTrackPointsLength
,
int
showTrackPointsLength
)
功能描述
:
设置船对象绘制选项。
void
SetDrawOwnShipOptions
(
bool
bDrawOwnShipSymbolOrOutline
,
bool
bShowBeamBearingLine
)
功能描述
:
设置本船对象特有绘制选项。
?
航线管理
WAY_POINT_ID
AddWayPoint
(
M_POINT
geoPo
,
const
char*
strUsage
)
功能描述
:
添加一个航路点。
int
GetWayPointsCount
()
功能描述
:
得到当前的航路点的数目。
bool
SetWayPointCoor
(
WAY_POINT_ID
wpID
,
M_POINT
geoPoint
)
功能描述
:
设置航路点的坐标。
bool
GetWayPointCoor
(
WAY_POINT_ID
wpID
,
M_POINT*
pPoint
)
功能描述
:
得到航路点的坐标值。
bool
GetWayPointUsageString
(
WAY_POINT_ID
wpID
,
char*
retStrUsage
)
功能描述
:
得到航路点的用途。
bool
DeleteWayPoint
(
WAY_POINT_ID
wpID
)
功能描述
:
删除航路点。
上海意玛软件
bool
DeleteRoute
(
ROUTE_ID
delRouteID)
功能描述
:
删除航线。
int
GetRoutesCount
()
功能描述
:
得到当前航线的数目。
int
GetRouteWayPointsCount
(
ROUTE_ID
routeID
)
功能描述
:
得到航线的航路点的数目。
bool
AddRouteWayPoint
(
ROUTE_ID
routeID
,
long
addWpPos
,
const
WAY_POINT_ID*
addWpIDs
,
long
addWpCount
)
功能描述
:
在一条航线中添加新的航路点,以形成一条新的航线。
bool
DeleteRouteWayPoint
(
ROUTE_ID
routeID
,
long
delWpPos
,
long
delWpCount
)
功能描述
:
删除航线中的航路点。
long
GetRouteWayPoints
(
ROUTE_ID
routeID
,
WAY_POINT_ID*
retWayPointIDs
)
功能描述
:
得到航线的所有航路点的
ID
。
bool
SetRouteBeP
lannedOrAlternated
(
ROUTE_ID<
/p>
routeID
,
bool
bPlanedRouteOrAlterated
)
功能描述
:
设置航线是计划航线还是备选航线。
bool
GetRouteBeP
lannedOrAlternated
(
ROUTE_ID<
/p>
routeID
,
bool*
retBePlanedRouteOrAlterated
)
功能描述
:
得到航线的是计划航线还是备选航线。
bool
SetRouteShowOrNot
(
ROUTE_ID
routeID
,
bool
bShowOrNot
)
功能描述
:
设置航线是否显示。
bool
SetWayPointShowOrNot
(
WAY_POINT_ID
wayPointID
,
bool
bShowOrNot
)
功能描述
:
设置航路点是否显示。
?
航行监控
bool
IsShipApproachingIsolatedDanger
(
M_POINT
ownShipPoint
,
float
distLimitToPointByMeter
)
功能描述
:
判断本船在航行中是否进入了以孤立点为圆心以设定长度为半径的危险区园面。
bool
IsShipCross
ingSafetyContour
(
M_POINT
ownShipPoint
,
float
shipVectorCourse
,
float
vectorDistLimitByMeter
)
功能描述
:
判断本船在航行中是否进入了海图中的危险水域,如下图所示:
?
当本船沿其航行方向到安全等深线
的距离小于设定的
verctorDistLimitByMeter
< br>值时
发生报警;
上海意玛软件
安全水域
本船沿其航
行方向到安
全等深线的
< br>距离
本船的所
在位置,
箭头方向
表示其航
行的方向
< br>安全等深线
vectorDistLimitByMeter
危险水域
?
< br>当本船沿其航行方向到安全等深线的距离大于设定的
verctorDistLi
mitByMeter
值时
则不发生报警。
本船的所
在位置,
箭头方向
p>
表示其航
行的方向
安全水域
本船沿其航
行方向到安
全等深线的
距离
vectorDistLimitByMeter<
/p>
安全等深线
危险水域
bool
IsOwnShipOffRoute
(
M_POINT
ownShipPoint
,
ROUTE_ID
routeID
,
float
offRouteDistLimitByMeter )
功能描述
:
判断本船在航行中是否偏离了预定的航线,当本船的位置距离预定航线的最近的
一点的
距离大于设定值时就报警,反之则不会报警。
?
航迹管理
相关概念:
1.
历史航迹库
:
1.1
文件存储:系统所有的历史
航迹存储在航迹库目录
下面
,
每个航
迹
(CEncTrack
对
象
)
存储
为
一
个
文
< br>件
,
存
储
完整
的
航
迹
信
息
,
存
储
文件
名
为
<
/p>
上海意玛软件
1.2
内存加载信息:
*
由于程序内存有限
,
程序启动后默认只从
加载所
有历史航迹的基本信息
,
而不加载
'
点信息
',
如果某个航线需要航点信
息则需
要从
中相应的航迹文件中加载航
点信息
;
*
航迹点信息加载与卸载函数
:
bool
CENCMarineMap::LoadTrackPoints(int libTrackPos);
bool
CENCMarineMap::UnloadTrackPoints(int libTrackPos);
2.
当前航迹
:
存
储
当
前
所
有
船
舶
的
当
p>
前
航
迹
,
在
每
次
调
用
SetOwnShipCurrentInfo()
和
SetOtherV
esselCurrentInfo()
来刷新当前船舶的位置时要将当前航点信息存入到内存
航迹库中
去
;
3.
当前航迹的保存与历史航迹的自动添加
:
1).
在
程
序
退
出
时
都
必
须
保
存
到<
/p>
文
件
,
本
p>
船
的
航
迹
单
独
临
时
保
存
到
2).
在系统每一次启动时,
临时航迹文件
要被读入到内存,继
续记录该段航迹
;
3).
当前航迹不断保存到内存中去
,
直到
新航迹点达到超出时间间隔长度或距离间
隔长度时
,
当前航迹会自动作为一条新历史航迹保存下来
,
这时航迹库添加
1
条历史
航迹
,
当前航迹的点全部清空
,
等待新的航迹点记录
;
bool
SetShipTrack
ShowOrNot(
bool
bSetOwnshipOrOtherVessel
,
bool
bSetAllOtherVessel
,
UINT
vesselPos
,
bool
bShowOrNot
,
M_COLOR
showTrackColor
)
功
能描述:
设置目标船的当前航迹是否显示及显示颜色
,
可以对所有目标船整体控制
,
也可以
单个控制。
void
SetShipTrackStorePointInterval
(
< br>bool
bByTimeOrDistance
,
UINT
timeIntervalBySecond
,
float
distIntervalByMeter
)
功能描述:设置航迹逐个点存储间隔方式
,
包括时间间隔或距离间隔两种。
TRACK_ID
GetHisto
ryTrackIDFromPos(
UINT
pos
)
功能描述
:
通过位置获取航迹
ID
。
UINT
GetHistoryTrackPosFromID(
TRACK_ID
trackID
)
功能描述
:
通过航迹
ID
获得位置,如没有该
I
D
,则返回
-1
。
int
GetHistoryTrackCount ()
功能描述
:
获取航迹个数。
bool
DeleteHistoryTrack(
UINT
pos
)
功能描述
:
删除
pos
位的航迹。
上海意玛软件
bool
ClearHistoryTracks ()
功能描述
:
(
清除
)
删
除所有航迹。
int
G
etHistoryTrackPointCount(
UINT
trackPos
)
功能描述
:
得到历史航迹点的数量。
int
GetHistoryTrackPoints(
UINT
trackPos
,
M_POINT*
pRetPoints
)
功能描述
:
得到历史航迹的个数。
bool
GetHistoryTrackPoint(
UINT
trackPos
,
UINT
poPos
,
M_POINT*
pRetPoint
)
功能描述
:
获取历史航迹。
bool
SetHistoryTrackInfo(
UINT
trackPos
,
const
char
*
name
= NULL,
const
char*
comment
= NULL,
float
totalDist =
0
)
功能描述
:
设置历史航迹的信息。
bool
GetHistoryTrackInfo(
UINT
trackPos
,
char*
pStrRetName
= NULL,
char*
pStrRetComment
=
NULL,
float*
pTotalDist
= NULL,
M_POINT*
pRetFrstPoint
= NULL,
M_POINT*
pRetLastPoint
= NULL
)
功能描述
:
获取历史航迹的信息。
void
SetNewTrackJ
udgeTimeInterval(
int
timeIntervalByMin
)
功能描述
:
对应
AddNewPostionT
oTrack()
函数
,
设置新航迹开始的时间间隔判据
,
以分钟为
单位。
void
SetNewTrackJudgeDist(
int
distByMeter
)
功能描述
:
对应
AddNewPostionT
oTrack()
函数
,
设置新航迹开始的距离间隔判据
,
以米为单
位。
bool
SaveHistoryTrackPoints(
int
libTrackPos
)
功能描述
:
保存某条历史航迹的信息到航迹库里的航迹文件。
bool
LoadHistoryTrackPoints(
int
libTrackPos
)
功能描述
:
加载某条航迹的所有点信息。
bool
UnloadHistoryTrackPoints(
int
libTrackPos
)
功能描述
:
卸载某条航迹的所有点信息
,
并将其保存到航迹文件中。
bool
ReadOwnShipTrackFromFile( )
功能描述
:
读取本船上次保存的航迹。
bool
SaveOwnShipTrackToFile( )
功能描述
:
保存本船当前航迹。
上海意玛软件
bool
SaveHistoryTracksToFile( )
功能描述
:
将当前所有航迹保存到航迹库:
(1)
所有航迹基本信息保存到
文件中
;
(2)
如果有某条的航迹的点信息已载入
,
则将其保存到对应的航迹文件中去。
bool
ReadHistoryTracksFromFile( )
功能描述
:
从航迹库读入航迹到
m_historyTracks
目录<
/p>
,
航迹的点信息不读入。
bool
IsHistoryTrackPointsLoaded(
int
libTrackPos
,
bool&
bLoaded
)
功能描述
:
判断航迹的点信息是否已经加载
,
如果没有则需要调用
LoadTrackPoints
将其加载
进
来。
9.
自定义海图管理功能
(Self-Define map
operations)
(注意所有自定义海图管理的接口函数均以
“
TM_
”
开头)
?
统一图层查询与管理
int
TM_GetLayerCount
( )
功能描述
:
顶层海图操作:得到图层个数。
bool
TM_GetLayerName
(
int
layerPos
,
char
*
retLayerName
)
功能描述
:
顶层海图操作:得到图层名。
int
TM_GetLayerObjectCount
(
int
layerPos
)
功能描述
:
顶层海图操作:得到某一图层所含物标个数。
int
TM_GetLayerObjectAttrCount
(
int
layerPos
)
功能描述
:
顶层海图操作:得到图层物标属性个数。
bool
TM_GetLayerObjectAttrName
(
int
layerPos
,
int
attrPos
,
char
*
retAttrName
)
功能描述
:
顶层海图操作:得到图层某个物标属性的名称。
int
TM_GetLayerObjectAttrType
(
int
layerPos
,
int
attrPos
)
功能描述
:
顶层海图操作:得到图层某个物标属性的数据类型。
?
物标地理坐标及属性查询
bool
TM_GetPointObjectCoor
(
int
layerPos
,
int
innerLayerObjPos
,
int
retGeoPointX
,
int
retGeoPointY
)
功能描述
:
顶层海图操作:得到某一点物标的坐标点。
int
TM_GetLineObjectCoorCount
(
int
layerPos
,
int
innerLayerObjPos
)
上海意玛软件
功能描述
:
顶层海图操作:得到某一线物标所行坐标点个数。
int
TM_GetLineObjectCoors
(
int
layerPos
,
int
innerLayerObjPos
,
char *
retGeoPoints
)
功能描述
:
顶层海图操作:得到某一线物标所有坐标点。
int
TM_GetFaceObjectCoorCount
(
int
layerPos
,
int
innerLayerObjPos
)
功能描述
:
顶层海图操作:得到某一面物标所有坐标点个数。
int
TM_GetFaceObjectCoors
(
int
layerPos
,
int
innerLayerObjPos
,
char *
retGeoPoints
)
功能描述
:
顶层海图操作:得到面对象坐标点。
bool
TM_GetObjectAttrValueString
(
int
layerPos
,
int
innerLayerObjPos
,
int
attrPos
,
char
*
retAttrValString
)
功能描述
:
顶层海图操作:得到某一物标的属性值字符串。
?
物标编辑
bool
TM_AppendObjectInLayer
(
int
layerPos
)
功能描述
:
顶层海图操作:在某一图层上添加一个物标。
bool
TM_DeleteGeoObject
(
int
layerPos
,
int
innerLayerObjPos
)
功能描述
:
顶层海图操作:在某一图层上删除一个物标。
bool
TM_SetPointObjectCoor
(
int
layerPos
,
int
innerLayerObjPos
,
int
geoPoX
,
int
geoPoY
)
功能描述
:
顶层海图操作:设置某一点物标的坐标点。
bool
TM_SetLineObjectCoors
(
int
layerPos
,
int
innerLayerObjPos
,
int
geoPoCount
,
char
*
pGeoPoints)
功能描述
:
顶层海图操作:设置某一线物标的所有坐标点。
bool
TM_SetFaceObjectCoors
(
int
layerPos
,
int
innerLayerObjPos
,
int
geoPoCount
,
char
*
pGeoPoints
)
功能描述
:
顶层海图操作:设置某一面物标的所有坐标点。
bool
TM_SetObjectAttrValueString
(
int
layerPos
,
int
innerLayerObjPos
,
int
attrPos
,
char
*
srcAttrValString
)
功能描述
:
顶层海图操作:使用属性值字符串设置某一物标的某一属性值。
?
点击查询
int
TM_SelectObjectsByScrnPo
(
int
scrnPointX
,
int
scrnPointY
,
char
*
retObjPoses
)
功能描述
:
顶层海图操作:得到屏幕中某一点点击选中的所有顶层海图地理物标。
上海意玛软件
?
数据文件操作
bool
TM_OpenMapDataFile
(
char *
strFilePathName
)
功能描述
:
顶层海图操作:读入顶层海图数据文件到顶层海图。
bool
TM_SaveToMapDataFile
(
char *
strFilePathName
)
功能描述
:
顶层海图操作:保存顶层海图数据到顶层海图数据文件。
10.
其它功能
bool
SaveScrnToBmpFile
(
const char *
pStrFileName
)
功能描述
:
保存屏幕海图图像到指定路径的
bmp
图片。
bool
IsGeoPointSelectByScrnPoint
(
M_POINT
scrnPoint
,
M_POINT
geoPoint
)
功能描述
:
判断某一点物标是否被屏幕上的一点所选中
,
一般用于判断鼠标是否选中某一对
象。
bool
IsGeoLineSelectByScrnPoint
(
M_POINT
scrnPoint
,
const
M_POINT*
geoLinePoints
,
int
linePoCount
)
功能描述
:
判断某一线物标是否被屏幕上的一点所选中
,
一般用于判断鼠标是否选中某一对
象。
bool
IsGeoFaceSelectByScrnPoint
(
M_POINT
scrnPoint
,
const
M_POINT*
faceGeoPoints
,
int
facePoCount
)
功能描述
:
判断某一面物标是否被屏幕上的一点所选中
,
一般用于判断鼠标是否选中某一对
象。
bool
AddHighLightPointObject
(
M_POINT
geoPoint
)
功能描述
:
添加高亮的点物标。
bool
AddHighLightLineObject
(
const M_POINT*
linePoints
,
int
linePoCount
)
功能描述
:
添加高亮的线物标。
bool
AddHighLightFaceObject
(
const M_POINT*
pFacePoints
,
int
facePoCount
)
功能描述
:
添加高亮的面物标。
void
ClearHighLightPoint
Object
()
功能描述
:
清除所有使用
AddHighLightPoint
添加的高亮点物标的高亮效果。
void
ClearHighLightLine
Object
()
功能描述
:
清除所有使用
AddHighLightLine
添加的高亮线物标的高亮效果。
上海意玛软件
void
ClearHighLightFace
Object
()
功能描述
:
清除所有使用
AddHighLightFace
添加的高亮面物标的高亮效果。
上海意玛软件
接口函数说明
//////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
////////////////
定义
bool
AddHighLightFaceObject
(
M_POINT*
pFacePoints
,
int
facePoCount
)
功能描述
添加高亮的面物标。
返回值
返回操作是否成功。
参数说明
pFacePoints
: (in)
待高亮的面物标的地理坐标点数组
;
facePoCount
: (in)
添待高亮的面物标的地理坐标点个数
;
///////////////////////////
//////////////////////////////////////////////////
/////////////////////////////////////////////////
定义
bool
AddHighLightLineObject
(
M_POINT*
linePoints
,
int
linePoCount
)
功能描述
添加高亮的线物标。
返回值
返回操作是否成功。
参数说明
linePoints
: (in)
待高亮的线物标的地理坐标点数组
;
linePoCount
: (in)
添待高亮的线物标的地理坐标点个数
;
///////////////////////////
//////////////////////////////////////////////////
/////////////////////////////////////////////////
定义
bool
AddHighLightPointObject
(
M_POINT
geoPoint
)
功能描述
添加高亮的点物标。
返回值
返回操作是否成功。
参数说明
geoPoint
: (in)
待高亮的点物标的地理坐标
;
p>
/////////////////////////////////////////
//////////////////////////////////////////////////
///////////////////////////////////
定义
上海意玛软件
int
AddOtherVessel
(
bool
bArpaOrAisTarget
,
M_POINT
currentGeoPo,
float
heading
,
float
courseOverGround
speedThrghWater )
,
float
courseThrghWater
,
float
speedOverGround
,
float
功能描述
添加一个目标船。
返回值
返回添加的目标船的
ID.
注意该<
/p>
ID
为从
1
开始
编号。
参数说明
bArpaOrAisTarget
: (in)
目标船是
ARPA
对象还是
AIS
对象
;
currentGeoPo
: (in)
目标船位置的地理坐标
;
heading
: (in)
船首向
,以度数
(degree)
为单位
,
由正北
(North Up)
方向顺时
针旋转所得角度
值,其它角度参量如
courseOverGr
ound
也是这样
;
courseOverGround
: (in)
对地航向
;
courseThrghWater
: (in)
对水航向
;
speedOverGround
: (in)
对地航速,以节
(knot)
为单位
;
speedThrghWater
: (in)
对水航速
;
/////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////////////////////
定义
long
AddRoute
(
long*
wpIDs
,
long
wpCount
,
bool
bPlanedRouteOrAlterated
)
功能描述
添加一个航线(按照航路点
ID
数组中航路点的顺序依次连接各个航路点形成航线)
。
返回值
返回添加的航线的
ID.
注意该
ID
为从
1
p>
开始编号。
参数说明
wpIDs
: (in)
包含添加的
航线的所有航路点的
ID
的数组指针
wpCount
: (in)
添加的航线的航路点的数目
bPlanedRouteOrAlterated: (in)
添加的航线的样式
;
///////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////////////
定义
bool
AddRouteWayPoint
(
long
routeID
,
long
addWpPos,
long*
addWpIDs,
long
addWpCount )
功能描述
在一条航线中添加新的航路点,以形成一条新的航线。
返回值
返回操作是否成功。
上海意玛软件
参数说明
routeID
: (in)
添加新的航路点的航线的
ID
addWpPos
: (in)
航路
线原有的某一航路点在航线上的位置,
新的航路点即添加在航线上的
这个航路点和上个航路点中间的位置
addWpIDs
: (in)
包含
添加的航路点的
ID
的数组的指针
;
addWpCount
:
(in)
添加的航路点的数目
///////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////////////
定义
WAY_POINT_ID
AddWayPoint
(
M_POINT
geoPo,
const char*
strUsage )
功能描述
添加一个航路点。
返回值
返回添加的航路点的
ID.
注意该
ID
为从
1<
/p>
开始编号。
参数说明
geoPo: (in)
添加的航路点的地理坐标
;
strUsage: (in)
添加的航路点的用途
;
//////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
////////////////////
定义
void
CenterMap (
M_POINT
centerPoGeoCoor
)
功能描述
使海图的某一点移到屏幕中心,或称将屏幕中心对准某一经纬
度坐标。
返回值
无
参数说明
centerPoGeoCoor : (in)
中心点经纬度坐标
////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
//////////////////
定义
void
ClearHighLightFaceObject ()
功能描述
清除所有使用
AddHighLightFace
添加的高亮面物标的高亮效果。
返回值
无
参数说明
///////////////////////////////////////
//////////////////////////////////////////////////
/////////////////////////////////////
上海意玛软件
定义
void
ClearHighLightLineObject ()
功能描述
清除所有使用
AddHighLightLine
添加的高亮线物标的高亮效果。
返回值
无
参数说明
无
///////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////
定义
void
ClearHighLightPointObject ()
功能描述
清除所有使用
AddHighLightPoint
添加的高亮点物标的高亮效果。
返回值
无
参数说明
无
///
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////////////////
定义
bool
ClearHistoryTracks ()
功能描述
删除所有航迹。
返回值
返回操作是否成功。
参数说明
无
///////////////////////////
//////////////////////////////////////////////////
/////////////////////////////////////////////////
定义
void
ClearOtherVessels ()
功能描述
清除当前记录的所有其它目标船对象。
返回值
上海意玛软件
无
参数说明
无
///////////////////////////////////////
//////////////////////////////////////////////////
/////////////////////////////////////
定义
void CloseMap
(
int
libMapPos
)
功能描述
从海图库中删除某幅海图。
返回值
无
参数说明
libMapPos :
欲删除的海图在图库中的位置
;
<
/p>
////////////////////////////////////////
//////////////////////////////////////////////////
////////////////////////////////////
定义
bool
DeleteHistoryTrack
(
UINT
pos
)
功能描述
删除
pos
位的航迹。
返回值
返回操作是否成功。
参数说明
pos
: ()
欲删除航线的位置;
/////////////////////////////////////////////
//////////////////////////////////////////////////
///////////////////////////////
定义
bool
DeleteRoute (
ROUTE_ID
delRouteID )
功能描述
删除航线。
返回值
返回操作是否成功。
参数说明
delRouteID
: (in)
欲删除航线的
ID
;
//////////////////////////////////////////////
//////////////////////////////////////////////////
//////////////////////////////
上海意玛软件
定义
bool
DeleteRouteWayPoint (
long
routeID,
long
delWpPos,
long
delWpCount )
功能描述
删除航线中的航路点。
返回值
返回操作是否成功。
参数说明
wpID
: (in)
航路点的
p>
ID
;
delWpPos: (in)
指定欲删除的航路点的在航线中的首个航路点的位置;
delWpCount: (in)
删除航路中指定位置以后的多少个航路点;
< br>/////////////////////////////////////////////// ////////////////////////////////////////////////// /////////////////////////////
定义
bool
DeleteWayPoint
(
WAY_POINT_ID
wpID )
功能描述
删除航路点。
返回值
返回操作是否成功。
参数说明
wpID
: (in)
航路点的
p>
ID
;
////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
//////////////////////
定义
void DrawDragingMap (
HDC
destHDc
,
M_POINT
curDragMousePo
,
M_POINT
dragStartPo
)
功能描述
在屏幕中
拖动海图,一般用于使用鼠
标拖动的手动漫游功能。
返回值
无
参数说明
destHDc
: (in) 4
字节
的
目标屏幕窗口环境句柄
;
curDragMousePo
: (in)
鼠标拖动的当前点屏幕坐标
;
dragStartPo
: (in)
鼠标拖动的起始点坐标
;
//////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////
定义
bool
DrawMapsInScreen (
HDC
hdc
)
功能描述
上海意玛软件
在屏幕中绘制海图。
返回值
操作是否成功。
参数说明
hdc : (in)
4
字节的屏幕窗口环境句柄
;
//////////////////////////////////////////
//////////////////////////////////////////////////
//////////////////////////////////
定义
double
GetBearingBetwTwoPoint (
M_POINT
startGeoPo
,
M_POINT
endGeoPo
)
功能描述
得到两个地理坐标点连线的角度方位。
返回值
返回角度值,由正北方向顺时针旋转所得的角度
.
参数说明
startPoGeoX
: (in)
起点地理坐标
;
endPoGeoX
: (in)
终点地理坐标
;
/////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
/////////////////
定义
M_POINT
GetDesPointOfCrsAndDist (
M_POINT
startGeoPo
,
double
distance
,
double
course
)
功能描述
得到以起始点为中心相距某一距离值和某一方位的目标点。
返回值
返回目标点地理坐标
.
参数说明
startPoGeo
: (in)
起点地理坐标
;
distance
: (in)
目标点距离值
;
course
: (in)
目标点距离值方位
;
///////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////////////
定义
double
GetDistBetwTwoPoint (
M_POINT
startGeoPo
,
M_POINT
endGeoPo
)
功能描述
得到两个地理坐标点之间的距离。
返回值
上海意玛软件
返回距离值,单位为海里
(Nautical Mile).
参数说明
startPoGeo
: (in)
起点地理坐标
;
endPoGeo
: (in)
终点地理坐标
;
/////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
/////////////////
定义
ENC_COLOR_GROUP
GetColorModel ( )
功能描述
得到当前海图颜色模式。
返回值
返回颜色模式枚举值
:
typedef enum ENC_COLOR_GROUP
{
DAY_BRIGHT=1,
DAY_WHITEBACK=2,
DAY_BLACKBACK=3,
DUSK=4,
NIGHT=5
}ENC_COLOR_GROUP;
参数说明
无
///////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////
定义
float
GetCurrentScale ()
功能描述
得到当前比例尺。
返回值
返回单精度比例尺数值
,
注意该值是实际地理长度
/
屏幕物理长度
,
而非其倒数
:
参数说明
无
///////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////
定义
DISPLAY_CATEGORY_NUM
GetDisplayCategory ()
功能描述
得到当前显示类别。
上海意玛软件
返回值
返回显示类别枚举值
:
typedef enum
DISPLAY_CA
TEGORY_NUM
{
DISPLAYBASE = 0,
STANDARD = 1,
OTHER = 2,
}DISPLAY_CATEGORY_NUM;
参数说明
无
///////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////
定义
double
GetDistBetwTwoPoint
(
int
startPoGeoX
,
int
startPoGeoY
,
int
endPoGeoX
,
int
endPoGeoY
)
功能描述
得到两个地理坐标点之间的距离。
返回值
返回距离值,单位为海里
(Nautical Mile).
参数说明
startPoGeoX
: (in)
起点地理坐标横坐标
;
startPoGeoY
: (in)
起点地理坐标纵坐标
;
endPoGeoX
: (in)
终点地理坐标横坐标
;
endPoGeoY
: (in)
终点地理坐标纵坐标
;
//////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
////////////////////
定义
HDC
GetDrawerHDC ()
功能描述
得到海图绘画器的窗口环境句柄。
返回值
返回<
/p>
4
字节的窗口环境句柄
参数说明
无
///////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////
定义
HWND
GetDrawerHWnd ()
功能描述
上海意玛软件
得到海图绘画器的窗口句柄。
返回值
返回
4<
/p>
字节的窗口句柄
参数说明
无
///
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////////////////
定义
int
GetDrawerScreenHeight ()
功能描述
得到海图绘画器的窗口高度。
返回值
返回窗口高度,单位像素
;
参数说明
无
///////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////
定义
int
GetDrawerScreenWidth ()
功能描述
得到海图绘画器的窗口宽度。
返回值
返回窗口宽度,单位像素
;
参数说明
无
///////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////
定义
int
GetFaceInnerBndryCoorCount (
M_GEO_OBJ_POS
objectPos
,
int
innerBoundryPos
)
功能描述
得到含有内边的面
(FACE)
对象的某条内边
(Inner
Boundary)
的所有点坐标个数。
返回值
返回点坐标个数,如果面对象索引值非法返回
-1;
参数说明
pObjectPos
:
(in)
面对象的索引;
inn
erBoundryPos
:
(in)
内边的位置,即指面对象的第几条内边
;
上海意玛软件
//////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
////////////////
定义
int
GetFaceInnerBndryCoors
(
M_GEO_OBJ_POS
objectPos
,
int
innerBndryPos
,
M_POINT*
retGeoPoints
)
功能描述
得到含有内边的面
(FACE)
p>
对象的某条内边的所有点坐标
,
注意是地理坐标而非屏幕坐标。
返回值
返回点坐标个数,如果面对象索引值非法返回
-1;
参数说明
objectPos
:
(in)
面对象的索引;
inn
erBoundryPos
:
(in)
内边的位置,即指面对象的第几条内边
;
retGeoPoints
:
(out)
用于返回得到的所有点坐标
;
///
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////////////////
定义
int
GetFaceInnerBndryCount
(
M_GEO_OBJ_POS
objectPos
)
功能描述
得到面
(FACE)
对象的所含内边
(Inner
Boundary)
个数。
返回值
返回内边
(Inner Boundary)
< br>个数,如果面对象索引值非法返回
-1
;
参数说明
objectPos
:
(in)
面对象的索引;
/////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
/////////////////
定义
int
GetFaceOutBndryCoorCount
(
M_GEO_OBJ_POS
objectPos
)
功能描述
得到面
(FACE)
对象的外边的所有点坐标个数。
返回值
返回点坐标个数,如果面对象索引值非法返回
-1;
参数说明
objectPos
:
(in)
面对象的索引;
< br>/////////////////////////////////////////////// ////////////////////////////////////////////////// /////////////////////////////
定义
int
GetFaceOutBndryCoors
(
M_GEO_OBJ_POS
objectPos
,
M_POINT*
retGeoPoints
)
上海意玛软件
功能描述
得到面
(FACE)
对象的外边的所有点坐标,注意是地理坐标而非屏幕坐标。
。
< br>
返回值
返回点坐标个数,如果面对象索引值非法返回
-1;
参数说明
pObjectPos
:
(in)
面对象的索引;
< br>retGeoPoints
:
(out)
用于返回得到的所有点坐标
;
p>
/////////////////////////////////////////
//////////////////////////////////////////////////
///////////////////////////////////
定义
int
GetGeoCoorMultiFactor ( )
功能描述
得到经纬度坐标乘积因子。
返回值
返回经纬度坐标乘积因子
;
参数说明
无
///////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////
定义
float
GetGeoLenFromScrnLen (
int
scrnLen
,
bool
bScrCorrByPixelUnits
)
功能描述
得到屏幕长度对应的实际地理长度。
返回值
返回地理长度值,单位为毫米
(mm)
参数说明
scrnLen
:
(in)
屏幕长度值;
bScrCorrByPixelUnits
:
(in)
该参数为
true
时屏幕长度值是以像素
(pixel)
为单位,为
false
时以
< br>0.01
毫米
(himeter)
为单位
;
//////////////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
////
定义
int
GetHistoryTrackCount
( )
功能描述
获取航迹个数。
返回值
返回航迹个数;
上海意玛软件
参数说明
无;
<
/p>
////////////////////////////////////////
//////////////////////////////////////////////////
////////////////////////////////////
定义
TRACK_ID
GetHistoryTrackIDFromPos
(
UINT
pos
)
功能描述
通过位置获取航迹
ID
。
返回值
返回航迹
ID
;
参数说明
Pos
:航迹的位置;
< br>/////////////////////////////////////////////// ////////////////////////////////////////////////// /////////////////////////////
定义
int
GetHistoryTrackInfo
(
UINT
trackPos
,
char
*
pStrRetName
=
NULL
,
char*
pStrRetComment
=
NULL,
float*
pTotalDist
=
NULL,
M_POINT*
pRetFrstPoint
=
NULL,
M_POINT*
pRetLastPoint
=
NULL
)
功能描述
得到历史航迹的信息。
返回值
返回操作是否成功
;
参数说明
trackPos
:航迹的位置;
pStrRetName
:航迹的名称;
pStrRetComment
:航迹的注释;
pTotalDist
:航迹的距离;
pRetFrstPoint
:起始点坐标;
pRetLastPoint
:终点坐标;
//////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////
定义
int
GetHistoryTrackPointCount
(
UINT
trackP
os
)
功能描述
得到历史航迹点的数量。
返回值
返回历史航迹点的数量;
参数说明
trackPos
:航迹的位置;
上海意玛软件
//////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////
定义
int
GetHistoryTrackPoints (
UINT
pos
,
M_POINT*
pRetPoints
)
功能描述
得到历史航迹的个数。
返回值
返回航迹个数
;
参数说明
trackPos
:航迹的位置;
pRetPoints
:
航迹点的坐标;
///////////////////////////
//////////////////////////////////////////////////
/////////////////////////////////////////////////
定义
bool
GetHistoryTrackPoint (
UINT
trackPos
,
UINT
poPos
,
M_POINT*
pRetPoint
)
功能描述
获取历史航迹。
返回值
返回操作是否成功;
参数说明
trackPos
:航迹的位置;
pRetPoints
:
航迹点的坐标;
///////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////
定义
UINT
GetHistoryTrackPosFromID (
TRACK_ID
trackID
)
功能描述
通过航迹
< br>ID
获得位置,如没有该
ID
,
则返回
-1
返回值
p>
返回航迹
ID
获得的位置,如果没有该
p>
ID
,返回
-1;
参数说明
trackID
:航迹
ID
;
///////////////////////////
//////////////////////////////////////////////////
/////////////////////////////////////////////////
定义
M_POINT
GetSpherePoFromMyScrnPo (
M_POINT
scrnPo
)
功能描述
上海意玛软件
得到屏幕坐标对应的地理坐标值。
返回值
返回对应的经纬度地理坐标
;
参数说明
scrnPo : (in)
输入屏幕坐标坐标
;
///////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////////////
定义
bool
GetLanguage ( )
功能描述
得到当前显示语言是否英语。
返回值
如果是
<
/p>
英语
,返回
tr
ue
如果是
本国语言
,返回
false;
参数说明
无
///////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////
定义
int
GetLayerCount ( )
功能描述
得到图层
(
或称物标类别
(Object
Class))
总数。
返回值
返回图层总数
;
参数说明
无
///////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////
定义
bool
GetLayerDrawOrNot (
int
layerPos
)
功能描述
得到某一图层当前是否显示。
返回值
显示则返回
true
,否则为
false
参数说明
layerPos
: (in)
输入图层索引
;
< br>/////////////////////////////////////////////// ////////////////////////////////////////////////// /////////////////////////////