c# 使用datagridview 浏览shp图层属性表(是否可以在这里直接修改呢?有待研究)
来源:互联网 发布:idown mac 编辑:程序博客网 时间:2024/05/16 08:54
每次浏览shp图层的属性表时,总是使用ArcMap打开,比较麻烦。虽然网络中有小巧的DBF数据库浏览工具,也还是觉得有点大材小用。
下面的C#代码用来读取shp图层的属性表,并在DataGridView中显示,在VS 2005中调试通过,代码很简单。
下面的C#代码用来读取shp图层的属性表,并在DataGridView中显示,在VS 2005中调试通过,代码很简单。
OpenFileDialog ofdDBF = new OpenFileDialog();
ofdDBF.Filter = "属性表文件(*.dbf)|*.dbf";
if (ofdDBF.ShowDialog() == DialogResult.OK)
{
string OpenFileName = ofdDBF.FileName.Trim();
string dbfFilePath = Path.GetDirectoryName(OpenFileName);
string dbfFileName = Path.GetFileName(OpenFileName);
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(dbfFilePath, 0);
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
if (pFeatureWorkspace != null)
{
IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(dbfFileName);
if (pFeatureClass != null)
{
DataTable dt = new DataTable();
DataColumn dc = null;
for (int i = 0; i < pFeatureClass.Fields.FieldCount; i++)
{
dc = new DataColumn(pFeatureClass.Fields.get_Field(i).Name);
dt.Columns.Add(dc);
}
IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
IFeature pFeature = pFeatureCursor.NextFeature();
DataRow dr = null;
while (pFeature != null)
{
dr = dt.NewRow();
for (int j = 0; j < pFeatureClass.Fields.FieldCount; j++)
{
if (pFeatureClass.FindField(pFeatureClass.ShapeFieldName) == j)
{
dr[j] = pFeatureClass.ShapeType.ToString();
}
else
{
dr[j] = pFeature.get_Value(j).ToString();
}
}
dt.Rows.Add(dr);
pFeature = pFeatureCursor.NextFeature();
}
dataGridView1.DataSource = dt;
}
}
}
这样就再也不用每次都费力的打开ArcMap了,用这个小工具即可。ofdDBF.Filter = "属性表文件(*.dbf)|*.dbf";
if (ofdDBF.ShowDialog() == DialogResult.OK)
{
string OpenFileName = ofdDBF.FileName.Trim();
string dbfFilePath = Path.GetDirectoryName(OpenFileName);
string dbfFileName = Path.GetFileName(OpenFileName);
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(dbfFilePath, 0);
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
if (pFeatureWorkspace != null)
{
IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(dbfFileName);
if (pFeatureClass != null)
{
DataTable dt = new DataTable();
DataColumn dc = null;
for (int i = 0; i < pFeatureClass.Fields.FieldCount; i++)
{
dc = new DataColumn(pFeatureClass.Fields.get_Field(i).Name);
dt.Columns.Add(dc);
}
IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
IFeature pFeature = pFeatureCursor.NextFeature();
DataRow dr = null;
while (pFeature != null)
{
dr = dt.NewRow();
for (int j = 0; j < pFeatureClass.Fields.FieldCount; j++)
{
if (pFeatureClass.FindField(pFeatureClass.ShapeFieldName) == j)
{
dr[j] = pFeatureClass.ShapeType.ToString();
}
else
{
dr[j] = pFeature.get_Value(j).ToString();
}
}
dt.Rows.Add(dr);
pFeature = pFeatureCursor.NextFeature();
}
dataGridView1.DataSource = dt;
}
}
}
- c# 使用datagridview 浏览shp图层属性表(是否可以在这里直接修改呢?有待研究)
- 在DataGridView中浏览shp图层的属性表[.dbf文件]
- C#中用DataGridView绑定ArcGIS图层的属性表
- C#中用DataGridView绑定ArcGIS图层的属性表
- 关于c# 读取dbf文件的数据库引擎驱动 (特别针对 shp图层的dbf属性文件)
- Q:我已经使用WinDriver成功开发驱动程序,请问是否可以在设备管理器中修改此驱动程序显示的名称呢?
- ArcEngine 导出图层(shp)
- ArcEngine 导出图层(shp)
- 是否能直接使用img对象名字来替代images[索引值]数组呢?测试代码显示:可以。
- c# 在datagridview修改添加数据
- TCP状态图和常见问题这里有待研究,怎么是九种状态
- C#读取shp的属性表dbf文件
- c# DataGridView控件的使用补充--属性
- 直接在DataGridView中添加修改数据的问题
- DataGridView控件选中单元格、直接在控件中修改信息
- C#:直接在DataGridView控件中修改数据
- shp图层的容量
- 有待研究
- word中图片不显示怎么办
- 简单记录,使用Bitmap压缩时遇到的耗时过长的问题。
- C++学习笔记_3:多继承时的类声明及构造和析构函数
- 通过uiview 得到所在的viewcontroller
- CMPP协议
- c# 使用datagridview 浏览shp图层属性表(是否可以在这里直接修改呢?有待研究)
- DLNA,DMS介绍
- shell中break的使用案例
- Unity3d与IOS/Xcode的交互
- SSE2指令集系列之一----浮点运算指令
- iOS开发——戏说旋屏
- java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher
- UPnP详解
- div+css全局样式(各大门户网站以及常用css全局样式)