(算法高手请进)如何将已知的一些无规则三维数据(x,y,z)进行网格化? (300分)

  • 主题发起人 主题发起人 chji
  • 开始时间 开始时间
C

chji

Unregistered / Unconfirmed
GUEST, unregistred user!
由于最近帮朋友写一个地质勘探方面的小软件,其中要将野处取得的一些数据(x,y,Z)
进行网格化处理,以便生成等值线图及表面立体图,但苦于水平有限,无法完成这一任务,
故只好求救各路算法高手,望各路高手能大发雷锋精神,帮小弟解决这个燃眉之急!
我目前是通过调用WinSurf的绘图命令GridData来暂时应急的,方法如下:
function GridData(DataFile,OutGrid:string;algorithm:integer;NumCols,NumRows, xMin, xMax, yMin, yMax:Variant):boolean;
Var surf:OleVariant;
begin
surf:= CreateoleObject('Surfer.Application');
result:=surf.GridData(DataFile, 1, 2, 3, , , , ,NumCols,NumRows,xMin, xMax, yMin, yMax,algorithm, , , ,
, , , , , , , , , , , , , , ,, , , , , , , , , , , , , , , , OutGrid,4);//, , , , , , );
surf.quit; surf:=null;
end;
但要前提是要先安装WinSurf的软件,且若版本不同时传输的参数也不同!因此调用
第三方软件的命令来达到此目的做法不要
以下为回报条件:
1、有更好提议者 100分
2、能提供实现上述功能的 dll,ocX...等无源码者 300分
3、能提供网格化源码者( 不论何种编程语言) 600分以上

此贴直到有完满答案才会结束...故希望看者能帮忙提前...多谢
提前者每人 10分
我的邮箱: need@21cn.com 或 index@163.com
 
[:(]不知道是不是真的?我有VB的源码,不就是测量方面的问题吗?
 
TO:cdyxl
我所说的当然是真的了! 你真的有源码?能发来给我吗?我的地址 need@21cn.com
若可用一定给分!
TO:rustle THANK
 
好象很专业的问题啊。帮你把。
 
我是搞测量的,我想你的问题很专业。属于DEM(数字地表模型),其关键问题是很多,具体
可以研究一下gis类的软件。
 
To:snfa
现在不是说专业不专业的问题, 我只是要一个能实现网格化的最普通的算法!我的目标
是能不利用第三方软件的帮助就可以在自己的程序中实现,因此我不会为了这一个功能而
去研究gis什么的(那要到何年何月呀)! 我现在只是想利用前人的经验而已...
 
我这里有Delphi的代码,包括生成三角网和等值线的,三维方面的,我只有Java的程序,请给我的邮箱发
信,如果你需要. wenyn_box@sohu.com
 
TO: NoSwing
太好了!你所说的功能就是我所需要的,多谢了...
我的邮箱: need@21cn.com 或 index@163.com
 
我已经给你发了过去,如果没收到或着有什么问题给我回信.
 
to:NoSwing,
thank, 我已收到,等我看完后即发分....
 
to:NoSwing,
你发的源码我已看了!你的程序确是可以生成等值线,但与我想要的却有出入(可能我说得不够清楚)!
你的程序其实是利用已有的数据然后采用三角网格方法直接画等值线,在这过程中
原始的数据却没有经过什么处理,因此当数据少且分散时画出的等值线就非常之差...
(不怕你们笑,实际上我那个朋友用来处理的实际数据绝不会多于500个,一般都是几十个!)
试想若以这样的数据但又不经处理又那里会画得出光滑好看的等值线! 因此必须要把少量的
原始数据通过内插方法生成一定数量的网格数据,然后才能利用你的程序画等值线...
而现在我最想要的算法就是如何“把少量的原始数据通过某种插值方法生成一定数量的网格数据”!

NoSwing,不知我说得对否,又或者还未看清楚你的程序,望能继续帮小弟一把,

 
我想这方面需要结合GIS方面的软件,如MapInfo等
 
是不是开发工程地质制图软件?我做过一套岩土工程数据处理软件,也是使用了Surfer。
数据网格化原理及源程序在冶金工业出版社出的《实用计算机绘图》中就有,是用QUICKBASIC
写的。
一点小建议:
如果控制点数不多,还是用Surfer比较好,其网格化方法及参数多,自己写程序很难实现
那么多方法。控制点少的情况下,如果自编程序仅有一两种方法,网格化后的数据有时很离谱。
作出来的地层层面等高线图经常会跑出地面,现在吹得最响的北京XX岩土工程勘察软件,就
有这种情况出现。用Surfer就不同了,可根据控制点数及变化情况选择合适的方法,绘制出来
的图形也很漂亮。
欢迎在这方面多多交流!
 
to:zwx
看来你对这方面很有经验! 其实朋友叫我开发的就是工程地质制图方面的软件,
我对岩土工程数据处理不是太懂,故基本上是他要求什么我就做什么,目前就差画剖面
图的一些功能还未做,另外他也要求最好不用WInsurfer软件! 故我才来论坛上求救!
你能把你的开发的软件发一份给我参考参考吗(演示版也好)?
若感兴趣的话我也可以把我目前所做的发一份给你...

 
我的程序的确没有做什么光滑处理,这个我承认,我同学请我做的时候本来是有光滑这一项的,
但我一直没有时间做.
关于把等值线做光滑,有两个选择,一个是对点进行内插,把点加密,然后生成等值线,这种插值方法
很多,线形内插,双线性内插,克力金内插挺多的.你可以自己去找找,但是线性内插的效果肯定不行.
还有就是把生成的线做光滑处理,用样条曲线做,应该可以,还有我是学GIS的,我觉得这个东西虽然和GIS
有关系,但是GIS不能给你很大的帮助.还有我的程序,如果有什么错,也请不要客气.
 
to chji:
你要开发的软件是自用还是商品化?这类软件推广难度很大,除非你有较好
的关系,能通过勘察设计协会进行推广,北京XX公司的软件虽然做得不怎么样,
出来的图别提有多难看,但人家有财力物力,还有关系,所以基本是它的市场了。
我的软件原来在DOS用FOXPRO+Tc开发,通过朋友,有几家单位在用,去年才
用Delphi进行改写。基本上都是自己去安装,比较啰唆,所以测试版之类的就免
了吧。我只是简单说说开发的情况,供你参考。
我是采用InterBase 6.0作为数据库平台,用自己的类库直接生成ACAD2.6格式
的DWG文件,柱状图及剖面图生成速度比用OLE方式的快N倍;等高线图是生成数据
文件,用SURFER进行处理。表格生产CCED格式,而报告的自动生成则采用OLE方式用
WORD进行。软件基本上是针对自己及朋友单位的情况进行开发,适用性强,而通用
性不足,用了太多外部的东西,安装很麻烦,现在我已经不进行这方面的开发了。
 
超星上有几本关于这方面的书。
 
TO:zwx
我的软件算是自用的,搞成商业化我是没有那个能力了,但现在有几个朋友等着我的
软件用却是事实!因此为了尽快完成这个软件,我也就只好东奔西走来请教各位高手...
TO:wk_knife
书自毕业以来我就好少看了,超星我就几乎没有看,但星星我就几乎每晚都看.. :)


到目前为此我还没有看到我想要的答案!
 
后退
顶部