使用服务
通过服务可以在客户端之间更容易的共享资源。通过服务可以保证所有的客户端访问到同样的资源,而不用在他们的机器上单独进行安装。 服务器存储着资源,管理服务,进行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服务。
Geodata services
geodata service,客户端使用ArcGIS Server可以通过Lan或Wan访问geodatabase。该服务拥有复制geodatabase,提取数据,在geodatabase中进行查询的操作能力。一个geodata service本身可以添加各种行的geodatabase,包括ArcSDE geodatabases, personal geodatabases, 以及file geodatabases。
如果想通过远程访问一个数据库,geodata services非常有用。比如公司想建立一个ArcSDE geodatabases来管理Los Angeles和New York办公室的数据。建立好服务后,两地的办公室都可以通过互联网使用geodata service来发布自己的ArcSDE geodatabase。geodata services也可以用来通过Internet定期同步不同geodatabase中的数据。
发布该服务之前,你需要对geodatabase相关概念有所了解。请参考Understanding distributed data。
首先在ArcGIS Desktop中准备好geodatabase
发布geodata service
两种方式来发布geodata service:直接从geodatabase发布,或伴随map service发布一个geodata service。
直接从geodatabase发布geodata service
这种方式需要引用你想要发布成服务的personal geodatabase, file geodatabase, 或ArcSDE的连接文件。geodatabase或连接文件需要放在所有SOC机器都能够访问到的地方。
对于ArcSDE geodatabase,有些时候需要在Catalog中右键,保存连接文件,这样.sde连接文件就会保存你的登录名/Application Data/ESRI/Catalog/文件夹中,建议将它拷到一个所有SOC机器都能够访问到的地方。
通过一下步骤来发布geodata service:
- 点击Manager中的Services标签
- 点击Publish GIS Resource.
- 根据提示输入信息,但要注意:
- 对于Resource, 选择想要发布的geodatabase或ArcSDE geodatabase的连接文件(.sde)。
- 如需帮助,请参考Publishing a GIS resource to the server。
随map service发布一个geodata service
要这么做,必须在map service的能力列表中选中geodata access,而且map document必须引用了geodatabase中的数据。当发布完成后,会自动创建一个map service和一个同名的geodata service,这两个服务可以独立进行管理。发布这样的服务可以允许你使用Distributed Geodatabase toolbar中的命令来添加map service到ArcMap中。请参考Distributed Geodatabase toolbar。
按照以下步骤来操作:
- 点击Manager中的Services标签
- 点击Publish GIS Resource.
- 根据提示输入信息,但要注意:
-
- 对于Resource, 选择想要发布的地图文档。
- 在选择能力时,确保选中了Geodata Access。
- 如需帮助,请参考Publishing a GIS resource to the server。
能力
Geodata services可以产生三种能力。可以在发布服务的时候选中他们或者以后在service属性中修改他们:
-
- Geodata用来访问geodatabase,默认是自动具有这种能力的。
-
WCS使该geodatabase中的栅格数据以Open Geospatial Consortium, Inc. (OGC) Web Coverage Service (WCS). WCS规范兼容的方式发布到网络中。默认情况下没有选择WCS能力。
-
WFS使该geodatabase中的矢量数据以Open Geospatial Consortium, Inc. (OGC) Web Feature Service (WFS). WFS规范兼容的方式发布到网络中。默认情况下没有选择WFS能力。
-
Geometry services
geometry service可以帮助应用程序进行几何计算,比如buffering, simplifying, 计算面积/长度,或投影。进行这些计算工作其实也有其他的方式可以完成,比如细粒度的AO编程或geoprocessing service,而geometry service提供了另一种方式来完成类似的工作。geometry service特别适合于使用ArcGIS REST或JavaScript APIs建立的应用程序。
geometry service只对于管理员和开发者可见。连接到服务器的用户并不能看见geometry service。
geometry service是ArcGIS Server 9.3中提供的,默认情况下不能使用。必须为自己的应用程序手动创建它。
创建geometry service
要创建geometry service,选择ArcCatalog或Manager中的Add New Service。service类型中选择Geometry Service。但要注意以下几点:
- geometry service必须用"Geometry"命名。
- 每个服务器上只能有一个geometry service;但可以允许该服务的多个实例。
- Geometry services总是池化的。
- 可以和其他服务一样停止,启动和删除geometry service。
使用geometry service进行开发工作
在建立JavaScript应用程序时,可以通过REST endpoint来引用一个geometry service。如何使用,请参考ArcGIS JavaScript API helps。
如果想在Web ADF应用程序使用geometry service,建议你使用SOAP。可以在SOAP SDK中找到geometry service,请参考ArcGIS Server Resource Center。
Geoprocessing service
geoprocessing service包含客户端可以使用的了geoprocessing tasks。Tasks是发布geoprocessing toolboxes或包含工具图层的map documents时创建的。当执行geoprocessing service中的task时,是在服务器上进行运算,使用的也是服务器的资源。
Geoprocessing services和它们的tasks可以通过Internet或局域网来访问,也可在ArcGIS Desktop, ArcGIS Explorer, 以及web应用程序(比如使用ArcGIS Server Manager创建的web Applicaiton)中使用。
发布Geoprocessing service
- 发布geoprocessing toolbox。该toolbox中的每个tool都会变成geoprocessing service中的一个task。
- 发布包含工具图层的地图文档。每一个工具图层将会编程geoprocessing service中的一个task。
输入输出的数据类型
下图中大致说明了输入输出的参数类型。
关于如何发布geoprocessing service,请参考发布geoprocessing service。
关于更多geoprocessing service的具体情况,请参考geoprocessing service。
Globe services
globe service从一个ArcGlobe document (.3dd)中提供了3D的视图。要发布globe service需要首先创建globe document,然后将其发布成服务。创建了globe service之后,支持的客户端,比如ArcGlobe, ArcGIS Explorer, 和ArcReader则可以远程访问globe service。
创建globe service的步骤:
- 准备一个ArcGlobe Document,确保该文档的数据源或缓存能够被所有的SOC机器访问。
- 使用ArcCatalog或ArcGIS Server Manager创建并启动一个globe service。
- 可以为globe service创建cache以加快访问速度。
下面将详细说明如何发布服务,使用服务和如何提高显示速度。
创建globe document
创建该文档必须拥有ArcGIS Desktop且具有3D Analyst extension。globe service包含了许多图层,可以单独被加入到应用程序中。这是与map service不同的,后者一次性将文档中的所有数据加入。因为globe service是这样单独的图层,所以globe document中的一些属性,比如环境光照,太阳位置,背景颜色,拉伸参数都 不 会在globe service中起作用。
移除ArcGIS Online的图层
ArcGlobe 9.3默认包含了一些ArcGIS Online服务中的图层。必须在发布globe service之前将他们移除。因为globe services内容 (比如ArcGIS Online的服务)不能再在其他globe services中发布。
除了你自己的图层外,如果还想在程序中看到ArcGIS Online的内容,则首先需要发布一个不包含ArcGIS Online图层的服务(仅包含你自己的图层)。然后创建一个ArcGlobe document或3D ArcReader document或ArcGIS Explorer map,然后在其中添加一下内容:
- 刚才已经发布好的globe service
- ArcGIS Online图层。
- 如果需要,添加其他服务的图层。
然后将这个文档保存,放在一个共享的位置。
关于优化数据表现
请参考一下条目:
- 为图层设置scale-dependent rendering:这将在放大/缩小到一定比例时只显示需要的图层。比如细节内容的图层只需要在大比例尺时才显示。
- 简化图层符号。复杂的符号绘制起来会很费时间。
-
使用压缩过的栅格数据。
尽量使用JPEG作为cache文件的格式,因为这种格式可以压缩数据量。
如果显卡驱动支持的话,也可以选用DXT的压缩格式。
-
压缩像素颜色变化范围到16位。
- 增加栅格图层的cell尺寸。
- 移除不需要的图层。
发布globe service
选择发布globe service,选择要发布的globe document。按照向导来完成此工作。
注意,Web ADF中并没有使用globe services的控件。
建议通过ArcGIS Explorer来访问globe service。
要在Web application中浏览发布的3D服务,只能通过使用ArcGIS JavaScript Extension for Virtual Earth来实现。
Image services
image service使得从Web service来浏览栅格数据成为可能。栅格数据的数据源可以是raster dataset (在geodatabase中或硬盘上),引用了raster dataset的图层文件, 或使用ArcGIS Image Server创建的编译过的image service definition (包含一个或多个raster datasets和defined processes)。
注意:如果要使用编译过的image service definitions来创建image services,则需要在ArcGIS Server中注册ArcGIS Image Server。请参考Learn more about registering ArcGIS Image Server with ArcGIS Server。
Image service的能力
发布image service时,可以选择使其兼容Open Geospatial Consortium Web Map Service (WMS)或Web Coverage Service (WCS)规范的能力。
发布image services
-
我有ArcGIS Server and the ArcGIS Image Server extension
则可以使用ArcCatalog或Manager发布之前说过的三种数据源。请参考Publishing a GIS resource to the server。提示resource类型时,选择raster dataset, layer file, 或编译过的image service definition来发布。
-
我只有ArcGIS Server
则只能发布前两种数据源。步骤如前
-
我只有ArcGIS Image Server
则只能发布第三种数据源。也不能启用WMS或WCS能力。客户端只能直接连接到ArcGIS Image Server。
使用image service
连接到GIS服务器后可以和其他服务一样对image service进行使用。
raster dataset数据源的图层属性
image service图层具有属性。像一个raster dataset layer一样,Image Service Layer属性对话框包括General, Source, Extent, Display,和Symbology标签。注意其中Display标签有压缩选项。可以用来快速传输图像。
ArcGIS Image Server数据源的图层属性
拥有Mosaic和Metadata两个额外的标签。
关于具有KML能力的服务
Keyhole Markup Language (KML)是一种基于XML的文件格式,用来在Google Earth或ArcGIS Explorer等应用程序中表达地理信息(geographic feature)。 KML可以用来在maps和globes上绘制points, lines, 和polygons,并与他人共享。使用KML还可以在用户点击一个feature时,在结果中指定文字,图片,影片,或其他GIS服务的链接信息。
ArcGIS Server中,能使用KML来做什么?
ArcGIS Server有多种方式来允许你使用KML来共享地图数据:
- Map services和image services通过representational state transfer (REST)开放了KML网络链接。
- 也可以使用Services Directory或Manager来创建自己的KML网络链接。
- 当通过REST方式查询地图图层,进行geoprocessing或geocoding操作时,都会得到KML形式的结果。
由此可看出KML都是动态创建的,所以KML总是与服务器上最新的地图数据保持一致。
更多信息请参考KML support in ArcGIS Server
关于具有兼容OGC规范(WFS,WMS,WCS)能力的服务
Open Geospatial Consortium, Inc. (OGC) Web services可以使得你的地图和数据以一种开放通用的格式在网络中共享。OGC为地图和数据定义了可以广泛共享的规范。所有开发者可以免费使用OGC规范。使用OGC规范的客户端范围很广,可以是简单的web浏览器,也可以是ArcMap之类的应用程序。
ArcGIS Server中OGC规范的发布能力
OGC定义了不同类型的服务来支持不同的地图和数据。ArcGIS Server可以发布三种OGC服务:
- Web Map Services (WMS) 用来以图层的形式支持map images
- Web Feature Services (WFS) 支持矢量数据
- Web Coverage Services (WCS) 支持栅格数据
可以通过在ArcGIS Server的services中启用某种能力来发布支持OGC规范的服务。
下表中列出了可以支持OGC能力的服务
WMS | WFS | WCS | |
Map services | X | X | X |
Geodata services | X | X | |
Image services | X | X |
更多信息请参考OGC support in ArcGIS Server