//打开要素集
IFeatureWorkspace pFeatureWorkspace = pWs as IFeatureWorkspace;
IFeatureClass esriFeatureClass = null; //工作空间里面的所有要素
//遍历要素集Dataset下的featureclass
IEnumDataset penumDatasets = pWs.get_Datasets(esriDatasetType.esriDTFeatureDataset);
penumDatasets.Reset();
IDataset pesriDataset = penumDatasets.Next();
if (pesriDataset is IFeatureDataset)
{
// try to find class in dataset
//try
//{
IFeatureClassContainer featContainer = (IFeatureClassContainer)pesriDataset;
IEnumFeatureClass pEnumFC = featContainer.Classes;
esriFeatureClass = pEnumFC.Next(); //
while (esriFeatureClass != null)
{
IDataset pDS = esriFeatureClass as IDataset;
//featureClasses.Add(pDS.Name.ToString());
//下两句代码获得IFeatureClass的Name名称(IFeatureClass只有AliasName属性,没有Name属性。需要先转到IDataset接口)
IDataset pDataset = esriFeatureClass as IDataset;
truename = pDataset.Name;//要素的真实名称
byname = esriFeatureClass.AliasName;//要素的别名
//int xpoint = dgvAttributesTable.Rows.Count - 3; //读取要素代码————————————————————————————————————————现在只能读取单个要素的,后面需要改
//YSDMFeature[xpoint] = dgvAttributesTable.Rows[xpoint].Cells["YSDM"].Value.ToString();
//swWriteFile.WriteLine(YSDMFeature[xpoint]);
//IFeatureClassContainer m_esriFeatureClassContainer = (IFeatureClassContainer)featureDatasetList[0]; //++++++++++++++++++++++++++++++++++++++++++++++这两句用来获取mdb中的要素?验证一下++++++++++++++++++++++++++++++++++++++++
//IEnumFeatureClass m_esriEnumFC = m_esriFeatureClassContainer.Classes;
//IFeatureClass m_esriFeatureClass = m_esriEnumFC.Next();
//IFeatureLayer m_esriFeatureLayer = new FeatureLayerClass();
//m_esriFeatureLayer.FeatureClass = m_esriFeatureClass;
////if (m_FeatureClass != null)//记得加判定要素是否为空要素!!!!
////{
////var name=m_FeatureClass.
//// fetuerLayers.Add(m_FeatureClass as IFeatureLayer);
//featureClasses.Add(m_esriFeatureClass as IFeatureClass); //++++++++++++++++++++++++++++++++++++++++++++++这两句用来获取mdb中的要素?验证一下++++++++++++++++++++++++++++++++++++++++
//List<string> FeatureCodefieldlist = new List<string>(); //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++20200512 16:55
//FeatureCodefieldlist.Add("YSDM");
IFeatureCursor featureCursor = featureClasses[0].Update(null, true);//通过游标获取当前点坐标,用search方法
//IFeatureCursor featureCursor = featureClass.Search(null, true);
if ((feature1 = featureCursor.NextFeature()) != null)
{
for (int i = 0; i < fieldlistFeatureCode.Count; i++)
{
int index = featureClasses[0].Fields.FindField(fieldlistFeatureCode[i]);
if (index >= 0)
{
value1 = feature1.get_Value(index).ToString();
//swWriteFile.WriteLine(value);//按点输出标识码
}
}
}
//swWriteFile.WriteLine(BSMFeature[xpoint]);//按点输出标识码
var esriGeometrytype = esriFeatureClass.ShapeType.ToString();//获取要素的几何类型(点(esriGeometryPoint)、线(esriGeometryPolyline)、面(esriGeometryPolygon)三种)
//a[j] = dgvAttributesTable.Rows[0].Cells["Shape"].Value.ToString();
if (esriGeometrytype == "esriGeometryPoint")
{
datatype = "Point";
}
else if (esriGeometrytype == "esriGeometryPolyline")
{
datatype = "Line";
}
else if (esriGeometrytype == "esriGeometryPolygon")
{
datatype = "Polygon";
}
//swWriteFile.WriteLine(YSDMFeature[xpoint] + "," + byname + "," + datatype + "," + truename);
swWriteFile.WriteLine(value1 + "," + byname + "," + datatype + "," + truename); //+++++++++++++++++++++++第一个真实名称如果不对,改为value1,即每一个要素的要素代码对应的值++++++++++++++++++++++++++++++++++++
esriFeatureClass = pEnumFC.Next();
}
}
浙公网安备 33010602011771号