繁体   English   中英

如何将Lambert Conic Conformal光栅投影更改为latlon度R.

[英]How to change a Lambert Conic Conformal raster projection to latlon degree R

我有一个光栅,从netcdf获得(Lambert Conic Conformal projection):

    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" (lat long degree)。 该怎么办? 我想要这样的东西:

    mfExtent('meteogalicia', resolution = 36)

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

已经尝试了很多选项,但没有一个能给出正确的结果......

这应该工作:

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

并产生这个:

在此输入图像描述

看起来乍一看但格林威治子午线(经度= 0)不会经过伦敦。

对于设置为其他值4或12的分辨率,不会出现此问题。使用分辨率= 36调用时,会获得一个比其他值更大但具有相同投影字符串的栅格。 这不可能是对的。 例如,下图中的(0,0)坐标应该是地球上的相同点,因为它们声称是相同的投影,但它们不是。

在此输入图像描述

我认为分辨率= 12是正确的。 这里的栅格转换为lat-long,覆盖了EU矢量覆盖:

在此输入图像描述

它完美排列。

所以我会说它是一个错误 - 要么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" ;

这与R封装使用的分辨率= 12投影略有不同。 所以做一个合规的:

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

然后我的欧盟覆盖测试....

在此输入图像描述

请注意,这次我重新考虑了欧盟。 也可以将projectRaster用于latlong工作:

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

在此输入图像描述

格林威治子午线在合法的地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM