【问题标题】:Read .dss database file in Python在 Python 中读取 .dss 数据库文件
【发布时间】:2018-04-12 19:45:57
【问题描述】:

我有一个 DSS 数据库文件,我想使用 Python 从文件中提取数据库模式。我实际上需要在这个数据库上执行查询,但我找不到任何好的文档开始。所以,我决定如果我可以提取模式,我可以创建一个 SQLite 数据库并在那里运行我的实验。

文件内容如下:

5a44 5353 8854 0000 6e04 0000 0700 0000
362d 5146 14a2 2001 85a9 8c00 3037 4a55
4c31 3400 3330 4e4f 5631 3700 3132 3a35
393a 3134 0000 0000 0010 0000 0100 0000
2000 0000 0500 0000 7f00 0000 df10 0000
...  ...  ...  ...
...  ...  ...  ...

注意。我对 DSS 数据库不熟悉。

任何帮助将不胜感激。

【问题讨论】:

  • 另见 pyhecdss 加州水资源部三角洲建模科

标签: python dss


【解决方案1】:

DSS 或HEC-DSS 是由美国陆军工程兵团水文工程中心 (HEC) 开发的数据库系统。它不是关系数据库,而是旨在更有效地检索和存储大量数据的数据库,这些数据不一定与其他数据集相互关联。 HEC-DSS 支持时间序列数据、配对数据(如 pandas DataFrame)、面向空间的网格数据等数据类型。 HEC-DSS 通过路径名引用数据集或记录。路径名分为六个部分,并以“A”到“F”标记为 /A/B/C/D/E/F/。 HEC-DSS被纳入HEC-RAS、HEC-HMS、HEC-RTS等主要项目中。

HEC 已发布 Java 库和基于 Java 的可视化实用程序HEC-DSSVue,用于查看、编辑或操作 HEC-DSS。 Java 库可以在 Jython 中使用,但是,Jython 缺少 numpy、pandas、matplotlib 和其他流行的科学库。所以我在 2017 年末开始研究 pydsstools,这是一个用于 HEC-DSS 的 python 库。目前,pydsstools 支持主要的 HEC-DSS 数据类型和基本的复制、删除操作,并且可以在 Windows 和 Ubuntu 等发行版中工作。以下 python 代码是读取和绘制时间序列数据的示例:

from pydsstools.heclib.dss import HecDss
import matplotlib.pyplot as plt
import numpy as np

dss_file = "example.dss"
pathname = "/REGULAR/TIMESERIES/FLOW//1HOUR/Ex1/"
startDate = "15JUL2019 19:00:00"
endDate = "15JUL2019 21:00:00"

with HecDss.Open(dss_file) as fid:
    ts = fid.read_ts(pathname,window=(startDate,endDate),trim_missing=True)
    times = np.array(ts.pytimes)
    values = ts.values
    plt.plot(times[~ts.nodata],values[~ts.nodata],"o")
    plt.show()

在 GitHub 的 pydsstools 存储库的 README 部分中提供了操作其他数据类型(配对数据、网格数据)的示例。

【讨论】:

  • 回答问题 - 仔细阅读问题。具体来说,这个问题要问的是什么?确保您的答案提供了这一点——或者一个可行的替代方案。答案可以是“不要那样做”,但也应该包括“试试这个”。任何让提问者朝着正确方向前进的答案都是有帮助的,但请尝试在答案中提及任何限制、假设或简化。简洁是可以接受的,但更全面的解释更好。 - stackoverflow.com/help/how-to-answer
  • 您好,欢迎您。我认为你需要更多地解释你的答案。这与问题究竟有何关系?
  • 这也是近一年前上一个答案的副本。读入 dss 数据库并对其进行操作的简短示例在这里会很有帮助。有了那个用户名和 URL,我就觉得这是图书馆作者......
【解决方案2】:

如果您在 Windows 环境中,这个库看起来很有希望。我在 Linux 环境中,所以我无法使用它,但示例显示了我想要做的事情:

https://github.com/gyanz/pydsstools

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 2014-01-26
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 2022-09-27
    相关资源
    最近更新 更多