`
mywebcode
  • 浏览: 998393 次
文章分类
社区版块
存档分类
最新评论

解读ENVI Services Engine云解决方案

 
阅读更多

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

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

l<wbr><wbr></wbr></wbr>云计算

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

l<wbr><wbr></wbr></wbr>集群Cluster

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

l<wbr><wbr></wbr></wbr>JSON (JavaScript Object Notation)

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

l<wbr><wbr></wbr></wbr>中间件

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

l<wbr><wbr></wbr></wbr>REST (REpresentational State Transfer)<wbr><wbr></wbr></wbr>

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

l<wbr><wbr></wbr></wbr>可扩展性(Scalability

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

l<wbr><wbr></wbr></wbr>网络服务器(Web server

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

l<wbr><wbr></wbr></wbr><wbr><wbr></wbr></wbr>Web service

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

l<wbr><wbr></wbr></wbr>App

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

一、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>ESE运行模式

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

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

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

Ø<wbr><wbr></wbr></wbr>Workers:运行IDLENVI,具体执行任务;

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

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

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

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

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


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

<wbr><wbr></wbr></wbr>

二、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>ESE安装和配置

1、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>ESE安装

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

<wbr><wbr></wbr></wbr>


图2<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>ESE安装目录

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

<wbr><wbr></wbr></wbr>


图3<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>启动ESE服务

2、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>服务器配置文件

配置文件能够设置ESE的安装环境。多台机器情况下,在该文件定义ESE的集群,所以它需要有权访问集群环境里的所有机器。通过该配置文件你可以更改主机、端口(默认端口:8181)以及设置是否使用ENVI函数,详见ESE帮助。注意在更改配置文件之前,先进行文件备份。

配置文件目录:

Linux:<ESE_WORK_DIR>/bin/server.cfg

Windows:<drive>:\Exelis\se10\bin\server.cfg

3、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>系统变量

在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、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>ESE管理员控制台(Services Engine Admin Console

ESE安装之后,可以通过“开始->程序->ENVI50->Tools-> Services Engine Admin Console”启动ESE管理员控制台。该控制台是一个Web客户端,包括多个功能选项:TasksDataNodesJobsLogsAbout

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

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

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

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

Ø<wbr><wbr></wbr></wbr>Jobs可以查看任务执行状。

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

<wbr><wbr></wbr></wbr>


图4<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>任务(Tasks)功能项

<wbr><wbr></wbr></wbr>


图5<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>节点(Nodes)功能项

三、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>构建任务(Task

任务(Task)就是一个数据处理、可视化或者数据分析的IDL程序,每个任务都有一个JSON配置文件(config.json)。以下是任务构建的步骤,目的是获取相应的HTTP REST服务以便客户端调用。

1、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>IDL功能开发

利用IDL语言,开发ENVI/IDL功能,例如计算NDVI、植被覆盖度、非监督分类等,ESE安装目录下提供了相关demo供参考。如果调用ENVI函数,ESE必须包含ENVI许可,服务配置文件server.cfg中的using_envi必须设置为yes

IDL编写计算植被覆盖度程序如下:



<wbr><wbr></wbr></wbr>

2、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>编写config.json文件

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

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


<wbr><wbr>计算植被覆盖度的<span style="word-wrap:normal; word-break:normal">IDL</span>程序,对应的<span style="word-wrap:normal; word-break:normal">JSON</span>文件为:</wbr></wbr>


<wbr><wbr></wbr></wbr>

3、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>插件开发

任务通过插件来部署,这里的插件非常简单,即IDL源码(.pro)文件和JSON文件config.json)的压缩文件(ZIP格式)。

4、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>上传插件

启动Services Engine管理员控制台,在Task选项卡下,选中Syncservices,点击Upload按钮,上传插件即ZIP压缩文件如图6所示。

<wbr><wbr></wbr></wbr>


图6<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>上传插件

<wbr><wbr></wbr></wbr>


图7<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>植被覆盖度任务

5、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>任务测试

插件上传成功后,即可进行任务测试,选中上传的任务,点击Task Request Builder按钮,弹出Task Request Builder对话框,输入参数,点击Submit按钮,即可得到返回的JSON结果,结果中有执行IDL后返回的结果,见图8。

<wbr></wbr>

图8<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>任务测试

6、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>获取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://<wbr><wbr></wbr></wbr><wbr><wbr></wbr></wbr>:<wbr><wbr></wbr></wbr><wbr><wbr></wbr></wbr>/<wbr><wbr></wbr></wbr><wbr><wbr></wbr></wbr>/<wbr><wbr></wbr></wbr><</FONT>service><wbr><wbr></wbr></wbr>/<wbr><wbr></wbr></wbr><wbr><wbr></wbr></wbr>/<wbr><wbr></wbr></wbr><wbr><wbr></wbr></wbr>?<wbr><wbr></wbr></wbr>

Variable

Value

Description

<wbr></wbr>

ESE

可以在server.cfg文件中定义

<wbr></wbr>

Sync<wbr><wbr>|<wbr><wbr>Async</wbr></wbr></wbr></wbr>

可以在server.cfg文件中定义

<wbr></wbr>

IDL routine name

任务的名称

<wbr></wbr>

execute<wbr><wbr>|<wbr><wbr>submitJob</wbr></wbr></wbr></wbr>

<wbr><wbr></wbr></wbr>

<wbr></wbr>

| <wbr><wbr>&amp;<wbr><wbr></wbr></wbr></wbr></wbr>

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

<wbr></wbr>

<wbr><wbr>=<wbr><wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr></wbr>

<wbr></wbr>

variable name

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

<wbr></wbr>

| | | |

<wbr><wbr></wbr></wbr>

<wbr></wbr>

true<wbr><wbr>|<wbr><wbr>false</wbr></wbr></wbr></wbr>

<wbr><wbr></wbr></wbr>

<wbr></wbr>

null

<wbr><wbr></wbr></wbr>

<wbr></wbr>

string

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

<wbr></wbr>

number

64位整型或者浮点型

<wbr></wbr>

JSON

详见JSON说明

四、<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>客户端调用HTTP REST服务

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

<wbr><wbr></wbr></wbr>

图9<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>ESE处理流程

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

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

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

<wbr><wbr></wbr></wbr>

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


<wbr><wbr></wbr></wbr>

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

<wbr><wbr></wbr></wbr>


图10计算植被覆盖度

<wbr><wbr></wbr></wbr>


图11植被覆盖度计算结果

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics