SOE开发中常用的两个方法

0
分享 2013-09-08
//下面这两个类是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;

}



文章来源:http://blog.csdn.net/arcgis_all/article/details/8847727

0 个评论

要回复文章请先登录注册