zoukankan      html  css  js  c++  java
  • 网络分析[3] 发布NAServer到ArcGIS for Server(以Server 10.4为例)

     

     

    前阵子对ArcGIS API For JavaScript的网络分析有兴趣,但是不知道其数据是如何获取的。

    查阅API知道,AJS的网络分析只有三个功能:最短路径(RouteTask)、最近设施点(ClosestFacilityTask)和服务区(ServiceAreaTask)。

    而这三个分析类依赖的是ArcGIS Server上的NAServer(网络分析服务),于是

    如何发布NAServer,就成了我近期的研究事宜,所幸的是,这方面的资料非常丰富。

    需要注意的是:

    NAServer依赖于MapServer。

    也就是说,必须存在MapServer,才能在MapServer上启用NAServer。

    MapServer是NAServer的必要条件,但不是充分条件。

    想启用NAServer,还需要一个正常的网络数据集。

    有关如何制作网络数据集,请参考我之前的博文:点我,或者在安装了ArcGIS for Desktop的电脑上查阅帮助文档(推荐看我的,比官方的简洁粗暴)。

    1. 数据准备

    在这里,我使用了ESRI提供的网络数据集,就不自己制作了。

    读者只要知道,一个高质量的网络数据集是网络分析的基石,就足够了。

    数据来源是GP Service Examples

    我选用的是Network Analyst文件夹的SanFrancisco.gdb数据。

    可以看到Transportation要素数据集中已经准备好了Streets_ND网络数据集。

    2. 在ArcMap中打开网络数据集并创建三个对应图层

    三个图层是:路径、服务区、最近设施点。

    见下图:

    2.1 先打开网络数据集

    2.2 创建三个网络分析图层:路径、服务区、最近设施点

    图2是打开了网络分析窗口。

    3. 发布MapServer与NAServer

    这一步假设已经在本机安装了与ArcMap同版本的ArcGIS for Server,本人使用的是Server 10.4;或已经知道了远程ArcGIS for Server服务地址。

    及登陆Server的账号密码。

    发布!

    3.1 假设读者没有在ArcMap或Catalog连接过Server(看过的直接跳到3.2 发布MapServer)

    这个时候点击有个+号那个按钮

    这里填写的是Server的地址和登陆账号密码,其余默认。点击完成,ArcMap就会连接到Server了。如果是远程地址就不是localhost了哦~

    3.2 发布MapServer

    给即将发布的服务命个名,连接就选已经连接上的ArcGIS Server服务器,localhost_6443就是我本地6443端口上的ArcGIS Server服务器。

    我把这个服务放到一个新的文件夹里去,名为ForTest。登陆过ArcGIS for Server网页管理页面的人会知道,服务跟文件一样,存放于不同的目录(文件夹)下。

    例如根目录下就有一个默认的MapServer:

    点击继续。

    此时出现【服务编辑器】窗口,在功能选项卡中勾选Network Analysis功能。此时,可以点击分析,确保没有错误,警告无所谓,一般都会有十几二十个警告:

    然后点击服务编辑器右上角的【发布】即可。静等发布。

    期间会提示:

    选确定。

    恭喜,发布成功。

    ————————————————

    至此,MapServer发布成功,相当于一个mxd文档就丢到服务器上面去了;

    而那个网络数据集就支撑起了NAServer这个服务类型,三个网络分析图层就分别是NAServer中的三个图层。(听不懂?没关系,等下就知道了)

    3.3 在ArcMap中查看Server上的服务

    我们还可以顺便在ArcMap中查看AJS中需要的REST URL:

    如图所示,右键单击刚刚发布的SanFranciscoNetwork这个MapServer的服务属性

    选择Network Analysis选项卡,就可以找到REST URL了。这个很重要,见3.5 查看NAServer

    3.4 在Server网页端查看服务

    登陆ArcGIS Server管理页,找到ForTest文件夹,可以看到多了一个SanFranciscoNetwork地图服务,跟桌面端是一样的。

    3.5 查看NAServer

    把NAServer的REST URL复制粘贴到浏览器地址栏,打开:

    Route Layers、Closest Facility Layers、Service Area Layers三个图层就是我们需要用于AJS中实例化的图层了,见4举例:

    4. 在AJS中使用NAServer

    4.1 RouteTask

    这里是使用最短路径任务,需要依赖NAServer的Route Layers:

    var routeTask = new RouteTask({
    url: "https://localhost:6443/arcgis/rest/services/ForTest/SanFranciscoNetwork/MapServer/NAServer/路径"
    });

    4.2 ClosestFacilityTask

    var closestFacilityTask = new ClosestFacilityTask({
          url: "https://localhost:6443/arcgis/rest/services/ForTest/SanFranciscoNetwork/MapServer/NAServer/最近服务区"
    });

    4.3 ServiceAreaTask

    var serviceAreaTask = new ServiceAreaTask({
        url: "https://localhost:6443/arcgis/rest/services/ForTest/SanFranciscoNetwork/MapServer/NAServer/服务区"
    });

    NAServer后面紧跟着三个图层的名字,我不知道能不能在url里使用中文名,建议大家创建网络分析图层的时候使用英文名吧。

    5. 总结

    发布NAServer是依赖于MapServer的,这点无疑。

    NAServer又依赖于网络数据集。

    想要在WebGIS上使用NAServer的三个功能:路径、服务区、最近设施点,就得在发布MapServer时创建三种网络分析图层。

    在AJS中使用对应的网络分析功能,只需在NAServer的REST URL后面补上网络分析图层名即可。

  • 相关阅读:
    [tp3.2.1]sql查询语句(一)
    [crunch bang]在Crunch Bang安装和设置fcitx(小企鹅输入法)
    [tp3.2.1]大D构建模型
    [tp3.2.1]数据模型
    [tp3.2.1]开启URL(重写模式),省略URL中的index.php
    [tp3.2.1]让默认页面: 加载Home模块的Index控制器;而让admin.php默认去加载Admin模块的Adminc控制器.
    [JAVA]在linux中设置JDK环境,ZendStudio,Eclipse
    [fedora21]给fedora21安装fcitx输入法
    Software--Architecture--Design DataAccess 数据访问
    leetcode--Algorithm--Array_Part 1 Easy- 566 Reshape the Matrix
  • 原文地址:https://www.cnblogs.com/lihaijia/p/14543157.html
Copyright © 2011-2022 走看看