skyline TerraExplore PRO二次开发笔记.doc_第1页
skyline TerraExplore PRO二次开发笔记.doc_第2页
skyline TerraExplore PRO二次开发笔记.doc_第3页
skyline TerraExplore PRO二次开发笔记.doc_第4页
skyline TerraExplore PRO二次开发笔记.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

skyline TerraExplore PRO二次开发笔记1. 开发环境(B/S)本地开发环境(IIS,TEPro, TEDEV,根据项目的要求具体选择服务器端的语言和客户端的脚本语言,如:ASP,asp.Net,jsp,php.,使用的开发工具用: Microsoft Visual Studio .NET 2003/5, 客户端脚本语言:javascript/jscript,vbscript,使用的开发的工具:UltraEdit,Editplus等等,根据自己爱好)网络开发环境:在服务器上进行开发和调试,但在服务器上必须安装internet lic+TerraGate的情况下,才能应用,本机只需安装TE即可;2. 服务器的配置服务器端必须要安装TerraGate3.0/3.5,的主要作用是进行mpt的网络发布,在TerraGate 可以设置多个mpt,供fly工程文件调用。(调用文档)3. 客户端浏览客户端需要安装TE(TerraExplorer) IE60版本即可使用本系统。4. 二次开发的概述TerraExplorePro提供了一整套的API,供二次开发使用,它提供了一些访问外部信息的方法,比如:数据库或矢量数据的。所有这些以COM协议为基础的界面都可以通过脚本语言管理,也可通过非脚本语言控制(如:C+或Visual Basic)来开发(c/s)。TerraExplorePro也可以设置ActiveX控件。它作为ActiveX控件通常被应用在可视化界面的3D窗口、信息树、导航图的操作。下面主要讨论TerraExplorePRO API的功能:用户接口API:是对标准TerraExplorer Pro API的扩充。利用其强大功能,开发人员可控制和激活大多数TerraExplorer Pro的工具和函数。如:1 、控制飞行和视景2、对象的创建3、信息树和管理4、层和对象管理5、事件处理6、在网页和windows应用程序中添加ActiveX控件另外,TerraExplorerPro的API还允许常用的一些操作,比如控制容器中的内容,查询地形高度信息,获取快照,查找对象等更多操作。5. 开发前的准备 在网页中如何使用Activex控件网页标题 /6. 接口的概述当前的版本号:TerraExplorer Pro version 5.0.0.f47ITerraExplorer5 (Partial)IPlane5ITerrain4IContainer2IRender4ISnapShot2IStartPosition_ITerraExplorerEvents5IInformationTree5 (Partial)IObjectManager5 (Partial)ITENavigationMap_ITENavigationMapEventsIMenu7. 接口的介绍:ITerraExplorer5(第21章)告诉你关于用户接口的细节,例如怎样加载一个工程文件,对加载的工程文件进行加密,设定3d窗口的模式(cpu是否处理),获得用户当前使用的版本的信息,单位的设置,还可以对当前的工程文件进行保存,也可以把服务器上的工程文件保存到本地中。属性: Type:获取版本 FlyName:工程的文件名 DisplayErrorMessages:错误的设置模式 布尔型:当设置为false/0时,TerraExplorer错误信息在com方法调用的时候不显示给用户,如果设置为true时,则显示,系统默认设置为true; 错误处理在IErrorInfo接口中,目前没有公开。方法: Load(in BSTR URL):加载工程文件: 可以导入本地的工程文件或mpt文件,也可以导入网络的工程文件或地形文件,地形文件导入的方式:文件名.mptip:端口 SetCPUSavingMode(in bSavingMode):设置cpu的工作模式 如果设置为1:工作,0不工作 GetUserUnits( out VARIANT* shortAltitude, 海拔out VARIANT* shortAltitudeType, 海拔的类型out VARIANT* shortLatLongType) 经纬度类型) GetTEVersion:获得当前TE的版本号; LoadEx:加载加密的工程文件,同步或异步打开(MPT有关系) in BSTR URL, in BSTR User, in BSTR Password, in, defaultvalue(0) long Asynchronous) 1为异步,0 为同步 Save:保存工程文件 SaveAs:另存为工程文件具体实现如下:1 定义对象2 初始化对象3 加载Activex4 浏览网页代码如下:网页标题 var ITerraExplorer = null; var IPlane = null; var IMenu = null; var IObjectManager = null; /- function Init() var temp; ITerraExplorer = TE.interface(ITerraExplorer5); ITerraExplorer.load(D:Jobtest.fly); temp = ITerraExplorer.Type; alert(temp); IPlane5IPlane5接口是对飞行方式、观看位置进行控制,能操作浏览对象的观察角度,方向、速度、放大,偏航,斜度,旋转 .,来产生复杂的移动。属性:Speed:速度以米/秒为单位,在3dwindow上运行,根据设置的大小决定对象运行的快慢;FieldOfView:观看3dwindow的区域,在观看的程度上,对于球体,它的角度设置的范围在1-180度中间,1为放到最大程度,180为放到最小程度,对偏航的设置,此值必须设置为5 90度之间,默认的是53度。方法:FlyTo:此方法是飞行的动作,根据得到x坐标,z坐标,,视景的高度设定,设置不同运动方式(偏航(Yaw),斜度(Pitch),运动的方式)的设置,飞到并定位到目的地,还可以对目的地进行距离的设置。in double X, 地形上的x坐标的位置in double Z,地形上的z坐标的位置in double Height,飞行对象与地形的高度in double Distance,距离的远进,就像摄像机拉镜头一样。in double Yaw,偏航的设定,对飞行对象偏航的角度进行控制。in double Pitch,对斜度进行控制in BSTR Pattern)运动的模式对飞行动作模式进行控制共有7个参数1、 FlyToLocation2、 JumpToLocation3、 FlyToTerrain4、 Circle(圆)5、 Oval(椭圆)6、 Line(线形)7、 Arc(圆弧)代码:SetPosition设定当前3dwindow的视角的位置,不同于MovePosition,此方法直接“jump“到某个位置。用户可以从一个城市直接跳到另一个城市in double X,X坐标in double Y,Y坐标in double Height,高度in double Yaw,偏航in double Pitch,斜度in double Roll,滚动in double CameraDeltaYaw,视角的偏航,与飞行到某个对象的偏航相同in double CameraDeltaPitch,视角的斜度。in, defaultvalue(0) long Flags)Flag共有13个参数,默认为0,每个参数都对应上面一个参数,使某个参数无效。MovePosition与setPosition相同。GetPosition这个方法重新得到setPosition的参数,来定义3dwindow的位置和方向out VARIANT* doubleX,out VARIANT* doubleY,out VARIANT* doubleHeight,out VARIANT* doubleYaw,out VARIANT* doublePitch,out VARIANT* doubleRoll,out VARIANT* doubleCameraDeltaYaw,out VARIANT* doubleCameraDeltaPitch)应用:自定义坐标转换 IPlane.GetPosition CurrX, CurrY, CurrH, CurrDirection, CurrPitch , CurrRoll, CurrDeltaYaw, CurrDeltaPitchFlyToObject飞到具体的某个地形上的对象in BSTR ObjectID, Dim ItemID = IInformationTree.FindItem(浏览路径2006北京国际马拉松赛) msgbox ItemI if ItemID 0 then ObjID = IInformationTree.GetTerraObjectID(ItemID) IPlane.FlyToObject ObjID, 18 els alert Item not found: &ItemName End Ifin ActionCode Code)动作代码:o AC_FLYTO = 0 /飞行到对象o AC_CIRCLEPATTERN = 1 /圆形o AC_OVALPATTERN = 2/椭圆o AC_LINEPATTERN = 3 /线形o AC_ARCPATTERN = 4 /弧形o AC_FOLLOWBEHIND = 5 /后边o AC_FOLLOWABOVE = 6 /上方o AC_FOLLOWBELOW = 7下方o AC_FOLLOWRIGHT = 8 /右边o AC_FOLLOWLEFT = 9 /左边o AC_FOLLOWBEHINDANDABOVE = 10 /后上方 o AC_FOLLOWCOCKPIT = 11 /坐在机舱o AC_JUMP = 14 /跳转o AC_PLAY = 18 /跳转并播放SetSpeed(in double Speed)此方法设置视角的速度,以此设置的速度靠近某个对象GetSpeedout, retval double* Speed)获得以速度的值Zoom此方法执行飞行到某个对象的时候进行放大in double Distance,在某个距离段执行的操作GetPositionEx重新获得setPosition的参数,定义视角的位置和方向,此方法多了一个Flag,可以重新找到海拔高度的方法到地形数据上。用于像地面剖析等。例子: IObjectManage5这个对象负责在工程文件里创建对象,它的方法完成不同的对象,所有的对象都继承ITerraExplorerObject5接口,当创建对象后就可已获得这个接口的属性和方法。CreatePolyline,在3d窗口中创建线条in, defaultvalue(0) VARIANT SafeArrayVertices, 需要输入得是一个数组序列,两两出现,如:第一个值为x坐标,第二个值为y坐标.在这里一般使用鼠标点击画线结合使用(作个案例);in, defaultvalue(0x0000ff00) long LineColor, 定义一个线形得颜色,用10进制得形式表示in, defaultvalue(HSC_TERRAIN_RELATIVE) HeightStyleCode HeightStyle, 设定高度得样式,有3个选项 每个线的置高点都与地形有关系 in, defaultvalue(0) long GroupID, 所划得线条放在那个组里。in, defaultvalue() BSTR Description, 对所划得线进行相关得描述。out, retval ITerrainPolyline5* pITerrainPolyline5) 返回一个pITerrainPolyline5对象可以调用pITerrainPolyline5里面得对象和方法。Create2DPolygon,创建2的多边形,HRESULT Create2DPolygon (in, defaultvalue(0) VARIANT SafeArrayVertices,需要输入得是一个数组序列,两两出现,如:第一个值为x坐标,第二个值为y坐标.in, defaultvalue(0x0000ff00) long LineColor, 线形得颜色,用10进制得形式表示in, defaultvalue(FT_NONE) double FillOpacity, 对多边形的填充的颜色透明度的属性值进行控制。 0 100in, defaultvalue(0x00646464) long FillColor, 对多边形的颜色填充。in, defaultvalue(HSC_TERRAIN_RELATIVE) HeightStyleCodeHeightStyle, 在地形上的高度的呈现的形式;in, defaultvalue(0) long GroupID,所划得多边形放在那个组里。in, defaultvalue() BSTR Description,对所划得线进行相关得描述。返回一个字符串out, retval ITerrainPolyline5* pITerrainPolyline5)返回pITerrainPolyline5对象,可以使用pITerrainPolyline5的所有属性和对象。CreateRectangle, 在窗口中创建一个矩形; in double X, 地形的X坐标in double Y,地形的y坐标in double Elevation, 地形的海拔或高度。in double ObjectWidth, 矩形对象的宽度in double ObjectDepth,矩形对象的深度。in, defaultvalue(0x0000ff00) long LineColor, 线形的颜色设置in, defaultvalue(FT_NONE) double FillOpacity, 对象填充颜色的透明度;in, defaultvalue(0x00646464) long FillColor,对象填充颜色的颜色;in, defaultvalue(HSC_TERRAIN_RELATIVE) HeightStyleCode HeightStyle, 在地形高度的显示的高度样式in, defaultvalue(0) long GroupID, 存入到那个组in, defaultvalue() BSTR Description, 对当前对象的描述out, retval ITerrainRectangle5* pITerrainRectangle5)返回ITerrainRectangle5对象,即可使用ITerrainRectangle5的所有对象和属性。CreateRegularPolygon, 创建正多边形in double X,当前的地形的x坐标in double Y,当前的地形的Y坐标in double Elevation,当前对象在地形中的海拔的属性值in double Radius, 多边形的半径属性值in int NumOfSegments, 设定多边形边数。in, defaultvalue(0x0000ff00) long LineColor, 设定线的颜色in, defaultvalue(FT_NONE) double FillOpacity, 设定填充的颜色的透明度in, defaultvalue(0x00646464) long FillColor, 设定填充的颜色in, defaultvalue(HSC_TERRAIN_RELATIVE) HeightStyleCode HeightStyle, 对高度样式的设定o HSC_TERRAIN_RELATIVE = 0Each of the polygons vertices has the same height above the terrain (determined by the Elevation parameter).o HSC_PIVOT_RELATIVE = 1The height of the polygons pivot (the center of the regular polygon) is determined by the Elevation parameter. Each of the polygons vertices lies on the same plane as the polygons pivot.o HSC_ON_TERRAIN = 2The polygons vertices are placed on the terrain.o HSC_TERRAIN_ABSOLUTE = 3 in, defaultvalue(0) long GroupID,当前对象的组in, defaultvalue() BSTR Description, 描述out, retval ITerrainRegularPolygon5* pITerrainRegPolygon2) 返回ITerrainRegularPolygon5对象,可以使用ITerrainRegularPolygon5里的所有对象和属性CreateCircle,/创建圆形对象Create3DPolygon,创建3d多边形CreateBuilding,/创建建筑物CreateBox,/创建boxCreatePyramid,/创建椎体(底部有规则)CreateCylinder,/创建圆柱CreateCone,/创建椎体(底部是圆形)CreateEllipse,/创建椭圆CreateArc,/创建弧形CreateArrow,/创建箭头Create3DArrow,/创建3d箭头CreateSphere,/创建球体CreateModel, (用例子说明)创建模型CreateLabel,in VARIANT LabelInfo,in double X,in double Y,in double Elevation,in, defaultvalue(0) HeightStyleCode HeightStyle,指的是从地面算的高度,比如一栋楼高30米像海拔高度,从海平面算起的(大地水准面)in, defaultvalue(0) long GroupID,in, defaultvalue() BSTR Description,out, retval ITerrainLabel5* pITerrainLabel5)文本标签CreateLabelEx,文本标签CreateLocation,创建本地区域CreateTreeHotlink,/点击出东西CreateRoute,/绘制动态路径,可以对他进行播放、录制保存成avi等视频文件的操作(实例讲解)CreateMessage, 创建对话框与IContainer结合使用GetObject, 获取该对象 in BSTR ObjectID,(对象的ObjectID如何获取),实例讲解out, retval ITerraExplorerObject5* pITerraExplorerObject5) CreateImageLabel,/创建图片标签CreateImageLabelEx,/创建图片标签CreateDynamicObject (用实例讲解)/创建动态对象CreateImageryLayer,/创建图片层,贴在地形上CreateElevationLayer,/创建海拔层,贴在地形上CreateVideoOnTerrain,/创建视频到地形上CreatePointCloudModel,/创建云点模型可以导入*.CPT(point Cloud Files)说明:点云就是是无数个空间点构成的集合;就是它每个点都坐标;GetInfoTreeItemID,获取被创建的对象在信息树的ItemID,IObjectManage5 讲解的实例:1 创建飞行对象,飞到某个位置时在创建文本对象调用第22章的ITerrainLabel5对象,2 创建3d模型,IInformationTree5此接口主要实现的功能够显示和管理所有对象,可以创建组,修改组,删除组,重命名组,可以实现组的排序,供创件对象使用。 提供的方法有:CreateGroup, 在信息窗口中创建一个组in BSTR GroupName,in, defaultvalue(0) long ParentGroupID,out, retval long *pVal)CreateLockedGroup,/创建一个锁定的组in BSTR GroupName,in, defaultvalue(0) long ParentGroupID,out, retval long *pVal) RenameGroup, 对组进行重命名in long GroupID,in BSTR GroupName) ExpandGroup, 展开一个组in long GroupID,in BOOL bExpand) GetItemName,获取列表的名字in long ItemID, /ItemID的infotree. FindItem(“对象”);out, retval BSTR *ItemText) /输出列表文本 DeleteItem, /删除列表 SetParent,/移动列表到不同的组,就象数据库关系数据库一样,设置它的关联属性,这里的关联属性就是:ParentGroupID GetNextItem, 这个方法很有用,可以遍历出信息树里的组的 ID 和 组里对象的ItemID,in long ItemID,in ItemCode Code,o SELECTED 10获取当前选中的对象o CHILD 11返回第一个组下对象的ItemIDo NEXT 13返回下一个兄弟节点o ROOT 18获得根节点out, retval long *pVal)FindItem, 查找信息树中的对象 in BSTR PathName, /输出对象的ItemIDout, retval long *pVal) GetTerraObjectID,/获得地形的对象的IDHRESULT GetTerraObjectID (in long ItemID,out, retval BSTR *pVal)通过它和ItemID,可以获取对象的ObejctID,可以实现FlyToObject的操作。 SetGroupColor,in long GroupID,in, defaultvalue(0x00ffffff) long GroupColor) /设置组的颜色 GetGroupColor, in long GroupID,out, retval long *pVal)获得组的颜色 EnableRedraw, IsGroup,判断是否有没有某个组 ,就象IsEmpty函数样的功能 SetGroupVisibility,设置组是否显示:组前复选框是否显示,IsGroup, SetGroupVisibility,可以控制组的一些操作,如:对加载进来的组进行改名,显示和隐藏的操作 SortGroup, 对组进行排序 SetGroupLocation, in long GroupID, in double X, in double Y, in double Height, in double Distance, in, defaultvalue(0) double Yaw, in, defaultvalue(-50) double Pitch, in, defaultvalue(0) long Flags) 设置组为Location组,此组是特殊的组,可以定位到地形的某个地方。 GetGroupLocation,获取Location组的信息,供其他地方地方的调用 CreateLockedGroupEx,与CreateLockedGroup实现的功能类似,增加了组的索引。 SetActivationCode, in long GroupID, in ActionCode ACode, in, defaultvalue(-1) int ActivationParam); /当前不能使用 设定一个组的运动状态,如, GroupID“111“的组运动状态为:JumpToLocalion GetActivationCode, 获取上面的信息 SetClientData, 设置一个对象的属性信息,这个字符串可以是外部的xml格式字符串,如:Information 1/Attribute1Information 2Information 3GetClientData,获得一个对象的属性信息,返回一个xml格式文档(DOM)去解析它。 GetObjectX, 获得一个对象,可以得到对象的相关信息:如:ID, ObjectType, ClientData Set TEObject = IObjectManager.GetObject(ObjectID) SetParentEx,/移动列表到不同的组,就象数据库关系数据库一样,设置它的关联属性,这里的关联属性就是:ParentGroupIDEditItem,in long ItemID) 打开属性框对对象进行编辑EditItems,in VARIANT SafeArrayItems) /所有对象的ItemID列表打开编辑属性去修改组里所有的列表对象 LoadFlyLayer, in BSTR FlyFile,/工程文件的地址 in, defaultvalue(0) long ParentGroupID)/ ParentGroupID很重要,用它可以把工程文件分类 此方法非常有用, 可以加载一个fly工程文件,可以往主工程文件里叠加子工程文件,具体实现的方法是:把已做好的工程文件放到某个位置(或其他机器上),然后用LoadFlyLayer就可以把工程文件加载进来,实现了层叠加的功能。IsGroupEx,in long ItemID, out VARIANT* boolLocked, out, retval BOOL* pVal)判断是否有没有某个组 ,就象IsEmpty函数样的功能boolLocked 判定这个组是锁定的组,或没有的组GetGroupVisibility,in long GroupID, out, retval int *pVal)返回的是信息树中的可视的组SaveFlyLayer,in BSTR FlyFile, :工程文件名in long GroupID) /当前要保存的GroupID这个功能可以实现本地信息库的功能 CreateLayer,自定义创建一个层到信息窗口中,创建好后可以向层里添加文本,3d模型等。1 这个方法可以直接读取shape 图层的数据信息;(实例讲解)2 可以读wfs(WFS的全称是网络要素服务接口规范,其提出目的是为了规范对OpenGIS简单要素的数据编辑操作,从而使得服务器端和客户端能够在要素层面进行“通讯”。 可以到查看)3 可以连接Oracle 空间数据库,这些功能可以用写程序的方式实现,也可以通过在TE Pro 里加载,保存即可,建议选择后一中方式。EditItemEx,in long ItemID,in EditItemFlags Flags,in VARIANT ParentWindow) 编辑列表对象 EndEdit,这个方法结束编辑模式 SetClientDataEx,增加了:Namespace The identifier of the text string. You can store several text strings in the group by using different GetClientDataEx,GetLayer,in long GroupId,out, retval ILayer5* pILayer);获得一个层 SetVisibility,HRESULT SetVisibility(in long ItemID,in bool bShow) 设置信息树里的具体对象显示和隐藏 GetVisibility,in long ItemID,out, retval int* pVal)返回信息树中的对象在地形中显示的状态; GetObjectEx,LockGroup 锁定一个组,是它变为不可用SelectItemin long ItemID,in, optional, defaultvalue(0) long Flags,/这个方法是选中某个对象ITerrain4此接口主要控制mpt相关信息,当前正在使用的mpt文件名,mpt的坐标系统,显示mpt的坐标系统的信息和高程信息属性:MptNameGroupKeySystemKeyDatumKeyUnitKeyEPSGDescription方法:GetGroundHeight(没明白)在地形文件中,利用该方法,使用被给定的精确的水准面,得到被给定的坐标的高程信息。in double X,in double Y,in AccuracyLevel Level,out, retval double* TerrainHeight)GetGroundHeightEx与上相似GetExtent(没有测通)返回mpt的坐标的范围(矩形),这个坐标的范围平行与x和y轴。out VARIANT* doubleLeft,out VARIANT* doubleTop,out VARIANT* doubleRight,out VARIANT* doubleBottom)IObjectManager5这个接口负责在项目里创建所有terraExplorer Pro里对象,如:创建文本,创建贴图,创建3d模型IInformationTree5IContainer2对容器的操作,主要应用在脚本语言中。可以与TerraExplorer内在的容器进行交互,在一个确定的容器中,它允许增加、移除和改变容器中的 URL。如画线:把定义线形的各个属性放在一个网页里,然后加载到容器里,当启动容器时,即可画线,从而实现了层显示的操作.没有属性.方法:SetURL,输入一个地址的链接和网页的显示方式.in int nContainer,网页(message)的显示方式o Upper Left = 0/在主窗体左上角显示,在b/s中已activex控件的形式出现o Lower Left = 1/在主窗体左下角显示,在b/s中已activex控件的形式出现o Main = 2/在主窗体中显示,在b/s中已activex控件的形式出现o Message Bar = 3/在主窗体的下面显示, 在b/s中已activex控件的形式出现l floating Browserl /弹出一个网页l Floating Popupl 在3dwindow 上显示一个容器,容器里加载一个网页,可以设置位置,大小,等属性总体说明就时消息的显示的位置的控制.in BSTR TabName,TabName A string that holds the tab name of the new URL that is being added to the container. 设定in BSTR URL) 输入一个地址(需要调用的网页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论