4 个版本
0.4.0 | 2023年10月6日 |
---|---|
0.3.2 | 2023年2月28日 |
0.3.1 | 2023年1月12日 |
0.3.0 | 2023年1月10日 |
#558 在 解析器实现
846 每月下载量
用于 giga-segy-out
195KB
3.5K SLoC
giga-segy-in
一套用于读取和写入符合 SEG 技术标准委员会 SEG-Y_r2.0 标准的 SEGY 文件的工具,用 Rust 编程语言编写。
giga-segy-in
是 giga-segy
库工作空间的一部分,这是一个用于处理 SEG-Y 格式数据的工具。该 giga-segy-in
库提供了对任意大小 SEG-Y 文件进行解析的功能,具有多种选项。
该库相当轻量,但提供了通过 serde
/serde_json
进行序列化/反序列化的选项(功能标志)。注意:生成头结构 C 绑定的功能需要直接使用 giga-segy-core
。
入门指南
使用 giga-segy
的基本功能非常简单,只需将依赖项添加到您的项目 Cargo.toml 文件的 [dependencies]
部分即可。通常,您只需要 giga-segy-in
或 giga-segy-out
,因为它们重新导出所有必需的依赖项。但是,对于生成 C 绑定,您将需要 giga-segy-core
。
[dependencies]
# I am using `giga-segy-in` for my parser.
giga-segy-in = "0.3.1"
# I only need core as a dependency because I want C bindings for the headers.
giga-segy-core = { version = "0.3.1", features = ["gen_cbindings"]}
以下是一个使用 giga-segy
的超级简单的 SEG-Y 解析器示例。
use std::path::PathBuf;
use giga_segy_in::SegyFile;
let dir = PathBuf::from("/my/data/lives/here");
let full_path = dir.join("MyFavouriteSEGYDataset.sgy");
let file = SegyFile::open(name.to_str().unwrap(), Default::default()).unwrap();
// I want to get the text header and dump it to the terminal.
let text_header: &str = file.get_text_header();
println!("Text header: {:?}", text_header);
// Oops. SEG-Y headers look messy if we don't go line by line...
for line in file.get_text_header_lines() {
println!("{}", line);
}
// Now to have a look at the binary header.
let bin_header = file.get_bin_header();
println!("Bin header: {}", bin_header);
// Get the data in the order of appearance of traces in the file.
// Of course there are more organised ways of doing this,
// but I just want to see the data...
for trace in file.traces_iter() {
// First a quick peek at the trace header.
println!("Trace header: {}", trace.get_header());
// ..And then the data.
// NB: trace data is not loaded to RAM until this is called.
let data:Vec<f32> = file.get_trace_data_as_f32_from_trace(trace).unwrap();
println!("Data: {:?}", data);
}
风味
该库主要针对 GiGa infosystems 代码库进行设计,因此具有一种“GiGa 风格”。
许可证
- Apache 许可证,版本 2.0 (https://www.apache.org/licenses/LICENSE-2.0)。
- MIT 许可证 (https://opensource.org/licenses/MIT)
依赖关系
~0.9–1.5MB
~34K SLoC