/**
*strRasterFileDir:栅格数据文件所在目录
*strRasterFileName:栅格数据文件名
*strOutName:存储于数据库的文件名
*failInfo:导入失败文件名
*errorDetail:错误信息
*skipInfo:发现重名情况跳过文件名
**/
private void imortRasterData(string strRasterFileDir, string strRasterFileName, string strOutName, ref string failInfo, ref string errorDetail, ref string skipInfo)
{
try
{
//判断是否有重名现象
IWorkspace2 pWS2 = pSdeWorkSpace as IWorkspace2;
//如果名称已存在
if (pWS2.get_NameExists(esriDatasetType.esriDTRasterDataset, strOutName))
{
DialogResult result;
result = MessageBox.Show(this, "栅格文件名 " + strOutName + " 在数据库中已存在!" + "\r是否覆盖?", "相同文件名", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
//覆盖原矢量要素
if (result == DialogResult.Yes)
{
IRasterWorkspaceEx pRWs = pSdeWorkSpace as IRasterWorkspaceEx;
IDataset pDataset = pRWs.OpenRasterDataset(strOutName) as IDataset;
pDataset.Delete();
pDataset = null;
}
else if (result == DialogResult.No)
{
//不覆盖,则退出for循环,忽略这个要素,转入下一个要素的导入
if (skipInfo == "")
skipInfo = strRasterFileDir + "\\" + strRasterFileName;
else
skipInfo += ";" + strRasterFileDir + "\\" + strRasterFileName;
return;
}
}
IWorkspaceFactory pRasterWsFac = new RasterWorkspaceFactoryClass();
IWorkspace pWs = pRasterWsFac.OpenFromFile(strRasterFileDir, 0);
IRasterDataset pRasterDs = null;
IRasterWorkspace pRasterWs;
if (!(pWs is IRasterWorkspace))
{
if (failInfo == "")
{
failInfo = strRasterFileDir + "\\" + strRasterFileName;
errorDetail = "错误信息:" + strRasterFileDir + "不是栅格工作空间。";
}
else
{
failInfo += ";" + strRasterFileDir + "\\" + strRasterFileName;
errorDetail += ";" + "错误信息:" + strRasterFileDir + "不是栅格工作空间。";
}
return;
}
pRasterWs = pWs as IRasterWorkspace;
pRasterDs = pRasterWs.OpenRasterDataset(strRasterFileName);
ISaveAs2 saveAs2 = (ISaveAs2)pRasterDs;
IRasterStorageDef rasterStorageDef = new RasterStorageDefClass();
IRasterStorageDef2 rasterStorageDef2 = (IRasterStorageDef2)rasterStorageDef;
rasterStorageDef2.CompressionType =
esriRasterCompressionType.esriRasterCompressionJPEG2000;
rasterStorageDef2.CompressionQuality = 50;
rasterStorageDef2.Tiled = true;
rasterStorageDef2.TileHeight = 128;
rasterStorageDef2.TileWidth = 128;
saveAs2.SaveAsRasterDataset(strOutName, pSdeWorkSpace, "gdb", rasterStorageDef2);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
if (failInfo == "")
{
failInfo = strRasterFileDir + "\\" + strRasterFileName;
errorDetail = "错误信息:" + ex.Message;
}
else
{
failInfo += ";" + strRasterFileDir + "\\" + strRasterFileName;
errorDetail += ";" + "错误信息:" + ex.Message;
}
return;
}
}