?? kriginginter.txt
字號:
克里金插值算法實現
private void Kriging(ILayer plyr, string FieldName, bool KriType, bool SearchType, string funcType, double SearchD, double SearchCount, double CellSize, out IGeoDataset poutGeoDataset)
{
poutGeoDataset = new FeatureClassDescriptorClass();
IRasterLayer pRasterLayer = new RasterLayerClass();
IFeatureClass pFeatureClass;
IFeatureLayer pfeaturelayer = (IFeatureLayer)plyr;
pFeatureClass = pfeaturelayer.FeatureClass;
IFeatureClassDescriptor pFeatureClassDescriptor = new FeatureClassDescriptorClass();
pFeatureClassDescriptor.Create(pFeatureClass, null, FieldName);
IInterpolationOp pInterpolationOp = new RasterInterpolationOpClass();
IRasterAnalysisEnvironment pEnv = (IRasterAnalysisEnvironment)pInterpolationOp;
object dCellSize = CellSize;
pEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref dCellSize);
object missing = Type.Missing;
IRasterRadius pRadius = new RasterRadius();
object pSearchCount = SearchCount;
object dSearchD = SearchD;
if (SearchType == true) //固定半徑
{
pRadius.SetFixed(SearchD, ref pSearchCount);
}
else
{
pRadius.SetVariable((int)SearchCount, ref dSearchD);
}
if (KriType == true)
{
switch (funcType)
{
case "三角函數":
poutGeoDataset = pInterpolationOp.Krige((IGeoDataset)pFeatureClassDescriptor, esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisCircularSemiVariogram, pRadius, false, ref missing);
break;
case "球面函數":
poutGeoDataset = pInterpolationOp.Krige((IGeoDataset)pFeatureClassDescriptor, esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisSphericalSemiVariogram, pRadius, false, ref missing);
break;
case "指數函數":
poutGeoDataset = pInterpolationOp.Krige((IGeoDataset)pFeatureClassDescriptor, esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisExponentialSemiVariogram, pRadius, false, ref missing);
break;
case "高斯函數":
poutGeoDataset = pInterpolationOp.Krige((IGeoDataset)pFeatureClassDescriptor, esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisGaussianSemiVariogram, pRadius, false, ref missing);
break;
case "線性函數":
poutGeoDataset = pInterpolationOp.Krige((IGeoDataset)pFeatureClassDescriptor, esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisLinearSemiVariogram, pRadius, false, ref missing);
break;
}
}
else
{
switch (funcType)
{
case "函數1":
poutGeoDataset = pInterpolationOp.Krige((IGeoDataset)pFeatureClassDescriptor, esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisUniversal1SemiVariogram, pRadius, false, ref missing);
break;
case "函數2":
poutGeoDataset = pInterpolationOp.Krige((IGeoDataset)pFeatureClassDescriptor, esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisUniversal2SemiVariogram, pRadius, false, ref missing);
break;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -