[R-sig-Geo] CRS for the European Biogeographical Regions in R

Roland Kaiser kardinal.eros at gmail.com
Sun Feb 8 15:26:10 CET 2015


Hi Barbara!

the problem is related as to how you specified the formula.
?coordinates says … in the form of e.g. ~x+y … (in your case x = lon[gitude], y = lat[itude})

coordiantes(pt) <- lon+lat

is what you want.

–Roli


> Am 08.02.2015 um 15:17 schrieb Barbara Szabó <barbara.szabo.elte at gmail.com>:
> 
> Dear Roli, dear Barry, dear all,
> 
> unfortunately, I cannot find out what is going wrong with my example.
> The problem seems to be very basic, but after searching and reading a
> lot, I do not come to a solution. It seems that either the
> transformation of the WGS84 lat/long to epsg:4326 is somehow wrong or
> the biogeographical region CRS is in another reference system than the
> .prj file reported. Any help would be wonderful. Thanks in advance.
> 
> library(sp)
> library(rgdal)
> 
> ### possible basic problem:
> ### data in lat/lon -- WGS84, some stations in slovenia:
> pt <- data.frame("lat"=c(45.900,46.500,46.067),
> "lon"=c(13.633,13.717,14.517), "stid"=c("psi004","psi006","psi003"))
> coordinates(pt) <- ~lat+lon
> proj4string(pt) <- CRS("+init=epsg:4326")
> proj4string(pt)
> #[1] "+init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
> +towgs84=0,0,0"
> ## projection seems to be wrong since of negative numbers?
> pt at coords
> 
> #         lat        lon
> #[1,] 8295839 -96345.163 <tel:96345.163>
> #[2,] 8355036 -58479.199
> #[3,] 8286066   1886.133
> 
> 
> 
> #################################################
> ### full example:
> pg <- readOGR(dsn = "data/eea",
>               layer = "BiogeoRegions2011", p4s = "+init=epsg:3035")
> proj4string(pg)
> 
> # [1] "+init=epsg:3035 +proj=laea +lat_0=52 +lon_0=10 +x_0=4321000
> +y_0=3210000 #+ellps=GRS80 +units=m +no_defs"
> 
> ## three stations from slovenia:
> 
> pt <- data.frame("lat"=c(45.900,46.500,46.067),
> "lon"=c(13.633,13.717,14.517), "stid"=c("psi004","psi006","psi003"))
> 
> coordinates(pt) <- ~lat+lon
> proj4string(pt) <- CRS("+init=epsg:4326")
> proj4string(pt)
> 
> #[1] "+init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
> +towgs84=0,0,0"
> 
> ##       project to CRS of pg
> pt <- spTransform(pt, CRS("+init=epsg:3035"))
> res <- over(pt, pg)
> res
> 
> #  NAME ABBRE code label
> #1 <NA>  <NA> <NA>  <NA>
> #2 <NA>  <NA> <NA>  <NA>
> #3 <NA>  <NA> <NA>  <NA>
> 
> ## example of a polygon:
> summary(pg at polygons[[1]]@Polygons[[1]]@coords)
> 
> #       V1                V2
> # Min.   :4389214   Min.   :1178199
> # 1st Qu.:4396641   1st Qu.:1186794
> # Median :4407574   Median :1191444
> # Mean   :4405907   Mean   :1193508
> # 3rd Qu.:4413052   3rd Qu.:1200195
> # Max.   :4421392   Max.   :1207598
> 
> pt at coords
> 
> #         lat        lon
> #[1,] 8295839 -96345.163 <tel:96345.163>
> #[2,] 8355036 -58479.199
> #[3,] 8286066   1886.133
> 
> 
> 
> 2015-02-08 13:54 GMT+01:00 Roland Kaiser <kardinal.eros at gmail.com <mailto:kardinal.eros at gmail.com>>:
> Hi!
> 
> Sorry for the confusion, I followed the link on the top the page "Note: new version is available!“.
> For some reason, this ZIP archive has a *.qpj instead of *.prj file.
> 
> Of course, readOGR treats the *prj correctly, if present!
> 
> -Roli
> 
> > Am 08.02.2015 um 12:37 schrieb Barry Rowlingson <b.rowlingson at lancaster.ac.uk <mailto:b.rowlingson at lancaster.ac.uk>>:
> >
> > On Sat, Feb 7, 2015 at 4:53 PM, Roland Kaiser <kardinal.eros at gmail.com <mailto:kardinal.eros at gmail.com>> wrote:
> >
> >> #       the projection information is given in the *.qpj file
> >
> > I can't see a *.qpj file in that shapefile. There is a *.prj file
> > which contains projection info.
> >
> >> #       unfortunately, it is not read from the dataset by the OGR driver
> >
> > The *.prj file **is** read when using readOGR:
> >
> >> r=readOGR(".","BiogeoRegions2011")
> > OGR data source with driver: ESRI Shapefile
> > Source: ".", layer: "BiogeoRegions2011"
> > with 12 features and 4 fields
> > Feature type: wkbPolygon with 2 dimensions
> >> proj4string(r)
> > [1] "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000
> > +ellps=GRS80 +units=m +no_defs"
> >
> > - that's a full projection specification, rather than an epsg code
> > though, because that's what's in the file.
> >
> >> #       we have do define it manually by specifing argument p4s
> >
> > No we don't!
> >
> >> pg <- readOGR(dsn = "BiogeoRegions2011_shapefile",
> >>        layer = "BiogeoRegions2011", p4s = "+init=epsg:3035")
> >
> > Is the .prj file text coding the same projection as epsg:3035?
> > http://epsg.io/ <http://epsg.io/> says 3035 is:
> >
> > +proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80
> > +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
> >
> > So yes. But there's no need to specify it in readOGR since you have
> > the .prj file. The maptools functions readShapeSpatial and friends
> > ignore the .prj file - I don't know why they exist any more!
> >
> >> r2=readShapeSpatial("BiogeoRegions2011.shp")
> >> proj4string(r2)
> > [1] NA
> >
> > Ouch.
> >
> > Barry
> 
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org <mailto:R-sig-Geo at r-project.org>
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo <https://stat.ethz.ch/mailman/listinfo/r-sig-geo>
> 
> 
> 
> 


	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list