Tôi bắt đầu với một tệp raster NetCDF .gri và .grd của Vương quốc Anh do một đồng nghiệp cung cấp. Tôi đã cắt nó ở R để chỉ London, xuất và chuyển đổi thành tệp ASC, sau đó nhập nó vào PostGIS bằng các lệnh sau trong R:
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")
Và sau đó trên dòng lệnh Ubuntu:
raster2pgsql -I -C -s 10001 -t 20x20 AnnMean2011.asc annualmean | psql -d james_traffic
Bây giờ tôi có một bảng raster trong PostGIS. Nhân tiện, SRID của 10001 là một lần nữa, được cung cấp bởi một đồng nghiệp:
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');
Trong cùng một cơ sở dữ liệu, tôi có một tệp đa giác, SRID 27700, bao gồm Luân Đôn. Tôi muốn tính giá trị trung bình trong mỗi đa giác, từ raster.
Tôi đang thử một cái gì đó như thế này, nhưng nó không đúng:
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
Làm thế nào tôi sẽ đi về điều này xin vui lòng?
Dường như để có được đa giác và raster được căn chỉnh chính xác, tôi phải chuyển đổi cả hai thành WGS84 tôi nghĩ.