【文件属性】:
文件名称:wpf地震体浏览工具(源码)
文件大小:215KB
文件格式:ZIP
更新时间:2014-11-01 09:41:43
wpf segY
以前用wpf写的地震体浏览工具,还有不完善的地方,借以抛砖引玉。
欢迎交流。
namespace WpfPtest
{
///
/// Interaction logic for Window1.xaml
///
public partial class Window1 : Window
{
private CA_SegY.CSegY m_CSegy = new CA_SegY.CSegY();
//private CA_SegY.CSegYScanner m_CSegyScan = new CA_SegY.CSegYScanner();
public Window1()
{
InitializeComponent();
}
private void BtnOpenFile_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openSegyFile = new OpenFileDialog();
openSegyFile.ShowDialog();
text_SegyFilePath.Text = openSegyFile.FileName;
// string strValue = m_CSegy.GetProtectedStr();
// string strValueTest = m_CSegyScan.GetProtectedStr();
// strValueTest = m_CSegyScan.getValue();
m_CSegy.SetSegyFile(openSegyFile.FileName);
m_CSegy.OpenSegyFile();
// m_CSegyScan.SetSegyFile(openSegyFile.FileName);
// m_CSegyScan.OpenSegyFile();
ShowSegyFileHeader();
}
private void BtnExit_Click(object sender, RoutedEventArgs e)
{
Close();
}
private void ShowSegyFileHeader()
{
if (null == m_CSegy)
{
return;
}
ShowSegyEbcdicHeader();
ShowSegyBinaryHeader();
//ShowSegyTraceInfo(1);
}
private void ShowSegyEbcdicHeader()
{
if (null == m_CSegy)
{
return;
}
string strEbcdic = "";
strEbcdic = m_CSegy.GetSegyEbcdicHeader();
richTextBox1.AppendText(strEbcdic);
}
private void ShowSegyBinaryHeader()
{
if (null == m_CSegy)
{
return;
}
CA_SegY.c_SEGYBinary_Header segyBinaryHeader = new CA_SegY.c_SEGYBinary_Header();
segyBinaryHeader = m_CSegy.GetSegyBinaryHeader();
txtSamples.Text = (segyBinaryHeader.hns).ToString();//hns
txtSampleRate.Text = (segyBinaryHeader.hdt).ToString() + "ms";
txtTraces.Text = (m_CSegy.GetTracesCount()).ToString();
txtFormatCode.Text = m_CSegy.GetUnitType().ToString();
labelMax.Content = txtTraces.Text;
slider1.Maximum = m_CSegy.GetTracesCount();
slider1.Minimum = 1;
CoustomSegyBinaryHeader segybinaryheader = new CoustomSegyBinaryHeader();
segybinaryheader.AddInfo("1-4", (segyBinaryHeader.jobid).ToString(), "作业标识号");
segybinaryheader.AddInfo("5-8", (segyBinaryHeader.lino).ToString(), "测线号");
segybinaryheader.AddInfo("9-12", (segyBinaryHeader.reno).ToString(), "卷号");
segybinaryheader.AddInfo("13-14", (segyBinaryHeader.ntrpr).ToString(), "道数");
segybinaryheader.AddInfo("15-16", (segyBinaryHeader.nart).ToString(), "辅助道数");
segybinaryheader.AddInfo("17-18", (segyBinaryHeader.hdt).ToString(), "采样间隔");
segybinaryheader.AddInfo("19-20", (segyBinaryHeader.dto).ToString(), "野外记录间隔");
segybinaryheader.AddInfo("21-22", (segyBinaryHeader.hns).ToString(), "每道样点数");
segybinaryheader.AddInfo("23-24", (segyBinaryHeader.nso).ToString(), "野外记录道的样点数");
segybinaryheader.AddInfo("25-26", (segyBinaryHeader.format).ToString(), "数据格式码");
segybinaryheader.AddInfo("27-28", (segyBinaryHeader.fold).ToString(), "CMP覆盖次数");
segybinaryheader.AddInfo("29-30", (segyBinaryHeader.tsort).ToString(), "道分选码");
segybinaryheader.AddInfo("31-32", (segyBinaryHeader.vscode).ToString(), "垂直叠加码");
segybinaryheader.AddInfo("33-34", (segyBinaryHeader.hsfs).ToString(), "起始扫描频率");
segybinaryheader.AddInfo("35-36", (segyBinaryHeader.hsfe).ToString(), "终止扫描频率");
segybinaryheader.AddInfo("37-38", (segyBinaryHeader.hslen).ToString(), "扫描长度");
segybinaryheader.AddInfo("39-40", (segyBinaryHeader.hstyp).ToString(), "扫描类型码");
segybinaryheader.AddInfo("41-42", (segyBinaryHeader.schn).ToString(), "扫描通道的道号");
segybinaryheader.AddInfo("43-44", (segyBinaryHeader.hstas).ToString(), "有斜坡时,为起始斜坡长度(斜坡起始于时间零,使用时间为该长度)。以 ms 表示。");
segybinaryheader.AddInfo("45-46", (segyBinaryHeader.hstae).ToString(), "终了斜坡长度(终了斜坡起始于扫描长度减终了斜坡长度)。以 ms 表示。");
segybinaryheader.AddInfo("47-48", (segyBinaryHeader.htatyp).ToString(), "斜坡类型");
segybinaryheader.AddInfo("49-50", (segyBinaryHeader.hcorr).ToString(), "相关数据道");
segybinaryheader.AddInfo("51-52", (segyBinaryHeader.bgrcv).ToString(), "二进制增益恢复");
segybinaryheader.AddInfo("53-54", (segyBinaryHeader.rcvm).ToString(), "振幅恢复方式");
segybinaryheader.AddInfo("55-56", (segyBinaryHeader.mfeet).ToString(), "测量系统");
segybinaryheader.AddInfo("57-58", (segyBinaryHeader.polyt).ToString(), "脉冲信号极性");
segybinaryheader.AddInfo("59-60", (segyBinaryHeader.vpol).ToString(), "可控震源 地震信号滞");
segybinaryheader.AddInfo("61-62", (segyBinaryHeader.traceNum).ToString(), "总道数");
segybinaryheader.AddInfo("69-70", (segyBinaryHeader.sampletype).ToString(), "数据域(性质):0-时域,1-振幅,2-相位谱");
segybinaryheader.AddInfo("271-400", "", "没有确定,选择使用 ");
ListViewBinary.ItemsSource = segybinaryheader;
}
private void ShowSegyTraceInfo(int iNo)
{
if(null == m_CSegy)
{
return;
}
CA_SegY.c_SEGYTrace_Info segyTraceHeader = new CA_SegY.c_SEGYTrace_Info();
float[] segyTraceData = new float[m_CSegy.GetTraceSample()];
if (!m_CSegy.getTraceInfo(iNo, ref segyTraceHeader, segyTraceData))
{
return;
}
【文件预览】:
WpfPSegY
----WpfPtest.suo(31KB)
----WpfPSegY.sln(914B)
----WpfPtest()
--------bin()
--------App.xaml(289B)
--------obj()
--------Window1.xaml(10KB)
--------App.xaml.cs(310B)
--------Window1.xaml.cs(18KB)
--------Service References()
--------WpfPSegY.csproj(4KB)
--------SegYScanner.cs(158B)
--------CSegY.cs(64KB)
--------Properties()
----WpfPSegY.suo(36KB)