恐怕您要问的问题通常是不可能的,至少在客户端和服务器端都付出了巨大的努力和软件支持。
首先,FITS 表以二进制形式存储的方式是面向行的,这意味着如果您想流式传输 FITS 表的一部分,您可以一次读取一行。但是要读取单个列,您需要对表中的每一行的每一行进行部分读取。一些 Web 服务器支持所谓的“范围请求”,这意味着您只能从文件中请求几个字节范围,而不是整个文件。Web 服务器必须启用此功能,并非所有服务器都这样做。如果 FITS 表是面向列存储的,这可能是可行的,因为您可以只下载文件的标题以确定列的范围,然后只下载这些列的范围。
不幸的是,由于 FITS 表是面向行的,如果您想从中加载 3 列,并且该表包含一百万行,这将涉及 300 万个范围请求,这可能会涉及足够的开销,您不会从中获得任何收益它(老实说,我不确定 Web 服务器对您可以在单个请求中请求多少范围的限制,但我怀疑大多数不会允许如此极端的事情。
还有其他天文学数据格式(例如我认为 CASA 表)可以以面向列的格式存储表,因此对于这种用例来说更可行。
此外,即使可以克服 HTTP 限制,您也需要软件支持才能以这种方式加载文件。此处已对此进行了有限程度的讨论,但由于上述原因,它主要用于一组有限的情况,例如一次加载一个 HDU(如果整个表都在一个 HDU 中,则对您的情况没有太大帮助) 或其他一些特殊情况,例如切片压缩图像的部分。
正如在其他地方提到的,Dask支持从各种基于云的文件系统加载二进制数组,但是当涉及到来自任意 HTTP 服务器的流数据时,它会遇到类似的限制。
更糟糕的是,我查看了您提供的链接以及那里的所有文件都是 gzip 压缩的,因此处理起来特别困难,因为如果不先解压缩它们,您无法知道要请求的范围。
顺便说一句,既然你问了,你会遇到与 CSV 相同的问题,更糟糕的是,因为 CSV 字段通常不是固定宽度格式,所以没有办法知道如何在不下载整个文件的情况下提取单个列。
对于 FITS,开发一个能够从较大的 FITS 文件中提供任意提取的 Web 服务可能会有所帮助。如果这样的事情已经存在我不知道,但我认为它不存在于非常普遍的意义上。因此,这将 a)必须开发,并且 b)您必须询问托管您要访问的文件的任何人以托管此类服务。
你最好的办法是下载整个文件,从中提取你需要的数据,然后假设你不再需要它,删除原始文件。您需要的信息也可能已经可以通过一些在线数据库访问。