解读ENVI Services Engine云解决方案

来源:互联网 发布:录制视频软件 知乎 编辑:程序博客网 时间:2024/06/06 16:36

ENVI Services Engine(简称ESE)Exelis VIS公司最新推出的云遥感服务解决方案,ESE是以服务方式部署遥感功能,即以Web Services 形式存在的IDLENVI在云端处理,客户端可以在线,按需(on-line,on-demand)请求遥感服务。ESE采用开源标准,与中间件无关的体系结构,可以将一个资源上部署的图像分析功能传递给多个平台,允许用户通过InternetWeb客户端或者移动客户端上进行大数据量的高级分析。

在阅读下面内容前,我们简单了解以下几个概念:

l  云计算

远程处理或储存,经常用于提高运算性能,扩展性,数据分配等。

l  集群Cluster

很多计算机连接在一起相当于一台计算机,为了分布式处理,高可用性和负载均衡。

l  JSON (JavaScript Object Notation)

基于文本的开放式标准,旨在人可读的数据交换,拟替代XML

l  中间件

处在ESE 和客户端中间的软件,如包括目录和影像服务。

l  REST (REpresentational State Transfer) 

定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的 Web 服务,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态。已成为一个主要的Web API设计模型。

l  可扩展性(Scalability

工作量增加时,可以增加硬件资源以无缝处理这些工作。

l  网络服务器(Web server

传递Web内容,且通过互联网可以访问。

l   Web service

在互联网或者云上,以网络地址的形式提供的软件功能 (“永远在线”)

l  App

用于运行特定分析功能的处理客户端和任务。

一、            ESE运行模式

ESE构架于主流的REST框架上并且能够运行在集群环境中,它具有可伸缩性和负载平衡功能,如图1ESE运行的一个典型的流程图。ESE从客户端获得HTTPREST请求,ESE执行遥感相关的处理请求,然后将结果传送给应用程序APPESE影像处理功能以JSON标准封装,可以与其他中间件(如ArcGIS Server)提供的影像数据服务无缝结合。

ESE中包括MasterWorkerNode Leader三种不同的运行角色:

Ø  Master:从客户端接受请求、向Workers传递请求,它是一个节点的领导者而不运行IDLENVI

Ø  Workers:运行IDLENVI,具体执行任务;

Ø  Node leaders:监视workers、重启workers(如有必要)等。

当不同客户端发送请求时,服务器上的Master进程将接收和应答请求。如果请求的是任务(Task)或者系统的信息,Master将信息返回给客户端。如果请求的是执行任务,那么Master就会将请求分配给它下面的Worker去具体执行,然后将执行结果返回给客户端。

Worker进程能够运行在ESE集群环境中的任何机器上。集群中的所有节点绑定了一个特定的Master主机,也就是说,集群环境中的一个节点运行着ESE可执行的实例,该可执行文件与集群中的其他节点一样与同一个master主机通信,该master主机可以通过服务器配置文件指定。节点的安装方式有两种:

l  通常,集群中的所有节点都运行同一个安装目录。安装目录可以驻留在网络文件系统(NFS)和分布式文件系统(DFS)挂载点上。

l  如果集群上的所有节点分享一个共同的“工作目录”,每个节点就可以有本地安装目录。


图1 可伸缩和负载均衡运行流程

 

二、            ESE安装和配置

1、           ESE安装

目前ESE支持64位的LinuxWindows系统,安装ESE之前,确保机器上已经安装了ENVI/IDL产品。ESE安装之后可以通过“开始->程序->ENVI50->Help->ENVI Services Engine Help”启动ESE帮助。安装ESE之后会创建两个目录:一个是ESE目录(称为ESE_WORK_DIR);另一个用来存储IDLENVI文件。安装目录如图2

 


图2    ESE安装目录

安装完成后,可以手动启动ESE服务如图3所示。

 


图3    启动ESE服务

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客户端,包括多个功能选项:TasksDataNodesJobsLogsAbout

Ø  Tasks下包括同步服务和异步服务,可以上传插件构建任务以及执行任务,见图4

Ø  Data下显示:\Exelis\se10\docroot\data路径下的数据

Ø  ESE中包括MasterWorkerNode LeaderMaster:从客户端接受请求、向Workers传递请求、不运行IDLENVI、是一个节点领导者。Workers:运行IDLENVINode leaders:监视workers、重启workers

Ø  Nodes下可以查看集群环境中的Master节点和执行任务的Workers数目,见图5

Ø  Jobs可以查看任务执行状。

Ø  Logs包括详细的日志文件,可以通过查看日志文件,查找错误来源。

 


图4    任务(Tasks)功能项

 


图5    节点(Nodes)功能项

三、            构建任务(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文件

JSONJavascript Object Notation)是一种轻量级的文本格式,ESE使用JSON文件格式在服务器和客户端之间定义输入和输出参数。

JSON有固定的格式,每个参数的具体含义可以参考ESE 帮助。


  计算植被覆盖度的IDL程序,对应的JSON文件为:


 

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://  :  /  / <</FONT>service> /  /  ? 

Variable

Value

Description

 

ESE

可以在server.cfg文件中定义

 

Sync Async

可以在server.cfg文件中定义

 

IDL routine name

任务的名称

 

execute submitJob

 

 

|  

当任务没有输入参数时保持为空

 

 

 

 

variable name

变量的名字与任务的config.json中的参数名字一致

 

| | | |

 

 

true false

 

 

null

 

 

string

单引、双引或者两者都不用

 

number

64位整型或者浮点型

 

JSON

详见JSON说明

四、            客户端调用HTTP REST服务

获取了HTTP REST服务地址之后,即可在客户端进行调用,服务器和客户端处理流程如图9

 

图9    ESE处理流程

这里的客户端可以是基于HTMLJavascriptFlexSilverlight等开发的web客户端,也可以是移动客户端(IOSAndroid)。

Silverlight 版本 4 提供了两种发送 HTTP 请求的方法:WebClient  HttpWebRequest。这里采用基于事件的异步编程模型WebClient发送HTTP请求。

解读ENVI <wbr>Services <wbr>Engine云解决方案

 

Silverlight 客户端中的方法调用必须是异步调用,所以都有一个回调事件,在回调事件中解析返回的JSON,获得结果的URL,然后添加到Map控件中,进行显示。


 

Web客户端前端运行,速度非常快,Web前端界面展示如图10,运行结果如图11所示。

 


图10 计算植被覆盖度

 


图11 植被覆盖度计算结果

原创粉丝点击