[postgis-users] monthly climate query
Kirk Wythers
kwythers at umn.edu
Tue Aug 14 13:25:25 PDT 2007
If I follow your point Regina (as far as the working daily query
goes), I am returning data for a particular site based on the last
line... WHERE w.station_id = some_valid_number.
Did I miss something?
On Aug 14, 2007, at 3:13 PM, Obe, Regina wrote:
> Wouldn't you want to return the average for month for that
> particular site? None of your month subselects seem to group by
> station id. Would seem to me logically you should add station_id
> to each of your subselects, group by station_id as well as month
> and then your ON clause would be month and station_id.
>
> Hope that helps,
> Regina
>
> From: postgis-users-bounces at postgis.refractions.net [mailto:postgis-
> users-bounces at postgis.refractions.net] On Behalf Of Kirk Wythers
> Sent: Tuesday, August 14, 2007 12:15 PM
> To: Discussion PostGIS Users
> Subject: [postgis-users] monthly climate query
>
> I need some help with rewriting a query. I have a query that dumps
> daily climate data, filling in missing data with monthly averages
> (one line per day).
>
> I want to output monthly averages (one line per month). I am having
> a hard time wrapping my head around this. Particularly how to deal
> with the doy column (day of year). I have tried several approaches
> and my forehead is starting to get my keyboard bloody.
>
> Here is the daily query:
>
> SELECT CASE
> WHEN w.station_id = site_near.station_id THEN w.obs_id
> ELSE s.obs_id
> END AS obs_id,
> site_near.station_id,
> site_near.longname,
> w.year,
> w.doy,
> --replace missing values (-999) with the monthly average
> CASE w.tmax
> WHEN -999 THEN avgtmax.avg
> ELSE w.tmax
> END,
> CASE w.tmin
> WHEN -999 THEN avgtmin.avg
> ELSE w.tmin
> END,
> CASE s.par
> WHEN -999 THEN avgpar.avg
> ELSE s.par
> END,
> CASE w.precip
> WHEN -999 THEN avgprecip.avg
> ELSE w.precip
> END
> FROM site_near
> INNER JOIN solar s
> ON (site_near.ref_solar_station_id = s.station_id
> AND site_near.obs_year = s.year)
> INNER JOIN weather w
> ON (site_near.ref_weather_station_id = w.station_id
> AND site_near.obs_year = w.year
> AND s.date = w.date)
> INNER JOIN (SELECT MONTH,
> round(avg(tmax)::numeric, 2) AS avg
> FROM weather
> WHERE tmax != -999
> GROUP BY MONTH) AS avgtmax
> ON (w.month = avgtmax.month)
> INNER JOIN (SELECT MONTH,
> round(avg(tmin)::numeric, 2) AS avg
> FROM weather
> WHERE tmin != -999
> GROUP BY MONTH) AS avgtmin
> ON (w.month = avgtmin.month)
> INNER JOIN (SELECT MONTH,
> round(avg(par)::numeric, 2) AS avg
> FROM solar
> WHERE par != -999
> GROUP BY MONTH) AS avgpar
> ON (s.month = avgpar.month)
> INNER JOIN (SELECT MONTH,
> round(avg(precip)::numeric, 2) AS avg
> FROM weather
> WHERE precip != -999
> GROUP BY MONTH) AS avgprecip
> ON (w.month = avgprecip.month)
> --select station to output climate data by id number
> WHERE w.station_id = 219101
>
>
> The substance of this message, including any attachments, may be
> confidential, legally privileged and/or exempt from disclosure
> pursuant to Massachusetts law. It is intended solely for the
> addressee. If you received this in error, please contact the sender
> and delete the material from any computer.
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20070814/ef1ae925/attachment.html>
More information about the postgis-users
mailing list