地理处理服务示例:河流网络
文件夹 |
StreamNet |
权限用途 |
根据流向和流量数据创建河流网络 |
服务 |
|
地理处理任务 |
Create Stream Network |
输入 |
最小上游面积(以公顷为单位) |
输出 |
河流网络 |
数据 |
使用 Spatial Analyst 教程中的数字高程数据(栅格)和其他数据 |
扩展模块 |
Spatial Analyst |
注释 |
使用结果地图服务绘制网络 |
对应的文件夹
本示例的数据可从 ArcGIS.com 下载。下载后,提取 zip 文件至 C:\arcgis\ArcTutor。GP Service Examples\StreamNet 文件夹包含了完成的模型和数据。
关于 Create Stream Network 任务
Create Stream Network 任务的主要目的是为制图显示生成河流网络。两种结果如下图所示,使用研究区域(佛蒙特州的斯托镇)的山体阴影图作为引用地图。此项服务的意义在于允许用户生成多个不同的网络,然后选择一个满足其制图需求的网络。
该任务创建的是由最小面积定义的河流网络,面积越小,生成的河段越多。每条河段都将根据上游河段数分配一个河网分级值,该值用于确定每条河段的显示线宽。
生成的河段数取决于使用的最小面积。如果输入为 1 公顷,则大约可生成 32,000 条河段。而如果为 45 公顷,大约只生成 600 条河段。
创建地理处理服务时需要做出的决定之一就是确定允许从服务器返回客户端的最大记录和要素数量。默认值为 1,000,您也可将该值增大到数十亿。但在 Web 上传输大量要素既昂贵又缓慢。如果您的任何一项服务可能需要输出大量要素,都应考虑使用结果地图服务创建包含结果的地图,从而使 ArcGIS for Server 在 Web 上传输地图而非要素。由于 Create Stream Network 任务生成的河段数量取决于最小流域面积,因此在替换数据时(研究区域的大小和拓扑),在本例中使用的是结果地图服务绘制结果,而不是将要素在 Web 上传输到客户端。
准备工作
在发布地图和地理处理服务之前,您将需要创建 GIS 服务器连接。
设置 GIS 服务器连接
您将需要设置一个发布程序连接,可以供您使用和发布至 ArcGIS for Server。
- 在目录 窗口中,导航至 GIS 服务器节点,然后双击添加 ArcGIS Server。
- 选择发布 GIS 服务,然后单击下一步。
- 为您的 GIS 服务器输入服务器 URL例如,http://myserver:6080/arcgis/。输入用户名和密码,然后单击完成。您现在在目录 窗口的 GIS 服务器节点下拥有一个指向 GIS 服务器的(发布程序)连接。
引用地图
如下图所示,本例中的引用地图 StoweHillshade.mxd 只包含一个图层 Hillshade。Hillshade 图层以 55% 的透明度绘制。
StoweHillshade.mxd 需要作为地图服务发布,此地图服务将在使用地理处理服务时提供参考。
- 启动新 ArcMap 会话。
- 打开“StoweHillshade”地图文档。
- 从文件菜单,单击共享为 > 服务。
- 选择发布服务,然后单击下一步。
- 选择在设置 GIS 服务器连接时创建的发布程序连接。接受默认名称,然后单击下一步。
- 单击创建新文件夹并输入 Stream。这将创建一个文件夹,以保存您发布的服务。
- 单击继续以启动服务编辑器。
- 单击分析 按钮。修复所有错误。
您应会收到一个警告 - 数据会复制至服务器上 - 以及一个信息 - 图层将按照所有比例范围绘制。您可以完全忽略这些消息或采取您觉得合适的做法。
- 单击发布 按钮以完成地图服务的发布。
模型和工具数据
该地理处理服务的工具箱和源地图文档分别为 StoweStreamNet.tbx 和 StoweStreamNet.mxd。StoweStreamNet.mxd 包含两个源数据图层:Flow Direction(flowdir 栅格)和 Flow Accumulation(accumulation 栅格)。
通过双击从目录 窗口打开 StoweStreamNet 地图文档。
模型概览
为了更好地理解模型,展开 StoweStreamNet.tbx 工具箱,右键单击“创建河流网络”模型并选择编辑。Create Stream Network 模型如下图所示。有一个输入变量:最小上游面积(以公顷为单位)。此变量为双精度型,表示创建河段所需的最小流域面积。面积越小,创建的河段越多。
该模型可计算出输入面积中的栅格像元数,然后使用条件函数工具对 Flow Accumulation 栅格中的每个输入像元执行 if-else 条件评估。由于 Flow Accumulation 栅格中的像元值即为流入该像元的上游像元数,因此上游面积大于中断值的所有像元都会被选中。选中的像元将形成河段,并在输出栅格中分配 1。
河网分级工具可将数字分级值分配给表示线性网络分支的栅格,例如条件函数工具的输出。通常,分级高表示水流量大,因此河流分级也可视为河流宽度的代名词。该模型的输出已经过符号化处理,以便使用较宽的线绘制分级值较高的河段。
栅格河网矢量化工具可将 Stream Order Raster 转换为输出线要素类。此要素类将由结果地图服务使用自身定义的符号系统绘制。
项目数据
Flow Accumulation 和 Flow Direction 变量是源地图文档 StoweStreamNet.mxd 中的图层。在术语中,这两个变量称为项目数据,因为它们均属于非参数输入数据。
计算最小面积中的像元数
所有的栅格数据集都在佛蒙特州平面坐标(使用线性单位米)内。像元大小为 30 米 x 30 米。要确定栅格的空间参考和像元大小,可执行以下操作之一:
- 在目录 窗口中,右键单击栅格,然后单击属性。
- 在 ArcMap 内容列表中,右键单击栅格图层,单击属性,然后单击源选项卡。
计算值工具用输入公顷数除以单位为公顷的像元大小(30 米 x 30 米 = 900 平方米 = 0.09 公顷)可得出最小上游面积中的像元数。如下图所示,计算值工具的参数需要使用变量替换。在变量名旁放置百分号 (%),即可将该变量的内容替换为该值。
条件函数使用流程
条件函数工具可对 Flow Accumulation 栅格中的每个输入像元执行 if-else 条件评估。
请注意,表达式需要使用变量替换。在表达式中,值大于最小像元数的所有像元均会被选中。(Flow Accumulation 栅格中像元的值即为流入各个像元的像元数。)
输入条件为真时所取的栅格数据或常数值参数是要向每个所选像元分配的值,它设置为 1。
栅格河网矢量化使用流程
栅格河网矢量化工具可为 Stream Order Raster 中包含的河段创建 shapefile。
设置输出符号系统
- 展开 StoweStreamNet.tbx 并双击创建河流网络模型。
- 接受默认的 45 公顷并单击确定以执行模型。
- StreamNet 图层将添加至 ArcMap。
- 右键单击 StreamNet 图层,单击属性以打开图层属性 窗口。
- 通过下列步骤中,您可将此符号改为分级线符号。单击符号系统选项卡以设置合适的符号系统。
- 单击数量类别下的分级符号。
- “值”字段选择 GRID_CODE。
- 单击分类。
- 在分类 对话框上选择手动作为分类方法。
- 可将手动分类的中断值设为 100、250、500、750 和 10000。在中断值面板中单击列表中的最后一个值。这样您便可编辑该值。输入其中一个中断值,例如 10000。列表将会刷新,值也会排序。
- 继续编辑和设置中断值,直到列表显示为下图所示内容为止。
- 单击确定。符号系统选项卡此时显示如下。您可能需要单击模板并选择一种合适的蓝色将颜色重设为蓝色。
- 单击确定。
- StreamNet 图层的图例将 GRID_CODE 显示为分类字段,这个名称对于使用服务的用户来说没什么意义。要进行更改,可在图例中单击 GRID_CODE,再按 F2 键,然后将文本更改为描述性更强的内容,例如 Shreve Order 或 Stream Order。
发布
要发布地理处理服务,请执行以下步骤:
- 在结果 窗口中,右键单击 Create Stream Network 结果并选择共享为 > 地理处理服务。
- 选择发布服务,然后单击下一步。
- 选择在设置 GIS 服务器连接时创建的发布程序连接。将服务名称更改为 StoweStreamNet 并单击下一步。
- 从使用现有文件夹下拉列表中选择您发布地图时创建的 Stream 文件夹,并单击继续以打开服务编辑器。
- 单击分析 按钮。应该没有错误。如果有,则纠正后才能继续进行。
- 打开参数页面以设置服务的属性。
- 选中通过地图服务查看结果复选框。此设置可使地理处理服务在返回要素外再返回一个输出的结果图像。
- 或者,也可将消息级别设置为信息以在运行服务时查看工具执行消息。
- 单击发布 按钮以完成地理处理服务的发布。
使用服务
要使用服务,请启动 ArcMap,然后从之前创建的用户连接添加 StoweHillshade 地图服务。从同一个 GIS 服务器连接中的 StoweStreamNet 地理处理服务打开 Creat Stream Network 任务。对参数最小上游面积(以公顷为单位)赋值并执行任务。请不要添加 Create Stream Network 地图服务因为这是一个结果地图服务。
配置您自己的河流网络任务
为设置您自己的河流网络任务,您可以对此教程中收录的模型使用您自己的数据。为使用您自己的数据设置模型,您将需要使用流向和流量工具以预先计算栅格输入。您不需要创建山体阴影,尽管山体阴影工具的输出提供了一个可供绘制河流网络的有效引用地图。
一旦您创建了输入栅格后,模型内即更新这些输入。除此之外,您可能还希望给最小上游面积(以公顷为单位)参数添加一个合适的范围,您的用户将使用该参数提供数值。通过设定一个适合您的栅格的范围,您可以确保给出了有效输入。
- 右键单击模型,然后选择属性。
- 选择参数选项卡并单击 Minimum upstream area in hectares parameter 的过滤器标题下的无值。
- 从下拉列表中选择范围。
- 输入最小值和最大值,单击确定接受更改。
您所允许的最小值可影响返回的要素个数。如果您要创建的服务可能会产生大量的河流(要素),您可能需要在发布时增加返回给服务器的最大记录数。或者,您将值设为 0 可返回 0 个要素,因为您使用结果地图服务来发布服务以绘制结果。
发布前所做的最后一项修改是关于在分类符号系统中设置适当的中断值。中断主要取决于您研究区域的大小,而您将需要尝试不同的中断值。具有更多潜在河流的较大研究区域可能需要您创建具有更大值的中断。按照以上关于设置输出符号系统的说明操作。