发布和使用ArcGIS Server 服务之--地图服务(Mapserver)

前面我们知道arcgis server都有那些服务以及这些服务是干什么的,有什么用,具体参考:
arcgis server的各种服务类型简要介绍
下面,我就以这个顺序来介绍一下:地图服务:发布和使用ArcGIS Server 服务之–地图服务(Mapserver)
要素服务:发布和使用 ArcGIS Server 服务之–要素服务(feature server)
影像服务:发布和使用 ArcGIS Server 服务之–影像服务(image server)
OGC 服务:发布和使用 ArcGIS Server 服务之–OGC服务(WMS/WMTS/WFS/WCS/WPS)
缓存服务:发布和使用 ArcGIS Server 服务之–缓存服务(TileServer)(一)
缓存服务:管理和迁移ArcGIS Server服务和缓存服务(TileServer)(二)
发布和使用ArcGIS Server 服务之–地理处理服务(Geoprocessing service)
矢量切片服务:发布和使用 ArcGIS enterprise 服务之–矢量切片服务(vector server)
、场景服务
、地理数据服务、以及几何服务、KML 服务、地理编码服务、定位器Maritime Server、路径服务、Schematics 服务、流服务、公共设施网络服务、Workflow Manager 服务等;等,以及如何使用JS调用这些服务。

1.什么是地图服务?

地图服务是一种利用 ArcGIS 使地图可通过 Web 进行访问的方法。

您首先在 ArcMap 中制作地图,然后将地图作为服务发布到 ArcGIS Server 站点上之后,Internet 或 Intranet 用户便可在 web 应用程序、ArcGIS Desktop、ArcGIS Online 以及其他客户端应用程序中使用此地图服务。

1.1地图服务的数据源和支持方式

1)支持以下数据源:

数据库(请参阅ArcGIS 数据库管理系统要求,以获得支持的数据库和空间数据类型的列表)
通过 OLE DB 连接文件 (.odc) 访问的数据库
文件地理数据库
企业级和工作组级地理数据库
NetCDF 文件
网络数据集
插件式自定义数据类型
栅格
SDC 文件
Shapefile
文本文件
追踪数据源

这里大家可以打开,在我们发布地图服务的时候,数据源可以是多种多种类型的,所以地图服务也是我们最常用的服务。

2)图层符号系统

可用的图层符号系统选项如下:

图表/点密度/分级色彩/分级符号/比例符号/制图表达(建议仅在缓存地图中使用)/单一符号/唯一值/标注

3)支持的图层类型如下图层类型

注记图层/尺寸图层/要素图层/基于文件的栅格目录图层/地理数据库栅格目录图层/地统计图层/图层组/镶嵌图层/网络分析图层/宗地结构图层/查询图层/栅格图层/逻辑示意图图层/Terrain 图层/TIN 图层/追踪图层/XY 事件图层/路径事件图层/动态图层/动态图层允许客户端动态更改地图服务中的图层外观和行为。

4)使用动态图层可以完成以下操作:

从动态工作空间向地图添加新图层。
定义绘制图层标注的方式。
定义图层符号系统(简单的、唯一值、分类间隔)。
定义地图中图层的位置和顺序
修改与现有图层/表的连接。
从地图中移除现有图层。
向现有图层/表添加连接,或从动态工作空间添加图层/表。
即使切片缓存可用,也强制服务器执行动态绘制。
REST 客户端、COM 客户端和非 Esri SOAP 客户端支持动态图层。可作为

5)动态工作空间注册的数据源包括:

数据库(仅查询图层)/文件地理数据库(仅要素图层、栅格图层和表)
包含基于文件的栅格的文件夹/包含 shapefile 或 .dbf 文件的文件夹/地理数据库(仅要素图层、栅格图层、查询图层和表)/栅格符号系统/大部分栅格符号系统可用。栅格全色锐化过滤器也可用。不支持动态绘制山体阴影。

6)符号
大多数 2D 符号均可用,但不支持 3D 符号。可用的符号如下:

箭头标记符号/制图线符号/字符标记符号/渐变填充符号/混列线符号/线填充符号/标记填充符号/标记线状符号/多图层填充符号/多图层线状符号/多图层标记符号/图片线状符号/图片填充符号/图片标记符号/简单填充符号/简单线符号/简单标记符号/文本符号
虽然建议仅在缓存地图中将制图表达与地图服务配合使用,但仍支持制图表达规则。

7)其他可用的功能包括:

所有色带类型/所有颜色类型/所有数字格式/书签/注释/定义查询/查询表达式
注:
定义查询/查询表达式无法通过地图服务以编程方式修改。如果需要修改地图服务中指定的查询,则需要打开原始地图文档,更新查询,并覆盖地图服务。有关完整说明,请参阅在 ArcGIS Desktop 中覆盖服务。

HTML 弹出窗口/超链接/图例/地图提示/独立表/页面布局和显示表达式不可用。只能通过此服务的 Web 服务描述语言 (WSDL) 使用比例尺。

上述的这些,就需要我们自己在制作数据的时候,在arcmap或者arcgis Pro中对其进行符号化,配图,标注,注记等操作了。

1.2如何开始创建地图服务?

所有地图服务均需要首先在 ArcMap /ArcGIS Pro中创建相应的地图。

arcmap中是:
地图创建完成后如果准备与其他用户共享,请从主菜单中选择
文件 > 共享为 > 服务 > 发布服务

在这里插入图片描述

arcgis Pro中需要我们在需要发布的数据上面右键–共享为web图层:
在这里插入图片描述

共享为服务 对话框中的选项可帮助您将地图共享为服务。

1.3为什么要使用地图服务

通过地图服务,地图、要素和属性数据可在多种类型的客户端应用程序中使用。

地图服务的一种常见应用是在 ArcGIS Online、Bing Maps 或 Google Maps 中的底图切片上方显示商业数据。

对于同一地图服务,可同时由多个用户分别在 ArcMap 中、Web 应用程序中、ArcGIS Online 中和移动应用程序中使用。

以下是建立地图服务的一些常见理由。

1) 提供动态地图

动态地图会在用户发出请求时进行绘制。动态地图的速度不及缓存地图,但它们可适用于高关注度的 intranet 应用程序以及需要实时显示数据的应用程序。

2) 提供动态图层

地图服务具有内置功能,允许客户端(如 ArcGIS Web APIs)动态更改每个图层的行为和外观。这些动态图层可有效增加用户与 Web 地图的交互量。

3) 提供缓存地图

缓存地图服务(使用一组预创建图像的服务)是在 Web 上提供地图的最快捷的方式。这也是 ArcGIS Online、Google 地图、Bing 地图和其他许多服务显示地图的方式。

地图缓存不会自动创建;而需要在发布服务后手动创建缓存。

4) 提供要素

地图服务并不总是需要显示图像。建立地图服务的目的还可以是在应用程序中返回一组要使用的要素。您可以通过添加至应用程序中的任务来检索这些要素。

如果您希望建立一个地图服务来提供要素,应确保可进行“查询”和“数据”操作。

5) 提供网络分析功能

您可建立地图服务以基于服务器执行网络分析。如果您的地图文档中包含网络分析图层,则您在发布该服务时将会看到可启用的“网络分析”功能。

然后,您便可以在使用 ArcGIS Server 开发应用程序时执行网络分析操作。您可在地图文档中设置分析的默认属性,例如设施点和障碍。

6) 通过 KML 提供地图或要素

KML 是一种基于 XML 的开放式结构来表示地理数据和地图的方式。KML 通常在地理浏览器应用程序(例如 ArcGIS Earth)中用来显示地图叠加或要素,其属性有时会显示在信息性弹出窗口中。默认情况下,所有地图服务都能够返回 KML。

7) 通过 OGC 规范提供图像、要素或栅格

开放地理空间联盟发布了在 Web 上提供地图图像 (WMS)、矢量要素 (WFS)、栅格数据集 (WCS) 和 Web 地图切片 (WMTS) 的规范。

一些组织规定其地理数据和地图必须通过这种方式提供。地图服务可以配置为返回符合 OGC 规范的图像或数据。

描述:
这些仅是地图服务用途的一部分。在对地图服务的使用过程中,您可能会发现更多其他用途。所有地图服务都可通过 SOAP 和 REST 界面来显示,从而使它们可用于多种 Esri 和第三方应用程序。

1.4.应该启用哪个服务功能?

1)功能
使用功能选项卡可选择要在地图服务中启用的服务功能。这些功能可创建更多的服务,以与地图服务搭配使用。它们可使用户在更广泛的应用程序和设备中访问地图。服务功能使用户能够借助地图服务实现更多的功能,例如网络分析和要素访问。

此表列出了地图服务可以使用的功能以及有关启用相应功能的所有特殊要求。要了解有关设置每种服务功能的具体属性的详细信息,请单击以下链接。

功能功能介绍特殊要求
制图通过 SOAP 和 REST URL 对地图文档的内容进行访问对所有地图文档始终启用
WCS使用地图文档中的栅格图层创建符合开放地理空间联盟 (OGC) 网络覆盖服务 (WCS) 规范的服务需要栅格图层
WMS使用地图文档创建符合 OGC 网络地图服务 (WMS) 规范的服务
要素访问对地图中的矢量要素进行访问;通常在进行编辑时使用需要矢量图层
切片地图提高托管切片服务的重采样性能仅适用于缓存地图或影像服务
逻辑示意图允许查看、生成、更新和编辑逻辑示意图需要逻辑示意图图层
网络分析使用 ArcGIS Network Analyst extension 求解交通网分析问题需要一个引用网络数据集的网络分析图层
KML使用地图文档创建 KML 要素
WFS使用地图文档中的图层创建符合 OGC 网络要素服务 (WFS) 规范的服务需要矢量图层(栅格图层未包括在此服务中,因为 WFS 的目的是为矢量要素几何提供服务)

在这里插入图片描述

2)制图功能
制图功能始终处于启用状态。单击此功能时,您可以查看直接通过 REST 和 SOAP 访问服务 URL,并且可以切换 有关以下操作的切换按钮:

操作描述
地图允许使用导出地图、生成渲染器、查询图例和生成 KML 的方法。此操作不能关闭。
查询允许使用查找、查询和查询相关记录的方法。
数据允许使用识别的方法。

在这里插入图片描述

1.5使用地图服务方式和客户端

发布到 ArcGIS Server 的服务可用于本地和 web 客户端。由于地图服务具有很多功能,因此可在很多 Esri 和第三方客户端应用程序中使用。其中包括 Esri 客户端(如 ArcGIS Enterprise、ArcGIS Online、ArcGIS API for JavaScript、ArcGIS Earth 和 ArcGIS Desktop)以及第三方客户端(如 Google Earth、OGC 和 Autodesk AutoCAD 应用程序)。

Esri 客户端应用程序
以下介绍了可以使用地图服务功能的 Esri 客户端应用程序。

1)ArcGIS Enterprise

在 ArcGIS Enterprise 门户中,指定用户和 Internet 上的任何人(可选)可以查看和使用您在 Map Viewer 中提供的 GIS 内容。

如果您的 ArcGIS Server 站点与 ArcGIS Enterprise 门户联合,则从 ArcMap 发布的所有地图服务都会自动共享到门户。ArcGIS Pro 用户可以将 web 地图(由 ArcGIS Server 地图服务提供支持)直接共享到门户。

如果您有一个独立的 ArcGIS Server 站点,则您可以在 ArcGIS Enterprise 门户中将地图服务添加为外部服务,以使用这些服务。有关详细信息,请参阅连接到安全服务。

2) ArcGIS Online

您可以使用 ArcGIS Online 中的 Map Viewer 来构建和共享使用 ArcGIS Server 站点上托管的地图服务的 web 地图及应用程序。另外,您可以使用可用的底图、数据和应用程序(例如预配置模板或 ArcGIS Web AppBuilder)来共享您的内容。

3)ArcGIS Desktop 应用程序

ArcMap
ArcGIS Pro
ArcGIS Maps for Office
ArcGIS Maps for Office 通过 Microsoft 加载项在 Microsoft Office 中提供制图功能。可将此加载项与 Microsoft Office 组件配合使用,以创建可引用和显示 GIS Server 上的地图服务并可与这些地图服务进行交互的地图。可从 Esri 网站下载 ArcGIS Maps for Office。

4)ArcGIS Maps for SharePoint

ArcGIS Maps for SharePoint 提供可配置的交互式制图组件,以便您了解组织数据的地理空间视图。ArcGIS Maps for SharePoint 包括 Web 地图组件,允许您引用和显示 GIS 服务器上的地图服务以及与这些地图服务进行交互。

5)ArcGIS Earth

ArcGIS Earth 允许您浏览世界任何地方的地形、海洋和山脉,以 3D 模式显示地球上的数据。ArcGIS Earth 使用各种 2D 与 3D 地图数据格式来显示数据、创建草图、测量距离和面积并添加注记以讲述故事。

6)Explorer for ArcGIS

Explorer for ArcGIS 允许您组织中的每个人在其设备上查找、分析和共享地图服务。您可对数据进行可视化、在您的地图中搜索地点和要素、在地图上绘制草图以高亮显示重要的要素、与其他 Explorer for ArcGIS 用户共享地图以及通过交互式地图演示来讲述故事。

7)ArcGIS API for JavaScript 应用程序

ArcGIS API for JavaScript 可帮助您构建采用地图服务的 Internet 应用程序。ArcGIS API for JavaScript 具有完整的帮助文档,其中包含概念帮助、示例和 API 参考主题,可使编程变得更加轻松。有关详细信息,请参阅 ArcGIS API for JavaScript 主页。

8)ArcGIS Runtime SDKs

开发人员可以使用 ArcGIS Runtime SDK 在各种流行的平台和设备上构建和部署原生应用程序。有关详细信息,请参阅 ArcGIS for Developers 站点。

9)第三方客户端应用程序

以下第三方客户端可以使用地图服务功能:

Google Earth(以 KML 形式)
Web 覆盖服务客户端应用程序(作为 OGC WCS)
Web 要素服务客户端应用程序(作为 OGC WFS)
Web 地图服务客户端应用程序(作为 OGC WMS)
Web 地图切片服务客户端应用程序(作为 OGC WMTS)
Web 处理服务客户端应用程序(作为 OGC WPS)
AutoCAD(作为 ArcGIS for AutoCAD 插件应用程序)

2.服务准备/制作/发布/调用操作实例

2.1.发布服务

2.1.1 arcmap发布地图服务

1)首先加载数据
先连接上arcgis server

在这里插入图片描述

在这里插入图片描述
注:此处如果自己的机器只安装了一个arcgis server的话,那么我们只需要填写server站点的管理员账号和密码即可;

但是如果我们的机器环境是enterprise环境的话,此处填写的是portal的账号和密码;
什么是enterprise参安装教程:
ArcGIS Enterprise10.8.1部署在Linux环境下安装教程
Windows server2012配置enterprise10.8.1的Web_Adaptor_Java版安装详细教程

加载数据:
我们加载的是GDB中的feature class数据:其中配图什么的,可以在属性符号等里面进行操作,包括一系列的分析等都可以操作;

在这里插入图片描述
然后发布服务:
在这里插入图片描述
链接上我们的GIS Server服务:
在这里插入图片描述
新建一个文件夹,以便于我们寻找:
在这里插入图片描述
然后点击下一步就到了我们service Editor这个页面了:
在这里插入图片描述
点击Capabilities这个界面,可以勾选我们需要发布的服务类型,由于我们这里只需要发布地图服务,所以我们默认就行:
在这里插入图片描述
其他的直接默认即可:点击分析:

在这里插入图片描述
分析完只有没有错误,警告可以不用管它,直接点击发布即可;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
出现这个界面即表示我们的地图服务发布完成了;

接下来,让我们去server manager这个位置上看一下:
在这里插入图片描述
同样,我们点进去 这个页面,就可以查看我们发布的REST服务,然后就可以实现一个rest服务操作:
在这里插入图片描述
在这里插入图片描述
对于想实现query查询的,我们只需要点击上去没有的Layers 0/1/2图层进去即可实现query操作了;

2.1.2 arcgis pro发布地图服务

pro发布 的服务的时候,我们需要先使用Pro链接上我们的portal,然后才能正常的共享为web图层:
在这里插入图片描述
加载数据,将相同的三个数据加载到arcgis Pro中:
在这里插入图片描述
这个地方,有些小伙伴会说,这个三个图层,可以一起发布成一个mapserver吗? 当然可以, 按着Ctrl键,然后右键共享为web图层,即一起发布成一个mapserver:
在这里插入图片描述

填写一些描述信息:选择copy数据的形式:
在这里插入图片描述

点击分析没有保存,然后点击发布即可:

在这里插入图片描述
在这里插入图片描述
可能细心的小伙伴会说,为什么arcmap发布的时候还有功能参数等这些设置,为什么pro没有呢,其实是是一样的,我们看看在哪里:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
瞬间是不是感觉类似于arcmap发布地图服务的感觉;

那么我们一起看看portal的位置:

在这里插入图片描述
点击进去刚才发布的服务:
在这里插入图片描述

点击缩略图进去,即可看到我们发布的服务:

在这里插入图片描述
复制服务的rest服务的url到网页,同样可以进行rest的query查询,这个服务的url也是我们后期需要用JS调用的url;
在这里插入图片描述

2.2.ArcGIS API for JavaScript调用服务

我们在使用地图服务的时候,有很多种方式,本示例主要是使用ArcGIS API for JavaScript调用服务;

**MapImagerLayer 用来加载动态地图服务;**地图服务根据请求在服务器端动态输出地图图像;

MapImageLayer允许您显示和分析来自地图服务中定义的子图层的数据,并导出图像而不是要素。

地图服务图像是根据请求在服务器上动态生成的,该请求包括LOD(详细程度),边框,dpi,空间参考和其他选项。 导出的图像具有指定的整个地图范围。
与FeatureLayer不同,MapImageLayer处理由服务器而非客户端处理。 在某些情况下,将处理任务卸载到服务器可以使MapImageLayer以更高的性能呈现更多功能。

实例化MAPImageLayer的是这种:
在这里插入图片描述
具体代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="initial-scale=1,maximum-scale=1,user-scalable=no"
    />
    <title>
      Intro to MapImageLayer | Sample | ArcGIS API for JavaScript 4.16
    </title>

    <link
      rel="stylesheet"
      href="https://js.arcgis.com/4.16/esri/themes/light/main.css"
    />
    <script src="https://js.arcgis.com/4.16/"></script>

    <style>
      html,
      body,
      #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    </style>

    <script>
      require([
        "esri/Map",
        "esri/views/SceneView",
        "esri/layers/MapImageLayer"
      ], function (Map, SceneView, MapImageLayer) {
        /*****************************************************************
         * Create a MapImageLayer instance pointing to a Map Service
         * containing data about pool permits in Southern California.
         *****************************************************************/
        var layer = new MapImageLayer({
          url:"https://t460p.esrichina.com/server/rest/services/NewFolder/MyMapServiceTest/MapServer"
        });

        /*****************************************************************
         * Add the layer to a map
         *****************************************************************/
        var map = new Map({
          basemap: "dark-gray",
          layers: [layer]
        });

        var view = new SceneView({
          container: "viewDiv",
          map: map
        });

        /*****************************************************************
         * Animate to the layer's full extent when the layer loads.
         *****************************************************************/
        permitsLayer.when(function () {
          view.goTo(permitsLayer.fullExtent).catch(function (error) {
            if (error.name != "AbortError") {
              console.error(error);
            }
          });
        });
      });
    </script>
  </head>

  <body>
    <div id="viewDiv"></div>
  </body>
</html>

加载出来在网页端的效果就是这样的:
在这里插入图片描述

  • 19
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS哼哈哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值