Proj4: Difference between revisions

From SCECpedia
Jump to navigationJump to search
Maechlin (talk | contribs)
No edit summary
Maechlin (talk | contribs)
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
Coordinate system conversions are needed for several SCEC projects.  
Coordinate system conversions are needed for several SCEC projects.  


== Example Conversions ==
== Example Conversion from UTM to X/Y/Z Coordinates ==
* Define origin point for X/Y/Z coordinates
* translate UTM to X/Y/Z


== Example Conversions Lat/Lon to UTM ==
Converting WGS84 to UTM Zone 11 using cs2cs


== Building Proj4 ==
* cs2cs -v +proj=latlong +datum=WGS84 +to +proj=utm +zone=11 +datum=WGS84
proj4 built on Centos using the ./configure make, make install.
<pre>
Since we are building on a shared cluster, the
-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
</pre>


== Online Implementations ==
== Online Implementation ==
*[https://mygeodata.cloud/cs2cs/ CS2CS Online]
*[https://mygeodata.cloud/cs2cs/ CS2CS Online]
== Example Python Code ==
<pre>
-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
</pre>
== Example C Code and Makefile ==
<pre>
#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);
}
</pre>
<pre>
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
</pre>
== FAQ ==
*[http://proj.maptools.org/faq.html 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 ==
== Online Documentation ==
*[http://gmt.soest.hawaii.edu/projects/gmt/wiki/PROJ4 Proj4 and GMT]
*[http://hypocenter.usc.edu/research/ucvm/17.3.0/docs/developers_api_data_structures.html UCVM-P Example Strings]
*[http://hypocenter.usc.edu/research/ucvm/17.3.0/docs/developers_api_data_structures.html UCVM-P Example Strings]
*[https://en.wikibooks.org/wiki/PROJ.4 Proj4 wikibooks]
*[https://en.wikibooks.org/wiki/PROJ.4 Proj4 wikibooks]
*[http://www.spatialguru.com/converting-decimal-degree-coordinates/ Defines return paramater elevation]
*[http://www.spatialguru.com/converting-decimal-degree-coordinates/ Defines return paramater elevation]
*[http://all-geo.org/volcan01010/2012/11/change-coordinates-with-pyproj/ Proj4 Examples]
*[http://all-geo.org/volcan01010/2012/11/change-coordinates-with-pyproj/ Python Examples]
*[http://geoinformaticstutorial.blogspot.com/2014/06/converting-coordinates-between-map.html More Python Examples]
*[https://stackoverflow.com/questions/24950614/abnormal-output-when-using-proj4-to-transform-latlong-to-utm C example]
*[https://stackoverflow.com/questions/24950614/abnormal-output-when-using-proj4-to-transform-latlong-to-utm C example]
*[http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art026 More C Examples]
*[http://tagis.dep.wv.gov/convert/ UTM Discussion]


== Downloads ==
== Downloads and Documentation ==
*[http://proj4.org/ Prog4 Website]]
*[http://proj4.org/download.html Proj4 Download - Proj4 4.9.3]
*[http://proj4.org/ Prog4 Website]


*[https://pypi.python.org/pypi/pyproj/1.9.5.1 PyProj Download - pyproj 1.9.5.1]
*[https://pypi.python.org/pypi/pyproj/1.9.5.1 PyProj Download - pyproj 1.9.5.1]

Latest revision as of 18:30, 9 October 2017

Coordinate system conversions are needed for several SCEC projects.

Example Conversion from UTM to X/Y/Z Coordinates

  • Define origin point for X/Y/Z coordinates
  • translate UTM to X/Y/Z

Example Conversions Lat/Lon to UTM

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?

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

Downloads and Documentation

Related Entries