Ich begann mit einer NetCDF-Rasterdatei .gri und .grd aus Großbritannien, die von einem Kollegen bereitgestellt wurde. Ich habe es in R abgeschnitten, um nur London zu sein, es exportiert und in eine ASC-Datei konvertiert und es dann mit den folgenden Befehlen in R in PostGIS importiert:
library(raster)
uk_raster <- raster("AnnMean2011.grd")
london_area <- extent(-720000.0,-630000.0,-50000.0,25000)
london_raster <- crop(uk_raster, london_area)
writeRaster(london_raster, filename="AnnMean2011.asc", format="ascii")
Und dann auf der Ubuntu-Kommandozeile:
raster2pgsql -I -C -s 10001 -t 20x20 AnnMean2011.asc annualmean | psql -d james_traffic
Ich habe jetzt eine Rastertabelle in PostGIS. Die SRID von 10001 wird übrigens wiederum von einem Kollegen bereitgestellt:
INSERT INTO spatial_ref_sys(srid, auth_name, auth_srid, proj4text)
VALUES (10001,'CMAQ_Urban',10001,'+proj=lcc +a=6370000 +b=6370000 +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=000000 +y_0=00000');
In derselben Datenbank habe ich eine Polygondatei, SRID 27700, die London abdeckt. Ich möchte den Durchschnittswert innerhalb jedes Polygons aus dem Raster berechnen.
Ich versuche so etwas, aber es ist nicht richtig:
select polygons.postcode, avg(st_value(joined_data.rast))
from (
select (ST_Intersection(raster.rast, 1, polygons.geom)).*
from raster, polygons
where ST_Intersects(raster.rast, 1, polygons.geom)
) joined_data
group by polygons.postcode
Wie würde ich bitte vorgehen?
Es scheint, dass das Polygon und das Raster richtig ausgerichtet sind. Ich denke, ich muss beide in WGS84 konvertieren.