解读ENVI Services Engine云解决方案
来源:互联网 发布:录制视频软件 知乎 编辑:程序博客网 时间:2024/06/06 16:36
ENVI Services Engine(简称ESE)是Exelis VIS公司最新推出的云遥感服务解决方案,ESE是以服务方式部署遥感功能,即以Web Services 形式存在的IDL和ENVI在云端处理,客户端可以在线,按需(on-line,on-demand)请求遥感服务。ESE采用开源标准,与中间件无关的体系结构,可以将一个资源上部署的图像分析功能传递给多个平台,允许用户通过Internet在Web客户端或者移动客户端上进行大数据量的高级分析。
在阅读下面内容前,我们简单了解以下几个概念:
l
远程处理或储存,经常用于提高运算性能,扩展性,数据分配等。
l
很多计算机连接在一起相当于一台计算机,为了分布式处理,高可用性和负载均衡。
l
基于文本的开放式标准,旨在人可读的数据交换,拟替代XML。
l
处在ESE 和客户端中间的软件,如包括目录和影像服务。
l
定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的 Web 服务,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态。已成为一个主要的Web API设计模型。
l
工作量增加时,可以增加硬件资源以无缝处理这些工作。
l
传递Web内容,且通过互联网可以访问。
l
在互联网或者云上,以网络地址的形式提供的软件功能 (“永远在线”)。
l
用于运行特定分析功能的处理客户端和任务。
一、 ESE运行模式
ESE构架于主流的REST框架上并且能够运行在集群环境中,它具有可伸缩性和负载平衡功能,如图1是ESE运行的一个典型的流程图。ESE从客户端获得HTTP和REST请求,ESE执行遥感相关的处理请求,然后将结果传送给应用程序APP。ESE影像处理功能以JSON标准封装,可以与其他中间件(如ArcGIS Server)提供的影像数据服务无缝结合。
ESE中包括Master、Worker、Node Leader三种不同的运行角色:
Ø
Ø
Ø
当不同客户端发送请求时,服务器上的Master进程将接收和应答请求。如果请求的是任务(Task)或者系统的信息,Master将信息返回给客户端。如果请求的是执行任务,那么Master就会将请求分配给它下面的Worker去具体执行,然后将执行结果返回给客户端。
Worker进程能够运行在ESE集群环境中的任何机器上。集群中的所有节点绑定了一个特定的Master主机,也就是说,集群环境中的一个节点运行着ESE可执行的实例,该可执行文件与集群中的其他节点一样与同一个master主机通信,该master主机可以通过服务器配置文件指定。节点的安装方式有两种:
l
l
图1 可伸缩和负载均衡运行流程
二、 ESE安装和配置
1、 ESE安装
目前ESE支持64位的Linux和Windows系统,安装ESE之前,确保机器上已经安装了ENVI/IDL产品。ESE安装之后可以通过“开始->程序->ENVI50->Help->ENVI Services Engine Help”启动ESE帮助。安装ESE之后会创建两个目录:一个是ESE目录(称为ESE_WORK_DIR);另一个用来存储IDL和ENVI文件。安装目录如图2。
图2
安装完成后,可以手动启动ESE服务如图3所示。
图3
2、 服务器配置文件
配置文件能够设置ESE的安装环境。多台机器情况下,在该文件定义ESE的集群,所以它需要有权访问集群环境里的所有机器。通过该配置文件你可以更改主机、端口(默认端口:8181)以及设置是否使用ENVI函数,详见ESE帮助。注意在更改配置文件之前,先进行文件备份。
配置文件目录:
Linux:<ESE_WORK_DIR>/bin/server.cfg
Windows:<drive>:\Exelis\se10\bin\server.cfg
3、 系统变量
在ESE安装目录:\Exelis\se10\lib下存在一系列的IDL源码文件,例如!server__define.pro和verifyserver.pro。!server__define.pro定义了一个只读的系统变量!SERVER,将IDL程序运行的状态传递给客户端,!SERVER包涵一些属性(DATADIR、DOCROOT)和方法(filetourl、urltofile)。当调试IDL程序时,Verifyserver可以实例化一个服务器,自动实例化一个!server对象,如果运行在服务器上,Verifyserver将不起作用。
4、 ESE管理员控制台(Services Engine Admin Console)
ESE安装之后,可以通过“开始->程序->ENVI50->Tools-> Services Engine Admin Console”启动ESE管理员控制台。该控制台是一个Web客户端,包括多个功能选项:Tasks、Data、Nodes、Jobs、Logs、About。
Ø
Ø
Ø
Ø
Ø
Ø
图4
图5
三、 构建任务(Task)
任务(Task)就是一个数据处理、可视化或者数据分析的IDL程序,每个任务都有一个JSON配置文件(config.json)。以下是任务构建的步骤,目的是获取相应的HTTP REST 服务以便客户端调用。
1、 IDL功能开发
利用IDL语言,开发ENVI/IDL功能,例如计算NDVI、植被覆盖度、非监督分类等,ESE安装目录下提供了相关demo供参考。如果调用ENVI函数,ESE必须包含ENVI许可,服务配置文件server.cfg中的using_envi必须设置为yes。
IDL编写计算植被覆盖度程序如下:
2、 编写config.json文件
JSON(Javascript Object Notation)是一种轻量级的文本格式,ESE使用JSON文件格式在服务器和客户端之间定义输入和输出参数。
JSON有固定的格式,每个参数的具体含义可以参考ESE 帮助。
3、 插件开发
任务通过插件来部署,这里的插件非常简单,即IDL源码(.pro)文件和JSON文件(config.json)的压缩文件(ZIP格式)。
4、 上传插件
启动Services Engine管理员控制台,在Task选项卡下,选中Syncservices,点击Upload按钮,上传插件即ZIP压缩文件如图6所示。
图6
图7
5、 任务测试
插件上传成功后,即可进行任务测试,选中上传的任务,点击Task Request Builder按钮,弹出Task Request Builder对话框,输入参数,点击Submit按钮,即可得到返回的JSON结果,结果中有执行IDL后返回的结果,见图8。
图8
6、 获取HTTP REST 服务
任务测试通过,即可在Task Request Builder对话框,点击Show Request按钮得到该任务的HTTP REST服务地址。
计算植被覆盖度的HTTP REST服务地址为:
http://tiandeshan:8181//ESE/SyncService/ese_vf/execute?InServiceAdd=http://localhost/arcgis/rest/services/Solar/ImageServer
HTTP REST服务地址格式为:
http://
Variable
Value
Description
ESE
可以在server.cfg文件中定义
Sync
可以在server.cfg文件中定义
IDL routine name
任务的名称
execute
|
当任务没有输入参数时保持为空
variable name
变量的名字与任务的config.json中的参数名字一致
| | | |
true
null
string
单引、双引或者两者都不用
number
64位整型或者浮点型
JSON
详见JSON说明
四、 客户端调用HTTP REST服务
获取了HTTP REST服务地址之后,即可在客户端进行调用,服务器和客户端处理流程如图9。
图9
这里的客户端可以是基于HTML和Javascript、Flex、Silverlight等开发的web客户端,也可以是移动客户端(IOS、Android)。
Silverlight 版本 4 提供了两种发送 HTTP 请求的方法:WebClient
Silverlight 客户端中的方法调用必须是异步调用,所以都有一个回调事件,在回调事件中解析返回的JSON,获得结果的URL,然后添加到Map控件中,进行显示。
Web客户端前端运行,速度非常快,Web前端界面展示如图10,运行结果如图11所示。
图10 计算植被覆盖度
图11 植被覆盖度计算结果
- 解读ENVI Services Engine云解决方案
- JS调用Envi Services Engine发布的影像处理服务
- ENVI
- ENVI/IDL与ArcGIS Engine一体化开发的实现
- show engine innodb status解读
- show engine innodb status解读
- XNA Game Engine教程系列2- Engine, Content和Services
- 介绍Google 的云计算解决方案:Google App Engine(转)
- Apache OFbiz entity engine源码解读
- Apache OFbiz service engine 源码解读
- Apache OFbiz service engine 源码解读
- Apache OFbiz entity engine源码解读
- Apache OFbiz entity engine源码解读
- Apache OFbiz service engine 源码解读
- mysql之show engine innodb status解读
- TFS Reporting Services 错误 解决方案
- unable to load virtualbox engine解决方案
- prism4学习笔记7:RIA Services 解决方案
- Android_开源框架_Volley实例
- jquery dataTables demo
- 常用的sql语句
- 浅谈Overload和Override的区别
- HTTP请求报文和HTTP响应报文
- 解读ENVI Services Engine云解决方案
- Repeater的嵌套
- Android线程学习(三)之AsyncTask
- Android Intent 调用其他应用 setComponent
- eclipse开发hadooop2.2.0程序
- 学习笔记:android关于xml文件的操作
- Java Web开发环境的搭建
- clr via C#笔记(4)
- 如何通过ADO获得Access数据库中的所有用户表和表信息