微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

surfer 8 scripter 学习笔记8结合其它相关形成最终VB程序


为了形成一个JPG或动画的GIF。

费了很大劲,首先从mapgis里面有一个文件转换,把要转换的东西。转换成dxf,

这样surfer就可以得到其中的数据,目的 就是得到一个精确的边界(或白化)图。


然后,熟悉相关数据库中存存储相关字段及值。这些值是用来后面的作为X,Y,Z对应

相应的经纬度的值。以便格网化形成等值线。


然后。事先把LEVELS文件就是画等值线的固定做好(用其中的savefile).,在程序中

用Loadfile就加载进来了。


遇到一个问题,surfer如何读取x,y,z值呢,因为这些值在数据库中。

一个想到的是excel,由经纬度及量值组成,数据库导入excel,然后surfer从excel中导入。

但有问题,有时不兼容excel,偶尔提示(因为它只认一页)

所以最后想到还是用原始的进行输入吧。当然是自动原始输入。


即VB操作surfer打开自身的一个表,用程序自动填写经纬度和量值。然后存盘,格网化。包括一些白化等。

就形成了最终的图形,最后输出JPG(发现MIT还是MID很清晰)


发现一个强大的功能

surfer操作单元格的能力绝对不弱于excel。

不过用于实际自动化操作还是这个 wksDoc.cells(i,j) 方便。


Option Explicit

Private Sub Command1_Click()
    Dim srf    As New Surfer.Application
    Dim wksDoc As Surfer.IWksDocument
    
    srf.Visible = True
    Set wksDoc = srf.Documents.Add(srfDocWks)
    wksDoc.Activate
    wksDoc.Cells(1,1) = "x"
    wksDoc.Cells(1,2) = "y"
    wksDoc.Cells(1,3) = "z"
    wksDoc.Cells(2,1) = 11
    wksDoc.Cells(2,2) = 12
    wksDoc.Cells(2,3) = 13
    '这些都应该是从数据库获得的值,此处略去连接数据库等取值操作
    
    
    wksDoc.SaveAs "D:\1.dat"  '存盘
    wksDoc.Close srfSaveChangesNo '不提示直接关闭
End Sub




最后:两个

白化:object.GridBlank( InGrid,BlankFile,OutGrid,OutFmt )

dim srf as new surfer.application

srf.gridblank(ingrid:="D:\1.Grd",blackfile:="D:\1.bln",outgrid="D:\2.Grd")

第一参:输入的网络文件

第二参:要白化的边界

第三参:输出经白化的网格文件



叠放次序。

在无法确定时,须全部选择取消,再选择其中一个为选定。再设置SetZOrder就可以

object.SetZOrder(Zorder)

eg: Selection.SetZOrder(Zorder:=srfZOToFront)

Shapes("Map").Overlays("Wireframe").SetZOrder(srfZOToFront)





scripter就这样。

收工!

原文地址:https://www.jb51.cc/vb/258924.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐