我有一个文件(确切地说是100 k文件),其中包含天气雷达的数据--一个文件是一个雷达图像。这是来自几个雷达的数据拼接,创造了一张全国反射率的地图。这些文件有扩展名.cmax,我需要把它们转换成更有用的东西(例如。用于进一步使用的反射率阵列。
我问过数据提供者如何读取这些文件。他们的答复是:
我们系统中的标准产品格式(.cmax)是向我们提供软件的公司的内部格式。它由xml和二进制部分组成。它可以通过读取字节流来读取。首先,将初始字节解析为xml,然后将其余字节(BLOB)处理为使用"qt“方法压缩的二进制数据。您需要使用支持这种压缩模式的库来解压缩它们。一般来说,您必须工作一点,但是它可以在几乎任何编程语言中完成。
主要问题是数据的二进制部分。我尝试用zlib (googling qt压缩出来)解压缩它,并在C++中读取二进制数据。他们都不起作用。在我看来,在Qt中尝试以二进制方式读取这些数据也是不合理的。
该文件以以下行开头:
<product version="5.44.5" datetime="2017-01-01T18:00:00" datatype="dBZ" type="cmax" name="CMAX" owner="">
<data time="18:00:00" date="2017-01-01">然后是雷达规格和图像细节(有源雷达、最小反射率和最大反射率等)。XML部分以以下内容结尾:
</product>
<!-- END XML -->
<BLOB blobid="0" size="79617" compression="qt">(here are lots of binary data)</BLOB>我在找一种方法(工具?)来转换二进制数据。例如,它可以是提到的库。
发布于 2021-06-13 07:23:30
看看细节,这很可能是莱昂纳多(Selex/Gematronic)的Rainbow5格式。zlib是用于解压缩的右库。但它也有一些窍门。python读取器在wradlib库(https://github.com/wradlib)中实现。也许你可以从这段代码中适应。免责声明:我是wradlib的开发者之一。
发布于 2019-05-21 21:12:56
您是否尝试简单地使用qUncompress()函数?https://doc.qt.io/qt-5/qbytearray.html#qUncompress
https://stackoverflow.com/questions/56243843
复制相似问题