- 积分
- 125
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-3-28
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
//生成dat文件
FileStream fs = new FileStream(strFilePathDat, FileMode.OpenOrCreate, FileAccess.Write);//这个是文件的地址
StreamWriter sw = new StreamWriter(fs, Encoding.Default);
。。。。。//这部分是加载你要的数据
//生成Grids文件
appSurfer.GridData(DataFile: strFilePathDat, //数据文件地址
xCol: 1, //x为第一列数据
yCol: 2, //y为第二列数据
zCol: 3, //z为第三列数据
DupMethod: Surfer.SrfDupMethod.srfDupNone,
xMin: 100.4, //x最小值
xMax: 101.5, //x最大者
yMin: 21.4, //y最小值
yMax: 22.6, //y最大值
Algorithm: Surfer.SrfGridAlgorithm.srfKriging, //插值算法Kriging
NumCols: (101.5 - 100.4) / 0.01, //x方向插值数据量
NumRows: (22.6 - 21.4) / 0.01, //y方向插值数据量
OutGrid: strFilePathGrid, //返回文件为gridfile
OutFmt: Surfer.SrfGridFormat.srfGridFmtAscii); //返回文件编码为Ascii
appSurfer.Quit();
System.GC.Collect(System.GC.GetGeneration(appSurfer));
IDocuments docs = appSurfer.Documents;
IPlotDocument Doc = (IPlotDocument)docs.Add(SrfDocTypes.srfDocPlot); //创建一个空白绘图文档
IShapes Shapes = Doc.Shapes;
#region 添加等值面
IMapFrame contourMapFrame = Shapes.AddContourMap(strFilePathGrid); //加载网格文件,这个是上面生成的grd文件
for (int i = 1; i <= contourMapFrame.Axes.Count; i++)
{
contourMapFrame.Axes.Item(i).Visible = false;
contourMapFrame.Axes.Item(i).MajorTickType = SrfTickType.srfTickNone;
contourMapFrame.Axes.Item(i).ShowLabels = false;
}
contourMapFrame.SetLimits(
xMin: 100.4, //x最小值
xMax: 101.5, //x最大者
yMin: 21.4, //y最小值
yMax: 22.6 //y最大值
);
contourMapFrame.xMapPerPU = 0.25; //设置比例
contourMapFrame.yMapPerPU = 0.25; //设置比例
IContourMap contourMap = (IContourMap)contourMapFrame.Overlays.Item(1);
contourMap.ShowColorScale = true; // 显示对应色柱
contourMap.ColorScale.Top = 7.5; //色柱y方向位置
contourMap.ColorScale.Left = contourMap.Left + contourMap.Width + 0.4;//色柱x方向位置
contourMap.ColorScale.Width = 0.6; //色柱宽度
contourMap.ColorScale.Height = 4; //色柱高度
contourMap.FillContours = true;//添加颜色填充
//加载系统颜色
contourMap.FillForegroundColorMap.LoadFile(strFilePathColor);//这是surfer 10的一个颜色文件 安装在C盘下 应该就是这个路径了 C:\Program Files\Golden Software\Surfer 10\ColorScales\Rainbow.clr
contourMap.ApplyFillToLevels(1, 1, 0);
for (int i = 0; i < contourMap.Levels.Count; i++)
{
contourMap.Levels.Item(i + 1).ShowLabel = true; //显示等值线上的数值
contourMap.Levels.Item(i + 1).ShowHach = false; //
contourMap.Levels.Item(i + 1).Line.Style = "Invisible"; //不显示线
}
contourMap.SmoothContours = SrfConSmoothType.srfConSmoothNone; //平滑等值线边界当前设置不平滑
#endregion
#region 添加边界
//后添加的会覆盖在先前添加的图片之上
IMapFrame boundryMapFrame = Shapes.AddBaseMap(strFilePathTLBLN, "Defaults=1");//这个是一个bln文件
for (int i = 1; i <= boundryMapFrame.Axes.Count; i++)
{
boundryMapFrame.Axes.Item(i).Visible = true; //隐藏轴线
boundryMapFrame.Axes.Item(i).MajorTickType = SrfTickType.srfTickNone; //隐藏边线
boundryMapFrame.Axes.Item(i).ShowLabels = true; //隐藏轴线上的坐标
}
boundryMapFrame.SetLimits(
xMin: 100.4, //x最小值
xMax: 101.5, //x最大者
yMin: 21.4, //y最小值
yMax: 22.6 //y最大值
);
boundryMapFrame.xMapPerPU = 0.25;
boundryMapFrame.yMapPerPU = 0.25;
IBaseMap boundryBaseMap = (IBaseMap)boundryMapFrame.Overlays.Item(1);
boundryBaseMap.Line.Width = 0.01; //设置边线宽度
#endregion
string strWH = string.Format("width = {0:f0}, height = {1:f0}, KeepAspect = 1, ColorDepth = 32", 540, 420);//设置输出图片的高度和宽度
Doc.Export(strFilePathPNG, SelectionOnly: false, Options: strWH);//设置输出图片格式名
Doc.Close(SrfSaveTypes.srfSaveChangesNo); //不生成srf文件
appSurfer.Quit();
System.GC.Collect(System.GC.GetGeneration(appSurfer));
大致的代码就是了 一些调用的文件 应该能明白 下图是运行的结果 现在有点遗憾的是不知道怎么在各个区域的其中一个点加名称了。 如果哪位大神知道 帮忙修改一下。
|
|