文档库 最新最全的文档下载
当前位置:文档库 › ENVI for ArcGIS Server操作文档

ENVI for ArcGIS Server操作文档

ENVI for ArcGIS Server(简称ENVI ES)

操作文档

Esri中国信息技术有限公司

2012年11月

技术支持热线:400-819-2881 支持E-mail:envi-idl@https://www.wendangku.net/doc/b83520682.html,

目录

一、安装前准备 (4)

二、ENVI for ArcGIS Server角色和数据输入输出 (4)

2.1、ENVI ES角色 (4)

(1)服务创建者 (4)

(2)服务使用者 (4)

2.2、数据的输入与输出 (5)

(1)数据输入 (5)

(2)数据输出 (5)

三、发布服务 (5)

3.1、创建共享文件结构 (5)

(1)创建文件夹 (5)

(2)创建数据源 (6)

(3)新建模型 (6)

3.2、模型构建 (7)

(1)添加工具 (7)

(2)连接数据库 (8)

(3)定义栅格输入数据 (8)

(4)加载ENVI Tools工具 (9)

(5)添加Classify Without Training工具参数 (9)

(6)定义输出路径 (10)

3.3、发布GP服务 (11)

(1)登陆ArcGIS Server Manager (11)

(2)常规(General)窗口 (11)

(3)参数设置窗口 (12)

(4)完成 (13)

3.4自定义ENVI Tools工具 (13)

(1)准备存放文件夹 (14)

(2)编写Python脚本文件 (14)

(3)编写IDL.pro文件 (15)

(4)将.pro文件编译成.sav文件 (16)

(5)创建用户界面 (17)

(6)运行工具 (19)

四、调用服务 (20)

4.1、ArcGIS Desktop调用GP服务 (20)

(1)复制URL (20)

(2)使用GIS服务 (20)

(3)填写URL (21)

(4)运行GP服务 (22)

(5)查看服务运行结果 (23)

一、安装前准备

ENVI for ArcGIS Server软硬件支持以及安装请参阅ENVI for ArcGIS Server 安装指南。在安装ENVI for ArcGIS Server之前系统需要安装ArcGIS Server9.3或者10版本、ArcGIS Desktop 9.3或者10版本、ENVI4.8产品,如果数据源使用ArcSDE则还需要安装ArcSDE和数据库例如SQL Server、Oracral。

二、ENVI for ArcGIS Server角色和数据输入输出

2.1、ENVI ES角色

对于ENVI ES我们定义了两个角色来说明怎样和何时使用ENVI Tools for ArcGIS,也许两个角色是由一个人来充当。

(1)服务创建者

服务创建者使用ENVI Tools for ArcGIS来创建模型,并且利用ENVI for ArcGIS Server和ArcGIS Server将模型发布成服务。服务创建者的工作流程如下:

●自定义模型

●确保模型可以再ArcGIS Desktop中运行

●拷贝模型到安装有ArcGIS Server的机器上

●将模型发布成服务

要完成上面的工作流程,需要以下产品:

●ENVI (开发者)

●ArcGIS Desktop (开发者)

●ENVI for ArcGIS Server: 安装在装有ArcGIS Server的机器上

●ArcGIS Server: 服务创建者必须是agsadmin用户组成员,而且对机器

有读写权限

(2)服务使用者

服务使用者使用服务创建者发布的GP服务。这个角色需要知道怎么在Arcgis Server中找到发布的GP服务。服务使用者的工作流程如下:

●连接ArcGIS Server。

●使用发布的GP服务

因此服务使用者需要以下产品:

●ArcGIS Desktop

●ArcGIS Server

2.2、数据的输入与输出

ENVI Tools for ArcGIS的大部分工具都是对栅格数据的处理然后输出栅格数据。这部分就介绍当利用ArcGIS Desktop、ENVI forArcGIS Server和ArcGIS Server创建和发布模型的时候怎么样存放数据能够产生最好的结果。

(1)数据输入

下面是怎么创建在Server上可以运行的GP服务的推荐方式。如果你不使用以下方式之一,数据可能是以.tif格式提交给服务器的。

1、服务使用者使用Select Data(数据管理工具箱)工具来从SDE、文件地理数据库或者Server上的数据文件夹中来选择栅格数据集

2、如果你想服务常常用于同一个数据,可以为ENVI 工具指向服务器上一个特定位置的数据。

3、向ENVI工具指定网络共享数据作为输入栅格数据(确保SOC账户有相应权限,具体情况参见ArcGIS 帮助:Data Access Considerations for Geoprocessing Tasks)(2)数据输出

当输出栅格数据作为参数时,则执行GP服务会在ArcGIS Desktop客户端生成GeoTiff格式的副本。ENVI格式的数据将生成在临时目录下。

三、发布服务

本例中使用的是文件地理数据库,如果是使用SDE请参考帮助文档,要先在Catalog中进行数据库连接。

3.1、创建共享文件结构

(1)创建文件夹

在ArcGIS Catalog或者windows资源管理器中创建如下文件结构。其中Docs

文件夹存放帮助文档,Scrach是临时工作空间,Scripts存放自定义ENVI Tools 工具所需的.py文件和.sav文件,这种文件结构不是必须的,但是这样可以更好的组织数据,方面实现共享。右击MyTool文件夹,选择新建(News)->工具箱(Toolbox)名字命名为MyToolbox。

图3-1 文件结构

(2)创建数据源

在ToolData文件夹上右击,选择新建(News)->文件地理数据库(File Geodatabase),重命名为MyData。选择MyData然后右击选择导入->栅格数据集将ENVI安装示例下IDL\IDL80\examples\data\boulder.tif文件导入数据库。(3)新建模型

右击MyGPServer工具箱,选择新建( New) -> 模型(Model )弹出模型构建界面。在模型构建窗口中,选择模型菜单->模型属性,输入模型名称和标签(例如两个都输入ClassifyWithoutTrainingModel)。然后勾选存储相对路径(Store relative path names)点击确定。

图3-2 模型属性

3.2、模型构建

(1)添加工具

利用Build Model窗口中的添加,或者直接通过拖拽的方式将数据管理工具箱(Data Management Tools)->常规(General)->选择数据(Select Data)放入模型构建器中。

图3-3 选择数据工具

(2)连接数据库

右击选择数据(Select Data)->获取变量(Make Variable)->从参数(From Parameter)->输入数据元素(Input Data Element),右击输入数据元素(Input Data Element)选择重命名例如输入MyData。双击MyData,导航到c:\MyTool\ToolData文件夹,选中MyData.gdb点击添加。

图3-4 连接数据库

(3)定义栅格输入数据

右击选择数据(Select Data)->获取变量(Make Variable)->从参数(From Parameter)-> 子数据元素(Child Data Element),右击子数据元素(Child Data

Element)选择模型参数(Model Parameter)则旁边出现一个P。

图3-5 定义栅格输入数据

(4)加载ENVI Tools工具

在ArcToolbox展开ENVI Tools工具箱,然后找到Image Processing中的Classify Without Training工具,拖放到模型中。在模型窗口中使用链接工具连接输出数据元素到Classify Without Training,连接的时候选择Input Raster,效果如图。

图3-6 加载ENVI Tools工具

(5)添加Classify Without Training工具参数

现在为Classify Without Training工具加入三个参数: Requested Number of Classes, Maximum Iterations, and Change Threshold Percent. 参照下面说明将模型构建如图所示。

右击Classify Without Training 选择Make Variable > From Parameter > Requested Number of Classes. 右击Requested Number of

Classes选择 Model Parameter. 将Requested Number of Classes与

Classify Without Training建立连接。选中右击选择模型参数,则旁

边出现P符号。

●右击Classify Without Training 选择Make Variable > From

Parameter > Maximum Iterations. 右击Maximum Iterations选择

Model Parameter. 将Maximum Iterations与Classify Without Training建立连接。选中右击选择模型参数,则旁边出现P符号。

●右击Classify Without Training 选择Make Variable > From

Parameter > Change Threshold 右击Change Threshold选择 Model Parameter. 将Change Threshold与Classify Without Training建立

连接。选中右击选择模型参数,则旁边出现P符号。

图3-7 添加Classify Without Training参数

(6)定义输出路径

现在定义输出栅格文件的位置. 双击Output Raster输入%scratchworkspace%\classificationRaster模型执行时将 %scratchworkspace% 替换为临时工作空间。最终的模型如图所示,在发布模型之前最好在ArcGIS Desktop中运行,检验模型正确性。

图3-8 定义输出路径

3.3、发布GP服务

发布GP服务之前,确保已经安装了ArcGIS Server并且有许可。用户组必须属于agsadmin用户组,对计算机有读写权限。这里使用ArcGIS Server Manager 来发布服务,也可以使用ArcGIS Desktop或者ArcGIS Catalog。

(1)登陆ArcGIS Server Manager

图3-9 登陆ArcGIS Server Manager

(2)常规(General)窗口

登陆ArcGIS Server Manager之后点击服务选项卡->添加新服务,弹出常规

窗口。输入服务名称如MyToolService,选择服务类型Geoprocessing Service。然后点击下一步。

图3-10 选择GP服务类型

(3)参数设置窗口

点击浏览按钮,在文件选择对话框中点击你的服务器名称,导航到MyTool 文件夹下,选择MyToolbox.tbx。注意如果找不到MyTool文件夹确保该文件夹已经进行共享设置,并添加了权限。然后确保作业目录和输出目录设置正确而且显示消息(Show Messages)被选中(这样在测试服务的时候可以看到详细的操作步骤,真正发布服务的时候可以不勾选),这样处理的结果消息才会显示到用户桌面程序中。同步与异步的区别就是将数据提交给服务器,如果运行时间短就选择同步,这样用户等待输出结果,不能进行其他操作;否则选择异步操作用户在等待结果的同时可以进行其他操作且在服务器端生成结果数据副本,默认目录在C:\arcgisserver\arcgisjobs。

图3-11 选择工具箱

(4)完成

一路点击下一步,如果要进行精确设置,请参考ArcGIS Server的帮助。最后点击完成,创建和重启服务。在服务选项卡->管理服务中查看刚刚发布的服务。如果不能查看到刚刚发布的服务试着清除REST缓存,地址为:http://计算机名称/arcgis/rest/admin ,登陆进去之后点击立即清除即可。

图3-12 查看服务

3.4自定义ENVI Tools工具

当ENVI Tools工具箱中的工具无法满足其业务需求时可以通过IDL语言和Python脚本语言自定义ENVI Tools工具,一般分为以下六步:

◆准备存放文件夹

◆编写Python脚本文件

◆编写IDL.pro文件

◆将.pro文件编译成.sav文件

◆创建用户界面

◆运行新脚本工具

(1)准备存放文件夹

在某个路径下新建一个文件夹,建立之后不要随意改动其位置,该文件夹存放.py文件和.sav文件。例如C:\Users\Administrator\Desktop\MyTool\Scripts\MyScript (2)编写Python脚本文件

Python脚本格式一般都是固定的,分三步:导入envipy、获取参数、调用RunTool函数。有一点要注意,python中脚本必须顶格写不能出现空格,否则会出现错误。将如下程序复制到txt中,修改txt格式为.py。存放在C:\Users\Administrator\Desktop\MyTool\Scripts中。

注意:多个pro文件也可以编译成一个sav文件来调用,只是要写清楚python 文件中的toolname,这个名称一定要对应着pro文件的主程序名称。

ArcGIS 10下的脚本格式如下:

1.# Python Code example for calling an ENVI DOIT Routine

import envipy, arcpy

# Get input raster

inRasterName = arcpy.GetParameterAsText(0)

# Get output raster

outRasterName = arcpy.GetParameterAsText(1)

# Get the Kernel Size

kernelSize = arcpy.GetParameterAsText(2)

# IDL procedure name in the SAVE file for this tool

toolname = 'MyScriptTool'

# Execute ENVI custom tool

# If the save file is not in the same directory as this python

# file, then you will need to add a full path to the save file e.g., # Library = r'c:\savefiles\MyEnviTool.sav'

envipy.RunTool(toolname, inRasterName,

outRasterName,kernelSize,Library=r'MyScripyTool.sav')

其中RunTool函数的语法如图所示:

图3-13 RunTool语法

(3)编写IDL.pro文件

IDL程序中不用初始化ENVI即不可出现envi,/RESTORE_BASE_SAVE_FILES ENVI_BATCH_INIT ……………………. ENVI_BATCH_EXIT语句。而且每个程序保存的名字一定是该程序主程序的名称。当然多个pro文件也可以编译成一个sav文件,只要在python中写清楚toolname名字即可。下面是IDL 的源码。

pro MyScripyTool,inRasterName,outRasterName,kernelSize

compile_opt idl2,hidden

;inRasterName='G:\programfile\envi48\IDL\IDL80\examples\data\boulder.tif'

;outRasterName='C:\Users\tiandeshan\Desktop\MyTool\dd.dat'

;kernelSize=7

kernelType=2

if (Envi_Is_Gdb(inRasterName)) then begin

Envi_Open_Gdb,inRasterName,R_FID=fid

endif else begin

Envi_Open_File,inRasterName,R_FID=fid

endelse

if (fid eq -1) then begin

errMsg='Error:Failed to open input:'+inRasterName

Envi_Report_Error,errMsg

Return

endif

Envi_File_Query,fid,dims=dims,nb=nb

pos=Lindgen(nb)

outRasterNameTmp=outRasterName

if (Envi_Is_Gdb(outRasterNameTmp))then $

outRasterNameTmp=Envi_Get_tmp()

Envi_Doit,'Conv_Doit',FID=fid,OUT_NAME=outRasterNameTmp,$

KX=kernelsize,METHOD=kernelType,R_FID=outFid

if (outFid eq -1) then begin

envi_report_error,'Error:Failed to complete processing.'

return

endif

if (envi_is_gdb(outrastername)) then begin

envi_output_to_gdb,fid=outfid,out_name=outrastername

envi_file_mng,id=outfid,/remove,/delete

return

endif else begin

outstaname=file_dirname(outrastername,/mark_directory)+$

file_basename(outrastername,'.dat')+$

'.sta'

envi_doit,'envi_stats_doit',comp_flag=1,fid=outfid,$

dims=dims,pos=pos,sta_name=outstaname

endelse

end

(4)将.pro文件编译成.sav文件

将如下命令依次输入命令行中。

①重置IDL

.full_reset_session

②点击工具条上的编译按钮

③解除函数或者程序占用

RESOLVE_ALL, SKIP_ROUTINES='envi', /CONTINUE_ON_ERROR, /QUIET

④创建.sav文件

SAVE, /ROUTINES, FILENAME = 'C:\Users\Administrator\Desktop\MyTool\Scripts\MyScripyTool.sav' (5)创建用户界面

①在ArcGIS目录中找到C:\Users\Administrator\Desktop\MyTool路径下的MyToolbox 上右击选择添加->脚本弹出添加脚本对话框。注意:名称中不要有下划线和空格,标签中可以有特殊符号,勾选存储相对路径名。

图3-14 添加脚本

②选择脚本文件

图3-15 选择python文件③参数设置

图3-16 参数设置和参考

(6)运行工具

图3-17 工具参数选择

图3-18 工具运行结果

四、调用服务

4.1、ArcGIS Desktop调用GP服务

(1)复制URL

确保服务启动状态,然后点击服务,点击功能选项卡,复制URL。

图4-1 复制URL

(2)使用GIS服务

在ArcMAP的目录中找到GIS服务器,展开后双击添加ArcGIS Server,弹出添加ArcGIS Server窗口。选择使用GIS服务。点击下一步。

相关文档
相关文档 最新文档