Proj4
From SCECpedia
Coordinate system conversions are needed for several SCEC projects.
Contents
Example Conversions
Converting WGS84 to UTM Zone 11 using cs2cs
- cs2cs -v +proj=latlong +datum=WGS84 +to +proj=utm +zone=11 +datum=WGS84
-bash-4.2$ cs2cs -v +proj=latlong +datum=WGS84 +to +proj=utm +zone=11 +datum=WGS84 # ---- From Coordinate System ---- #Lat/long (Geodetic alias) # # +proj=latlong +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 # ---- To Coordinate System ---- #Universal Transverse Mercator (UTM) # Cyl, Sph # zone= south # +proj=utm +zone=11 +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 -118.00 34.00 407650.40 3762606.66 0.00
Online Implementation
Example Python Code
-bash-4.2$ more test_pyproj.py #!/usr/bin/env python # # Name: test_pyproj # Usage: # Simple example showing how to use pyproj to convert from lat/lon to UTM zone 11 # import pyproj #define a projection with Proj4 Notation latlon_string="+proj=latlong +datum=WGS84 +ellps=WGS84" utm_string="+proj=utm +zone=11 +datum=WGS84 +ellps=WGS84" latlon= pyproj.Proj(latlon_string) utm_s= pyproj.Proj(utm_string) vals=[-118.0,34.0] x,y= pyproj.transform(latlon,utm_s,vals[0],vals[1]) print "UTM E: ", x print "UTM N: ", y
Example C Code and Makefile
#include <proj_api.h> main(int argc, char **argv) { projPJ pj_merc, pj_latlong; double x, y; int p; if (!(pj_merc = pj_init_plus("+proj=merc +ellps=clrk66 +lat_ts=33")) ) exit(1); if (!(pj_latlong = pj_init_plus("+proj=latlong +ellps=clrk66")) ) exit(1); while (scanf("%lf %lf", &x, &y) == 2) { x *= DEG_TO_RAD; y *= DEG_TO_RAD; p = pj_transform(pj_latlong, pj_merc, 1, 1, &x, &y, NULL ); printf("%.2f\t%.2f\n", x, y); } exit(0); }
test_proj4.o: test_proj4.c gcc -o test_proj4 -lproj -L/home/scec-00/maechlin/workspace/proj4/lib -I/home/scec-00/maechlin/workspace/proj4/include test_ proj4.c
FAQ
- Online FAQ
- what is the third return parameter in UTM values
- input lat/long can include elevation. Third returned UTM param is elevation. When no lat/lon elevation used, utm return elev is 0.0
- What is the +no_defs parameters?
- "The "no_defs" item ensures that no defaults are read from the defaults files. Sometimes they cause suprising problems." http://lists.osgeo.org/pipermail/mapserver-users/2003-November/046863.html
Building Proj4
- Proj4 built on Centos using the ./configure make, make install. Since we are building on a shared cluster, we needed to ./configure --prefix=/user/scec-00/maechlin/workspace/proj4 (installation path to local directory)
- Installation of proj4 on Mac (high sierra) failed.
- Installation of current proj4 on USC HPC succeeded.
- Didn't try installing pyproj on Mac. It can use either installed proj4, or try to build its own
- Used conda install pyproj on Anaconda 2 instance on USC HPC
Online Documentation
- Proj4 and GMT
- UCVM-P Example Strings
- Proj4 wikibooks
- Defines return paramater elevation
- Python Examples
- More Python Examples
- C example
- More C Examples