使用服务
通过服务可以在客户端之间更容易的共享资源。通过服务可以保证所有的客户端访问到同样的资源,而不用在他们的机器上单独进行安装。服务器存储着资源,管理服务,进行GIS相关工作,将结果通过图片或者文字的形式返回给客户端。
要使用服务,并不需要安装单独的GIS软件,用普通的Web浏览器或者自定义的应用程序即可。但ArcGIS的应用程序,比如ArcMap和ArcGlobe同样可以作为GIS服务的客户端。
使用ArcGIS Server上的服务时,可以和使用本地资源一样对它进行访问。比如访问服务器上的map service时,就好像地图文档和数据存储在本地一样。
将GIS resource作为一个服务发布出去是让人们访问到它的关键。通常情况下,都是通过ArcGIS Desktop来制作资源,然后将其发布成服务供客户端使用。
下表中列出了可发布的服务和每个服务需要什么样的资源
服务类型 | 需要的GIS资源 |
Map service | Map document (.mxd, .pmf) |
Geocode service | Address locator (.loc, .mxs, SDE batch locator) |
Geodata service | 数据库连接文件(.sde) 或 personal geodatabase 或 file geodatabase 或引用了注册为版本的geodatabase中数据的 map document |
Geometry service | 不需要GIS资源 |
Geoprocessing service | 带有工具涂层的Map document或 toolbox (.tbx) |
Globe service | Globe document (.3dd, .pmf) |
Image service | Raster dataset 或引用了raster dataset的图层文件或编译过的image service definition (.ISCDef) |
各种服务具有的能力
作为一个ArcGIS Server管理员,你需要关注发布的服务和其引用的资源。但客户端更关心的是他们能使用的服务都具有什么样的能力。作为管理员,可以控制所发布的GIS和其拥有的能力。
服务的能力是和资源的类型相关的,比如地图文档中图层的类型。Map documents具备的能力最多。比如WMS和KML。其他比如Geodata Access和Geoprocessing, 需要特殊类型的图层。下表中列出了各种服务能力所需要的资源。
能力 | 该能力能够做什么 | 哪些服务具备该能力 |
Geocoding | 可以用来访问address locator。geocode service总是拥有这种能力。 | Geocode services |
Geodata | 可以用来访问geodatabase,从而进行数据查询,提取,和复制。geodata service总是拥有这种能力。 | Geodata services |
Geodata Access | 允许客户端用户在ArcMap中复制和提取数据。发布创建一个关联geodata service的地图文档时可以拥有这种能力。 | Map services |
Geometry | 为应用程序提供一个用于几何运算(比如投影和加密化)的内部引擎。 | Geometry services |
Geoprocessing | 用从toolbox或工具图层来访问geoprocessing models。工具图层是指从ArcToolBox中拖拽到TOC中的model。发布创建一个关联geoprocessing service的地图文档时可以拥有这种能力。发布一个geoprocessing service时自动拥有这种能力。 | Geoprocessing services, map services |
Globe | 可以用来访问globe document。发布globe service时自动拥有这种能力。 | Globe services |
Imaging | 用来访问raster dataset或ArcGIS Image Server service。发布image service时会自动拥有这种能力。 | Image services |
KML | 使用一个map document来创建Keyhole Markup Language (KML) features。 | Map services |
Mapping | 用来访问map document的内容。发布map service时自动拥有这种能力。 | Map services |
Mobile Data Access | 可以从map document中提取数据到移动设备上。 | Map services |
Network Analysis | 使用Network Analyst extension来解决交通网络分析问题。 | Map services |
WCS | 创建一个兼容OGC(Open Geospatial Consortium)WCS规范(Web Coverage Service)的服务。 | Geodata services, image services, map services |
WFS | 创建一个兼容OGC的WFS规范(Web Feature Service)的服务。 | |
WMS | 创建一个兼容OGC的WMS规范(Web Map Service)的服务。 | Image services, map services |
这样就可以看出要使用特定能力时需要发布什么样的服务了。
把服务发布到网络上
客户端通过网络连接到服务器(可以通过LAN或WAN)。如果是通过Internet方式连接到一个GIS Service,那么他们使用的就是Web Service。
发布服务的时候,默认会使这个服务能够通过网络被访问,并给出与之相关的一个URL。这个URL是ESRI的应用程序通过ArcGIS Server Internet方式连接时使用的。你不能直接在浏览器中输入这个URL来浏览服务。但是,你可以在浏览器中输入这个URL,在后面再加上“?wsdl” 来查看这个Web Service的定义,以便检查它是否正常工作。(WSDL是Web Services Description Language的缩写,是一种用来描述Web Service的XML语言)。
关于Web service的URLs
要使客户端能够访问Web services,他们必须得知道该服务的URL。形如:
http://<服务器名称>/<实例名>/services
如果要连接到一个特定的服务,则URL应该是这样的形式:
http://<服务器名称>/<实例名>/services/<文件夹名称(如果服务在一个文件夹里的话)>/<服务名>/<服务类型(某些服务需要)>/<能力的类型(某些服务需要)>
比如,要通过WSDL查看服务器上的所有服务的描述,则输入以下的URL:
http://服务器名称/arcgis/services?wsdl
又如,要通过WSDL查看服务器上一个名为usamap服务的mapping能力,则输入下面的URL:
http://服务器名称/arcgis/services/usamap/mapserver?wsdl
某些能力必须通过Web来访问
某些能力的使用要求客户端必须通过Internet的方式来连接;因此该能力不能够禁用“通过web访问”选项。这些能力包括KML, WMS, 和Mobile Data Access。
下面我们来看看具体的服务。
Map services
Map service是最常见的ArcGIS service,可以拥有很多能力和功能。Map service本身具备mapping和map viewing的能力,也可以支持modeling和geoprocessing,mobile GIS services以及OGC WMS, OGC WCS, KML的能力。
要发布map service,首先得在ArcMap中准备一个map document (.mxd)。将这个mxd文件发布成map service后,便可通过服务访问该地图文档的数据,显示图层,并使用该地图内建的任何能力。也可以选择对这个服务建立cache,使其能够更快速的被 浏览。
创建map document
必须使用ArcGIS Desktop来创建map document。如何创建,请参考ArcMap概览。
创建准备发布成服务的map document的一些技巧
需要合理安排地图文档的内容,范围,标注,注记等等要素,将它们安排到合理的位置,切记不要太繁琐,同时考虑到地图的美观性。
可以参考创建和发布网络地图。
发布service
如何将地文档发布成一个服务,请参考帮助中的“Publishing a GIS resource to the server”主题。
启用service中的相应能力
发布一个map service后,通过启用相应的能力可以创建其他与map service一起工作的service。其中一些能力要求地图文档包含有特定的图层。
下表中列出了map service拥有的能力,和启用相应能力的要求。
能力 | 该能力能够做什么 | 启用该能力的要求 |
Mapping | 提供对地图文档内容的访问 | 任何地图文档都默认具有这种能力 |
WCS | 在地图文档中包含一个或多个raster layers来启用一个与Open Geospatial Consortium's (OGC) Web Coverage Service (WCS)规范兼容的能力 | 地图文档中需要包含raster图层 |
WFS | 使用文档中的图层创建一个与Open Geospatial Consortium's (OGC) Web Feature Service (WFS)规范兼容的能力。 | 文档中需要包含需要矢量图层。服务中不包含栅格图层,因为WFS是针对适量数据的。 |
WMS | 使用文档创建一个与Open Geospatial Consortium's (OGC) Web Map Service (WMS)规范兼容的能力。 | None |
Mobile Data Access | 可以从地图文档提取数据到移动设备上。 | 不需要 |
KML | 使用地图文档来创建Keyhole Markup Language (KML) features。 | 不需要 |
Geodata Access | 允许用户在ArcMap中对数据进行提取和复制。 | 需要使用geodatabase中的图层。创建一个与map service协同工作的geodata service。 |
Geoprocessing | 从工具图层可以访问geoprocessing models。工具图层是指从ArcToolbox中直接拖拽到TOC上的工具model。 | 需要工具图层。这样就可以创建一个随map service一起工作的geoprocessing service。 |
Network Analysis | 使用Network Analyst扩展模块解决交通网络分析问题。 | 需要一个引用network dataset数据的network analysis layer。 |
Using the map service
创建了map service后,可以通过local和Internet方式来连接。由于map service可以具有多种能力,所以有很多ESRI和非ESRI应用程序都可以访问它。包括:
- ArcMap
- ArcGIS Server Web Mapping applications
- ArcGIS JavaScript API applications
- ArcGIS Explorer
- ArcGlobe
- ArcReader
- ArcGIS Engine applications
- ArcGIS for AutoCAD
- Microsoft Virtual Earth (using the ArcGIS JavaScript Extension for the Virtual Earth API)
- Google Maps (using the ArcGIS JavaScript Extension for the Google Maps API)
- Google Earth (as KML)
- WMS client applications (as WMS)
- WCS client applications (as WCS)
- WFS client applications (as WFS)
- Mobile applications (as a mobile data service)
Geocode services
Geocode services也有非常广的使用范围,业务和客户管理上可以很容易得出货物分发配送时需要走那个方向。Geocoding可以在地图上轻易找到一个地 址,并查看周围的一些要素与之有什么样的联系。有时可以仅通过查看地图获取你需要的信息;有些时候需要通过空间分析工具来揭示潜在的信息。
有很多商业的geocode services,但可能并不能满足你的需要:地址信息更新不够及时,地址信息的格式与他们不符,或者你想让人们通过当地的习惯用语来查找一个地点。这些 都需要一个特殊的geocoding解决方案。可以通过发布自己的geocode service来解决这些问题。
在向GIS服务器发布geocode service前,需要在ArcGIS Desktop中创建address locator,然后将locator作为geocode service发布。
创建address locator
address locator是ArcGIS中geocoding的主要工具,同时包含了地址定位所需的所有数据。可以使用ArcCatalog创建address locator。关于如何一步步创建,请参考创建Address Locator。
创建的locator需要在一个共享目录中这样所有的server object container (SOC)机器才能访问到它。另外SOC账户也需要有访问到该目录的相应权限。
发布address locator
请参考Publishing a GIS resource to the server。 指定资源时指定到想要发布的locator。可以使用的格式是locator files (.loc), ArcView 3 address locators (.mxs), ArcSDE address locators, personal geodatabase locators,和file geodatabase locators。
使用geocode service
Web ADF自带的Find Address task就是用来定位地址的。利用这个task来使用geocode服务。