2016-04-26 23 views
3

我有一個光柵,根據NetCDF這是在(蘭伯特圓錐等角投影)中得到:如何更改蘭伯特圓錐形光柵投影到latlon度r

library(meteoForecast) 
    wrf_temporary <- getRaster("temp", day = Sys.Date(), frames = 'complete', resolution = 36, service = "meteogalicia") 
    wrf_temporary 

extent  : -18, 4230, -18, 3726 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=lcc +lat_1=43 +lat_2=43 +lat_0=34.82300186157227 +lon_0=-14.10000038146973 +x_0=536402.34 +y_0=-18558.61 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=km +no_defs 

現在我想變換wrf_temporary光柵到"+proj=longlat +datum=WGS84"(緯度長度)。該怎麼辦? 我想是這樣的:

mfExtent('meteogalicia', resolution = 36) 

class  : Extent 
xmin  : -49.18259 
xmax  : 18.789 
ymin  : 24.03791 
ymax  : 56.06608 

已經嘗試了很多的選擇,但他們沒有給出正確的結果...

+1

您是否試過'projectRaster'?如果是這樣,怎麼樣?如果沒有,嘗試一下。 – Spacedman

+0

是的,試過'projectRaster(wrf_temporary,crs =「+ proj = longlat + datum = WGS84」)',但沒有幸運:( –

回答

4

這應該工作:

> ll = projectRaster(wrf_temporary,crs="+init=epsg:4326") 
> plot(ll[[1]]) 

,併產生這樣的:

enter image description here

看起來正確的乍一看,格林威治子午線(經度= 0)不通過倫敦。

對於設置爲其他值4或12的分辨率,不會出現該問題。使用分辨率= 36調用時,會得到比其他值更大的柵格,但具有相同的投影字符串。這不可能是正確的。例如,下圖中的(0,0)座標應該是地球上的同一點,因爲它們聲稱是相同的投影,但它們不是。

enter image description here

我覺得分辨率= 12成的人是正確的。下面是光柵轉換爲緯度和長着歐盟載體覆蓋範圍:

enter image description here

其排隊完美。

所以我想說它的一個bug - 要麼getRaster是猜測投影並使其錯誤,或者在裁剪之後不投影改變投影,或者它使用的任何服務都是關於投影。

getRaster正在猜測。投影信息位於下載的NetCDF文件中。另一種格式。對於分辨率= 36文件中的投影信息部分是這樣的:

int Lambert_Conformal ; 
    Lambert_Conformal:standard_parallel = 43., 43. ; 
    Lambert_Conformal:latitude_of_projection_origin = 24.2280006408691 ; 
    Lambert_Conformal:false_easting = 2182.62935 ; 
    Lambert_Conformal:false_northing = -269.65597 ; 
    Lambert_Conformal:grid_mapping_name = "lambert_conformal_conic" ; 
    Lambert_Conformal:longitude_of_central_meridian = -14.1000003814697 ; 
    Lambert_Conformal:_CoordinateTransformType = "Projection" ; 
    Lambert_Conformal:_CoordinateAxisTypes = "GeoX GeoY" ; 

這對分辨率的位不同= 12投影上述R包使用。所以,做一個符合一個:

p = "+proj=lcc +lat_1=43 +lat_2=43 +lat_0=24.2280006408691 +lon_0=-14.1000003814697 +x_0=2182629.35 +y_0=-269655.97 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=km +no_defs" 
wrf <- getRaster('temp', day = testDay, resolution=36) 
projection(wrf) = p 

然後我的測試與歐盟疊加....

enter image description here

注意這個時候我已經重新投影歐盟。這樣做projectRaster到經緯度也工作:

> wrfLL = projectRaster(wrf, crs="+init=epsg:4326") 
> plot(wrfLL[[1]]) 
> abline(v=0) 

enter image description here

在其應有的位置格林威治子午線。

+0

非常感謝您的評論,我已經嘗試過這種方式,但有一個問題,投影是不正確的,它不代表經度長度,給你一個多麼糟糕的想法,嘗試運行以下代碼: 'image(ll,layers = 1)' 'plot(getMap(resolution =「高「),加= T) 謝謝,裏卡多法里亞 –

+0

啊哈格林威治子午線(x = 0)沒有經過倫敦...應該注意到...嗯 – Spacedman

+0

問題是,我需要域03是分辨率= 36,我需要馬德拉島和加那利羣島上的數據,分辨率= 12不包括我需要的區域 –