zoukankan      html  css  js  c++  java
  • ADF连接SOM

       

    VS2008新建一个应用如下:

    添加引用如下:

    service.cs的内容

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.Text;
    using System.Collections;

    using ESRI.ArcGIS.Server;
    using ESRI.ArcGIS.ADF;
    using ESRI.ArcGIS.ADF.Connection.Local;
    using ESRI.ArcGIS.ADF.Connection.AGS;
    using ESRI.ArcGIS.Carto;
    using ESRI.ArcGIS.Geodatabase;


    // 注意: 如果更改此处的类名“Service”,也必须更新 Web.config 和关联的 .svc 文件中对“Service”的引用。
    public class Service : IService
    {
    public ArrayList GetProvinceNames(string country)
    {
    string username = "ArcGISSOM";
    string password = "111";
    string domain = "ohn-THINK";
    string hostname = "localhost";
    ArrayList results = new ArrayList();
    IServerContext serverContext = null;
    try
    {
    using (ComReleaser comReleaser = new ComReleaser())
    {
    // Create the user identity.
    ESRI.ArcGIS.ADF.Identity userIdentity = new ESRI.ArcGIS.ADF.Identity(username, password, domain);

    AGSServerConnection agsConnnection = new AGSServerConnection(hostname, userIdentity);
    agsConnnection.Connect();
    IServerObjectManager som = agsConnnection.ServerObjectManager;
    comReleaser.ManageLifetime(som);

    serverContext = som.CreateServerContext("World", "MapServer");
    IMapServer ms = (IMapServer)serverContext.ServerObject;
    IMapServerObjects mapObjs = ms as IMapServerObjects;
    IMap map = mapObjs.get_Map(ms.DefaultMapName);
    ILayer layer = map.get_Layer(0); // cities 图层
    IFeatureLayer flayer = layer as IFeatureLayer;
    IFeatureClass featClass = flayer.FeatureClass;

    IQueryFilter qf = new QueryFilterClass();
    qf.WhereClause = "CNTRY_NAME='" + country + "'";
    ICursor cursor = (ICursor)featClass.Search(qf, false);
    IDataStatistics dataStatistics = new DataStatisticsClass();
    dataStatistics.Field = "ADMIN_NAME";
    dataStatistics.Cursor = cursor;
    System.Collections.IEnumerator enumerator = dataStatistics.UniqueValues;
    enumerator.Reset();

    while (enumerator.MoveNext())
    {
    string countryname = enumerator.Current.ToString();
    results.Add(countryname);
    }
    serverContext.ReleaseContext();
    }
    }
    catch
    {
    serverContext.ReleaseContext();
    }
    return results;
    }


    public string GetData(int value)
    {
    return string.Format("You entered: {0}", value);
    }

    public CompositeType GetDataUsingDataContract(CompositeType composite)
    {
    if (composite.BoolValue)
    {
    composite.StringValue += "Suffix";
    }
    return composite;
    }
    }

     IService.cs的内容

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.Text;
    using System.ServiceModel.Web;
    using System.Collections;
    // 注意: 如果更改此处的接口名称“IService”,也必须更新 Web.config 中对“IService”的引用。
    [ServiceContract]
    public interface IService
    {
    [WebGet]
    [OperationContract]
    ArrayList GetProvinceNames(string country);


    [OperationContract]
    string GetData(int value);

    [OperationContract]
    CompositeType GetDataUsingDataContract(CompositeType composite);

    // 任务: 在此处添加服务操作
    }

    // 使用下面示例中说明的数据约定将复合类型添加到服务操作。
    [DataContract]
    public class CompositeType
    {
    bool boolValue = true;
    string stringValue = "Hello ";

    [DataMember]
    public bool BoolValue
    {
    get { return boolValue; }
    set { boolValue = value; }
    }

    [DataMember]
    public string StringValue
    {
    get { return stringValue; }
    set { stringValue = value; }
    }
    }

    web.config

    <%@ ServiceHost Language="C#" Debug="true" Service="Service" CodeBehind="~/App_Code/Service.cs" %>

     效果图:

  • 相关阅读:
    微软企业库4.1学习笔记(二十六)Unity依赖注入模块3
    微软企业库4.1学习笔记(三十七)日志模块 在应用中使用日志模块
    微软企业库5.0学习笔记(三十五)数据访问模块 DataSet以及数据库事务
    微软企业库4.1学习笔记(四十一)依赖注入模块Unity 简介
    项目统一开发管理解决方案思路[项目组成员同时做很多项目的解决思路探讨]
    在moss2007WEB应用服务器上发布独立web程序时遇到的问题的解决思路
    工作流表单自定义的误区
    文档库创建的子文件夹的URL显示为 http://[机器名]/.... 导致无法正常访问的问题解决办法
    申请加入 .NET企业应用开发 博客团队请回复
    儿子照片
  • 原文地址:https://www.cnblogs.com/arcserver/p/2780898.html
Copyright © 2011-2022 走看看