/// <summary>
/// 根据指定shp文件的路径清理Feature,也就是shp数据的属性信息,但保留表头
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Delete_Click(object sender, EventArgs e)
{
//要删除的shp路径
string strPath = @"F:\Point.shp";
//注册Ogr
OSGeo.OGR.Ogr.RegisterAll();
//打开shp
OSGeo.OGR.DataSource ds = OSGeo.OGR.Ogr.Open(strPath, 1);
//获取图层
OSGeo.OGR.Layer oLayer = ds.GetLayerByIndex(0);
//声明Feature
OSGeo.OGR.Feature p = null;
//循环赋值并删除
while ((p = oLayer.GetNextFeature()) != null)
{
//删除
oLayer.DeleteFeature(p.GetFID());
//重置迭代器
oLayer.ResetReading();
}
Console.WriteLine(oLayer.GetName().ToString());
//这一步是必须的,重新整理数据源
ds.ExecuteSQL("REPACK " + oLayer.GetName(), null, "");
//写入硬盘
oLayer.SyncToDisk();
//关闭Layer
oLayer.Dispose();
//写入硬盘
ds.SyncToDisk();
//关闭datasource
ds.Dispose();
this.Dispose();
}
/// 根据指定shp文件的路径清理Feature,也就是shp数据的属性信息,但保留表头
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Delete_Click(object sender, EventArgs e)
{
//要删除的shp路径
string strPath = @"F:\Point.shp";
//注册Ogr
OSGeo.OGR.Ogr.RegisterAll();
//打开shp
OSGeo.OGR.DataSource ds = OSGeo.OGR.Ogr.Open(strPath, 1);
//获取图层
OSGeo.OGR.Layer oLayer = ds.GetLayerByIndex(0);
//声明Feature
OSGeo.OGR.Feature p = null;
//循环赋值并删除
while ((p = oLayer.GetNextFeature()) != null)
{
//删除
oLayer.DeleteFeature(p.GetFID());
//重置迭代器
oLayer.ResetReading();
}
Console.WriteLine(oLayer.GetName().ToString());
//这一步是必须的,重新整理数据源
ds.ExecuteSQL("REPACK " + oLayer.GetName(), null, "");
//写入硬盘
oLayer.SyncToDisk();
//关闭Layer
oLayer.Dispose();
//写入硬盘
ds.SyncToDisk();
//关闭datasource
ds.Dispose();
this.Dispose();
}