logo资料库

YimaEncSDK 3.3 开发文档_3.3.1.1_dll_embedded version.doc

第1页 / 共80页
第2页 / 共80页
第3页 / 共80页
第4页 / 共80页
第5页 / 共80页
第6页 / 共80页
第7页 / 共80页
第8页 / 共80页
资料共80页,剩余部分请下载后查看
YimaEnc文件结构
YimaEnc软件内部结构及功能概要
多窗口应用支持
开发要点
方法列表:
1.海图管家基本操作(Basic Operations)
2.海图库管理和内存海图序列的管理功能(ENC maps operations)
图库管理
内存海图序列管理
3.海图绘制器的管理(MapDrawer operations)
4.海图显示操作(Display operations)
5.坐标转换与地理计算(Coordinate Conversion)
6.S52 显示全局参数控制(Global S52 options control)
7. 海图物标查询功能(Query operations)
物标地理类型及坐标查询
统一图层查询与管理
物标特征属性查询
点击查询
8.航行管理(Marine operations)
目标船(OtherVessel)及本船(Ownship)管理
航线管理
航行监控
航迹管理
9.自定义海图管理功能(Self-Define map operations)
统一图层查询与管理
物标地理坐标及属性查询
物标编辑
点击查询
数据文件操作
10.其它功能
接口函数说明
bool AddHighLightFaceObject (M_POINT* pFacePoints
bool AddHighLightLineObject ( M_POINT* linePoints
bool AddHighLightPointObject ( M_POINT geoPoint)
int AddOtherVessel ( bool bArpaOrAisTarget , M_POI
long AddRoute ( long* wpIDs , long wpCount , bool
bool AddRouteWayPoint ( long routeID , long addWpP
WAY_POINT_ID AddWayPoint ( M_POINT geoPo, const ch
void CenterMap ( M_POINT centerPoGeoCoor)
void ClearHighLightFaceObject ()
void ClearHighLightLineObject ()
void ClearHighLightPointObject ()
bool ClearHistoryTracks ()
void ClearOtherVessels ()
void CloseMap ( int libMapPos )
bool DeleteHistoryTrack (UINT pos)
bool DeleteRoute ( ROUTE_ID delRouteID )
bool DeleteRouteWayPoint ( long routeID, long delW
bool DeleteWayPoint (WAY_POINT_ID wpID )
void DrawDragingMap ( HDC destHDc , M_POINT curDra
bool DrawMapsInScreen ( HDC hdc )
double GetBearingBetwTwoPoint ( M_POINT startGeoPo
M_POINT GetDesPointOfCrsAndDist ( M_POINT startGeo
double GetDistBetwTwoPoint ( M_POINT startGeoPo ,
ENC_COLOR_GROUP GetColorModel ( )
float GetCurrentScale ()
DISPLAY_CATEGORY_NUM GetDisplayCategory ()
double GetDistBetwTwoPoint ( int startPoGeoX , int
HDC GetDrawerHDC ()
HWND GetDrawerHWnd ()
int GetDrawerScreenHeight ()
int GetDrawerScreenWidth ()
int GetFaceInnerBndryCoorCount ( M_GEO_OBJ_POS obj
int GetFaceInnerBndryCoors (M_GEO_OBJ_POS objectPo
int GetFaceInnerBndryCount (M_GEO_OBJ_POS objectPo
int GetFaceOutBndryCoorCount (M_GEO_OBJ_POS object
int GetFaceOutBndryCoors (M_GEO_OBJ_POS objectPos
int GetGeoCoorMultiFactor ( )
float GetGeoLenFromScrnLen ( int scrnLen , bool bS
int GetHistoryTrackCount ( )
TRACK_ID GetHistoryTrackIDFromPos (UINT pos )
int GetHistoryTrackInfo (UINT trackPos, char* pStr
int GetHistoryTrackPointCount (UINT trackPos )
int GetHistoryTrackPoints (UINT pos, M_POINT* pRet
bool GetHistoryTrackPoint ( UINT trackPos, UINT po
UINT GetHistoryTrackPosFromID ( TRACK_ID trackID )
M_POINT GetSpherePoFromMyScrnPo ( M_POINT scrnPo)
bool GetLanguage ( )
int GetLayerCount ( )
bool GetLayerDrawOrNot ( int layerPos )
bool GetLayerInfo (int layerPos, char * retLayerNa
bool GetLayerObjectAttrInfo ( int layerPos , int a
int GetLayerObjectCountOfMap ( int memMapPos , int
int GetLayerPosByToken ( char * strLayerToken )
int GetLibMapCount ( )
void GetLibMapInfo ( int iMapPos , char * pStrMapN
int GetLineObjectCoorCount ( M_GEO_OBJ_POS objectP
int GetLineObjectCoors (M_GEO_OBJ_POS objectPos ,
float GetMapRoatedAngle ( )
int GetMemMapCount ( )
int GetMemMapPosInLib ( int memMapPos )
bool GetObjectAttrValue ( MEM_GEO_OBJ_POS objectPo
int GetObjectGeoType ( MEM_GEO_OBJ_POS objectPos )
int GetOtherVesselCount ( )
bool GetOtherVesselBasicInfo ( int otherVesselPos
bool GetOtherVesselCurrentInfo ( int otherVesselPo
int GetOtherVesselID ( int vesselPos )
int GetOtherVesselPosOfID ( int vesselID )
void GetOwnShipBasicInfo ( float pShipLength , flo
void GetOwnShipCurrentInfo ( M_POINT* pCurrentGeoP
bool GetPointObjectCoor (MEM_GEO_OBJ_POS objectPos
bool GetRouteBePlannedOrAlternated ( ROUTE_ID rout
long GetRouteWayPoints ( ROUTE_ID routeID, WAY_POI
long GetRouteWayPointsCount ( ROUTE_ID routeID )
long GetRoutesCount ()
float GetSafetyDepth ()
float GetScrnLenFromGeoLen ( float geoLenByMm , bo
M_POINT GetMyScrnPoFromSpherePo ( M_POINT geoPo)
bool GetUsingPlainOrSymbolBndry ( )
bool GetUsingTraditionOrSimpleSymbol( )
bool GetWayPointCoor(WAY_POINT_ID wpID, M_POINT* p
long GetWayPointsCount ()
bool GetWayPointUsageString (WAY_POINT_ID wpID, ch
bool HighlightOtherVessel ( int otherVesselPos )
bool HighLightSelectedObject ( MEM_GEO_OBJ_POS obj
bool Init ()
bool InterChangeTwoMapPos ( int firstMemMapPos , i
bool IsGeoFaceSelectByScrnPoint (M_POINT scrnPo, M
bool IsGeoLineSelectByScrnPoint ( M_POINT scrnPoin
bool IsGeoPointSelectByScrnPoint ( M_POINT scrnPoi
bool IsHistoryTrackPointsLoaded (int libTrackPos,
bool IsMapInCurrentScrn ( int libMapPos )
bool IsShipApproachingIsolatedDanger ( M_POINT own
bool IsShipCrossingSafetyContour ( M_POINT ownShip
bool IsOwnShipOffRoute ( M_POINT ownShipPoint, ROU
bool LoadMapToMemory ( int libMapPos )
bool MoveMapPos ( int oldMemMapPos , int newMemMap
bool OpenMap ( const char * pStrMapPath )
bool OverViewLibMap ( int libMapPos )
bool ReadHistoryTracksFromFile ( )
bool ReadOwnShipTrackFromFile ( )
bool RefreshDrawer (HWND hwnd , int scrnWidth , in
bool RemoveOtherVessel ( int vesselPos )
void RotateMapByScrnCenter ( float fRotateAngleByD
bool SaveScrnToBmpFile ( const char * pStrFileName
int SelectObjectsByScrnPo ( M_GEO_OBJ_POS* retSele
SHIP_ID SelectOtherVesselByScrnPoint ( M_POINT scr
bool SaveHistoryTrackPoints (int libTrackPos )
bool SaveHistoryTracksToFile ( )
bool SaveOwnShipTrackToFile ( )
void SetAllLayerDrawOrNot ( bool bDrawOrNot )
void SetColorModel ( ENC_COLOR_GROUP colorGroupNum
void SetCurrentScale ( float scale )
void SetDisplayCategory ( DISPLAY_CATEGORY_NUM dsp
void SetDrawOwnShipOptions ( bool bDrawOwnShipSymb
void SetDrawShipOptions (bool bSetOwnshipOrOtherVe
bool SetHistoryTrackInfo (UINT trackPos, const cha
void SetLanguage ( bool bEnglishOrNational )
void SetLayerDrawOrNot ( int layerPos , bool bDraw
void SetMapMoreOffset ( int scrnMoreOffsetX , int
void SetMapOffset ( int scrnOffsetX , int scrnOffs
void SetNewTrackJudgeDist (int distByMeter )
void SetNewTrackJudgeTimeInterval (int timeInterva
bool SetOtherVesseBasicInfo ( int otherVesselPos ,
bool SetOtherVesselCurrentInfo ( int otherVesselPo
bool SetOtherVesselDrawOrNot ( int otherVesselPos
void SetOwnShipBasicInfo (const char* pStrShipName
void SetOwnShipCurrentInfo (M_POINT currentGeoPo,
bool SetRouteBePlannedOrAlternated ( ROUTE_ID rout
bool SetRouteShowOrNot (ROUTE_ID routeID , bool bS
void SetSafetyDepth ( float depth )
bool SetShipTrackShowOrNot (bool bSetOwnshipOrOthe
void SetShipTrackStorePointInterval (bool bByTimeO
void SetUsingPlainOrSymbolBndry ( bool bUsePlaneOr
void SetUsingTraditionOrSimpleSymbol ( bool bUsing
bool SetWayPointCoor (WAY_POINT_ID wpID, M_POINT g
bool SetWayPointShowOrNot (WAY_POINT_ID wayPointID
bool TM_AppendObjectInLayer ( int layerPos )
bool TM_DeleteGeoObject ( int layerPos , int inner
int TM_GetFaceObjectCoorCount ( int layerPos , int
int TM_GetFaceObjectCoors ( int layerPos , int inn
Int16 TM_GetLayerGeoType ( int layerPos )
bool TM_GetLayerName ( int layerPos , char * retLa
int TM_GetLayerObjectAttrCount ( int layerPos )
bool TM_GetLayerObjectAttrName ( int layerPos , in
int TM_GetLayerObjectAttrType ( int layerPos , int
int TM_GetLayerObjectCount ( int layerPos )
int TM_GetLineObjectCoorCount ( int layerPos , int
int TM_GetLineObjectCoors ( int layerPos , int inn
bool TM_GetObjectAttrValueString ( int layerPos ,
bool TM_GetPointObjectCoor ( int layerPos , int in
bool TM_OpenMapDataFile ( char * strFilePathName )
bool TM_SaveToMapDataFile ( char * strFilePathName
int TM_SelectObjectsByScrnPo ( int scrnPointX , in
bool TM_SetFaceObjectCoors ( int layerPos , int in
bool TM_SetLineObjectCoors ( int layerPos , int in
bool TM_SetObjectAttrValueString ( int layerPos ,
bool TM_SetPointObjectCoor ( int layerPos , int in
bool UnloadMapFromMemory ( Int16 memMapPos )
事件接口说明
AfterDrawMap
DrawRadar
www.yimasoft.net 上海意玛软件 YIMAENC SDK 开发文档 产品版本:3.3 文档版本:3.3.1.0 更新日期:2008-09-10 版权所有 YIMASOFT
www.yimasoft.net 上海意玛软件 YimaEnc 文件结构 YimaEnc 组件包括 YimaEnc 核心控件 YimaEnc.ocx 及 “\S57Lib” 目录下的 7 个库文件 S57ObjectClasses,S57Attributes,S57Colours,S57Symbols,S57ComplexLineStyles,S57Patterns, S57LookupTable 组成。这些库文件一般情况下您不需要也不建议改动,但如果有特别的需求, 在熟悉库文件的定义规则和结构的情况下,可以做一些扩展或改动。  S57ObjectClasses 中是所有 S57 所有的物标类(Object Class, 在 YimaEnc 中也称为图层 --Layer) 的定义,包括每个类别的名称,缩略语,和所包含的特征属性列表。您可以自 行更改名称项,如在开发中文系统时将每项名称翻译成中文。您也可增加自己的物标类 定义。  S57Attributes 中是所有 S57 的物标特征属性(feature attribute)的定义,包括每个属性的名 称,缩略语,数据类型和枚举(enmu)或列表(list)类型的各项枚举值。您可以自行更改名称 项,如在开发中文系统时将每项名称翻译成中文。您也可增加自己的物标特征属性定义。  S57Colours 中 是 所 有 S52 定 义 的 5 种 颜 色 模 式(Color Model) 下 的 颜 色 列 表 。 包 括 DAY_BRIGHT,DAY_WHITEBACK,DAY_BLACKBACK,DUSK,NIGHT 五种模式 下的所有颜色的缩略语,视觉颜色,CIE 3 分量,RGB 3 分量值。  S57Symbols 中是所有 S52 的点物标符号定义。您可以在熟悉 S52 符号定义规则的前提下, 增加定义自己的点物标符号。  S57ComplexLineStyles 中是所有 S52 的线物标循环符号定义。您可以在熟悉 S52 符号定 义规则的前提下,增加定义自己的线物标符号。  S57Patterns 中是所有 S52 的面物标填充符号定义。您可以在熟悉 S52 符号定义规则的前 提下,增加定义自己的面物标符号。
www.yimasoft.net 上海意玛软件  S57LookupTable 中是所有 S52 的物标对象显示风格规则定义。 说明,在 YimaEnc 中,您对 S57 定义的物标类及其显示规则的扩展可以通过两种方式实现: 1) 按照 S57 每个库文件的规则扩展 S57 库文件本身,这样每一个 YimaEnc 的海图(cell) 本身的结构都会相应扩展。如增加了一个物标类即图层, 并定义了其显示风格,则所 有 YimaEnc 打开的海图结构中都多了该图层,您可以向在图层中添加和编辑物标对 象。 但这种方式要求您对 S57 和 S52 标准有较深的理解并且严谨遵守 S57 库文件的定义 规则,由于 S57 和 S52 标准的定义规则较复杂,如果更改不当,很容易破坏 S57 的文件结 构。所以该方式的实行一般是客户提出扩展需求,由 Yimasoft 来帮助客户实现库文件扩展 定义,然后客户再利用 YimaEnc SDK 提供的编辑接口进行数据编辑。 2) 使用 YimaEnc 提供的航行图 MarineMap 接口来自定义图层和图符进行用户海图扩 展,如自定义航线层,停泊港层等。扩展文件的结构定义相对简单易掌握,只包括 “\MarineMap” 下的 “Layers” 和 两个文件。其中 “Layers” 文件用于定义所有自定 义图层,包括它们的层名,地理类型,属性列表,画图风格。
www.yimasoft.net 上海意玛软件 YimaEnc 软件内部结构及功能概要 一个组件对象内有一个海图管家,它负责所有的海图管理和显示任务,而海图管家管理 和维护着一个海图库,一个内存海图序列,一个海图绘制器及多个海图屏幕窗口。通过调用 海图管家的操作接口函数,您可以实现以下所有功能: 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)数组。 海图管家负责从海图库的海图储 存室中加载海图文件到内存海图序列,并负责根据内存海图序列中的索引信息选出需要在海 图屏幕绘制的海图物标对象来绘制。并在内存海图序列的海图数量超出内存限制时卸载暂时 不需要绘制的海图单元。
www.yimasoft.net 上海意玛软件 海图库由一个称为海图储存室(Map Files Cache)的文件目录 “\\mapLib” 和一个海图信息 表组成(Maps Info Table)组成。 海图储存室中存储着海图库中每个海图单元 (Map) 对应的最新版本的 Yimap File 海图 文件,而这些 *.ymc 文件即是内存海图序列的动态加载文件对象。存为 Yimap File 文件的目 的是为了加快加载速度。 海图管家每打开一个海图文件(可以是 Base Map, Update Map 或 Yimap File 三种格式),就 会自动转换成对应的*.ymc 文件并覆盖海图储存室对应的海图单元的 ymc 文件,并同时更新 海图信息表的对应记录。 海图管家可以自动进行内存海图序列的管理: 1) 自动加载海图 在每一次刷新显示前,根据当前屏幕区域,比例尺和屏幕偏移量及海图信息表中 的信息判断海图库哪些海图单元需要加载,如果某个单元需要加载且当前不在内存海 图序列中,则海图管家自动从海图储存室中将该单元的*.ymc 文件加载到内存海图序 列中。其加载方式可分为全部加载和部分加载两种。其中部分加载有按图层加载,区 域加载和最小比例尺加载和综合过滤加载几种方式。 2) 自动卸载海图 在每一次进行自动加载海图单元或批量加载前,海图管家会判断当前系统内存余 量是否足够加载新的单元,如果余量不足,则会从内存海图序列中自动卸载海图管家 认为近期使用可能性最小的一个或多个海图单元。 您亦可自行管理内存海图序列,如可执行以下操作:加载海图,卸载海图,内存海图序 列元素位置控制(从而控制重叠海图的显示顺序)。
www.yimasoft.net 多窗口应用支持 上海意玛软件 YimaEnc 可支持多窗口海图屏幕的应用,该性能可用于多级鸟瞰图应用或多点监控的应 用。一个海图绘制器可以为多个海图屏幕绘制海图,但您需自行维护每个窗口的初始参数和 当前参数。每个海图屏幕窗口的参数包括: 1. 窗口大小 (Window size) 2. 零点偏移量(original offset point), 即海图区域相对于海图屏幕窗口的零点偏移量。 3. 当前比例尺和当前屏幕偏移量。 一般而言,您需为每个海图屏幕窗口保存一组上述参数: 1) 2) 在本窗口的所有改变大小,零点偏移量,比例尺和当前屏幕偏移量的操作后, 将更改后的参数保存 当 需 要 海 图 绘 制 器 从 另 外 一 个 窗 口 的 绘 制 转 到 本 窗 口 之 前 时 , 使 用 RefreshDrawer, SetCurrentScale, 和 SetMapOffset 三个函数来恢复前面存储的 本窗口的屏幕窗口参数 开发要点 1. 经纬度坐标参数说明: 经纬度坐标值为 4 字节整型数, 其数值为以度为单位的小数经纬度坐标值乘以一个固 定的乘积因子(multiFactor = 10000000); 西经为负数;南纬为负数; 2. (in)型参数用于向函数传入处理信息,一般应传入该参数所需类型的值类型; (out) 型 参数用于函数返回处理结果,要求传入为该参数所需类型的引用类型, 在 VB 中直接传入相 应类型的变量,在 C# 中注意需加前缀"ref "。 3. 几个 Pos 的概念: YimaEnc 中对象的索引为该对象在其序列中的位置, 是起始值为 0 的整型数, 以 "Pos"作为后缀, 这包括:
www.yimasoft.net 上海意玛软件  几个一维 Pos : # libMapPos :海图在图库中的索引 # memMapPos :内存海图序列中某幅海图的索引 # # # layerPos :图层索引 innerLayerObjectPos :物标在图层内部的索引 attrPos :属性索引  两个多维 Pos: # MEM_GEO_OBJ_POS : 用于在整个内存海图序列中唯一标识一个物标,包括 3 个子索引,即 memMapPos, layerPos, innerLayerObjPos。 如在 VB 中定义如下: Private Type MEM_GEO_OBJ_POS memMapPos layerPos innerLayerObjPos As Long As Long As Long '物标所在海图在内存海图序列中的索引 '物标所在图层 '物标在图层内部的索引 End Type # M_GEO_OBJ_POS : 用于在某一确定的海图内唯一标识一个物标,包括 2 个 子索引,即 layerPos, innerLayerObjPos。 4. YIMAENC 常用基本数据类型: # M_POINT : typedef struct M_POINT { int x; int y; } M_POINT; 定义: 坐标点,可以是屏幕坐标点或地理坐标. 屏幕坐标一般以像素为单位,地理 坐标的 x, y 值分别为以度为单位的小数经纬度坐标值乘以一个固定的乘积因子(multiFactor = 10000000); # M_COLOR : typedef struct M_COLOR { unsigned char r; unsigned char g; unsigned char b; unsigned char reserve;
www.yimasoft.net } 上海意玛软件 定义: 颜色结构体,r, g, b 3 个属性分别代表 3 个颜色基本分量,reserve 为保留属 性;
分享到:
收藏