调用ESRI.ArcGIS.ADF.Identity的时候,拒绝wsdl能访问不能调用怎么办啊?

&|&&|&&|&&|&&
当前位置: >
Silverlight+WCF+ArcObjects获取地图服务图层列表的实现
作者:互联网 & 来源:转载 &
浏览次数:
摘要: 很久没有写博客了,最近一直忙考试,只是被悲催的数学物理方程真的把我给伤着了.....
忙完了考试,又开始了导师的项目,然而发现项目的很多东西,用原始的ArcGIS Api for Silverlight根本无法实现。于是开始接触强大的ArcObject。虽然之前接触过一些ArcGIS Engine,但还是觉得学的云里雾里的,现在都忘得差不多了,于是又一次的被AO给伤了。
本文算是自己初学AO的
很久没有写博客了,最近一直忙考试,只是被悲催的数学物理方程真的把我给伤着了.....
忙完了考试,又开始了导师的项目,然而发现项目的很多东西,用原始的ArcGIS Api for Silverlight根本无法实现。于是开始接触强大的ArcObject。虽然之前接触过一些ArcGIS Engine,但还是觉得学的云里雾里的,现在都忘得差不多了,于是又一次的被AO给伤了。
本文算是自己初学AO的一点总结吧,在此和大家分享,不对之处,恳请指教。
一、Silverlight调用AO需要什么?
安装ArcOjects for .net Framework
需要借助WCF或者WebService
在Web项目中添加ArcGIS引用
关于AO的基本知识,本人初学,在此就不卖弄了。可以查看官方的帮助文档,前提是你需要一定的英语知识。
ArcObject官方在线文档:
/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html
关于WCF和WebService,本人觉得用法差不多,但是WCF要更强大一些,所以建议使用WCF。至于什么是WCF或者WebService可以参考微软的官方文档:
WCF官方文档及示例:
/en-us/library/dd456779.aspx
二、实现过程
我们这实现的功能很简单,就是获得某一地图服务(MapServer)下的所有图层。例如本文的发布的地图服务如下:
那么我们可以知道这里又是个图层(Layers):
下面我们就通过调用AO的方式获取这些图层。
1.新建Silverlight项目
选中Enable WCF RIA Service
2.在Web项目中添加ArcGIS相关的引用,如下图所示:
3.在Web项目中添加Silverlight-enabled WCF Service
选择Silverlight-enabled WCF Service,并设置服务名称,点击Add
此时Web部分的基本工作已经完成,接下来看看WCF服务器端如何实现。
&4.WCF端实现的代码
首先我们需要连接到GIS服务,例如之前说的MapService,然后才能获取该服务的所有图层,连接到GIS服务的大致过程如下图所示:
关于连接GIS服务器的详细说明,可参考ESRI中国社区的这篇文章:
以及官网的指导说明:
(1):WCF服务器端的连接代码:
首先添加如下引用:
using ESRI.ArcGIS.C
using ESRI.ArcGIS.esriS
using ESRI.ArcGIS.S
using ESRI.ArcGIS.G
using ESRI.ArcGIS.G
using System.T
using ESRI.ArcGIS.L
并定义如下变量:
//用来存储GIS服务所有图层的名称
public string[] LayerName =
//获得主机的SOM对象
public ESRI.ArcGIS.Server.IServerObjectManager pSOM =
//获取GIS服务的Context
public ESRI.ArcGIS.Server.IServerContext pServerContext =
//服务器连接
ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection agsconnection =
//身份识别
ESRI.ArcGIS.ADF.Identity identity =
ESRI.ArcGIS.Carto.IMapServer2 pMapServer=
//GIS服务的对象
ESRI.ArcGIS.Carto.IMapServerObjects2 pMapServerObject =
//GIS服务对象对应的地图,包含服务的所有图层
ESRI.ArcGIS.Carto.IMap pMap =
然后再WCF的构造函数中实例化:
//设置用户名,密码及域名
identity = new ESRI.ArcGIS.ADF.Identity("ArcGISWebServices", "quzijing", "qzj");
//设置服务地址
agsconnection = new
ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection("localhost", identity);
agsconnection.Connect();
pSOM = agsconnection.ServerObjectM
//指定相应GIS服务的地址,以及GIS服务的类型
pServerContext = pSOM.CreateServerContext("NetworkAnalystServiceFolder/RiverMap", "MapServer");
//创建GIS服务对象及Map
pMapServer = pServerContext.ServerObject as ESRI.ArcGIS.Carto.IMapServer2;
pMapServerObject = pMapServer as ESRI.ArcGIS.Carto.IMapServerObjects2;
pMap = pMapServerObject.get_Map(pMapServer.DefaultMapName);
这里需要说明的是:
a.identify的设置。和我们的ArcGIS Server Manager的UserName(用户名),Domain(域名),Password(密码)一致。
b.设置ArcGIS Server服务器地址:一般我们使用localhost即可,也可使用ip地址,当部署应用程序的时候建议使用IP地址。
c.指定GIS服务地址及服务类型:
GIS服务地址是相对于我们ArcGIS Server服务器根目录来说的,假设我们已有的GIS服务如下图所示:
那么如果我们想连接ChinaMap对应的MapServer时,使用的地址则直接是:ChinaMap,相应的代码为:
pServerContext = pSOM.CreateServerContext("ChinaMap", "MapServer");
而如果是要获取RiverMap对应的MapServer时,那么需要指定其相对于GIS服务的路径,即:NetworkAnalystServiceFolder/RiverMap,示例代码则为:
pServerContext = pSOM.CreateServerContext("NetworkAnalystServiceFolder/RiverMap", "MapServer");
同时还需要注意的问题是第二个参数中的GIS服务类型必须一致。
(2).获取图层名称。
上面我们已经获得了指定服务的Map,通过该Map我们即可获得Map中包含的所有图层,示例代码如下:
if (pMap.LayerCount & 0)
LayerName = new string[pMap.LayerCount];
for (int i = 0; i & pMap.LayerC i++)
ILayer layer = pMap.Layer[i];
LayerName[i] = string.Format("Map Layer {0}:{1}", i, layer.Name);
此外,我们个还可以获得指定的图层以及其中的要素,示例代码:
IFeatureClass pFC = (pMap.get_Layer(1) as ESRI.ArcGIS.Carto.IFeatureLayer).FeatureC
IFeatureCursor pPolyLineCursor = pFC.Search(null, false);
IFeature pPolyFeature = pPolyLineCursor.NextFeature();
(3).定义WCF实现服务的契约
该契约方法返回制定GIS服务中所有的图层名称,即返回上面的LayerName字符数组,示例代码如下:
[OperationContract]
public string []GetLayerString()
if(LayerName==null)
LayerName = new string[1];
LayerName[0] = "错误:没有获得图层";
return LayerN
以上过程我们便完成了服务器端的工作,接下来我们看看客户端的实现。
5.客户端的实现
首先添加WCF服务引用
此时我们的项目文件结构如下所示:
接下来实现客户端的功能,客户端的实现很简单,我们这里就只是获得制定GIS服务所有的图层名称,我们定义一个Button和一个ListBox
&Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="83,23,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" /&
&ListBox Margin="12,61,172,0" Name="listBox1" VerticalAlignment="Top" HorizontalAlignment="Left" /&
后台代码:
AOServiceReference.ArcGIS_AOServiceClient client = new ArcGIS_AOServiceClient();
public MainPage()
InitializeComponent();
client.GetLayerStringCompleted += new EventHandler&GetLayerStringCompletedEventArgs&(client_GetLayerStringCompleted);
void client_GetLayerStringCompleted(object sender, GetLayerStringCompletedEventArgs e)
//将WCF结果绑定到ListBox
listBox1.ItemsSource = e.R
private void button1_Click(object sender, RoutedEventArgs e)
client.GetLayerStringAsync();
最后的效果:
点击Button,获得图层列表
&(版权所有,转载请标明出处)
版权所有 IT知识库 CopyRight (C)
, All Rights Reserved.#region&创建地图服务
&&&&private&bool&CreateServices(string&MapPath,&string&ServerName)&&&&{&&&&&&&&ESRI.ArcGIS.ADF.Identity&identity&=&new&ESRI.ArcGIS.ADF.Identity(MapServerUserName,&MapserverPass,&&&);&&&&&&&&ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection&agsConnection&=&new&ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection(HostName,&identity);&&&&&&&&agsConnection.Connect();&&&&&&&&IServerObjectAdmin&pServerObjectA&&&&&&&&pServerObjectAdmin&=&agsConnection.ServerObjectA&&&&&&&&IServerObjectConfiguration2&configuration&=&(IServerObjectConfiguration2)pServerObjectAdmin.CreateConfiguration();&&&&&&&&configuration.Name&=&ServerN&&&&&&&&configuration.TypeName&=&&MapServer&;&&&&&&&&IPropertySet&props&=&configuration.P&&&&&&&&props.SetProperty(&FilePath&,&MapPath);&&&&&&&&props.SetProperty(&OutputDir&,&&c:\\arcgisserver\\arcgisoutput&);&&&&&&&&props.SetProperty(&VirtualOutPutDir&,&&http://&&+&HostName&+&&/arcgisoutput&);//图片输出的虚拟路径&&&&&&&&props.SetProperty(&SupportedImageReturnTypes&,&&URL&);&&&&&&&&props.SetProperty(&MaxImageHeight&,&&2048&);&&&&&&&&props.SetProperty(&MaxRecordCount&,&&500&);&&&&&&&&props.SetProperty(&MaxBufferCount&,&&100&);&&&&&&&&props.SetProperty(&MaxImageWidth&,&&2048&);&&&&&&&&props.SetProperty(&IsCached&,&&false&);&&&&&&&&props.SetProperty(&CacheOnDemand&,&&false&);&&&&&&&&props.SetProperty(&IgnoreCache&,&&false&);&&&&&&&&props.SetProperty(&ClientCachingAllowed&,&&true&);&&&&&&&&props.SetProperty(&CacheDir&,&&c:\\arcgisserver\\arcgiscache\\NewService&);&&&&&&&&props.SetProperty(&SOMCacheDir&,&&c:\\arcgisserver\\arcgiscache&);&&&&&&&&&&&&&&&&&&configuration.IsolationLevel&=&esriServerIsolationLevel.esriServerIsolationH&&&&&&&&configuration.IsPooled&=&true;&&&&&&&&configuration.MaxInstances&=&2;&&&&&&&&configuration.MinInstances&=&1;&&&&&&&&&&&&&&&&&&IPropertySet&recycleProp&=&configuration.RecycleP&&&&&&&&recycleProp.SetProperty(&StartTime&,&&00:00&);&&&&&&&&recycleProp.SetProperty(&Interval&,&&3600&);&&&&&&&&&&&&&&&&&&IPropertySet&infoProp&=&;&&&&&&&&infoProp.SetProperty(&WebEnabled&,&&true&);&&&&&&&&infoProp.SetProperty(&WebCapabilities&,&&Map,Query,Data&);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#endregion
&&&&&&&&&&&&&&&&&&pServerObjectAdmin.AddConfiguration(configuration);&&&&&&&&&&
&&&&&&&&pServerObjectAdmin.StartConfiguration(ServerName,&&MapServer&);&&&&&&&&return&true;&&&&&&} &&&#endregion
private&bool&CreateServices(string&ImagePath,&string&ServerName)&&&&&&{&&&&&&&&&&&ESRI.ArcGIS.ADF.Identity&identity&=&new&ESRI.ArcGIS.ADF.Identity(MapServerUserName,&MapserverPass,&&&);&&&&&&&&&&ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection&agsConnection&=&new&&&&&&&ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection(HostName,&identity);&&&&&&&&&&agsConnection.Connect();&&&&&&&&&&IServerObjectAdmin&pServerObjectA&&&&&&&&&&pServerObjectAdmin&=&agsConnection.ServerObjectA&&&&&&&&&&IServerObjectConfiguration2&configuration&=&(IServerObjectConfiguration2)pServerObjectAdmin.CreateConfiguration();&&&&&&&&&&configuration.Name&=&ServerN&&&&&&&&&&configuration.TypeName&=&&ImageServer&;&&&&&&&&&&IPropertySet&propertySet&=&configuration.P&&&span&style=&color:#ff0000;&&&&&&&&&&propertySet.SetProperty(&Path&,&ImagePath);&&&&&&&&&&propertySet.SetProperty(&Start&,&&00:00&);&&&&&&&&&&propertySet.SetProperty(&Interval&,&&24&);&&&&&&&&&&propertySet.SetProperty(&SupportedImageReturnTypes&,&&URL&);&&&span&style=&color:#ff9900;&&&propertySet.SetProperty(&OutputDir&,&&c:\\arcgisserver\\arcgisoutput&);&&&&&&propertySet.SetProperty(&VirtualOutPutDir&,&&http://&&+&HostName&+&&/arcgisoutput&);//图片输出的虚拟路径&/span&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&configuration.StartupType&=&esriStartupType.esriSTA&&&&&&&&&&configuration.MinInstances&=&1;&&&&&&&&&&configuration.MaxInstances&=&2;&&&&&&configuration.IsPooled&=&true;&&&&&&&&&&.SetProperty(&WebEnabled&,&&true&);&&&&&&&&&&.SetProperty(&WebCapabilities&,&&Image,Catalog,Metadata,Download,Pixels&);&&&&&&&&&&pServerObjectAdmin.AddConfiguration(configuration);&&&&&&&&&&&&&&&&&&&&pServerObjectAdmin.StartConfiguration(ServerName,&&ImageServer&);&&&&&&&&&&return&true;&&&&&&}&&
本文已收录于以下专栏:
相关文章推荐
ArcGIS Server动态创建MapServer
#region 创建地图服务
private bool CreateServices(string MapPath, string ...
路网服务发布首先需要建立好道路的网络集,为了保证道路网络分析的准确性,建立网络集之前,要对道路图层进行拓扑差错,确保道路的连通性。具体操作流程为:道路拓扑差错-建立几何网络集-路网服务发布。
众里寻他千百度
“海量数据的发布与共享一直是GIS应用系统建设中的难题,尤其是当数据还在不断增加的时候……”,像是被针扎了般,小崔猛然一惊。然 后他全神贯注,紧紧盯着大屏幕,生怕错...
众里寻他千百度
“海量数据的发布与共享一直是GIS应用系统建设中的难题,尤其是当数据还在不断增加的时候……”,像是被针扎了般,小崔猛然一惊。然
后他全神贯注,紧紧盯着大屏幕...
ArcGIS Server10.1及以后的版本新增了动态服务的新特性,利用动态服务,用户可以通过api轻松的在本地对地图服务进行修改,如图层样式,向地图服务添加本地数据。最近刚好一个项目,需要用户可以...
代码来源 ARCGIS 9.2例子
// Copyright 2006 ESRI // // All rights reserved under the copyright laws of the...
转载自:/html/07/.html
ArcGIS 桌面端提供了一个统一的服务发布体验
在ArcGIS 10.0,你可以发布...
什么是要素服务
1要素服务的优点
2要素服务数据要求
发布要素服务
1准备一个 ArcSDE 地理数据库
2创建一个数据库并将其升级为地理数据库
3将数据存储到SDE数据库中并设置数据的属性
摘要:本教程将为您介绍通过 ArcMap 将地图服务发布到 ArcGIS Server 的步骤。地图服务是一种通过 ArcGIS 使地图、要素和属性数据可被 Web 访问的方法。如果您不了解地图服务并...
他的最新文章
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)你好,你说的vs2010..net4.0 64位未能加载文件或程序集 ESRI.ArcGIS.ADF.dll这个问题是怎么解决的_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
你好,你说的vs2010..net4.0 64位未能加载文件或程序集 ESRI.ArcGIS.ADF.dll这个问题是怎么解决的
我现在系统win764位,vs2010,arcgis 10,现在编译报这种错误。
测试,将项目属性中的目标framework更改为.net 4.0后编译通过,但是这样需要用户电脑也安装4.0的framework。我用了另外一种方法,使用vs2008创建一个空解决方案,将各个项目都重新加入.5的也可以编译通过,然后编译不需要修改目标framework,用3
我有更好的答案
个问题很麻烦的,网上有一些教程,有时候行,建议还是重写代码,你把.Net包换成4.0的试试,这是因为你电脑是64位的,运行了32位电脑编的程序
在引用中添加引用选择了吗
为您推荐:
其他类似问题
esri的相关知识
等待您来回答2015年4月 荣获微软MVP称号2014年4月 荣获微软MVP称号
2014年12月 企业软件大版内专家分月排行榜第一2014年11月 企业软件大版内专家分月排行榜第一2014年7月 企业软件大版内专家分月排行榜第一2011年10月 企业开发大版内专家分月排行榜第一2011年5月 企业开发大版内专家分月排行榜第一2011年3月 企业开发大版内专家分月排行榜第一2010年12月 企业开发大版内专家分月排行榜第一2010年11月 企业开发大版内专家分月排行榜第一2010年9月 企业开发大版内专家分月排行榜第一2010年8月 企业开发大版内专家分月排行榜第一2010年7月 企业开发大版内专家分月排行榜第一2010年6月 企业开发大版内专家分月排行榜第一2010年5月 企业开发大版内专家分月排行榜第一
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。ESRI.ArcGIS.ADF 文件列表
216KX869.2.0.1324ESRI.ArcGIS.ADF5D0A3F947CB1204KX869.3.0.1770ESRI.ArcGIS.ADFACDCBF99D1BD721CA4E1D86216KX869.2.6.1500ESRI.ArcGIS.ADF8D787E9B7F044CDEDB1C42216KX869.2.4.1420ESRI.ArcGIS.ADF0E7D4E04F23CDCC048B7A0192KX8610.0.0.2414ESRI.ArcGIS.ADF6B2DEED5BE5FE764310EBCAD4B9AE960216KX869.2.2.1350ESRI.ArcGIS.ADF50FE6F03BDE8144AFDDCE6A
该文件总计6个版本,请下载到本地查看详情
如何选择&使用
第一步:您从我们网站下载下来文件之后,先将其解压(一般都是zip压缩包)。
第二步:然后根据您系统的情况选择X86/X64,X86为32位电脑,X64为64位电脑。 如果您不知道是X86还是X64,您可以点此链接检测。
第三步:根据软件情况选择文件版本。此步骤比较复杂,如果是Windows的dll文件,
    版本号以5.0开头的或含有 nt 一般是windows2000的文件。
    版本号以5.1开头的或含有 xp、xpsp1、xpsp2、xpsp3 信息的一般是windowsXP的文件。
    版本号以6.0开头的或含有 longhorn、vista 信息的一般是windowsVista的文件。
    版本号以6.1开头的或含有 win7 信息的一般是windows7的文件。
    版本号以6.2开头的或含有 win8 信息的一般是windows8的文件。
    版本号以6.3开头的或含有 win8.1 信息的一般是windows8.1的文件。
    版本号以10.0开头的或含有 win10 信息的一般是windows10的文件。
    如果不是windows的dll文件,则需要灵活查看版本号、描述、网友提供的信息、以及相关dll的版本号去判断。
如果实在无法判断,则把每个版本的dll文件拷贝到对应目录(可以在我们网站上文件详细页面查看到)或 C:\Windows\System (Windows 95/98/Me), C:\WINNT\System32 (Windows NT/2000), C:\Windows\System32 (Windows XP,Vista,7) , 去尝试。
至此如果问题依旧,您可能需要使用regsvr32,方法如下: 1.单击开始,选择运行 2.输入 regsvr32 文件名.dll 并按下确认 之后会弹出注册成功信息。
另外,您还可以使用我们的修复工具进行修复。
该文件常见出现的位置
1X869.3.0.1770\Program Files\ArcGIS\DotNet2X869.3.0.1770\WINDOWS\assembly\GAC_MSIL\ESRI.ArcGIS.ADF\9.3.0.cc631e44ad863X8610.0.0.2414\Windows\assembly\GAC_32\ESRI.ArcGIS.ADF\10.0.0.0__8fc3cc631e44ad864X8610.0.0.2414\Windows\assembly\GAC_32\ESRI.ArcGIS.ADF\10.0.0.0__8fc3cc631e44ad865X869.2.0.1324\WINDOWS\assembly\GAC_MSIL\ESRI.ArcGIS.ADF\9.2.0.cc631e44ad866X869.2.0.1324\WINDOWS\assembly\GAC_MSIL\ESRI.ArcGIS.ADF\9.2.0.cc631e44ad867X869.3.0.1770\Program Files (x86)\ArcGIS\DotNet8X8610.0.0.2414\Program Files\ArcGIS\DeveloperKit10.0\DotNet9X869.2.0.1324\Program Files\ArcGIS\DotNet10X869.2.6.1500\WINDOWS\assembly\GAC_MSIL\ESRI.ArcGIS.ADF\9.2.6.cc631e44ad8611X869.2.6.1500\Program Files\ArcGIS\DotNet12X869.2.0.1324\Program Files (x86)\ArcGIS\DotNet13X869.3.0.1770\GTcode\广西土地整治系统\GX_LASM\GX_LASM14X869.3.0.1770\Program Files\2011年度土地调查数据成果质量检查软件15X869.3.0.1770\Program Files\土地利用规划数据库质量检查软件
本文件是网友自行上传,如有侵权请联系站长。
本文件是否含有恶意程序请自行斟酌,本站仅保证对原始上传的文件未做任何改动。
对使用不当等造成的一切后果与本站无关。
站长不易,如果可以请扫描底部二维码给我们捐助。
下载该文件

我要回帖

更多关于 解压的时候拒绝访问 的文章

 

随机推荐