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;
}
文章来源:http://blog.csdn.net/arcgis_all/article/details/8847727
函数的作用已经注释出来了,有疑问请留言!
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 个评论
相关问题
- gis开发群的管理不讲理,求围观。
- 两个图层投影坐标系都一样,但就是不能叠加在一起。怎么办,求大神指点。一个是县的灾害点,一个是县的行政区划。
- 请问大家学习AE开发都参考了哪些资料?
- 两个栅格文件分辨率一致,但像元位置不一致,如何处理?
- 如何使用脚本或其他方法,将图层属性中属性域原值内容替换为属性域描述?
- arcgis runtime for andriod 100.1 如何使用eclipse开发
- 基于ArcGIS的CAD数据向GIS数据转换方法
- Engine中如何判断两个要素类的空间参考是否是同一个?
- 怎样自学遥感和GIS一体化开发,或者说需要哪些基础?
- javascript api for gis 开发环境配置
- 请问如何在C# ArcEngine开发中调用GP工具处理后将数据保存到到任意位置?并读取?