gpt4 book ai didi

database - 存储栅格数据的好方法是什么?

转载 作者:搜寻专家 更新时间:2023-10-30 23:25:30 24 4
gpt4 key购买 nike

我将各种时间序列数据存储在或多或少的地理引用网格中,例如每 0.2 度纬度和经度一个值。目前数据存储在文本文件中,因此在一年中的第 251 天,您可能会看到:

251
12.76 12.55 12.55 12.34 [etc., 200 more values...]
13.02 12.95 12.70 12.40 [etc., 200 more values...]
[etc., 250 more lines]
252
[etc., etc.]

我想提高抽象级别、提高性能并降低脆弱性(例如,当前代码不能在两个现有代码之间插入一天!)。我们搞砸了 BLOB-y RDBMS hacks,甚至将文本文件格式的每一行复制为表中的一行(每个时间戳/纬度对一行,每个经度增量一列 - 耶!)。

我们可以使用“真实的”地理数据库,但是用经纬度标记每个单独值的开销似乎令人望而却步。数据的大小和分辨率在十年内没有改变,而且不太可能改变。

我一直在考虑将所有内容都放入 NetCDF 文件中,但认为我们需要完全摆脱文件思维模式——我讨厌我所有的软件都必须从日期中找出文件名,处理多个文件多年等等。另一种方法是将所有十年(并且还在增加)的数据放入一个文件中,这似乎也不可行。

有什么好的想法或产品吗?

最佳答案

我在这里汇总了您的评论:

  1. 我想做所有这些“w/o 编写我自己的文件 I/O 代码”
  2. 我需要从“Java Ruby MATLAB”和“FORTRAN 例程”访问

当您将这些加起来时,您肯定不想要一种新的文件格式。 坚持使用现有的。

如果我们可以让您放宽您的第一个要求 - 即,如果您愿意编写自己的文件 I/O 代码,那么您可以选择一些有趣的选项。我会编写 C++ 类,并使用 SWIG 之类的东西使您的新类可用于您需要的多种语言。 (但我不确定您是否能够使用 SWIG 为您提供从 Java、Ruby、MATLAB 和 FORTRAN 的访问权限。您可能需要其他东西。我自己也不太确定该怎么做。)

您还说,“实际上,如果我必须有文件,我更喜欢文本,因为那样我可以在必要时直接进入并手动编辑。”

我认为这是一个被误导的陈述。如果你愿意制作自己的文件 I/O 例程,那么你可以做一些非常聪明的事情......作为最终的后备,你可以给自己一个工具,将新文件格式转换为相同的旧文件格式您习惯的文本格式...还有另一个可以转换回来的工具。我会在文章末尾回到这一点......

你说了一些我想解决的问题:

“利用 40 年的数据库优化”

数据库用于关系数据,而不是栅格数据。您不会利用任何人的数据库优化处理此类数据。您也许能够将数据塞入数据库,但这几乎不是一回事。

根据您告诉我们的所有内容,这是我可以告诉您的最有用的信息。您是这样说的:

“与 CPU 相比,我对优化我的时间更感兴趣,尽管执行速度很好!”

坦率地说,这需要工具。不要再将其视为文本文件。开始思考您执行的常见任务,并编写小工具 - 使用任何语言 - 使这些事情变得简单。

如果您的工具性能很差?你猜怎么着 - 这是因为你的平面文本文件是一种粗糙的格式。但那只是我的个人意见。 :)

关于database - 存储栅格数据的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/86913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com