一个 非常 基础的库,用于使用 Swift 读取 GRIB 文件。 此库是 eccodes 的封装库。
通过 brew install eccodes
或 apt install libeccodes-dev
安装 eccodes
将 SwiftEccodes
作为依赖项添加到你的 Package.swift
dependencies: [
.package(url: "https://github.com/patrick-zippenfenig/SwiftEccodes.git", from: "0.0.0")
],
targets: [
.target(name: "MyApp", dependencies: [
.product(name: "SwiftEccodes", package: "SwiftEccodes"),
])
]
从文件中读取 GRIB 消息和数据
import SwiftEccodes
let messages = try SwiftEccodes.getMessages(fileName: "test.grib", multiSupport: true)
for message in messages {
message.iterate(namespace: .ls).forEach({
print($0)
})
print(message.get(attribute: "name")!)
let data = try message.getDouble()
print(data[0..<10])
}
或者直接从内存中读取
import SwiftEccodes
let data = try Data(contentsOf: URL(fileURLWithPath: "test.grib"))
try data.withUnsafeBytes { ptr in
let messages = try SwiftEccodes.getMessages(memory: ptr, multiSupport: true)
for message in messages {
message.iterate(namespace: .ls).forEach({
print($0)
})
message.iterate(namespace: .geography).forEach({
print($0)
})
print(message.get(attribute: "name")!)
let data = try message.getDouble()
print(data.count)
print(data[0..<10])
}
}