110 likes | 275 Views
Adding new services for HDF in THREDDS Data Server (TDS). Hyo-Kyung Joe Lee and Ted Habermann The HDF Group. A User Story. I would like to examine a big HDF file X with command line tool Y that runs on platform Z. However, my mobile platform is not Z. So, I can’t run Y.
E N D
Adding new services for HDF in THREDDS Data Server (TDS) Hyo-Kyung Joe Lee and Ted Habermann The HDF Group
A User Story I would like to examine a big HDF file X with command line tool Y that runs on platform Z. However, my mobile platform is not Z. So, I can’t run Y. X is too big for my device as well.
Web Service is the answer. Almost all platforms support web browser.
Web Service Solution Run web server on Z. The server executes command Y on X. Send output over the web. THREDDS Data Server is a good candidate.
Why THREDDS Data Server? Portable – 100% Java Easy to add a new service Data and services go together. Maximum control on services with data
How to add a new service • Create a YServiceController class (e.g., H4MapServiceController.java) • handleRequest() method Invokes runtime.exec(command). • Read stdout and build a string outStr. • Return ResponseEntity<string>(outStr,…) • Set up catalog for Y service for X data. • Run the custom TDS on Z.
New HDF Services for non-Java apps • HDF4 File Content Map (h4map) • For HDF4 files only • C / Linux & Mac • HDF5 JSON (h5json) • For HDF5 files only • C++ • NCO/CF checker (ncdismember) • For both HDF4 and HDF5 • C/C++/Python
Quick Demo http://eosdap.hdfgroup.uiuc.edu:8887/thredds/catalog.html Some files are located at FTP server and mounted via NFS, not at TDS. Services are triggered based on file extension.
Benefit Try URLs with online XML / JSON browser. • xmlgrid.net • jsonviewer.stack.hu You can develop your own XML/JSON apps on top of the new HDF web services. Run command while browsing data – a good testbed for a new product.
Future Work Supplying command line options? Generalization of CLI services through Catalog? What other HDF services do you want to see? (e.g., GeoJSON)
Acknowledgement This work was supported by Subcontract number 114820 under Raytheon Contract number NNG10HP02C, funded by the National Aeronautics and Space Administration (NASA). Any opinions, findings, conclusions, or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of Raytheon or the National Aeronautics and Space Administration.