您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > 关于ArcGIS Server的WMS+WFS的调用相关的内容
一、WMS相关的内容1.使用openlayers来调用ArcGISServer9.3发布的WMS服务第一步:创建服务的同时勾选wms服务,并取出wms的webaccess路径第二步:在ArcCatalog中添加路径获取wms服务查看图层的参数name当然,当你增加了wms服务之后。你也可以查看wms地图,如下图所示:从上面可以得到结论,ArcGISServer发布的WMS服务正常。第三步:下载openlayers2.8解压以wms页面为例,在D:\temp\OpenLayers-2.8\examples目录下找到wms.html文件进行修改,修改里面的参数如下。注意的是,图层名字直接使用0,1,2等来表达。如下图所示:试运行一下。效果如下图所示:当然也可以增加多个图层。直接在后面增加就可以了,如下图所示。2.使用其来添加ArcGISServer的rest服务,找到文件D:\temp\OpenLayers-2.8\examples\arcgis93rest.html并打开编辑,改为rest服务注意export在Java环境下,使用同样的方法来实现调用WMS和Rest服务,使用ArcGISServerManager来管理服务,并选择WMS服务选择项,使用ArcCatalog来测试服务运行状态及相关参数,要注意的就是图层的名称,在图层属性中可以查询得到,如下图所示:3、使用其来添加ArcGISServer的Kml服务在Rest服务中创建KML文件,如:把服务的一个图层或多个图层造成一个kmz文件。保存成一个kmz文件,如下图所示:并转换成kml文件。编辑kml-layer.html文件,并修改4、ArcGISServerFlexAPI调用WMS服务通过扩展DynamicMapServiceLayer来调用WMS服务,相关代码如下:////////////////////////////////////////////////////////////////////////////////////////////////?xmlversion=1.0encoding=utf-8?mx:Applicationxmlns:mx=:esri=:samples=com.esri.ags.samples.*horizontalAlign=centerfontFamily=VerdanafontWeight=boldfontSize=12pageTitle=ExtendingDynamicMapServiceLayerusingArcGISAPIforFlexstyleName=plain!--Problem:HowcanIextendbaselayerclassestosupportotherlayertypessuchasOpenGeospatialConsortiumWebMapServices(OGCWMS)?Solution:ExtendtheDynamicMapServiceLayerclass.ThekeymethodtooverwriteisloadMapImage().--mx:Texttext=ByextendingDynamicMapServiceLayer,thisapplicationcanaccessdynamicservicessuchasWMS./esri:Mapsamples:CityStatesWMSLayer//esri:Map/mx:Application///////////////////////////////////////////////////////////////////////////////////////////////相关CityStatesWMSLayer.as的内容:注意:WMS服务发布后,请求时有个参数LAYERS,这个参数的值就是图层的名字,但是server93发布之后的图层名并不是mxd文档中所看到的图层名,而是被改过了,成了0、1、2、3这样的数字,所以你在访问的时候LAYERS参数要注意了。查看这个0123可以在catalog里建一个wms服务器,然后就能看到图层名对应的数字了,具体是那一个数字可以使用ArcCatalog查询图层的属性。二、关于ArcGISServer中的WFS服务调用注意问题:点坐标表达的顺序问题(x,y)还是(y,x),如果这里不注意的话可能出现访问成功但是得不到地理要素的问题,可以通过设置配置文件来修改,帮助文档中相关部分,看看就明白了:这个跟你所使用的地理坐标系统所定义的有关系,有些定义其getfeature请求得到的是坐标如下所示:gml:Pointgml:pos48.4922165520043122.630685732366/gml:pos/gml::Point当然也有些坐标定义是基于(x,y)来返回的。要根据实际情况而定:设置ArcGISServer服务的WFS属性部分,停止Server的服务,并到ArcGISServer的安装目录,如:c:\arcgis\server\user\cfg.找到对应的服务的配置文件,在WFS部分增加下面的信息:ExtensionTypeNameWFSServer/TypeNameEnabledtrue/EnabledPropertiesAxisOrderWFS11longlat/AxisOrderWFS11CustomGetCapabilitiesfalse/CustomGetCapabilitiesEnableTransactionsfalse/EnableTransactionsNameEditingFeatures/NameOnlineResource://jamespc/ArcGIS/services/EditingFeatures/MapServer/WFSServer/AppSchemaURIAppSchemaPrefixEditingFeatures/AppSchemaPrefix/PropertiesInfoWebEnabledtrue/WebEnabled/Info/Extension启动服务,这时WFS服务有效,同样你也可以直接使用arccatalog或arcgisservermanager来进行相关的设置,如下图所示:之后,可以通过以下方式进行调用,当然你也可以调用WFS的其他方法来得到结构等相关信息:如果得到请看后面的WFS介绍部分:例如得到表结构:=WFS&request=GetCapabilities得到要素:=mylayername&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&SRS=EPSG:4326&filter=?:如果你是在用get的方式向wfs服务器传递参数,那么,属性查询的时候要注意了,filter这个参数后面带着一串xml格式的字符串,但是xml字符串中的filter节点要加上命名空间,否则打死也没效果,而且如果有bbox参数的话,会和filter参数冲突,必须把bbox参数转化到filter参数的xml字符串中filter参数内容的一个例子:ogc:Filterxmlns:gml=:ogc=:Andogc:PropertyIsLikewildCard=*singleChar=.escape=!ogc:PropertyNameDevice_id/ogc:PropertyNameogc:Literal70*/ogc:Literal/ogc:PropertyIsLikeogc:BBOXogc:PropertyNameDevice/ogc:PropertyNamegml:Boxgml:coordinates120,30121,31/gml:coordinates/gml:Box/ogc:BBOX/ogc:And/ogc:Filter还有其他的相关问题如下:WFS介绍1.1在OGC之路(1)WMS总结中我们讨论了WMS标准。我们可以从WMS服务器很方便的获得指定区域内的地图,但是我们只能获得渲染后的地图。有时候我们希望获得指定图层的Feature数据包括地理坐标和属性,更进一步,当我们需要修改数据源的数据的时候,WMS就不能满足需要了。OGC为我们提供了另外一个标准WebFeatureService(WFS)来对应以上需求。顾名思义,WFS是通过网络操作Feature的服务。它支持客户端对服务器的Feature执行INSERT,UPDATE,DELETE,LOCK,QUERY,DISCOVERY操作。乍一看感觉WFS像是一个数据库。那么是不是还有类似于SQL的东东呢,确实是这样,关于这个主题我们会在随后讨论。让我们先从一些基本概念开始。2.1先来说说Feature与FeatureType。我们说过Feature是对现实抽象的基本元素。它把现实物体抽象为属性数据和地理数据,然后再加上一个Id来标识。许多同类的Feature往往会要求统一处理,对他们分组就显得有必要了。于是Layer出现了,一个Layer就是一组具有相同属性结构的Feature(这是我的理解)。很多系统中同一个Layer里面的Feature还必须具有相同的几何类型,例如都是Point或者都是Polygon。Layer还有一个的Style,这样Feature就会以一致的方式渲染。3.1Feature的属性范围很宽,几乎没有限制,只要能和它代表的现实物体产生联系的数据,包括地理数据,都可以作为属性。实际上,我见过的几乎所有GIS系统都把一个Feature对应到一条数据库记录上,在C#里这往往表现为DataRow对象的实例。把Layer对应到数据库表(视图)上,在C#里这往往表现为DataTable对象的实例。于是我们会发现GIS数据的持久化依然是一个古老的主题ORM。那么对Feature的检索是不是也类似数据库的检索呢。差不多吧,一般,企业级的GIS应用,Feature的属性数据和地理数据都保存在数据库里。对他们的操作也就是一大串的SQL。有些系统的地理数据访问有专门的中间件来辅助,目前几乎所有的商用数据库都自己提供了GIS数据访问支持,看来GIS很快就会成为Web应用的标配了。OGC有一个简单对象访问协议,里面有很完整的关于GIS对象建模和数据库建模的设计
本文标题:关于ArcGIS Server的WMS+WFS的调用相关的内容
链接地址:https://www.777doc.com/doc-3496405 .html