[R-sig-Geo] Problem converting shp ED50 to WGS84 with spTransform and writeOGR
Roger Bivand
Roger.Bivand at nhh.no
Tue Dec 3 12:52:57 CET 2013
On Tue, 3 Dec 2013, Marc Marí Dell'Olmo wrote:
> Dear all,
>
> I'm trying to convert a map of Barcelona (in shp format) with reference
> ED50 to a kml with Google Maps reference. I have used the following syntax,
> but it creates a slightly displaced map (maybe just a few meters) and do
> not understand why!
When you understand the +datum= and +towgs84= tags, you'll understand. You
haven't given a datum, and ED50 is not a single standard. You also did not
quote yout sessionInfo() output, nor the startup messages from loading
rgdal.
My guess is that you are using Windows, are using an older Windows rgdal
binary from CRAN with PROJ.4 4.7.*, and have not read:
https://stat.ethz.ch/pipermail/r-sig-geo/2013-November/019884.html
So, guessing further, if you upgrade to the latest Windows rgdal binary
from CRAN, which has PROJ.4 4.8.*, you will see:
> CRS("+init=epsg:23031")
CRS arguments:
+init=epsg:23031 +proj=utm +zone=31 +ellps=intl
+towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs
which gives a three-parameter transformation from the local Spanish
version of ED50 to WGS84 accepted by EPSG as reasonable.
If you do not give +towgs84= or a known +datum=, or they (one, other, or
both) are not returned from +init=epsg:*, spTransform assumes that the
datum is WGS84. The best resource for details on datums (and local
transformation parameters) is:
http://www.asprs.org/Grids-Datums.html
with Spain July 2000, quoting the three parameters as:
\delta X = –84m ± 5m, \delta Y = –107m ± 6m, \delta Z = –120m ± 3m.
which are not quite the same as the EPSG values, so you could use those or
values near those for possibly increased accuracy. In any case, using
+towgs84= with the EPSG values will get you much closer than not using
+towgs84=.
Hope this clarifies,
Roger
>
>
> setwd("C:/dir")
> barcelona <- readOGR("C:/dir", "Dist_postals_BCN")
> proj4string(barcelona) <- CRS("+proj=utm +zone=31 +ellps=intl +units=m
> +no_defs")
> # Or proj4string(barcelona) <- CRS("+init=epsg:23031")
> x1 <- spTransform(barcelona, CRS("+proj=longlat +datum=WGS84 +no_defs"))
> writeOGR(x1, "districtes.kml", "x1" , driver="KML")
>
>
> If you want to try, you can download the ED50 shp map here:
> https://dl.dropboxusercontent.com/u/14934021/map.zip
>
> And here de displaced kml:
> https://dl.dropboxusercontent.com/u/14934021/districtes.kml
>
> Thank you!!
>
> Marc
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
--
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no
More information about the R-sig-Geo
mailing list