まず、同僚から提供された英国のNetCDF .griおよび.grdラスターファイルから始めました。私はそれをRでロンドンだけになるようにクリップし、エクスポートしてASCファイルに変換してから、Rで次のコマンドを使用してPostGISにインポートしました。
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")
そして、Ubuntuコマンドラインで:
raster2pgsql -I -C -s 10001 -t 20x20 AnnMean2011.asc annualmean | psql -d james_traffic
PostGISにラスターテーブルができました。ちなみに、10001のSRIDは次のとおりです。
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');
同じデータベースに、ロンドンをカバーするポリゴンファイルSRID 27700があります。ラスターから各ポリゴン内の平均値を計算したいと思います。
私はこのようなことを試みていますが、それは正しくありません:
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
どうすればいいですか?
ポリゴンとラスターが正しく位置合わせされているようです。両方をWGS84に変換する必要があると思います。
かなり重複しますが、あなたの答えは、おそらくここにある:stackoverflow.com/questions/24083732/...
—
GIS-ジョナサン
うーん。GIS-Jonathanに感謝しますが、それをデータセット/状況に変換するのに苦労しています。私はこのようなことを試みていますが、それは正しくありません(上記の質問を含めて、それを含めるために)
—
TheRealJimShady '28
それでも解決策がない場合は、PostGISリストで質問することをお勧めします。
—
GIS-ジョナサン
これはあなたにとって興味深いものになると思います:gis.stackexchange.com/questions/76522/…。質問では1つの正確だが遅いクエリと、私の回答では速くて正確ではないクエリ。さらに詳しい情報はこちら:postgis.net/docs/RT_ST_SummaryStats.html(PostGIS Doc !!!)。文献:PostGISクックブック。パオロ・コルティら!!!
—
Stefan