SOE开发中常用的两个方法

//下面这两个类是SOE开发的时候常用的,现在只写了两个,如果您还有特殊需求请提出来,一起完善这个类。

函数的作用已经注释出来了,有疑问请留言!

 

class SOEUtility
    {
       /// <summary>
       /// 根据图层获取所在的索引
        /// 刘宇
       /// </summary>
       /// <param name="pLayerName"></param>
       /// <param name="mapServer"></param>
       /// <returns></returns>
       public static int GetLayerIndexByName(string pLayerName, IMapServer3 mapServer)
        {

            string mapName = mapServer.DefaultMapName;
            IMapLayerInfos pLayerInfos = mapServer.GetServerInfo(mapName).MapLayerInfos;
            IMapLayerInfo layerInfo = null;

            //获得所要分析图层的index
            int pCount = pLayerInfos.Count;
            int pLayerIndex = -1;//-1 表示没找到
            for (int i = 0; i < pCount; i++)
            {
                layerInfo = pLayerInfos.get_Element(i);
                if (layerInfo.Name == pLayerName)
                {
                    pLayerIndex = i;
                    break;
                }
            }
            return pLayerIndex;
        }
        /// <summary>
        /// 将要素类转化为JSON对象,2013年4月
        /// 刘宇
        /// </summary>
        /// <param name="pFtClass"></param>
        /// <returns></returns>
       public static JsonObject GetJsonFromFeatureClass(IFeatureClass pFtClass)
       {
           //获取要素数目
           int pCount = pFtClass.FeatureCount(null);
           int pFieldsCount = pFtClass.Fields.FieldCount;
           //将每一个要素序列化成json数据
           IFeature pFeature = null;
           List<JsonObject> featureClassJson = new List<JsonObject>();
           for (int i = 0; i < pCount; i++)
           {
               JsonObject featureJson = new JsonObject();
               pFeature = pFtClass.GetFeature(i);
               for (int j = 0; j < pFieldsCount; j++)
               {
                   if (pFeature.Fields.get_Field(j).Type == esriFieldType.esriFieldTypeGeometry)
                   {          IGeometry pGeometry = pFeature.Shape;
                            
                               if (pGeometry != null)
                               {
                                   JsonObject GeoJson = Conversion.ToJsonObject(pGeometry);
                                   featureJson.AddJsonObject("geometry", GeoJson);
                                }
                    }
                   else if (pFeature.Fields.get_Field(j).Type == esriFieldType.esriFieldTypeOID)
                   {
                      int pIndex= (int)pFeature.get_Value(j);
                      featureJson.AddDouble(pFeature.Fields.get_Field(j).Name, pIndex);
                   }
                   else if (pFeature.Fields.get_Field(j).Type == esriFieldType.esriFieldTypeDouble)
                   {
                       double pIndex = (double)pFeature.get_Value(j);
                       featureJson.AddDouble(pFeature.Fields.get_Field(j).Name, pIndex);
                   }
                   else if (pFeature.Fields.get_Field(j).Type == esriFieldType.esriFieldTypeInteger)
                   {
                        int pIndex = (int)pFeature.get_Value(j);
                       featureJson.AddDouble(pFeature.Fields.get_Field(j).Name, pIndex);
                   }
                   else 
                   {
                       string pIndex = (string)pFeature.get_Value(j);
                       featureJson.AddString(pFeature.Fields.get_Field(j).Name, pIndex);
                   }

               }

               featureClassJson.Add(featureJson);
           }

           JsonObject resultJson = new JsonObject();
           resultJson.AddArray("result", featureClassJson.ToArray());
           return resultJson;

       }


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值