有没有办法从Web应用程序中读取本地netcdf文件?

时间:2014-02-17 15:41:35

标签: javascript local netcdf

我们正在构建用于数据分析的Web服务,并希望从运行浏览器的本地计算机访问netcdf文件。 Javascript提供了一个文件浏览器,但是(出于安全原因,我了解到)它将在选择后自动上传文件,而不是允许(只读)访问它。这是一个show-stopper,因为netcdf文件可以是 HUGE 。请注意,netcdf格式和API明确允许切片和提取单个变量,这是格式如此受欢迎的一个原因。

现在,对此问题的一些研究表明,服务器 - 客户端架构通常不允许访问本地文件结构以防止间谍。另一方面,在HTML5中有一个文件API,它完全支持我们需要的操作类型 - 除了你可以通过指定字节范围来访问文件的一部分,但是没有可用的netcdf API;因此,在能够在服务器上对其进行切片之前,将再次复制整个文件。

当然,另一种选择是Web服务,例如OpenDAP,它们可以完全满足我们的需要,即通过互联网访问netcdf文件的各个部分。但是,这当然要求每个用户必须先安装OpenDAP服务器,然后才能从Web服务中访问其本地文件。 (或者,他们至少必须安装一个Web服务器才能通过http://localhost/...访问该文件。)

那么:有没有人知道从Web应用程序读取本地netcdf文件的特定部分的解决方案?具体来说,有没有可用的javascript工具?

3 个答案:

答案 0 :(得分:3)

目前,您可以使用netcdfjs,它是一个允许读取NetCDF v3文件的JavaScript库。因为它是一个NodeJS软件包,你可以在服务器端运行它,对于常规大小的文件你可以在线阅读,这里你有一个example

答案 1 :(得分:1)

没有Javascript工具可以读取NetCDF,但有Java库:http://www.unidata.ucar.edu/downloads/netcdf/index.jsp

您可以部署Java Applet以在本地读取NetCDF文件。从那里你可以让Applet尝试处理文件,或者与后端服务进行通信,甚至尝试从Javascript调用Applet:http://docs.oracle.com/javase/tutorial/deployment/applet/invokingAppletMethodsFromJavaScript.html

答案 2 :(得分:0)

据我所知,没有用于阅读NetCDF的特定Javascript库。但是让我放下一些想法:

  • 正如您所说,您可以安装本地Web服务器,并使用服务器端语言来执行读取磁盘中文件的程序。您可以使用名为ncdump-json的命令行软件。我故意为此目的编写了这个软件。
  • 你说你不想安装像OpenDAP或网络服务器这样的软件,但也许是一个桌面应用程序,一个独立的.exe就可以了。使用node.js加铬(这称为nw.js),你有一个同时是nodejs服务器和chrome浏览器的程序。这样您就可以编写一个读取数据的Web应用程序(例如,使用嵌入式nodejs服务器并生成ncdump-json ...)。
  • 现在最简单的场景,100%的客户端解决方案......我认为这只能通过Javascript ...或任何可以“编译”到Javascript的东西来实现。我们需要在Javascript中使用netCDF库,这可能吗?大概吧。 Emscripten是一个LLVM-to-Javascript编译器,netCDF是C所以必须能够用clang / LLVM编译它,因此必须能够使用Emscripten来拥有一个netCDF JS库版本没有努力,无需从头开始(并维护)JS端口。如果我没错,随机访问文件的方法是html5文件api中的方法slice,这应该不是问题。

希望我帮助过。