📄 clslinkattdatabase.cs
字号:
//插值生成等值面
IRaster pRasterDem = IDW(pFC, item, windDataset);
w.WriteLine(DateTime.Now.ToString() + " 插值生成等值面完成");
w.Flush();
//Console.WriteLine(DateTime.Now.ToString() + " 插值生成等值面完成");
//删除字段
IFields pFields = pFC.Fields;
int lFieldnumber = pFields.FindField(item);
IField pField1 = pFields.get_Field(lFieldnumber);
pFC.DeleteField(pField1);
//生成图片并加载栅格图层
createimg(pRasterDem, directorypath, name, windDataset);
w.WriteLine(DateTime.Now.ToString() + " 等值面图片生成");
w.Flush();
//Console.WriteLine(DateTime.Now.ToString() + " 等值面图片生成");
//释放内存
pRasterDem = null;
WndTable10.Dispose();
WndTable10 = null;
Wndds10.Dispose();
Wndds10 = null;
windDataset = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor1);
pFeatureCursor1 = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFC);
pFC = null;
pFields = null;
pField1 = null;
//删除重复记录
Querydata("4", yearSql , height, item);
//添加记录到数据库
String addSQL = "insert into t_wndrsc_product (STATTYPE, ENDDATE, HEIGHT, ITEM, FILENAME, path, OPERATETIME) values ('4', '" + yearSql + "', '" + height + "', '" + item + "', '" + name + "', '" + directorypath + "', sysdate)";
//MessageBox.Show(addSQL);
UpdateDataBase(addSQL);
w.WriteLine(DateTime.Now.ToString() + " 操作记录添加到数据库");
w.Flush();
//Console.WriteLine(DateTime.Now.ToString() + " 操作记录添加到数据库");
}
catch (Exception e)
{
w.WriteLine(DateTime.Now.ToString() + e.Message);
w.Flush();
//Console.WriteLine(DateTime.Now.ToString() + e.Message);
}
}
public void Querydata(String stattype,String date,double height,String item)
{
String sqldata = "delete from t_wndrsc_product t where t.STATTYPE ='" + stattype + "'and t.ENDDATE='" + date + "'and t.HEIGHT='" + height + "'and t.ITEM='" + item + "'";
UpdateDataBase(sqldata);
}
public void createimg(IRaster mRaster, String imgpath, String name, IGeoDataset windDataset)
{
IRasterLayer pRLayerDem;
pRLayerDem = new RasterLayerClass();
pRLayerDem.CreateFromRaster(mRaster);
Symbolling(pRLayerDem);
IRasterLayerExport pExraster = new RasterLayerExportClass();
pExraster.RasterLayer = pRLayerDem;
int x = 650;
int y = 650;
pExraster.SetSize(x, y);
IEnvelope pEnvelop = windDataset.Extent;
double dwidth = pEnvelop.Width;
double dheight = pEnvelop.Height;
double xMax = pEnvelop.XMax;
double yMax = pEnvelop.YMax + (dwidth - dheight)/2;
double xMin = pEnvelop.XMin;
double yMin = pEnvelop.YMin - (dwidth - dheight) / 2;
IEnvelope mEnvelop = new EnvelopeClass();
mEnvelop.PutCoords( xMin, yMin, xMax, yMax);
pExraster.Extent = mEnvelop;
pExraster.Force2RGB = true;
IWorkspaceFactory pWKSF = new RasterWorkspaceFactoryClass();
IWorkspace pWorkspace = pWKSF.OpenFromFile(@imgpath, 0);
if (pWorkspace!=null)
{
pExraster.Export(pWorkspace, name, "IMAGINE Image");
}
else
{
MessageBox.Show("请配置正确图片存放的路径");
Environment.Exit(0);
}
//释放内存
mRaster = null;
windDataset = null;
pRLayerDem = null;
mEnvelop = null;
pEnvelop = null;
pExraster = null;
pWKSF = null;
pWorkspace = null;
}
public IRaster IDW(IFeatureClass pFC, string sFieldName, IGeoDataset pGeoDataset)
{
IInterpolationOp pInterpolationOp;
pInterpolationOp = new RasterInterpolationOpClass();
//IGeoDataset pInputDataset = (IGeoDataset)pFC;
IRasterRadius pRadius;
pRadius = new RasterRadiusClass();
object dMaxDistance = new object();
dMaxDistance = null;
pRadius.SetVariable(12, ref dMaxDistance);
//pRadius.SetVariable(12, ref null);
IFeatureClassDescriptor pFCDescriptor;
pFCDescriptor = new FeatureClassDescriptorClass();
pFCDescriptor.Create(pFC, null, sFieldName);
object dCellSize = new object();
dCellSize = 9000.768204; //16688.768204
///
IRasterAnalysisEnvironment pEnv;
pEnv = (IRasterAnalysisEnvironment)pInterpolationOp;
pEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref dCellSize);
//pEnv.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue,);
pEnv.Mask = pGeoDataset;
//*******************************************
object extentProvider = pGeoDataset.Extent.Envelope;//.Envelope;
object snapRasterData = Type.Missing;
pEnv.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue, ref extentProvider, ref snapRasterData);
//*********************************************
IRaster pOutRaster;
object barrier = System.Reflection.Missing.Value;
IGeoDataset pGeoData = (IGeoDataset)pFCDescriptor;
//IGeoDataset pOutGeoData;
(IRaster)pOutRaster = pInterpolationOp.IDW(pGeoData, 2, pRadius, ref barrier) as IRaster;
//pOutRaster = (IRaster)pOutGeoData;
pRadius = null;
dMaxDistance = null;
snapRasterData = null;
extentProvider = null;
dCellSize = null;
pEnv = null;
pGeoData = null;
pFC = null;
pGeoDataset = null;
barrier = null;
pFCDescriptor = null;
pRadius = null;
pInterpolationOp = null;
return pOutRaster;
}
public void Symbolling(IRasterLayer pRasterLayer)
{
IRasterStretchColorRampRenderer pStretchRen;
pStretchRen = new RasterStretchColorRampRendererClass();
IRasterRenderer pRasRen;
pRasRen = pStretchRen as IRasterRenderer;
pRasRen.Raster = pRasterLayer.Raster;
pRasRen.Update();
//IRgbColor pFromColor = new RgbColorClass();
//pFromColor.Red = 255;
//IRgbColor pToColor = new RgbColorClass();
//pToColor.Blue = 255;
//IAlgorithmicColorRamp pRamp = new AlgorithmicColorRampClass();
//bool bTrue;
//pRamp.Size = 10;
IRasterClassifyColorRampRenderer pClassRen = new RasterClassifyColorRampRendererClass();
//pRamp.FromColor = pToColor;
//pRamp.ToColor = pFromColor;
//pRamp.CreateRamp(out bTrue);
// Create symbol for the classes
IFillSymbol pFSymbol = new SimpleFillSymbolClass();// SimpleFillSymbol;
String[] colorEnum = new String[] {"0,255,249","0,255,135","213,254,0","255,252,1","254,210,1 "," 252, 136, 1 ",
" 251, 78, 1 "," 254, 0, 2 "," 200, 80, 2 "," 127, 1, 2 ","110, 39, 9"};
//loop through the classes and apply the color and label
pClassRen.ClassCount = 11;
for (int i = 0; i < pClassRen.ClassCount; i++)
{
IRgbColor pColor = new RgbColorClass();
String scolor = colorEnum[i];
String[] sscolor = scolor.Split(',');
pColor.Red = Convert.ToInt32(sscolor[0]);
pColor.Green = Convert.ToInt32(sscolor[1]);
pColor.Blue = Convert.ToInt32(sscolor[2]);
pFSymbol.Color = pColor;
ISymbol pSymbol = (ISymbol)pFSymbol;
pClassRen.set_Symbol(i, pSymbol);
pClassRen.set_Label(i, "Class" + i.ToString());
pColor = null;
pSymbol = null;
}
pStretchRen.BandIndex = 0;
//pStretchRen.ColorRamp = pRamp;
pRasRen.Update();
pRasterLayer.Renderer = pClassRen as IRasterRenderer;
//return pRasterLayer;
pStretchRen = null;
pRasRen = null;
pFSymbol = null;
pClassRen = null;
pRasterLayer = null;
}
public IFeatureClass ReadPointShp(string sFileName)
{
string sFilePath = sFileName.Substring(0, sFileName.LastIndexOf("\\"));
sFileName = sFileName.Substring(sFilePath.Length + 1);
IFeatureWorkspace pFtWs;
IFeatureClass pFtCs;
IWorkspaceFactory pWsFt = new ShapefileWorkspaceFactoryClass();
pFtWs = (IFeatureWorkspace)pWsFt.OpenFromFile(sFilePath, 0);
pFtCs = pFtWs.OpenFeatureClass(sFileName);
pWsFt = null;
pFtWs = null;
return pFtCs;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -