-
Notifications
You must be signed in to change notification settings - Fork 0
/
surfer.py
503 lines (476 loc) · 29.3 KB
/
surfer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
# -*- coding: utf-8 -*-
"""
Created on Sat Sep 29 10:17:40 2018
@author: gonhjian
"""
import win32com
import win32com.client
#import re
#import matplotlib
#import numpy as np
#import matplotlib.cm as cm
#import matplotlib.mlab as mlab
#import matplotlib.pyplot as plt
#import pandas as pd
#from mpl_toolkits.mplot3d import Axes3D
#from matplotlib.mlab import griddata
#from matplotlib.colors import Normalize
#from scipy.interpolate import griddata as gd
#from scipy import interpolate
import math
#import os
#import sys
def Contour(datafile,outfile,blank_file,xcol,ycol,zcol,algorithm,showreport,xlength,ylength,top,left,caxshowlabel1,caxshowlabel2,baxshowlabel1,baxshowlabel2,caxmajorticklength1,\
caxmajorticklength2,baxmajorticklength1,baxmajorticklength2,caxlinestyle1,caxlinestyle2,baxlinestyle1,baxlinestyle2,caxwidth1,caxwidth2,caxmajorticktype1,caxmajorticktype2,\
baxmajorticktype1,baxmajorticktype2,caxbtitle,caxltitle,caxbtitlefontsize,caxltitlefontsize,caxbtitlefontface,caxltitlefontface,caxblabelfontsize,caxllabelfontsize,caxblabelface,\
caxllabelface,caxbtitleoffset2,caxltitleoffset2,caxbtitleoffset1,caxltitleoffset1,caxbtitlefontbold,caxltitlefontbold,caxblabelfontbold,caxllabelfontbold,\
clfillcontour,clsmoothcontour,interval,cllevelmajorinterval,clshowmajorlabels,clshowminorlabels,clshowcolorscale,clorientlabelsuphill,clopacity,clminlinestyle,clmajlinestyle,\
clmajlinewidth,cllabelfontface,cllabelfontsize,cllabelfontbold,save_file,baselinewith):
'''
excel_file 输入边界文件.xlsx bln_file 输出边界文件.bln
bna_file 输出边界文件.bna datafile 输入原始文件.dat
outfile 输出网格文件.grd blank_file 输入白化文件.bln,值为bln_file
xcol 输入x轴值 ycol 输入y轴值
zcol 输入z轴值 algorithm 输入插值算法
showreport 是否显示网格文件 xlength 输入图框长
ylength 输入图框高 top 输入图框位置,上边距
left 输入图框位置,左边距 caxshowlabel1 输入图框左侧和底侧坐标轴是否显示标签
caxshowlabel2 输入图框上侧和右侧坐标轴是否显示标签 baxshowlabel1 输入底图左侧和底侧坐标轴是否显示标签
baxshowlabel2 输入底图上侧和右侧坐标轴是否显示标签 caxmajorticklength1 输入图框左侧和底侧坐标轴的主刻线长度
caxmajorticklength2 输入图框上侧和右侧坐标轴的主刻线长度 baxmajorticklength1 输入底图左侧和底侧坐标轴的主刻线长度
baxmajorticklength2 输入底图上侧和右侧坐标轴的主刻线长度 caxlinestyle1 输入图框左侧和底侧坐标轴线线型
caxlinestyle2 输入图框上侧和右侧坐标轴线线型 baxlinestyle1 输入底图左侧和底侧坐标轴线线型
baxlinestyle2 输入底图上侧和右侧坐标轴线线型 caxwidth1 输入图框左侧和底侧坐标轴线宽
caxwidth2 输入图框上侧和右侧坐标轴线宽 caxmajorticktype1 输入图框左侧和底侧坐标轴刻线样式
caxmajorticktype2 输入图框上侧和右侧坐标轴刻线样式 baxmajorticktype1 输入底图左侧和底侧坐标轴刻线样式
baxmajorticktype2 输入底图上侧和右侧坐标轴刻线样式 caxbtitle 输入底部坐标轴名称
caxltitle 输入左侧坐标轴名称 caxbtitlefontsize 输入底侧坐标轴名称字体大小
caxltitlefontsize 输入左侧坐标轴名称字体大小 caxbtitlefontface 输入底侧坐标轴名称字体样式
caxltitlefontface 输入左侧坐标轴名称字体样式 caxblabelfontsize 输入底侧坐标轴标签字体大小
caxllabelfontsize 输入左侧坐标轴标签字体大小 caxblabelface 输入底侧坐标轴标签字体样式
caxllabelface 输入左侧坐标轴标签字体样式 caxbtitleoffset2 输入底侧坐标轴名称上下移动距离
caxltitleoffset2 输入左侧坐标轴名称上下移动距离 caxbtitleoffset1 输入底侧坐标轴名称左右移动距离
caxltitleoffset1 输入左侧坐标轴名称左右移动距离 caxbtitlefontbold 输入底侧坐标轴名称是否加粗
caxltitlefontbold 输入左侧坐标轴名称是否加粗 caxblabelfontbold 输入底侧坐标轴标签是否加粗
caxllabelfontbold 输入左侧坐标轴标签是否加粗 clfillcontour 输入等高线图层是否着色
clsmoothcontour 输入等高线平滑程度 interval 输入等高线最小间距
cllevelmajorinterval输入主等高线的间隔 clshowmajorlabels 输入主等高线是否显示标签
clshowminorlabels 输入次等高线是否显示标签 clshowcolorscale 输入是否显示颜色标签
clorientlabelsuphill输入是否倒置等高线标签 clopacity 输入等高线图层透明度
clminlinestyle 输入次等高线线型 clmajlinestyle 输入主等高线线型
clmajlinewidth 输入主等高线线宽 cllabelfontface 输入等高线标签字体样式
cllabelfontsize 输入等高线标签字体大小 cllabelfontbold 输入等高线标签字体是否加粗
save_file 保存文件.srf baselinewith 输入轮廓线宽
'''
app =win32com.client.gencache.EnsureDispatch("Surfer.Application")
Plot=app.Documents.Add(1)
app.Visible = True
DataFile = datafile
OutFile =outfile
blankfile=blank_file
savefile=save_file
if datafile!=0:
Grid =app.NewGrid()
app.GridData (DataFile=DataFile,xCol=xcol,yCol=ycol,zCol=zcol,Algorithm =algorithm,ShowReport=showreport, OutGrid= OutFile)
app.GridBlank(InGrid=OutFile,BlankFile=blankfile,OutGrid=OutFile,OutFmt=3)
# MapFrame1=Plot.Shapes.AddBaseMap(blankfile)
Grid.LoadFile(OutFile,HeaderOnly=True)
#Creates a contour map and assigns the map frame to the variable "MapFrame"
MapFrame = Plot.Shapes.AddContourMap(OutFile)
# Plot.Shapes.SelectAll()
# Plot.Selection.OverlayMaps()
ContourMap=MapFrame.Overlays(1)
# Plot.Shapes.SelectAll()
# Plot.Selection.OverlayMaps()
#检索出等值线图,修改其属性
x1=abs(Grid.xMax)
x2=abs(Grid.xMin)
y1=abs(Grid.yMax)
y2=abs(Grid.yMin)
z1=abs(Grid.zMax)
z2=abs(Grid.zMin)
if (x1>=1 or x1==0):
x1=x1
xmax=math.ceil(Grid.xMax)
else:
i1=0
while (x1<1):
i1=i1+1
x1=x1*math.pow(10,i1)
xmax=math.ceil(Grid.xMax*math.pow(10,i1))/(1.0*math.pow(10,i1))
if (x2>=1 or x2==0):
x2=x2
xmin=math.floor(Grid.xMin)
else:
i2=0
while (x2<1):
i2=i2+1
x2=x2*math.pow(10,i2)
xmin=math.floor(Grid.xMin*math.pow(10,i2))/(1.0*math.pow(10,i2))
if (y1>=1 or y1==0):
y1=y1
ymax=math.ceil(Grid.yMax)
else:
j1=0
while (x1<1):
j1=j1+1
y1=y1*math.pow(10,j1)
ymax=math.ceil(Grid.yMax*pow(10,j1))/(1.0*math.pow(10,j1))
if (y2>=1 or y2==0):
y2=y2
ymin=math.floor(Grid.yMin)
else:
j2=0
while (y2<1):
j2=j2+1
y2=y2*math.pow(10,j2)
ymin=math.floor(Grid.yMin*math.pow(10,j2))/(1.0*math.pow(10,j2))
if (z1>=1 or z1==0):
z1=z1
zmax=math.ceil(Grid.zMax)
else:
k1=0
while (z1<1):
k1=k1+1
z1=z1*math.pow(10,k1)
zmax=math.ceil(Grid.zMax*math.pow(10,k1))/(1.0*math.pow(10,k1))
if (z2>=1 or z2==0):
z2=z2
zmin=math.floor(Grid.zMin)
else:
k2=0
while (z2<1):
k2=k2+1
z2=z2*math.pow(10,k2)
zmin=math.floor(Grid.zMin*math.pow(10,k2))/(1.0*math.pow(10,k2))
#Changes the Mapframe Property
MapFrame.SetLimits (xMin=xmin, xMax=xmax, yMin=ymin, yMax=ymax)
MapFrame.xLength=xlength
MapFrame.yLength=ylength
MapFrame.Top=top
MapFrame.Left =left
for Axis in ['Bottom Axis','Left Axis']: #,'Top Axis','Right Axis']:
MapFrame.Axes(Axis).ShowLabels =caxshowlabel1
MapFrame.Axes(Axis).MajorTickLength=caxmajorticklength1
MapFrame.Axes(Axis).AxisLine.Style =caxlinestyle1
MapFrame.Axes(Axis).AxisLine.Width =caxwidth1
MapFrame.Axes(Axis).MajorTickType =caxmajorticktype1
for Axis in ['Top Axis','Right Axis']:
MapFrame.Axes(Axis).ShowLabels =caxshowlabel2
MapFrame.Axes(Axis).MajorTickType =caxmajorticktype2
MapFrame.Axes(Axis).AxisLine.Style =caxlinestyle2
MapFrame.Axes(Axis).MajorTickLength=caxmajorticklength2
MapFrame.Axes(Axis).AxisLine.Width =caxwidth2
MapFrame.Axes("Bottom Axis").Title = caxbtitle
MapFrame.Axes("Left Axis").Title= caxltitle
MapFrame.Axes("Bottom Axis").TitleFont.Size =caxbtitlefontsize
MapFrame.Axes("Left Axis").TitleFont.Size= caxltitlefontsize
MapFrame.Axes("Bottom Axis").TitleFont.Face =caxbtitlefontface
MapFrame.Axes("Left Axis").TitleFont.Face=caxltitlefontface
MapFrame.Axes("Bottom Axis").LabelFont.Size =caxblabelfontsize
MapFrame.Axes("Left Axis").LabelFont.Size= caxllabelfontsize
MapFrame.Axes("Bottom Axis").LabelFont.Face =caxblabelface
MapFrame.Axes("Left Axis").LabelFont.Face=caxllabelface
MapFrame.Axes("Bottom Axis").TitleOffset2=caxbtitleoffset2
MapFrame.Axes("Left Axis").TitleOffset2=caxltitleoffset2
MapFrame.Axes("Bottom Axis").TitleOffset1=caxbtitleoffset1
MapFrame.Axes("Left Axis").TitleOffset1=caxltitleoffset1
MapFrame.Axes("Bottom Axis").TitleFont.Bold =caxbtitlefontbold
MapFrame.Axes("Left Axis").TitleFont.Bold= caxltitlefontbold
MapFrame.Axes("Bottom Axis").LabelFont.Bold =caxblabelfontbold
MapFrame.Axes("Left Axis").LabelFont.Bold= caxllabelfontbold
###将ContourLayer属性赋给ContourMap
ContourLayer = win32com.client.CastTo(ContourMap, "IContourLayer")
#将Changes the ContourLayer Property
ContourLayer.FillContours=clfillcontour
ContourLayer.SmoothContours =clsmoothcontour
ContourLayer.SetSimpleLevels(Min=zmin, Max=zmax, Interval=interval)
#设置等高线的level
ContourLayer.LevelMajorInterval=cllevelmajorinterval
#设置主等高线的间隔、
ContourLayer.ShowMajorLabels =clshowmajorlabels
#设置主等高线的标签的开关
ContourLayer.ShowMinorLabels =clshowminorlabels
#设置次等高线的标签的开关
ContourLayer.ShowColorScale =clshowcolorscale
#设置层次标签
ContourLayer.OrientLabelsUphill =clorientlabelsuphill
#倒置等高线标签
ContourLayer.Opacity =clopacity
#等高线透明度
ContourLayer.MinorLine.Style=clminlinestyle
#次等高线线型
ContourLayer.MajorLine.Style=clmajlinestyle
#主等高线线型
ContourLayer.MajorLine.Width=clmajlinewidth
#主等高线线宽
ContourLayer.LabelFont.Face =cllabelfontface
#主等高线标签字体
ContourLayer.LabelFont.Size=cllabelfontsize
#等高线标签字体大小
ContourLayer.LabelFont.Bold=cllabelfontbold
#等高线标签字体加粗
# ContourLayer.LabelTolerance =2
#标签曲线公差
# ContourLayer.LabelLabelDist = 1.25
#标签间距
# ContourLayer.LabelEdgeDist = 0.75
#标签与图边缘间距
# ContourLayer.HachLength = 1
#刻线长度
# ContourLayer.HachDirection=2
#刻线方向
# MapFrame=Plot.Shapes.AddBaseLayer(Map= MapFrame, ImportFileName=blankfile)
# BaseLayer = win32com.client.CastTo(BaseMap, "IBaseLayer")
MapFrame=Plot.Shapes.AddBaseMap(blankfile)
MapFrame.SetLimits (xMin=xmin, xMax=xmax, yMin=ymin, yMax=ymax)
MapFrame.xLength=xlength
MapFrame.yLength=ylength
MapFrame.Top=top
MapFrame.Left =left
for Axis in ['Bottom Axis','Left Axis']: #,'Top Axis','Right Axis']:
MapFrame.Axes(Axis).ShowLabels =baxshowlabel1
MapFrame.Axes(Axis).MajorTickLength=baxmajorticklength1
MapFrame.Axes(Axis).MajorTickType =baxmajorticktype1
MapFrame.Axes(Axis).AxisLine.Style =baxlinestyle1
# MapFrame.Axes(Axis).MajorTickLength=0.05
for Axis in ['Top Axis','Right Axis']:
MapFrame.Axes(Axis).MajorTickType =baxmajorticktype2
MapFrame.Axes(Axis).ShowLabels =baxshowlabel2
MapFrame.Axes(Axis).MajorTickLength=baxmajorticklength2
MapFrame.Axes(Axis).AxisLine.Style =baxlinestyle2
Plot.SaveAs(FileName=savefile, FileFormat=17)
BaseMap=MapFrame.Overlays(1)
Baselayer = win32com.client.CastTo(BaseMap, "IBaseLayer")
Baselayer.Line.Width=baselinewith
else:
Grid =app.NewGrid()
# app.GridData (DataFile=DataFile,xCol=xcol,yCol=ycol,zCol=zcol,Algorithm =algorithm,ShowReport=showreport, OutGrid= OutFile)
app.GridBlank(InGrid=OutFile,BlankFile=blankfile,OutGrid=OutFile,OutFmt=3)
# MapFrame1=Plot.Shapes.AddBaseMap(blankfile)
Grid.LoadFile(OutFile,HeaderOnly=True)
#Creates a contour map and assigns the map frame to the variable "MapFrame"
MapFrame = Plot.Shapes.AddContourMap(OutFile)
# Plot.Shapes.SelectAll()
# Plot.Selection.OverlayMaps()
ContourMap=MapFrame.Overlays(1)
# Plot.Shapes.SelectAll()
# Plot.Selection.OverlayMaps()
#检索出等值线图,修改其属性
x1=abs(Grid.xMax)
x2=abs(Grid.xMin)
y1=abs(Grid.yMax)
y2=abs(Grid.yMin)
z1=abs(Grid.zMax)
z2=abs(Grid.zMin)
if (x1>=1 or x1==0):
x1=x1
xmax=math.ceil(Grid.xMax)
else:
i1=0
while (x1<1):
i1=i1+1
x1=x1*math.pow(10,i1)
xmax=math.ceil(Grid.xMax*math.pow(10,i1))/(1.0*math.pow(10,i1))
if (x2>=1 or x2==0):
x2=x2
xmin=math.floor(Grid.xMin)
else:
i2=0
while (x2<1):
i2=i2+1
x2=x2*math.pow(10,i2)
xmin=math.floor(Grid.xMin*math.pow(10,i2))/(1.0*math.pow(10,i2))
if (y1>=1 or y1==0):
y1=y1
ymax=math.ceil(Grid.yMax)
else:
j1=0
while (x1<1):
j1=j1+1
y1=y1*math.pow(10,j1)
ymax=math.ceil(Grid.yMax*pow(10,j1))/(1.0*math.pow(10,j1))
if (y2>=1 or y2==0):
y2=y2
ymin=math.floor(Grid.yMin)
else:
j2=0
while (y2<1):
j2=j2+1
y2=y2*math.pow(10,j2)
ymin=math.floor(Grid.yMin*math.pow(10,j2))/(1.0*math.pow(10,j2))
if (z1>=1 or z1==0):
z1=z1
zmax=math.ceil(Grid.zMax)
else:
k1=0
while (z1<1):
k1=k1+1
z1=z1*math.pow(10,k1)
zmax=math.ceil(Grid.zMax*math.pow(10,k1))/(1.0*math.pow(10,k1))
if (z2>=1 or z2==0):
z2=z2
zmin=math.floor(Grid.zMin)
else:
k2=0
while (z2<1):
k2=k2+1
z2=z2*math.pow(10,k2)
zmin=math.floor(Grid.zMin*math.pow(10,k2))/(1.0*math.pow(10,k2))
#Changes the Mapframe Property
MapFrame.SetLimits (xMin=xmin, xMax=xmax, yMin=ymin, yMax=ymax)
MapFrame.xLength=xlength
MapFrame.yLength=ylength
MapFrame.Top=top
MapFrame.Left =left
for Axis in ['Bottom Axis','Left Axis']: #,'Top Axis','Right Axis']:
MapFrame.Axes(Axis).ShowLabels =caxshowlabel1
MapFrame.Axes(Axis).MajorTickLength=caxmajorticklength1
MapFrame.Axes(Axis).AxisLine.Style =caxlinestyle1
MapFrame.Axes(Axis).AxisLine.Width =caxwidth1
MapFrame.Axes(Axis).MajorTickType =caxmajorticktype1
for Axis in ['Top Axis','Right Axis']:
MapFrame.Axes(Axis).ShowLabels =caxshowlabel2
MapFrame.Axes(Axis).MajorTickType =caxmajorticktype2
MapFrame.Axes(Axis).AxisLine.Style =caxlinestyle2
MapFrame.Axes(Axis).MajorTickLength=caxmajorticklength2
MapFrame.Axes(Axis).AxisLine.Width =caxwidth2
MapFrame.Axes("Bottom Axis").Title = caxbtitle
MapFrame.Axes("Left Axis").Title= caxltitle
MapFrame.Axes("Bottom Axis").TitleFont.Size =caxbtitlefontsize
MapFrame.Axes("Left Axis").TitleFont.Size= caxltitlefontsize
MapFrame.Axes("Bottom Axis").TitleFont.Face =caxbtitlefontface
MapFrame.Axes("Left Axis").TitleFont.Face=caxltitlefontface
MapFrame.Axes("Bottom Axis").LabelFont.Size =caxblabelfontsize
MapFrame.Axes("Left Axis").LabelFont.Size= caxllabelfontsize
MapFrame.Axes("Bottom Axis").LabelFont.Face =caxblabelface
MapFrame.Axes("Left Axis").LabelFont.Face=caxllabelface
MapFrame.Axes("Bottom Axis").TitleOffset2=caxbtitleoffset2
MapFrame.Axes("Left Axis").TitleOffset2=caxltitleoffset2
MapFrame.Axes("Bottom Axis").TitleOffset1=caxbtitleoffset1
MapFrame.Axes("Left Axis").TitleOffset1=caxltitleoffset1
MapFrame.Axes("Bottom Axis").TitleFont.Bold =caxbtitlefontbold
MapFrame.Axes("Left Axis").TitleFont.Bold= caxltitlefontbold
MapFrame.Axes("Bottom Axis").LabelFont.Bold =caxblabelfontbold
MapFrame.Axes("Left Axis").LabelFont.Bold= caxllabelfontbold
###将ContourLayer属性赋给ContourMap
ContourLayer = win32com.client.CastTo(ContourMap, "IContourLayer")
#将Changes the ContourLayer Property
ContourLayer.FillContours=clfillcontour
ContourLayer.SmoothContours =clsmoothcontour
ContourLayer.SetSimpleLevels(Min=zmin, Max=zmax, Interval=interval)
#设置等高线的level
ContourLayer.LevelMajorInterval=cllevelmajorinterval
#设置主等高线的间隔
ContourLayer.ShowMajorLabels =clshowmajorlabels
#设置主等高线的标签的开关
ContourLayer.ShowMinorLabels =clshowminorlabels
#设置次等高线的标签的开关
ContourLayer.ShowColorScale =clshowcolorscale
#设置层次标签
ContourLayer.OrientLabelsUphill =clorientlabelsuphill
#倒置等高线标签
ContourLayer.Opacity =clopacity
#等高线透明度
ContourLayer.MinorLine.Style=clminlinestyle
#次等高线线型
ContourLayer.MajorLine.Style=clmajlinestyle
#主等高线线型
ContourLayer.MajorLine.Width=clmajlinewidth
#主等高线线宽
ContourLayer.LabelFont.Face =cllabelfontface
#主等高线标签字体
ContourLayer.LabelFont.Size=cllabelfontsize
#等高线标签字体大小
ContourLayer.LabelFont.Bold=cllabelfontbold
#等高线标签字体加粗
# ContourLayer.LabelTolerance =2
#标签曲线公差
# ContourLayer.LabelLabelDist = 1.25
#标签间距
# ContourLayer.LabelEdgeDist = 0.75
#标签与图边缘间距
# ContourLayer.HachLength = 1
#刻线长度
# ContourLayer.HachDirection=2
#刻线方向
# MapFrame=Plot.Shapes.AddBaseLayer(Map= MapFrame, ImportFileName=blankfile)
# BaseLayer = win32com.client.CastTo(BaseMap, "IBaseLayer")
MapFrame=Plot.Shapes.AddBaseMap(blankfile)
MapFrame.SetLimits (xMin=xmin, xMax=xmax, yMin=ymin, yMax=ymax)
MapFrame.xLength=xlength
MapFrame.yLength=ylength
MapFrame.Top=top
MapFrame.Left =left
for Axis in ['Bottom Axis','Left Axis']: #,'Top Axis','Right Axis']:
MapFrame.Axes(Axis).ShowLabels =baxshowlabel1
MapFrame.Axes(Axis).MajorTickLength=baxmajorticklength1
MapFrame.Axes(Axis).MajorTickType =baxmajorticktype1
MapFrame.Axes(Axis).AxisLine.Style =baxlinestyle1
# MapFrame.Axes(Axis).MajorTickLength=0.05
for Axis in ['Top Axis','Right Axis']:
MapFrame.Axes(Axis).MajorTickType =baxmajorticktype2
MapFrame.Axes(Axis).ShowLabels =baxshowlabel2
MapFrame.Axes(Axis).MajorTickLength=baxmajorticklength2
MapFrame.Axes(Axis).AxisLine.Style =baxlinestyle2
Plot.SaveAs(FileName=savefile, FileFormat=17)
BaseMap=MapFrame.Overlays(1)
Baselayer = win32com.client.CastTo(BaseMap, "IBaseLayer")
Baselayer.Line.Width=baselinewith
def BLN(excel_file,bln_file,bna_file):
app =win32com.client.gencache.EnsureDispatch("Surfer.Application")
Plot=app.Documents.Open2(excel_file,Options="Sheet=Sheet1", FilterId="xlsx")
app.Visible = True
Plot.SaveAs(FileName=bln_file, FileFormat=12)
Plot.SaveAs(FileName=bna_file, FileFormat=14)
Plot.Close(1)
'''
excel_file 输入边界文件.xlsx bln_file 输出边界文件.bln
bna_file 输出边界文件.bna datafile 输入原始文件.dat
outfile 输出网格文件.grd blank_file 输入白化文件.bln,值为bln_file
xcol 输入x轴值 ycol 输入y轴值
zcol 输入z轴值 algorithm 输入插值算法
showreport 是否显示网格文件 xlength 输入图框长
ylength 输入图框高 top 输入图框位置,上边距
left 输入图框位置,左边距 caxshowlabel1 输入图框左侧和底侧坐标轴是否显示标签
caxshowlabel2 输入图框上侧和右侧坐标轴是否显示标签 baxshowlabel1 输入底图左侧和底侧坐标轴是否显示标签
baxshowlabel2 输入底图上侧和右侧坐标轴是否显示标签 caxmajorticklength1 输入图框左侧和底侧坐标轴的主刻线长度
caxmajorticklength2 输入图框上侧和右侧坐标轴的主刻线长度 baxmajorticklength1 输入底图左侧和底侧坐标轴的主刻线长度
baxmajorticklength2 输入底图上侧和右侧坐标轴的主刻线长度 caxlinestyle1 输入图框左侧和底侧坐标轴线线型
caxlinestyle2 输入图框上侧和右侧坐标轴线线型 baxlinestyle1 输入底图左侧和底侧坐标轴线线型
baxlinestyle2 输入底图上侧和右侧坐标轴线线型 caxwidth1 输入图框左侧和底侧坐标轴线宽
caxwidth2 输入图框上侧和右侧坐标轴线宽 caxmajorticktype1 输入图框左侧和底侧坐标轴刻线样式
caxmajorticktype2 输入图框上侧和右侧坐标轴刻线样式 baxmajorticktype1 输入底图左侧和底侧坐标轴刻线样式
baxmajorticktype2 输入底图上侧和右侧坐标轴刻线样式 caxbtitle 输入底部坐标轴名称
caxltitle 输入左侧坐标轴名称 caxbtitlefontsize 输入底侧坐标轴名称字体大小
caxltitlefontsize 输入左侧坐标轴名称字体大小 caxbtitlefontface 输入底侧坐标轴名称字体样式
caxltitlefontface 输入左侧坐标轴名称字体样式 caxblabelfontsize 输入底侧坐标轴标签字体大小
caxllabelfontsize 输入左侧坐标轴标签字体大小 caxblabelface 输入底侧坐标轴标签字体样式
caxllabelface 输入左侧坐标轴标签字体样式 caxbtitleoffset2 输入底侧坐标轴名称上下移动距离
caxltitleoffset2 输入左侧坐标轴名称上下移动距离 caxbtitleoffset1 输入底侧坐标轴名称左右移动距离
caxltitleoffset1 输入左侧坐标轴名称左右移动距离 caxbtitlefontbold 输入底侧坐标轴名称是否加粗
caxltitlefontbold 输入左侧坐标轴名称是否加粗 caxblabelfontbold 输入底侧坐标轴标签是否加粗
caxllabelfontbold 输入左侧坐标轴标签是否加粗 clfillcontour 输入等高线图层是否着色
clsmoothcontour 输入等高线平滑程度 interval 输入等高线最小间距
cllevelmajorinterval输入主等高线的间隔 clshowmajorlabels 输入主等高线是否显示标签
clshowminorlabels 输入次等高线是否显示标签 clshowcolorscale 输入是否显示颜色标签
clorientlabelsuphill输入是否倒置等高线标签 clopacity 输入等高线图层透明度
clminlinestyle 输入次等高线线型 clmajlinestyle 输入主等高线线型
clmajlinewidth 输入主等高线线宽 cllabelfontface 输入等高线标签字体样式
cllabelfontsize 输入等高线标签字体大小 cllabelfontbold 输入等高线标签字体是否加粗
save_file 保存文件.srf baselinewith 输入轮廓线宽
'''
BLN(excel_file=r"C:\\Users\zjy\Desktop\SEC - 副本.xlsx",bln_file=r"C:\\Users\zjy\Desktop\SEC - 副本.bln",bna_file=r"C:\\Users\zjy\Desktop\SEC - 副本.bna")
Contour(datafile="C:\\Users\zjy\Desktop\gk1.dat",outfile= "C:\\Users\zjy\Desktop\GK1A.grd",\
blank_file="C:\\Users\zjy\Desktop\SEC - 副本.bln",xcol=1,ycol=2,zcol=3,algorithm=9,showreport=False,\
xlength=10,ylength=5.5,top=7.25,left=-1.1,caxshowlabel1=True,caxshowlabel2=False,baxshowlabel1=False,\
baxshowlabel2=False,caxmajorticklength1=0.05,caxmajorticklength2=0,baxmajorticklength1=0,baxmajorticklength2=0,\
caxlinestyle1='Solid',caxlinestyle2='Solid',baxlinestyle1='Invisible',baxlinestyle2='Invisible',caxwidth1=0.01,\
caxwidth2=0.01,caxmajorticktype1=2,caxmajorticktype2=1,baxmajorticktype1=1,baxmajorticktype2=2,caxbtitle='',\
caxltitle='',caxbtitlefontsize=15,caxltitlefontsize=15,caxbtitlefontface="Times New Roman",caxltitlefontface="Times New Roman",\
caxblabelfontsize=16,caxllabelfontsize=16,caxblabelface="Times New Roman",caxllabelface="Times New Roman",caxbtitleoffset2=-0.05,\
caxltitleoffset2=0,caxbtitleoffset1=0,caxltitleoffset1=0,caxbtitlefontbold=False, caxltitlefontbold=False,caxblabelfontbold=False,\
caxllabelfontbold=False,clfillcontour=False,clsmoothcontour=4,interval=0.1,cllevelmajorinterval=1,\
clshowmajorlabels=True,clshowminorlabels=False,clshowcolorscale=False,clorientlabelsuphill=False,clopacity=100,clminlinestyle='Invisible',\
clmajlinestyle='Solid',clmajlinewidth=0,cllabelfontface="Times New Roman",cllabelfontsize=16,cllabelfontbold=True,\
save_file="C:\\Users\zjy\Desktop\GK1A.srf",baselinewith=0.03)