OPeNDAP Developer’s Workshop Feb 21-23 2007 Server-side Functions for Geo-spatial Selection James Gallagher 22 Feb 2007.

Slides:



Advertisements
Similar presentations
1 NASA CEOP Status & Demo CEOS WGISS-25 Sanya, China February 27, 2008 Yonsook Enloe.
Advertisements

Introduction to C Programming
Introduction to Macromedia Director 8.5 – Lingo
James Gallagher OPeNDAP 1/10/14
A Third Look At ML 1. Outline More pattern matching Function values and anonymous functions Higher-order functions and currying Predefined higher-order.
Unidata Seminar Series - 30 January 2004 OPeNDAP and THREDDS: Access and Discovery of Distributed Scientific Data Yuan Ho Ethan Davis UCAR Unidata.
Searching for Data Relationship between searching and sorting Simple linear searching Linear searching of sorted data Searching for string or numeric data.
Chapter 7 Introduction to Procedures. So far, all programs written in such way that all subtasks are integrated in one single large program. There is.
Recent Work in Progress
OPeNDAP’s Server4 Building a High Performance Data Server for the DAP Using Existing Software Building a High Performance Data Server for the DAP Using.
Generics and the ArrayList Class
Streaming NetCDF John Caron July What does NetCDF do for you? Data Storage: machine-, OS-, compiler-independent Standard API (Application Programming.
® OGC Web Services Initiative, Phase 9 (OWS-9): Innovations Thread - OPeNDAP James Gallagher and Nathan Potter, OPeNDAP © 2012 Open Geospatial Consortium.
Lecture 27 Exam outline Boxing of primitive types in Java 1.5 Generic types in Java 1.5.
VBA Modules, Functions, Variables, and Constants
Chapter 14 Generics and the ArrayList Class Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
Structured Data Types and Encapsulation Mechanisms to create new data types: –Structured data Homogeneous: arrays, lists, sets, Non-homogeneous: records.
Chapter 2: Algorithm Discovery and Design
Form Handling, Validation and Functions. Form Handling Forms are a graphical user interfaces (GUIs) that enables the interaction between users and servers.
Hyrax Installation and Customization Dan Holloway James Gallagher.
Using Data Active Server Pages Objectives In this chapter, you will: Learn about variables and constants Explore application and session variables Learn.
Tutorial: Introduction to ASP.NET Internet Technologies and Web Application 4 th February 2010.
Database-Driven Web Sites, Second Edition1 Chapter 8 Processing ASP.NET Web Forms and Working With Server Controls.
OPeNDAP and the Data Access Protocol (DAP) Original version by Dave Fulker.
Remote Unit Testing Milestone III Alex Riordan Brian Pruitt-Goddard.
The HDF Group ESIP Summer Meeting HDF OPeNDAP update Kent Yang The HDF Group 1 July 8 – 11, 2014.
Types for Programs and Proofs Lecture 1. What are types? int, float, char, …, arrays types of procedures, functions, references, records, objects,...
Feature Collections Subsetting 1. Overview 2. NCSS 2.1. Dataset description 2.2. Grid requests 2.3. Grid as point requests 3. CdmrFeature.
OPeNDAP Developer’s Workshop Feb OPeNDAP 4 Data Server – Hyrax James Gallagher and Nathan Potter 21 Feb 2007.
Coverages and the DAP2 Data Model James Gallagher.
Weathertop Consulting, LLC Wednesday, January 14, 2009 IIPS 11A.2 1 A General Purpose System for Server-side Analysis of Earth Science Data Roland Schweitzer.
“A labor of love” (Multicast Pattern) Chapter 4 (pages or ) Chris Gordon.
Introduction Algorithms and Conventions The design and analysis of algorithms is the core subject matter of Computer Science. Given a problem, we want.
Feb 20, 2002Soumya Mohanty, AEI1 GEO++ A general purpose C++ DSP library Plan of presentation Soumya Mohanty: Overview R. Balasubramanian: MPI Shell, Frame.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
Write-through Cache System Policies discussion and A introduction to the system.
Integrating netCDF and OPeNDAP (The DrNO Project) Dr. Dennis Heimbigner Unidata Go-ESSP Workshop Seattle, WA, Sept
Server-Side Functions. Contents Background on DAP2 and Constraints Writing Server Functions: short version Programming with libdap A Real Server Function.
DAP4 James Gallagher & Ethan Davis OPeNDAP and Unidata.
Just a Little PHP Programming PHP on the Server. Common Programming Language Features Comments Data Types Variable Declarations Expressions Flow of Control.
COP4020 Programming Languages Names, Scopes, and Bindings Prof. Xin Yuan.
Data TypestMyn1 Data Types The type of a variable is not set by the programmer; rather, it is decided at runtime by PHP depending on the context in which.
A Third Look At ML Chapter NineModern Programming Languages, 2nd ed.1.
A Data Access Framework for ESMF Model Outputs Roland Schweitzer Steve Hankin Jonathan Callahan Kevin O’Brien Ansley Manke.
Lecture 4 Generic programming Advanced Java Programming 1 dr hab. Szymon Grabowski dr inż. Wojciech Bieniecki
 2007 Pearson Education, Inc. All rights reserved C Arrays.
DAP4, SOAP and THREDDS James Gallagher OPeNDAP Presented by Steve Hankin.
M1G Introduction to Programming 2 3. Creating Classes: Room and Item.
Alexandria Digital Library Project Four Steps to Geospatial Enlightenment Greg Janée Additional text in “Notes” view.
ICS3U_FileIO.ppt File Input/Output (I/O)‏ ICS3U_FileIO.ppt File I/O Declare a file object File myFile = new File("billy.txt"); a file object whose name.
Weathertop Consulting, LLC Server-side OPeNDAP Analysis – Concrete steps toward a generalized framework via a reference implementation using F-TDS Roland.
11/8/2007HDF and HDF-EOS Workshop XI, Landover, MD1 Software to access HDF5 Datasets via OPeNDAP MuQun Yang, Hyo-Kyung Lee The HDF Group.
Chapter 8 Searching and Sorting © 2006 Pearson Education Inc., Upper Saddle River, NJ. All rights reserved.
Higher Computing Science 2016 Prelim Revision. Topics to revise Computational Constructs parameter passing (value and reference, formal and actual) sub-programs/routines,
OGC Web Services with complex data Stephen Pascoe How OGC Web Services relate to GML Application Schema.
Ada, Scheme, R Emory Wingard. Ada History Department of Defense in search of high level language around Requirements drafted for the language.
9/21/04 James Gallagher Server-Side: The Basics This part of the workshop contains an overview of the two servers which OPeNDAP has developed. One uses.
® Sponsored by Improving Access to Point Cloud Data 98th OGC Technical Committee Washington DC, USA 8 March 2016 Keith Ryden Esri Software Development.
Maria Alandes Pradillo, CERN Training on GLUE 2 information validation EGI Technical Forum September 2013.
Checking the Server.
Other Services in Hyrax
Tools to Build Clients.
Introduction to R Studio
Checking the Server.
Microsoft Access Illustrated
CMSC 202 Lesson 22 Templates I.
Templates I CMSC 202.
Future Development Plans
OPeNDAP/Hyrax Interfaces
Presentation transcript:

OPeNDAP Developer’s Workshop Feb Server-side Functions for Geo-spatial Selection James Gallagher 22 Feb 2007

OPeNDAP Developer’s Workshop Feb Why build server-side functions? Some operations are much more efficient to do before sending the data. Some operations are possible only after performing several data accesses. But the real reason… Hide the mechanics of an operation behind an interface.

OPeNDAP Developer’s Workshop Feb Why is ‘Hiding’ Important for Data? Operations such as geo-referenced selection are different for each dataset/format convention. An interface can –combine knowledge of several conventions –be specialized –return better error messages than generic operators

OPeNDAP Developer’s Workshop Feb Server-side functions in Hyrax Four* server-side functions: –version(): Get info on installed functions –geogrid(): Given a Grid variable and a latitude-longitude box, return the data within that box in a Grid –geoarray(): Similar to geogrid() but for an Array –linear_scale(): Scale data using y=mx+b These are in libdap *Really 3.1 since version() is a placeholder

OPeNDAP Developer’s Workshop Feb Geo-spatial selection for a Grid variable How does geogrid() make getting data easier?

OPeNDAP Developer’s Workshop Feb First, the ‘old’ way… A user/client looks at the Grid’s map vectors - technically a metadata request Based on the values in the maps, they figure out the start and stop indexes They use those indexes to make the real request Summary: The request requires two data accesses, plus scanning the map vectors to determine the indexes

OPeNDAP Developer’s Workshop Feb geogrid() geogrid() arguments: –The dataset Grid name; –A latitude/longitude bounding box and –Zero or more relational expressions Evaluation of the Map vectors is still the ‘algorithm,’ but it’s done by the server, hidden from the user/client

OPeNDAP Developer’s Workshop Feb The geogrid() Function /data/nc/coads_climatology.nc "geogrid(SST,50,-70,48,-68,\"1000<TIME<2000\")" The data: Grid { Array: Float32 SST[TIME = 2][COADSY = 3][COADSX = 3]; Maps: Float64 TIME[TIME = 2]; Float64 COADSY[COADSY = 3]; Float64 COADSX[COADSX = 3]; } SST = { Array: {{{-1e+34, -1e+34, -1e+34},{-1e+34, -1e+34, -1e+34},{-1e+34, -1e+34, -1e+34}}, {{-1e+34, -1e+34, -1e+34},{-1e+34, -1e+34, -1e+34},{-1e+34, -1e+34, -1e+34}}} Maps: { , }, {47, 49, 51}, {-71, -69, -67} };

OPeNDAP Developer’s Workshop Feb The geoarray() Function Intent: Provide the same sort of geo-spatial selection capability for Arrays as for Grids. Current version: User/client must supply the geo-spatial extent of the data RSN* version: The function will use extent information when present in the dataset A future version will also be savvy about different projections *Really Soon Now

OPeNDAP Developer’s Workshop Feb The linear_scale() Function Perform simple linear scaling (y=mx+b) Use COARDS attributes if present Provide a way for clients to tell the function which coefficients to use

OPeNDAP Developer’s Workshop Feb The version()function Returns information on the functions installed and their versions Returns two responses: –version() human-readable text –version(xml) returns xml This is really just the first attempt at a discovery system for these functions!

OPeNDAP Developer’s Workshop Feb How they work The function is run by the constraint evaluator When a handler is initialized, it loads the functions it understands There is now a set of ‘generic’ functions in libdap; a handler can override those

OPeNDAP Developer’s Workshop Feb Implementing a Server-side function Functions take four arguments: –A list of arguments which may be constants or variables in the data set –A count of those arguments –A DDS (really DDX) for the data set –The string that names the dataset Once called, a server-side function can call any method is libdap. The function must return one of the libdap data types – that’s the function’s return value.

OPeNDAP Developer’s Workshop Feb What else do I need to know to write one? You should also understand how libdap evaluates constraint expressions How the libdap read() methods operate How to access attribute values from a from the libdap 3.x DDS object (which is actually the binary representation of the DDX)

OPeNDAP Developer’s Workshop Feb Future directions We need feedback on –The functions/features implemented so far –The function loading scheme –Discovery

OPeNDAP Developer’s Workshop Feb Features Are there specific conventions that should be supported? Other functions? Things the functions do that they shouldn’t

OPeNDAP Developer’s Workshop Feb Function loading/evaluation Now all of the functions are compiled into libdap Should functions be loaded from a shared library at run time? Configured in the BES? Should functions be an option for metadata (DDX) requests too? (we do support constraints for ‘syntax’ metadata requests)

OPeNDAP Developer’s Workshop Feb Discovery There must be a way to discover functions, true of false? The current version() function is really only a placeholder What are the requirements for discovery? Should we use the Data response? Error response? Something new?

OPeNDAP Developer’s Workshop Feb Vexing questions Server-side functions seem like a very powerful tool, but they get little use, why? Assuming these are to be driven by the community, how do we sustain that?