問題描述
在項目中遇到一個shape文件轉json的需求,於是選用了GDal方案,使用方法網上一大堆,但在執行轉換過後生成的文本文件一直釋放不了,每次生成的結果文件刪除不掉就很噁心,於是各種調試終於找到解決方案
問題代碼
生成的文件刪除不掉,執行CopyDataSource重名的話, 會報錯
public void convertShapefile2Geojson(string shpPath, string geojsonPath)
{
using (DataSource ds = Ogr.Open(shpPath, 0))
{
if (ds == null)
{
return;
}
using (Driver dv = Ogr.GetDriverByName("GeoJSON"))
{
if (dv == null)
{
return;
}
try
{
if (File.Exists(geojsonPath))
{
dv.DeleteDataSource(geojsonPath);
}
dv.CopyDataSource(ds, geojsonPath, null);
dv.Dispose();
}
catch (Exception exx)
{
}
}
ds.Dispose();
}
}
成功代碼
加上一句 Gdal.GDALDestroyDriverManager(); 即可
public void convertShapefile2Geojson(string shpPath, string geojsonPath)
{
using (DataSource ds = Ogr.Open(shpPath, 0))
{
if (ds == null)
{
return;
}
using (Driver dv = Ogr.GetDriverByName("GeoJSON"))
{
if (dv == null)
{
return;
}
try
{
if (File.Exists(geojsonPath))
{
dv.DeleteDataSource(geojsonPath);
}
dv.CopyDataSource(ds, geojsonPath, null);
dv.Deregister();
dv.Dispose();
}
catch (Exception exx)
{
}
}
ds.Dispose();
Gdal.GDALDestroyDriverManager();
}
}