Open LastPoem opened 4 years ago
在标准网络上高效传输栅格,要素,3DML等数据
交互式创建添加2d和3d对象,标签,修改地形对象,创建3D地形模型
加载3D模型,视频,地理参考信息层
支持编辑和保存GIS标准格式文件
使用标准COM接口可以在本地和网络上交流,控制动态对象,信息图层和应用
强大的地形分析和测量工具
超链接将特定区域或对象链接到网页,应用程序和数据库
动态演示实现地理信息数据共享
将三维场景创建为AVI格式的视频
创建3D窗口快照并保存为外部文件
从具有单独参照三维模型的点图层创建3DML数据
通过连接到skylineglobe server可以共享,发送,寻找必要的地理数据
发布工具,用于创建项目目录,以便分发给外部本地用户,或发布到web服务器。其他发布选项允许为脱机和移动用户提取和发布项目的地理子集。
为本地和远程用户提供改进的安全级别。
高级功能区自定义选项允许外部开发人员将新的自定义工具集成到TerraExplorer功能区中
将3D窗口、项目树和导航地图导出为ActiveX控件。
ISGWorld70是大多数TE接口的主要入口点,通过这个接口,可以管理应用程序和三维内容及相应的事件处理。
The TerraExplorer Viewer支持的部分接口,为本指南接口的子集。支持接口如下:
TerraExplorer能将三维窗口,信息窗口(工程树)导航地图窗口和扩展三维窗口作为ActiveX组件嵌入到自定义应用程序界面或网页。以下是可用的ActiveX控件和相关的事件接口
COM接口是一种标准的应用程序通信方法。当COM组件添加到.NET工程后,一个interop DLL就会自动创建。可以在项目Obj目录中找到Interop.TerExplorer.dll。这个DLL是COM组件和.NET组件的桥梁。在C#中用TE接口创建应用程序过程:
所有COM方法都返回一个HRESULT类型的无符号整数。这个返回值表明调用方法是成功还是失败,并提供这个操作输出的其他信息。
X,Y坐标必须使用工程地形数据使用的坐标系进行表达。 经纬度坐标地形数据会使用十进制经纬度表示。 海拔和高度以米为单位,二维图元以米为单位代表距离对象中心点的距离。
摄像机,飞机和对象偏移(方向),俯仰(倾斜)和翻滚角定义
TE允许客户端应用程序通过INavigate70接口获取和设置摄像机位置。
获取当前位置:
使用INavigate70调用GetPosition方法:
var pos = SGWorld.Navigate.GetPosition();
跳到新位置: ICreator70接口创建新位置并调用INavigate70.SetPosition方法
// 参数分别是x, y, 海拔,海拔类型,偏航角,俯仰角。
var pos = SGWorld.Creator.CreatePosition(-71, 42, 1000, 0, 0.0, -43.0);
SGWorld.Navigate.SetPosition(pos);
飞到新位置 使用ICreator70接口创建一个新位置和需要调用FlyTo方法的当前位置,需要给FlyTo方法传递对象参数。
var circle = SGWorld.Creator.CreateCircle(
SGWorld.Creator.CreatePosition(-71, 42, 0, 2),
1000,
SGWorld.Creator.CreateColor(0, 0, 0, 0),
SGWorld.Creator.CreateColor(200, 50, 50, 128)
); // 创建一个圆
circle.Position.Distance = 3000; // 摄像机将在3000米高度观察对象
SGWorld.Navigate.FlyTo(circle); // 飞到圆对象位置
动态控制摄像机每帧位置 这是控制摄像机的最高级技术。这种情况下,客户端程序可能需要依赖其他外部输入以帧方式移动摄像机位置。 1.用ISGWorld70Event.OnFrame事件处理程序-TerraExplorer渲染新帧前发送此事件,客户端应用程序利用这个机会将飞机移动到一个新位置。 2.在事件处理过程中调用INavigate70。
SGWorld.AttachEvent("onFrame", onFrame);
function onFrame(){
var pos = SGWorld.Navigate.GetPosition();
pos.X += 0.5;
pos.Y -= 0.2;
SGWorld.Navigate.SetPosition(pos);
}
项目树管理 IProjectTree70接口通过信息树结构允许客户端访问工程中所有元素和对象。客户端应用程序可以控制树的外观(例如:展开组,将对象从一个组移到另一个组)删除单个对象或整个组,添加对象或组到树。
1.创建和修改组 2.查找和修改树中的对象 var node = SGWorld.ProjectTree.GetNextItem(group, 11); while(node > 0) { var object = SGWorld.ProjectTree.GetObject(node); // 执行关于对象的操作 node = SGWorld.ProjectTree.GetNextItem(node, 13); // 13获取下一个节点
对象管理 1.添加对象到项目 ICreator70接口提供方法创建所有图层,对象,位置和场景等不同对象。使用某个创建方法,如.CreateCircle可以添加对象到工程并可以设置对象在三维世界的位置。当客户端应用程序创建一个对象,则会返回一个对象,这个接口可以用于进一步操作对象。
var circle = SGWorld.Cerator.CreateCircle(
SGWorld.Creator.CreatePosition(-71, 42, 0, 2), // 对象轴心点
1000, // 半径,单位米
SGWorld.Creator.CreateColor(0, 0, 0, 0),
SGWorld.Creator.CreateColor(200, 50, 50, 128)
);
2.修改对象参数 ICreator70和IProjectTree70接口,可以得到一个TerraExplorer对象接口。客户端应用程序创建了这个对象,可以得到一个接口返回值。也可以通过IProjectTree70.GetObject方法利用对象ID参数得到一个接口返回值。
var node = SGWorld.ProjectTree.GetNextItem(group, 11); //11 表示组中的第一子对象
while (node > 0)
{
var object = SGWorld.ProjectTree.GetObject(node); //执行关于对象的操作...
node = SGWorld.ProjectTree.GetNextItem(node, 13); // 13 表示下一个相邻的对象
}
TE事件 TE针对客户端提供一系列可用事件,可以捕捉用户对对象的操作,例如编辑对象或飞到对象,或者是对象被送到目标容器之前截取消息(允许客户端修改或显示对象).可以借助OnFrame事件实时控制摄像机和地面对象(以一种平滑的方式) 客户端可以利用处理该事件改变对象或摄像机的位置。 用ISGWorld70.AttachEvent()方法监听TE事件。
一、分析
对距离,面积,坡度,体积的基本测量和分析,以及通视线,阴影,高程对比,横截面,缓冲区分析,洪水分析,地形剖面
二、展示
影像,高程等展示,坐标系统,地形,提供2d, 3d, dynamic, buildings, models, point cloud等可以放置到地形上。
三、空间查询
操纵要素和3DML数据,分析空间关系。包括合并要素,剪切多边形,将多要素拆分成单要素,导出选择要素。 复杂的空间和属性查询。通过属性或(点线面对象间的)空间关系来过滤要素
四、发布数据
server的功能
五、创建和分享3D场景浏览
展示工具可以创建三维场景浏览。只要包括当前摄影机的位置和角度,图层和对象的显隐,系统时间,以及弹窗消息和标题。场景浏览可以转为视频文件。
六、优化
高级工具允许将模型文件和点云数据从各种格式转换为aa流优化的skyline专有格式,以提高显示性能和下载速率.