2016-04-26 8 views
3

ich ein Raster haben, von einem netcdf erhalten, die in (Lambert Conic Konforme Projektion) ist:Wie ein Lambert Conic Conformal Rasterprojektion LatLon Grad R ändern

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 

Jetzt möchte ich, dass wrf_temporary Raster zu transformieren zu "+proj=longlat +datum=WGS84" (lat lange Grad). Was ist zu tun? Ich möchte etwas wie folgt aus:

mfExtent('meteogalicia', resolution = 36) 

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

bereits viele Möglichkeiten ausprobiert, aber keiner von ihnen die richtigen Ergebnisse geben ...

+1

Haben Sie projectRaster probiert? Wenn das so ist, wie? Wenn nicht, versuchen Sie es. – Spacedman

+0

ja, probiert 'projectRaster (wrf_temporary, crs = "+ proj = longlat + datum = WGS84") ', aber kein Glück :( –

Antwort

4

Dies sollte funktionieren:

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

und produziert diese:

enter image description here

, die gut aussieht auf den ersten Blick, aber der Greenwich-Meridian (Longitude = 0) geht nicht durch London.

Das Problem tritt nicht auf, wenn die Auflösung auf die anderen Werte 4 oder 12 eingestellt ist. Wenn Sie mit Auflösung = 36 aufgerufen werden, erhalten Sie ein Raster mit einer größeren Ausdehnung als die anderen, jedoch mit einer identischen Projektionszeichenfolge. Das kann nicht stimmen. Zum Beispiel sollte die (0,0) Koordinate auf den folgenden Plots der gleiche Punkt auf der Erde sein, weil sie behaupten, dieselbe Projektion zu sein, aber sie sind arent.

enter image description here

denke ich die Auflösung = 12 Einsen korrekt sind. Hier ist das Raster lat lange mit einer EU-Vektor-Abdeckung verwandelt OVERLAID:

enter image description here

die Linien perfekt auf.

Also ich würde sagen, es ist ein Fehler - entweder getRaster ist die Projektion raten und es falsch zu bekommen, oder nicht eine Änderung in der Projektion nach dem Zuschneiden, oder was auch immer Service verwendet es ist über die Projektion.

getRaster ist raten. Die Projektionsinfo befindet sich in der heruntergeladenen NetCDF-Datei. In einem anderen Format. Für die Auflösung = 36 Dateiabschnitt des Vorsprung info ist dies:

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" ; 

die ein wenig auf die Auflösung unterscheiden = 12 Vorsprung durch das R-Paket verwendet. So stellen Sie eine nachgebende ein:

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 

Dann ist mein Test mit EU-Overlay ....

enter image description here

Hinweis dieses Mal habe ich die EU reprojiziert habe. Auch projectRaster zu latlong tun funktioniert:

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

enter image description here

mit dem Greenwich-Meridian in seinem rechtmäßigen Platz.

+0

Vielen Dank für Ihren Kommentar, ich habe es bereits versucht, aber es gibt ein Problem, dass Projektion ist nicht korrekt es ist nicht repräsentativ lat langen Grad, um Ihnen eine Idee davon zu geben, wie schlecht es ist, versuchen Sie, den folgenden Code auszuführen: 'image (ll, Ebenen = 1)' 'plot (getMap (Auflösung =" hoch "), add = T)' Danke, Ricardo Faria –

+0

Ah ha. Greenwich Meridian (x = 0) geht nicht durch London ... Hätte vielleicht bemerkt ... Hmmm. – Spacedman

+0

Das Problem ist, dass ich brauche Domain 03 ist die Auflösung = 36, ich brauche die Daten auf Madeira und den Kanaren Die Auflösung = 12 deckt nicht den Bereich ab, den ich benötige –

Verwandte Themen