[R-sig-Geo] WKT coordinate system string (PRJ) to PROJ.4

Ahmadou Dicko dicko.ahmadou at gmail.com
Tue Jan 5 12:24:24 CET 2016


You can also use gdalsrsinfo through gdalUtils.

prj_1 <- 'PROJCS["Transverse_Mercator",
    GEOGCS["GCS_OSGB 1936",
    DATUM["D_OSGB_1936",
    SPHEROID["Airy_1830",6377563.396,299.3249646]],
    PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",49],
    PARAMETER["central_meridian",-2],
    PARAMETER["scale_factor",0.9996012717],
    PARAMETER["false_easting",400000],
    PARAMETER["false_northing",-100000],
    UNIT["Meter",1]]'


prj_to_epsg <- function(prj) {
  file <- tempfile()
  writeLines(prj, file)
  crs <- gdalsrsinfo(file, as.CRS = TRUE)
  unlink(file)
  crs
}

prj_to_epsg(prj_1)
## CRS arguments:
##  +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717
## +x_0=400000 +y_0=-100000 +ellps=airy +units=m +no_defs




On Tue, Jan 5, 2016 at 11:09 AM, Michael Sumner <mdsumner at gmail.com> wrote:

> >
> >
> > On Tue, 5 Jan 2016 at 21:58 boB Rudis <bob at rudis.net> wrote:
> > This may not be optimal as it uses an external service:
>
>
> That is excellent, thanks for the example!
>
> I assume you won't mind if I package it up?  I'll attribute you, and let
> you know when it's working.
>
> Cheers, Mike.
>
>
> > prj_to_epsg <- function(prj) {
> >
> > require(sp)
> > require(httr)
> > require(jsonlite)
> >
> > res <- GET("http://prj2epsg.org/search.json",
> > query=list(exact=TRUE,
> > error=TRUE,
> > mode="wkt",
> > terms=prj))
> >
> > # one shld prbly do more error checking than this
> > stop_for_status(res)
> >
> > dat <- fromJSON(content(res, as="text", flatten=TRUE))
> >
> > # NOTE: there could be more in dat$codes if prj was ambiguous
> > CRS(paste0("+init=epsg:", dat$codes[1, "code"]))
> >
> > }
> >
> > prj <- paste0(readLines("110m_admin_1_states_provinces_shp.prj"))
> > prj_to_epsg(prj)
> > ## CRS arguments:
> > ## +init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84
> > ## +towgs84=0,0,0
> >
> > prj_1 <- 'PROJCS["Transverse_Mercator",
> > GEOGCS["GCS_OSGB 1936",
> > DATUM["D_OSGB_1936",
> > SPHEROID["Airy_1830",6377563.396,299.3249646]],
> > PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],
> > PROJECTION["Transverse_Mercator"],
> > PARAMETER["latitude_of_origin",49],
> > PARAMETER["central_meridian",-2],
> > PARAMETER["scale_factor",0.9996012717],
> > PARAMETER["false_easting",400000],
> > PARAMETER["false_northing",-100000],
> > UNIT["Meter",1]]'
> > prj_to_epsg(prj_1)
> > ## CRS arguments:
> > ## +init=epsg:27700 +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717
> > ## +x_0=400000 +y_0=-100000 +datum=OSGB36 +units=m +no_defs +ellps=airy
> > ## +towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894
> >
> > On Tue, Jan 5, 2016 at 5:09 AM, Michael Sumner <mdsumner at gmail.com>
> wrote:
> > > Hello, is there any R-level way to convert a WKT/PRJ *coordinate
> system*
> > > string to PROJ.4 used by sp/rgdal?
> > >
> > > (Previously I've written out to SHP/PRJ, and read back in with rgdal,
> but
> > > that's obviously a bit naff.)
> > >
> > > (I know you can rgeos::readWKT and wkb::readWKB for *geometry*).
> > >
> > > Cheers, Mike.
> > >
> > >
> > >
> > >
> > > --
> > > Dr. Michael Sumner
> > > Software and Database Engineer
> > > Australian Antarctic Division
> > > 203 Channel Highway
> > > Kingston Tasmania 7050 Australia
> > >
> > > [[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
> --
> Dr. Michael Sumner
> Software and Database Engineer
> Australian Antarctic Division
> 203 Channel Highway
> Kingston Tasmania 7050 Australia
>
>         [[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
>



-- 
Ahmadou H. DICKO
statistician economist (Ingénieur Statisticien Économiste)
PhD candidate in Climate change economics
Faculty of economics and managment - Cheikh Anta Diop University
West African Science Service Center on Climate Change and Adaptated Land
Use (WASCAL)
Center for Development Research (ZEF) - University of Bonn
email : ahmadou.dicko at ucad.edu.sn
twitter : @dickoah
github : github/dickoa <https://github.com/dickoa>
tel : +221 33 827 55 16
portable: +221 77 123 81 69

	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list