Hi all,

I have a couple of related questions to ask. They both involve spatial datasets that also have a time component, which I'd like to keep in PostGIS and serve up via GeoServer.

Use case 1: I'm mapping a series of model results (Runoff Risk Advisory Forecast). For each of the days of the forecast (today, tomorrow, day after that) I have a layer defined, each with its own table; the one you see on the page is chosen by the radio buttons to the upper right. Every day a big script chugs through our forecast intake and updates the "three_day_risk" and "snowmelt" columns for each polygon in each of the three tables. Just for reference, the tables each look like this:

         Column         |         Type          | Modifiers
------------------------+-----------------------+-----------
 gid                    | integer               | not null
 the_geom               | geometry              | not null
 name                   | character varying(65) | not null
 descriptio             | character varying(81) |
 three_day_risk         | integer               |
 ten_day_snowmelt_alert | integer               |


What I would like to do is be able to easily map any day's model results. When I'm setting up a layer in GeoServer, I have to point it at a table, not at a query, so the dataset is pretty much fixed at that point.

I've tried creating a view, part of which incorporates a date held in a separate table which the user can control. Here's the schema I used. The runoff_forecasts table contains a date, the risk, and the snowmelt, and wisconsin_watersheds contains all the geometry, and runoff_forecast_valid_time just has a datestamp in it:

   Column   |           Type           | Modifiers
------------+--------------------------+-----------
 gid        | integer                  |
 the_geom   | geometry                 |
 name       | character varying(65)    |
 validstart | timestamp with time zone |
 risk       | integer                  |
 snowmelt   | integer                  |
View definition:
SELECT w.gid, w.the_geom, w.name, r.validstart, r.day1 AS risk, r.day1_snowmelt AS snowmelt FROM wisconsin_watersheds w, runoff_forecasts r, runoff_retrospect_valid_time rfvt WHERE r.name::text = w.name::text AND r.validstart = rfvt.current_validstart;

But that's (1) unbearably slow, and (2) has no concurrency -- User A might set the date in the in the valid-time table, then try to view the map just as User B sets her own value into it. BZZT!

Am I missing something really obvious? Or is this just hard?

Use case 2: I have a bunch of other datasets that are 3D, i.e. they are lat, lon, time, with nice square pixels. Seems a natural for a raster, except that I want to store the values in a database, not in an ever-expanding cloud of GeoTIFF files. (I have to do other things with the data besides mapping them.) We're using PostGIS right now, and I hope I don't offend anyone by saying that raster support for PostGIS seems like fusion power, it's always just around the corner. Can I make it work today? And does [insert workable PostGIS raster implementation here] allow me to easily query the data as data, without a ton of rigamarole? For example, I'd like to say "give me the time series of values for the pixel at [lat,lon] between April 1 and June 30 2011".

Thanks (as always!) for your knowledgeable assistance,

Rick Wayne
Sr. Systems Programmer
Univ. of WI Soil Science
------------------------------------------------------------------------------
Got Input?   Slashdot Needs You.
Take our quick survey online.  Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
Geoserver-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to