370 likes | 649 Views
Flex & OGIS For ArcGIS Flex Viewer OGIS. WebGIS 三部曲对 OGIS 应用. 内容大纲. 一、 WebGIS 及其规范 二、 WebGIS 常用前端开发技术 三、 OGIS 基本原理 四、 ArcGIS Flex Viewer 使用 OGIS. 1 、 WebGIS 及其 规范. 一、什么是 WebGIS ? 二、 GIS 服务规范. 1.1 、 什么是 WebGIS ?.
E N D
Flex & OGIS For ArcGIS Flex ViewerOGIS WebGIS三部曲对OGIS应用
内容大纲 • 一、WebGIS及其规范 • 二、WebGIS常用前端开发技术 • 三、OGIS基本原理 • 四、ArcGIS Flex Viewer使用 OGIS
1、WebGIS及其规范 • 一、什么是WebGIS? • 二、GIS服务规范
1.1、什么是WebGIS? • WebGIS是利用Web技术来扩展和完善地理信息系统的一项技术。它是基于网络的客户机/服务器系统;利用因特网来进行客户端和服务器之间的信息交换;它是一个分布式系统,用户和服务器可以分布在不同的地点和不同的计算机平台上。WebGIS主要作用是进行空间数据发布、空间查询与检索、空间模型服务、Web资源的组织等。 • 前期使用矢量数据 • 现在使用瓦片为底图
1.2GIS服务规范 • Web Feature Service WFS 要素Web服务 • Web Map Service WMS 地图Web服务 • Web Map Tile Service WMTS 切片地图Web服务
1.2.1、 WMTS服务规范 WMTS,即Web Map Tile Service(网络地图瓦片服务),由开放地理信息联盟(Open GeoSpatial Consortium,OGC)制定,是和WMS并列的重要OGC规范之一。WMTS不同于WMS,它最重要的特征是采用缓存技术能够缓解WebGIS服务器端数据处理的压力,提高交互响应速度,大幅改善在线地图应用客户端的用户体验。WMTS是OGC主推的缓存技术规范,是目前各种缓存技术相互兼容的一种方法。
1.2.1、 WMTS服务规范 服务接口: • 1. GetCapabilities 获取服务的元信息,包括瓦片坐标系、级别信息 实例:service=WMTS&request=GetCapabilities • 2. GetTile 获取切片,根据行列号获取切片地图 实例:service=WMTS&request=GetTile&version=1.0.0&layer=etopo2&style=default&format=image/png&TileMatrixSet=WholeWorld_CRS_84&TileMatrix=10m&TileRow=1&TileCol=3 • 3. GetFeatureInfo 可选,获取点选的要素信息
2、WebGIS常用前端开发技术 • 一、JavaScript JavaScript是一种类C的动态语言,广泛用于网页前端编程,目前也有运行于服务端后台的实现,如Node.js。 • 二、Silverlight 由微软公司推出的跨浏览器的、跨平台的插件,为网络带来下一代基于.NET的媒体体验和丰富的交互式应用程序。Silverlight提供灵活的编程模型,并可以很方便地集成到现有的网络应用程序中。Silverlight可以对运行在Mac或Windows上的主流浏览器提供高质量视频信息的快速、低成本的传递。 • 三、Flex 由Macromedia公司在2004年3月发布的,基于其专有的Macromedia Flash平台,它是涵盖了支持RIA(Rich Internet Applications)的开发和部署的一系列技术组合。
2.1、 Flex技术 Flex 是一个高效、免费的开源框架,可用于构建具有表现力的 Web 应用程序,这些应用程序利用 Adobe Flash Player和 Adobe AIR, 运行时跨浏览器、桌面和操作系统实现一致的部署。
2.1、 Flex技术 Flex VS JavaScript • 一、Flex 比JavaScript界面更华丽、表现力更强。 • 二、Flex对流媒体的支持更好,可支持视频文件播放,摄像头视频播放等。 • 三、Flex 需要浏览器插件支持, JavaScript不需要。 • 四、JavaScript与网页其它元素的交互更简便,集成更容易。
2.1、 Flex技术 Flex仪表控件
2.1、 Flex技术 Flex流媒体支持
2.1、 Flex技术 ArcGIS Flex Viewer 的动态标绘功能
2.1、 Flex技术 Flex VS Silverlight • 一、同样拥有华丽的界面和很好的表现力。 • 二、在网页上同样需要插件支持。 • 三、Flex的开发环境及语言特性更像Java,Silverlight使用C#等语言编程更合适.Net开发人员。 • 四、Flex产品更成熟,用户装机量更大。
3、OGIS基本原理 • 一、2.5D与平面地图的关系 • 二、2.5D瓦片切图方式 • 三、地图热区 • 四、坐标转换
3.1、2.5D图制图原理 从平面地图到2.5D步骤: • 1、顺时针旋转45度 • 2、地图高度设置为:原 高度*sin(45)
3.1、2.5D图制图原理 平面图 2.5D图
3.2、地图切图方式 • 将大图按6个等级切图,瓦片的尺寸是256*256。 • 第一级比例尺最大,也就是原2.5D大图的缩放比。 • 第二级的比例尺为第一级的1/2,剩下各等级依次类推。
3.2、地图切图方式 • 某等级与其更高一级的命名规则是: 本等级的名称的行列分别乘以2,结果即为高一级的第一个瓦片的命名。 137,132.jpg 136,132.jpg 68,66.jpg 136,133.jpg 137,133.jpg
3.3、地图热区 • 1、热区由2.5D图切片后导入系统,在系统绘制得到。 • 2、为了提高热区访问效率,将热区根据坐标区域导出个相应的js脚本文件中。
3.3、地图热区 • 1、热区文件与坐标点对应关系: 某点的OGIS坐标为x,y,则该点对应的热区文件是 x/4096,y/4096.js • 2、热区文件所在文件夹命名规则: 热区文件的x序号的前两位
3.3、地图热区 • 1、热区数据规则:
亲 ,能听懂不 ?
4、ArcGIS Flex Viewer 使用 OGIS • 一、底图加载 • 二、热区展示
4.1、底图加载 • 一、当前视图窗口内的瓦片是如何算出来的? • 二、地图上某点的所在的瓦片是哪个? • 三、地图窗口内的任意一点的坐标是如何算出来的?
4.1、底图加载 什么是地图像素Resolution(分辨率)? Resolution 是1像素代表多少地图单位。 • 例子:如果地图的坐标单位是米, dpi为96 • 1英寸= 2.54厘米; • 1英寸=96像素; • 最终换算的单位是米; • 如果当前地图比例尺为1: 125000000,则代表图上1米实地125000000米; • 米和像素间的换算公式: • 1英寸=0.0254米=96像素 • 1像素=0.0254/96 米 • 则根据1:125000000比例尺,图上1像素代表实地距离是125000000*0.0254/96 = 33072.9166666667米。
4.1、底图加载 • 像素分辨率示例 所在等级 像素分辨率 比例尺
4.1、底图加载 • 地图窗口内的任意一点的坐标计算方式 1、获取该点在地图窗口中的像素坐标(pX,pY)。 2、获取左上角地理坐标(ltX,ltY) 3、该点X=ltX+pX*Resolution 该点Y=ltY+pY*Resolution
4.1、底图加载 • 地图上某点的所在的瓦片计算法: 1、设定坐标原点为0,0,某点的坐标是x,y 2、瓦片行号:最小整数(x/Resolution/瓦片宽度(256)) 瓦片列号:最小整数(y/Resolution/瓦片高度(256))
4.1、底图加载 • 当前视图窗口内的瓦片行列号 • 1、求出四个角的瓦片行列号 • 2、从左到右,从上到下遍历求出所有瓦片行列号
4.1、底图加载 ArcGIS Flex Viewer代码实现: 一、继承自TiledMapServiceLayer类 二、设定坐标系统及像素分辨率信息 三、重写获取瓦片方法
4.2、热区展示 • 如果将热区与底图吻合?
4.2、热区展示 • 一、缩放比 • 二、偏移量
4.2、热区展示 ArcGIS Flex Viewer代码实现: 一、继承自TiledMapServiceLayer类 二、侦听map控件的地图视图变化事件(EXTENT_CHANGE) 三、获取最新地图范围内的热区文件 四、加载热区文件,解析热区。 五、GraphicsLayer图层中绘制热区,并绑定事件