Compare commits

...
250 Commits
Author SHA1 Message Date
Kristian Evers 73f7c0eead Merge pull request #1148 from kbevers/lists-to-proj.h
Move struct definitions for proj_list_* functions to proj.h
2018-10-16 22:30:23 +02:00
Kristian Evers 526fe4975e Move struct definitions for proj_list_* functions to proj.h
With projects.h not being available to outside users anymore we need to
define PJ_UNITS, PJ_ELLPS, PJ_PRIME_MERIDIANS and PJ_OPERATIONS
elsewhere.

Related pj_get_*_ref() functions have been removed in favour
of their proj_ namespaced counterparts.

char pointers have been changed to const char pointers.

Resolves #983
Resolved #1147

Make char pointers const
2018-10-16 21:32:00 +02:00
Kristian Evers 7869861927 Change pj_mkparam to take const char pointer
pj_mkparam() and pj_mkparam_ws() doesn't alter the input string
should therefore be const. This will be useful when making other
changes to the code base later.
2018-10-16 21:32:00 +02:00
Kristian Evers 117a3f41c0 Merge pull request #1153 from sphynx/tobler-mercator
Add Tobler-Mercator projection
2018-10-15 14:17:31 +02:00
Ivan Veselov f2b8a5e8a4 Add Tobler-Mercator projection 2018-10-15 10:58:53 +01:00
Kristian Evers 0da84e2755 Merge pull request #1151 from kbevers/horner-docs
Horner docs
2018-10-15 10:23:35 +02:00
Kristian Evers 85aab72d51 Merge pull request #1154 from sphynx/better-plotting-error-message
Make plot.py error message more helpful
2018-10-15 10:06:08 +02:00
Ivan Veselov 724e763db5 Make plot.py error message more helpful 2018-10-14 16:53:07 +01:00
Kristian Evers f956d27ec9 Add docs for the horner operation 2018-10-12 11:26:16 +02:00
Kristian Evers 931087dab6 Exclude option-includes to avoid blocking warnings in doc builds 2018-10-12 10:56:16 +02:00
Kristian Evers 249588acd5 Merge pull request #1133 from Fil/bertin1953
the Bertin 1953 projection
2018-10-11 11:47:56 +02:00
Kristian Evers 0e3debf173 Merge remote-tracking branch 'osgeo/master' into bertin1953 2018-10-11 11:19:02 +02:00
Kristian Evers 5e66226efb Merge pull request #1144 from rouault/ntv1_fix
NTv1 grid shift: fix file offset for reading of shift values in ntv1_can.dat
2018-10-11 11:04:46 +02:00
Kristian Evers d1d3d4b9db Merge pull request #1142 from sphynx/proj-lcc-2sp-michigan
Add Lambert Conic Conformal (2SP Michigan) projection
2018-10-11 09:59:34 +02:00
Ivan Veselov 8fc1197f49 Support LCC 2SP Michigan projection 2018-10-11 00:50:36 +01:00
Even Rouault 6c203a4395 Fix typos 2018-10-09 21:04:47 +02:00
Kristian Evers 425cfd0f59 Merge pull request #1137 from rouault/drop_nmake
Remove nmake build system
2018-10-08 19:30:33 +02:00
Kristian Evers 31025ac9d8 Merge pull request #1146 from mbernasocchi/patch-2
changed docker command
2018-10-08 19:25:28 +02:00
Marco Bernasocchi 1f74ed59a8 fix typo 2018-10-08 17:56:40 +02:00
Marco Bernasocchi d6c97c29fa Update install.rst 2018-10-08 17:50:57 +02:00
Even Rouault f080fc8116 NTv1 grid shift: fix file offset for reading of shift values in ntv1_can.dat
When investigating the format of NTv1 and comparing PROJ code with the actual
header of ntv1_can.dat, I discovered that the longitude & latitude shift values
started at offset 192, whereas PROJ assumed that the header was 176 bytes only.
This caused PROJ to use the wrong offsets values (shift of one grid sample by
longitude). So the effect was moderately visible, especially on the latitude,
but when comparing with NTv2, one can see that the longitude value after the
fix seems to closer to NTv2.

old:
echo "60.5 -100.5 0" | PROJ_LIB=/usr/share/proj src/cct -d 8 +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=ntv1_can.dat +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1
  60.50022624  -100.50040292    0.00000000           inf

new:
echo "60.5 -100.5 0" | PROJ_LIB=/usr/share/proj src/cct -d 8 +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=ntv1_can.dat +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1
  60.50022403  -100.50041841    0.00000000           inf

echo "60.5 -100.5 0" | PROJ_LIB=/usr/share/proj src/cct -d 8 +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=$HOME/proj/proj-datumgrid/north-america/ntv2_0.gsb +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1
  60.50022348  -100.50041978    0.00000000           inf

old:
$ echo "80.1 -70.9 0" | PROJ_LIB=/usr/share/proj src/cct -d 8 +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=ntv1_can.dat +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1
  80.10096789   -70.89746834    0.00000000           inf

new:
$ echo "80.1 -70.9 0" | PROJ_LIB=/usr/share/proj src/cct -d 8 +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=ntv1_can.dat +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1
  80.10096858   -70.89749190    0.00000000           inf

$ echo "80.1 -70.9 0" | PROJ_LIB=/usr/share/proj src/cct -d 8 +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=$HOME/proj/proj-datumgrid/north-america/ntv2_0.gsb +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1
  80.10096782   -70.89749276    0.00000000           inf
2018-10-08 15:56:30 +02:00
Kristian Evers 3d15ed052f Merge pull request #1143 from sphynx/uniform-proj-descriptions
Make PROJ_HEAD descriptions more uniform
2018-10-07 10:18:59 +02:00
Ivan Veselov 31f9b9294f Make PROJ_HEAD descriptions more uniform
Before that, approximately half of the descriptions had a period at the
end, e.g. 'Cyl.' or 'Sph.' and the other half did not have those periods.
This commit drops all the dots in PROJ_HEAD descriptions.
2018-10-06 22:56:20 +01:00
Even Rouault d4a1ea3072 Remove nmake build system 2018-10-03 11:36:51 +02:00
Kristian Evers cc33c1324b Merge pull request #1138 from rouault/geogoffset
Add geographic offset transformation method.
2018-10-01 22:24:37 +02:00
Even Rouault fe29f8acdc Add a affine transformation method, and make geogoffset as a particular case of it (fixes #535) 2018-10-01 21:31:51 +02:00
Even Rouault 1583a566a2 Add geographic offset transformation method.
The Geographic offsets transformation adds an offset to the geographic longitude,
latitude coordinates, and an offset to the ellipsoidal height.
This method is normally only used when low accuracy is tolerated. It is documented
as coordinate operation method code 9619 (for geographic 2D) and 9660 (for
geographic 3D) in the EPSG dataset.

It can also be used to implement the method Geographic2D with Height Offsets
(code 9618) by noting that the input vertical component is a gravity-related
height and the output vertical component is the ellispoid height (dh being
the geoid undulation).

It can also be used to implement the method Vertical offset (code 9616)

It is used for example to transform:
- from the old Greek geographic 2D CRS to the newer GGRS87 CRS
- from Tokyo + JSLD69 height to WGS 84
- from Baltic 1977 height to Black Sea height

It is also useful to document the implicit zero-offset transformation
we do in pipelines such as

+proj=pipeline +step +inv +proj=longlat +ellps=A
               +step +proj=longlat +ellps=B

that can be explicited as

+proj=pipeline +step +inv +proj=longlat +ellps=A
               +step +proj=geogoffset [+dlon=0 +dlat=0 +dh=0]
               +step +proj=longlat +ellps=B
2018-10-01 11:17:41 +02:00
Kristian Evers 72f27ce470 Merge pull request #1139 from rouault/fix_doc_make_html_warning
Documentation building fixes
2018-09-29 15:38:06 +02:00
Even Rouault 3bb6d226fe Doc building: enforce warning as errors mode 2018-09-29 13:34:54 +02:00
Even Rouault 570f569cb6 Doc building: fix warning regarding Altamimi2002 citation not found
There was an issue since transformation.rst which uses this citation is
alphabetically after references.rst.
The documented workaround in https://github.com/mcmtroffaes/sphinxcontrib-bibtex/issues/8
is to rename references.rst as zrefereces.rst, so it is alphabetically last.
2018-09-29 13:32:34 +02:00
Even Rouault da0e7f9fd5 Merge pull request #1136 from rouault/fix_locale_issue_cs2cs_emulation_setup
cs2cs_emulation_setup: fix issue with non C-locale
2018-09-28 13:52:10 +02:00
Even Rouault b65cc5d504 cs2cs_emulation_setup: fix issue with non C-locale
in +towgs84 case, we use sprintf() with floating-point formatter to output
the ellipsoid parameters. For a locale with decimal separtor != dot, the
resulting string will not be parsed correctly by proj_atof(), leading to
wrong numeric result.

The fix is similar to the one done in pj_latlong_from_proj()

Note for later: if using C++, we could use a locale-independent formatting
solution to avoid such issue.
2018-09-27 20:24:05 +02:00
Philippe Rivière e649eb7369 snake case 2018-09-24 13:05:45 +02:00
Philippe Rivière 5f4fa9ccba Req. changes for Bertin1953:
- classification
- tests
- coding style
2018-09-24 13:00:31 +02:00
Kristian Evers 0b32b840d3 Merge pull request #1134 from sphynx/master
Fix mistakes in function comments
2018-09-24 07:31:04 +02:00
Ivan Veselov a5bc68334f Fix mistakes in function comments 2018-09-23 21:14:06 +01:00
Kristian Evers 1e33c45268 Merge pull request #1131 from kbevers/remove-misspelled-constant
Remove misspelled-constant PJD_ERR_UNKNOW_UNIT_ID
2018-09-22 21:55:13 +02:00
Kristian Evers 9c6f8ac9f5 Merge pull request #1130 from kbevers/refactor-proj
Refactor proj
2018-09-22 21:54:57 +02:00
Philippe Rivière a3e88d098b Fix typo in Plate Carree projection name (#1132) 2018-09-22 21:51:51 +02:00
Philippe Rivière c9962986f4 coding style (https://travis-ci.com/OSGeo/proj.4/jobs/147225960 & https://travis-ci.com/OSGeo/proj.4/jobs/147274068) 2018-09-21 22:42:58 +02:00
Philippe Rivière 6b0567b3c0 the Bertin 1953 projection 2018-09-21 17:55:08 +02:00
Kristian Evers b38050198e Remove misspelled-constant PJD_ERR_UNKNOW_UNIT_ID
Closes #853
2018-09-21 14:37:57 +02:00
Kristian Evers ddc672ee93 Replace calls to pj_factors with proj_factors 2018-09-21 14:23:55 +02:00
Kristian Evers 3ff4a95416 Replace calls to rtodms/dmstor with proj.h equivalents 2018-09-21 13:33:51 +02:00
Kristian Evers cf0e6926b2 Update plot.py script
Added conda environment file too, hopefully making it simpler to get
started in the future.
2018-09-20 18:17:43 +02:00
Even Rouault 98e2e09962 Update data/README (refs #1127) 2018-09-20 11:10:50 +02:00
Kristian Evers 4339ff281c Remove references to nad/
Closes #1127
2018-09-20 11:03:05 +02:00
Kristian Evers 82ee14c8e2 Clean up FAQ
This removes some questions that are no longer valid
(covered elsewhere in the docs), adjusts the wording in other questions
and fixes formatting and making it proper rst/sphinx syntax.

With this, #1070 is almost fixed.
2018-09-20 10:59:31 +02:00
Kristian Evers e94c421cd3 Merge pull request #1128 from kbevers/build-docs-from-maintenance-branch
Build docs from maintenance branch
2018-09-19 20:05:31 +02:00
Even Rouault aee8e5d106 travis/install.sh: cleanups 2018-09-19 17:54:51 +02:00
Even Rouault 00f6873a15 autoconf: fix 'make check' on out-of-tree builds 2018-09-19 17:31:26 +02:00
Kristian Evers 4ea0c2d72c Merge pull request #1125 from rouault/rename_nad_as_data
Rename nad/ as data/ and move nad/test* to test/old/*
2018-09-19 12:50:16 +02:00
Kristian Evers de88002ca0 Bump doc version to 6.0.0 2018-09-19 10:58:05 +02:00
Kristian Evers 63c46467b4 Build docs from most recent maintenance branch 2018-09-19 10:56:35 +02:00
Kristian Evers 722b2a4ea7 Merge pull request #1124 from kbevers/version-6-prep
Version 6 preparation
2018-09-19 10:18:15 +02:00
Even Rouault eb2862c809 Move data/test* scripts and expected results to test/old/ 2018-09-18 22:58:57 +02:00
Even Rouault d7366ffdd5 Rename nad/ directory as data/ 2018-09-18 22:58:57 +02:00
Kristian Evers 66f228cfbc Only allow usage of proj_api.h if explicit consent was given
We want to flag that proj_api_h is now deprecated. With this commit
it is now mandatory to #define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
before proj_api.h can be included.

proj_api.h is used internally a bunch of places. Therefore
ACCEPT_USE_OF_DEPRECATED_PROJ_API_H has been defined in projects.h
and a few other necessary files to ensure that PROJ compiles.

Closes #836
2018-09-18 19:43:10 +02:00
Kristian Evers eed0f16e8f Do not install projects.h
In version 6 we stop exposing the deprecated projects.h API to the world outside PROJ.

Closes #835
2018-09-18 19:43:10 +02:00
Kristian Evers 793f403aad Merge pull request #1123 from mwtoews/docs
DOC: Remove free grids from 'Non-Free Grids' section
2018-09-18 07:40:10 +02:00
Mike Toews ab06990dec alphabetize titles in 'Non-Free Grids' section (content unchanged) 2018-09-18 13:39:25 +12:00
Mike Toews fc26ed7055 Remove free grids from 'Non-Free Grids' section
These are included with proj-datumgrid:
 - Australia
 - Canada: ntv2_0.gsb
 - Germany: BETA2007.gsb
2018-09-18 13:37:22 +12:00
Kristian Evers 46828f19e4 Bump version numbers after 5.2.0 release 2018-09-15 17:03:28 +02:00
Kristian Evers 98ba73123d Prepare website for 5.2 release 2018-09-15 16:08:00 +02:00
Kristian Evers a617ef8497 Merge pull request #1117 from mwtoews/intel
Modifications for Intel compilers
2018-09-11 14:58:03 +02:00
Mike Toews 3da5c306ce workaround Intel's shortcoming with constexpr 2018-09-11 23:19:33 +12:00
Mike Toews 70866367bf Specify c++11 for Intel compilers
Also, workaround issue:

CMake Error at test/unit/CMakeLists.txt:7 (string):
  string sub-command REGEX, mode REPLACE needs at least 6 arguments
  total to command.
2018-09-11 23:07:32 +12:00
Kristian Evers a7360890e9 Update release date 2018-09-11 10:14:51 +02:00
Even Rouault 4fe0d9ae1e Merge pull request #1116 from sebastic/dont-install-test-executables
Don't install test executables.
2018-09-11 09:44:56 +02:00
Even Rouault 163cb3750a Merge pull request #1115 from sebastic/dont-install-gtest
Don't install gtest libraries.
2018-09-11 09:44:39 +02:00
Bas Couwenberg 30295f2dd2 Don't install test executables. 2018-09-11 09:22:16 +02:00
Bas Couwenberg 8723efcca3 Don't install gtest libraries. 2018-09-11 09:11:23 +02:00
Kristian Evers 3de3061055 Merge pull request #1114 from sebastic/soname
Fix SONAME decrement from libproj.so.13 to libproj.so.12.
2018-09-11 09:06:09 +02:00
Bas Couwenberg 54320581ec Fix SONAME decrement from libproj.so.13 to libproj.so.12.
Increment age instead of revision for added interfaces, see:

 https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
2018-09-11 08:45:43 +02:00
Kristian Evers 8633749902 Release prep 5.2 (#1113)
Steps 1.1-1.4 from HOWTO-RELEASE. Will publish the archives later today (evening central european time).
2018-09-10 20:04:07 +02:00
Kristian Evers 491d0a73f4 Update NEWS for 5.2 2018-09-10 12:15:21 +02:00
Kristian Evers c99725efce Update man-pages from Sphinx-docs 2018-09-10 11:36:39 +02:00
Kristian Evers 9743c2c44d Update ABI version for 5.2 release 2018-09-10 11:27:13 +02:00
Kristian Evers 29872a328a cs2cs: Always convert to degrees when angular output is received (#1112)
Previous to this commit cs2cs did not convert angular output to degrees
when using operations setting PJ->right = PJ_IO_UNITS_ANGULAR. This
commit adopts the conventions used after the introduction of pipelines.

In practice, this allows the following and similar transformations to
output in degrees and not radians:

```
echo 37.3916666667   -6.9325000 | cs2cs +proj=latlong +ellps=clrk80 \
    +to +proj=molodensky +ellps=clrk80 +da=-112.145 +df=-0.54750714e-4 \
    +dx=-175 +dy=-23 +dz=-303
37.39   -6.93 -8.2
```
2018-09-07 23:37:22 +02:00
Kristian Evers f2e854de85 Change note to versionadded directive 2018-09-07 23:23:34 +02:00
Kristian Evers 3867ffaee2 Fix formatting error in API functions docs 2018-09-07 23:15:35 +02:00
Kristian Evers 46e96adb09 Merge pull request #1111 from kbevers/cct-forward-comments
cct: forward comments to output
2018-09-07 15:57:12 +02:00
Kristian Evers 4f961f5d87 cct: forward comments to output
Any text written after the coordinate input will automatically be
forwarded to the output stream. Text in columns before the coordinate
input is discarded in the output. This works for any combination of -c, -t
and -z parameters:

$ echo 12 56 100 2018.0 comment comment | cct +proj=merc
 1335833.8895   7522963.2411      100.0000     2018.0000 comment commen

$ echo text 12 56 100 2018.0 comment | cct -c 2,3,4,5 +proj=merc
 1335833.8895   7522963.2411      100.0000     2018.0000 comment

$ echo text 12 56 comment | cct -c 2,3 -t0 -z0 +proj=merc
 1335833.8895   7522963.2411        0.0000        0.0000 comment

$ echo 12 56 comment | cct -t0 -z0 +proj=merc
 1335833.8895   7522963.2411        0.0000        0.0000 comment

Closes #918
2018-09-07 15:21:32 +02:00
Kristian Evers c50a573be3 Minor corrections to cli app docs on -d option
Added the version of introduction and removed comment about angular and
linear output (it's an internal implementation detail that users doesn't
need to be aware of).
2018-09-05 22:24:47 +02:00
Søren Holm c11b98b058 Add -d option to proj, cs2cs and cct (#1109)
Specify number of decimals to display when transforming coordinates with either proj, cs2cs or cct.
2018-09-05 22:17:10 +02:00
Kristian Evers 76488c5133 Merge pull request #1108 from greg-minshall/master
be more expansive in ignorance
2018-09-04 19:24:47 +02:00
Greg Minshall 1a8219fdf0 be more expansive in ignorance 2018-09-02 08:46:00 +03:00
Kristian Evers a7d3c8248f Merge pull request #1106 from rouault/vto_meter_4DAPI_proj_longlat
4D API: honour vto_meter / vunits for proj=longlat
2018-08-29 14:43:50 +02:00
Even Rouault 18b98b324f 4D API: honour vto_meter / vunits for proj=longlat
This worked for cs2cs / pj_transform(), but not the new API
2018-08-29 14:06:25 +02:00
Kristian Evers 1ea7ff1566 Merge pull request #1104 from jdugge/docs_image_ratios
Ensure correct axis ratio for images in documentation
2018-08-28 07:50:06 +02:00
Juernjakob Dugge 3378c5ec96 Ensure correct axis ratio for images in documentation; move proj-string from image to caption 2018-08-27 23:47:03 +02:00
Even Rouault 3d6de19a4b proj_4D_api.c: fix potential null pointer dereference. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10033. Credit to OSS Fuzz. master only 2018-08-24 22:54:33 +02:00
Kristian Evers ee57ac5310 Merge pull request #1105 from kbevers/inv-mercator-precision
Improve numerical precision of inverse spherical mercator
2018-08-24 21:28:51 +02:00
Kristian Evers 62b81642ae Improve numerical precision of inverse spherical mercator
Complements f2b3604
2018-08-24 20:41:06 +02:00
Kristian Evers 502bc55cf4 Merge pull request #1093 from rouault/geoc_flag_fix
Assorted fixes related to +geoc flag handing
2018-08-24 15:22:57 +02:00
Even Rouault e1e7c15ef3 Merge pull request #1096 from rouault/fix_helmert_convention_confusion
[BREAKING] Helmert: add +convention=position_vector/coordinate_frame, forbids +transpose (fixes #1091)
2018-08-23 16:22:33 +02:00
Even Rouault eadf537bf4 helmert.rst: add back +transpose and declare its deprecation/removal in 5.2.0 2018-08-23 15:59:32 +02:00
Even Rouault 09bcf27bbc Fix Helmert convention for ITRF2008 and ITRF2014 plate motion models (cf https://github.com/OSGeo/proj.4/pull/1096#pullrequestreview-148679930) 2018-08-23 15:33:32 +02:00
Kristian Evers 0f2d219b0e Follow ISO-19100 nomenclature in proj man-page
proj only does projections, hence we should use the word conversion instead of transformation in this context.
2018-08-23 10:54:45 +02:00
Bojan Šavrič 08c071938d Style and comment improvements to eqearth (#1102) 2018-08-22 23:18:04 +02:00
Bojan Šavrič b2fe2277e2 Adding ellipsoidal equations for the Equal Earth (#1101) 2018-08-22 19:43:19 +02:00
Even Rouault 3e9ae6f6ef Merge pull request #1099 from phidrho/patch-2
added usage example
2018-08-22 12:47:59 +02:00
Even Rouault c9cbab5f24 Merge pull request #1098 from phidrho/patch-1
typo error in example - unitconvert.rst
2018-08-22 12:47:11 +02:00
Vedran Stojnović 3746c519a5 added usage example 2018-08-21 22:58:17 +02:00
Vedran Stojnović 88a1ac5bc8 Update unitconvert.rst
bug in example - changed +t_in=gpsweek to +t_in=gps_week
2018-08-21 22:45:50 +02:00
Even Rouault 6680dffb59 Merge pull request #1095 from rouault/webmerc_fixes
Fixes for webmerc projection (fixes #1078)
2018-08-21 18:56:16 +02:00
Even Rouault e05dcd84ab [BREAKING] Hermert: add +convention=position_vector/coordinate_frame, forbids +transpose (fixes #1091)
As identified in #1091, Helmert implementation in PROJ 5.0 and 5.1 is confusing.
It happens that by default it used the coordinate_frame convention, contrary to
the position_vector convention used traditionaly for +towgs84. The documentation
of Helmert was also wrongly specifying that the default convention was
position_vector.

This commit:
- bans the confusing +transpose parameter
- removes the concept of a default convention, since in practice both are
  equally found, and requires +convention as soon as a rotational term parameter
  is present.
  For translation only, convention is ignored and optional, as having no effect.
- fixes all the identified uses of proj=helmert in code, doc and tests

This is obviously a breaking change:
- users will have to adapt their pipeline expressions
- in particular, init files that would use helmert must be adapted

However, as designed, the break will be explicit, and not silent.
2018-08-21 14:57:28 +02:00
Even Rouault 589a540a21 Fixes for webmerc projection (fixes #1078)
This is intended to supersed https://github.com/OSGeo/proj.4/pull/1080
with a number of differences.

What is kept from #1080 is not forcing the ellipsoid_params to be the one
of a sphere. This is not required for correct coordinate computation and
avoid lying on the various distorsion parameters.

For better interoperability with EPSG, we also no longer force the
lam0 parameter to 0, because
https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1024
has a provision for it, even if in practice they will always be zero
phi0 should always be zero and is not used by the formulas.

Another difference with the #1080 approach is that we do not force the
WGS84 ellipsoid. Perhaps someone will use webmerc for another planet,
even if that is a crazy idea...
2018-08-20 19:00:06 +02:00
Even Rouault c1f0673b33 Doc: remove wrong projection name 2018-08-20 15:39:32 +02:00
Even Rouault bbea214c60 Merge pull request #1094 from rouault/geoc_doc
Doc: add page for geoc conversion (fixes #1092)
2018-08-20 13:59:19 +02:00
Even Rouault 9cfb6b9a7e Doc: fix a few warnings 2018-08-20 13:58:49 +02:00
Even Rouault 925ef44852 travis/build_docs.sh: Make it error on exit, and improvements to be able to easily run it locally 2018-08-20 13:58:40 +02:00
Even Rouault f1a26334b8 Doc: add page for geoc conversion (fixes #1092) 2018-08-20 13:30:42 +02:00
Even Rouault f05de97c21 pj_transform / cs2cs: honour +geoc flag 2018-08-19 14:31:01 +02:00
Even Rouault bb8937e047 Remove dead code in fwd_finalize() and inv_prepare()
Those functions contain code specific of input != angular and output = angular
which to the best of my knowledge never happens in PROJ. Looking at that
code, I feel there are a number of errors in it, and anyway removing it shows
absolutely no change in the test suite, which shows it is unused. I've also
added exit(1) to verify that those code paths are never taken.

This was found while investigating the fix for
8cfc813806
2018-08-19 14:18:40 +02:00
Even Rouault 8cfc813806 pj_inv(): fix inverse of +proj=longlat +geoc
There is a regression in PROJ 5 regarding the handling of the +geoc flag,
specific to the case of +proj=longlat, and the inverse transformation,
which makes it a no-op:

echo "12   55 0 "  | src/cct  +proj=pipeline +step +proj=longlat +ellps=GRS80   +geoc +inv
 12.0000000000   55.0000000000        0.0000           inf

With this fix, we now get:

echo "12   55 0 "  | src/cct  +proj=pipeline +step +proj=longlat +ellps=GRS80   +geoc +inv
 12.0000000000   54.8189733083        0.0000           inf

The fix consists in making inv_prepare() do symetrically as fwd_finalize(), ie
skip a number of transforms when left and right units are angular,
and in inv_finalize() apply the (OUTPUT_UNITS==PJ_IO_UNITS_ANGULAR) processing
even if INPUT_UNITS == PJ_IO_UNITS_ANGULAR
2018-08-19 14:15:28 +02:00
Kristian Evers 121deeb3ff Add version of introduction to eqearth docs 2018-08-17 22:20:28 +02:00
jdugge 40036c19af Implementation of Equal Earth projection (#1090)
Implement the Equal Earth projection (closes #1085)
2018-08-17 22:16:43 +02:00
Howard Butler fe13c01125 Add Dockerfile for osgeo/proj-docs image 2018-08-13 09:41:19 -05:00
Howard Butler 7a59716b6f base osgeo/proj automated Docker image on Ubuntu 18.04 2018-08-13 09:35:50 -05:00
Howard Butler b350004edc reflect new osgeo/proj-docs docker container for documentation builds 2018-08-13 09:18:43 -05:00
Even Rouault 88c20884fd Merge pull request #1088 from rouault/simplify_travis_builds
Assorted fixes: Makefile, tests, gie enhancement, Travis-CI simplification
2018-08-13 12:27:10 +02:00
Even Rouault 0535414309 Document require_grid option 2018-08-12 12:31:54 +02:00
Even Rouault 6f3df8c695 travis/install.sh: make sure to run tests without grids, and remove a useless step 2018-08-11 17:57:33 +02:00
Even Rouault e7cb0caa68 gie: add a require_grid keyword, and use if for DHDN_ETRS89.gie; aso fix DHDN_ETRS89 autoconf test 2018-08-11 17:57:33 +02:00
Even Rouault ab005c634a nad/Makefile.am: add null.lla to EXTRA_DIST 2018-08-11 16:47:55 +02:00
Even Rouault 666efb9808 4D-API_cs2cs-style.gie: rewrite test to not rely on presence of 'conus' grid (we should have a way to state that some grids must be present) (refs #872) 2018-08-11 15:07:29 +02:00
Even Rouault edfa298132 projects.h: use param[] variable-length member syntax with GCC >= 8 to fix optimization issue with gcc 8.2 (fixes #1084) 2018-08-11 15:06:29 +02:00
Even Rouault 0ee56a0de9 Merge pull request #1087 from rouault/gcc_8_fix
Fix wrong behaviour of torad_coord() with gcc 8.1 -O2 (fixes #1084)
2018-08-11 11:34:36 +02:00
Even Rouault 143b4d3f64 Fix wrong behaviour of torad_coord() with gcc 8.1 -O2 (fixes #1084)
torad_coord() of gie.c has this sequence:
```
if( cond )
    axis = l->param + strlen ("axis=");
n = strlen (axis);
```

When the if branch is evaluated, n is always zero
even if on inspection axis is non empty

The reason is that the struct ARG_list which is the
type of l use a variable-length array for the param member

struct ARG_list {
    paralist *next;
    char used;
    char param[1];
};

But this is not a proper way of declaring it, and
gcc 8 has apparently optimizations to detect that l->param + 5
points out of the array, hence it optimizes strlen() to 0.

Reported as https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86914

According to https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html,
the proper way of declaring such arrays is to use [0]
2018-08-11 11:33:15 +02:00
Even Rouault 7b7e69690d Merge pull request #1083 from schwehr/pj_strerrno-asan
pj_strerrno(): Change check of err value to avoid undefined behavior.
2018-07-27 19:29:07 +02:00
Kurt Schwehr 6be10ac6ab pj_strerrno(): Change check off err value to avoid undefined behavior.
src/pj_strerrno.c:96:20: runtime error: negation of -2147483648 cannot be represented in type 'int'; cast to an unsigned type to negate this value to itself
    #0 in pj_strerrno proj/src/pj_strerrno.c:96:20
    #1 in (anonymous namespace)::ProjErrnoStringTest_ProjErrnos_Test::TestBody() test/unit/proj_errno_string_test.cpp:47:5

ASAN UndefinedBehaviorSanitizer: signed-integer-overflow

Issue revealed by proj_errno_string_test.cpp add in
https://github.com/OSGeo/proj.4/commit/b87b59106879188ffc684a41a9de638ac5fd02bf
2018-07-26 12:41:59 -07:00
Kristian Evers 54c854abb7 Merge pull request #1082 from kbevers/various-minor-fixes
Various minor fixes
2018-07-22 00:56:06 +01:00
Kristian Evers 380eb835e4 Remove unused '+no_rot' parameter 2018-07-21 22:26:30 +02:00
Kristian Evers eb1bf89d6d Check for use of both +k and +k_0 in krovak 2018-07-21 22:26:30 +02:00
Kristian Evers 22de779228 Merge pull request #1081 from kbevers/doc-parameters
Add projection parameters to all projection doc pages
2018-07-21 20:47:44 +01:00
Kristian Evers 9f37826461 Add projection parameters to all projection doc pages 2018-07-21 20:26:30 +01:00
Kristian Evers 97c162903b Use error code constant instead of number 2018-07-20 22:34:56 +01:00
Kristian Evers 2d6f1782ba Add UTM docs 2018-07-20 14:25:23 +01:00
Kristian Evers 0903f85798 Merge pull request #1079 from kbevers/webmerc-tests
Add test coordinates for webmerc
2018-07-20 12:27:10 +01:00
Kristian Evers 0a1d69d64c Add test coordinates for webmerc 2018-07-20 12:08:08 +01:00
Charles Karney 2fe6db2d39 Merge pull request #1075 from cffk/geod-unit-fix
Fix #1074.  Fix unit conversion factors for geod.
2018-07-12 09:10:13 -04:00
Kristian Evers 98ead006b9 Merge pull request #1072 from rouault/vgridshift_add_operation_parameter
vgridshift: add a +multiplier={value}
2018-07-11 17:27:10 +02:00
Charles Karney 3efab3e9ee Revert pj_units to_meters entries for US units.
Bletch, pj_init also decodes the to_meters field of pj_unit, but only
handles plain numbers or 1/nnn, but not 1./nnn or mmm/nnn.  (So the
original code would have not decoded the us-in entry properly.)

Probably pj_init should be changed to use the factor field instead.

Alternatively pj_init should look for a "/" anywhere in the field and
decode the numerator and denominator as separate doubles.  This would
be needed if ratios are ever to be entered directly by the user (this
is the strategy used by GeographicLib).  And then, of course, the
functionality should be provided by a separate utility function.
2018-07-11 11:10:28 -04:00
Charles Karney a7f05deb55 Remove ugly assignment within an expression. 2018-07-11 10:01:26 -04:00
Charles Karney 3e03508e04 Fix #1074. Fix unit conversion factors for geod.
Previously, unit conversion using atof(unit_list[i].to_meter) which
gives the wrong answer with, e.g., "1/10".  Now it directly uses
unit_list[i].factor (e.g., 0.1).

Also fix all the conversion factors for the US Surveyor units so that
they are the closest doubles.  E.g., the conversion factors for US
feet are

        factor              rel error
    old 0.304800609601219   6e-16
        12/39.37            1e-16  
    now 1200/3937.0         5e-17

Maybe someone should check the Indian units (but it's possible that
India and Pakistan have different standards).
2018-07-11 09:49:22 -04:00
Even Rouault b7afba5651 vgridshift: add a +multiplier={value} parameter
As mentionned in #1071, it is often unclear how the offset of a vertical grid
is applied.
2018-07-10 18:51:08 +02:00
Even Rouault 81bfa7551f Remoe ellps parameter from Helmert documentation and gie tests (fixes #1068) 2018-07-07 22:42:16 +02:00
Even Rouault aad7ff1cc6 Merge pull request #1065 from rouault/helmert_with_t_huge_val
Helmert: consider that xyzt.t == HUGE_VAL means t_epoch
2018-07-07 15:38:46 +02:00
Kristian Evers d9fac5f2b8 Update cs2cs example to reflect actual output
Closes #981
2018-07-06 15:08:31 +02:00
Kristian Evers e1f62b077d Merge remote-tracking branch 'osgeo/master' 2018-07-06 15:02:01 +02:00
Kristian Evers b9f60b5bc8 Add info on errnos when PJ creation fails.
This was left out when documented the various proj_create_*
functions. Added proj_context_errno description as well
since it was undocumented and is needed when creating PJs
for a specific context.
2018-07-06 14:59:52 +02:00
Kristian Evers bae3568e45 Use "PROJ" instead of "proj.4" in list badge 2018-07-06 14:36:33 +02:00
Kristian Evers 446a4d67f3 Use M_PI_2 and M_PI_4 instead of locally defined constants 2018-07-06 14:22:17 +02:00
Kristian Evers dbf24f23b8 Replace +k with +k_0 in doc examples 2018-07-06 11:23:59 +02:00
Even Rouault 31c6914941 Helmert: consider that xyzt.t == HUGE_VAL means t_epoch
Currently when doing
echo "2 49 0" | src/cct  +proj=pipeline +ellps=GRS80 +step +proj=cart +step +proj=helmert +x=10 +y=3 +z=1

we get as a result:
         -nan           -nan          -nan           inf

This is due to cct initializing the xyzt.t to HUGE_VAL
2018-06-29 00:25:42 +02:00
Kristian Evers 50b0855177 Merge pull request #1063 from kbevers/declutter-frontpage
Declutter frontpage
2018-06-27 15:14:10 +02:00
Kristian Evers f2682ab8c9 Add better description to website frontpage 2018-06-27 14:43:23 +02:00
Kristian Evers 50cef4d3d3 Move API warnings to development page in docs 2018-06-27 14:33:12 +02:00
Kristian Evers 1968d714a7 Move news to its own page in docs.
HOWTO-RELEASE updated accordingly.
2018-06-27 14:30:29 +02:00
Kristian Evers b6fc41cd7c Use proj_torad() instead of proj_todeg().
Internally PROJ uses radians so of course that is what we
need to convert our input coordinates to before processing
with proj_trans().
2018-06-27 10:00:27 +02:00
Kristian Evers 3eb56dbe0f Merge pull request #1058 from kbevers/inverse-lagrange
Add inverse lagrange projection
2018-06-26 15:34:37 +02:00
Kristian Evers 4e6b366e07 Add inverse lagrange projection
Courtesy of Michael Stumpf <mi12st34@gmail.com>
2018-06-26 14:59:39 +02:00
Kristian Evers 540dd05de7 Merge pull request #1061 from mloskot/ml/add-social-badges
Add Gitter badge to README
2018-06-26 08:57:04 +02:00
Mateusz Łoskot ef1fddae25 Add Gitter badge to README [ci skip]
Add mailing list badge.
2018-06-26 08:48:31 +02:00
Kristian Evers ea33e8bcbb Merge pull request #1060 from rouault/override_gh_pages
deploy_website.sh: update gh-pages with a single force-pushed commit (fixes #1059)
2018-06-26 08:46:15 +02:00
Even Rouault a1b1e1ea32 deploy_website.sh: update gh-pages with a single force-pushed commit (fixes #1059)
This will avoid the history of gh-pages to grow indifinitely, and thus
the size of the PROJ git repository, whereas it has heavy binary objects
like proj.pdf that are modified by each commit.
2018-06-25 23:03:24 +02:00
Even Rouault 17485da881 doc: typo fix 2018-06-25 22:10:32 +02:00
Kristian Evers 5c192b091f Merge pull request #1055 from rouault/geocent_cart_to_meter
Make +proj=geocent and +proj=cart take into account +to_meter (relates to #1053)
2018-06-22 10:52:22 +02:00
Kristian Evers 722f22dc58 Merge pull request #1054 from rouault/add_angular_units_to_unitconvert
Add support for deg, rad and grad in unitconvert (fixes #1052), and document that it supports numeric factors (refs #1053)
2018-06-22 10:46:26 +02:00
Even Rouault 275cbbaca0 Make +proj=geocent and +proj=cart take into account +to_meter (relates to #1053) 2018-06-21 23:44:53 +02:00
Even Rouault 5411bd3001 unitconvert: error out if xy_in/xy_out z_in/z_out use different unit types 2018-06-21 23:41:07 +02:00
Even Rouault 4e36fd85b9 Add support for deg, rad and grad in unitconvert (fixes #1052), and document that it supports numeric factors (refs #1053) 2018-06-21 23:40:50 +02:00
Kristian Evers 8ee389a6f4 Merge pull request #1050 from kbevers/add-proj_errno_string-proj.def
Add proj_errno_string() to proj.def
2018-06-21 21:51:13 +02:00
Kristian Evers b87b591068 Add test for proj_errno_string() 2018-06-20 20:24:14 +02:00
Kristian Evers 292d6f0455 Raise version number to 5.2.0 in CMake config
Add instruction to HOWTO-RELEASE as well so it is remembered in the
future.
2018-06-20 17:20:33 +02:00
Kristian Evers d742d57a6b Add proj_errno_string() to proj.def 2018-06-20 11:47:31 +02:00
Kristian Evers 25aba111b1 Merge pull request #1048 from schwehr/pj_transform-errno
pj_transform.c:projected_to_geographic: Convert literal -17 to PJD_ERR_NON_CONV_INV_MERI_DIST (#993)
2018-06-19 22:29:21 +02:00
Even Rouault 19abe066ec Doc: not all grid formats have documentation 2018-06-19 21:12:23 +02:00
Kurt Schwehr 6ad53395a0 pj_transform.c:projected_to_geographic: Convert literal -17 to PJD_ERR_NON_CONV_INV_MERI_DIST (#993) 2018-06-19 10:49:26 -07:00
Kristian Evers 095d8971ad Add Gitter room to communication channels doc page 2018-06-18 22:40:52 +02:00
Kristian Evers d52e3b9d36 Merge pull request #1044 from aaronpuchert/set-error-codes
Set error codes in proj_create and proj_create_argv
2018-06-18 21:48:50 +02:00
Even Rouault ea61acb9fd Add pj_phi2_test (#1039 & #1045)
Nigrated from:

schwehr/gdal-autotest2:cpp/third_party/proj/pj_phi2_test.cc@master

License intentionally changed from Apache 2 to match PROJ.
2018-06-18 21:18:49 +02:00
Aaron Puchert 431099b1d5 Set error codes in proj_create and proj_create_argv
When there are no arguments, we set PJD_ERR_NO_ARGS, just like the old
API does in that case.

On allocation failure we set ENOMEM as usual.
2018-06-18 16:04:50 +02:00
Kristian Evers 6b77f5fa53 Merge pull request #1042 from schwehr/fileapi-fgets-b110119937
Fileapi fgets b110119937
2018-06-16 00:09:54 +02:00
Kurt Schwehr d35a698b35 Do not scan past the end of the read data in pj_ctx_fgets
use-of-uninitialized-value third_party/proj4/proj/src/pj_fileapi.c:pj_ctx_fgets

Found with autofuzz msan
2018-06-15 12:33:10 -07:00
Kristian Evers b9b576795c Merge pull request #1043 from mwtoews/docs
Start a `customstyle` for bibliographic references
2018-06-14 10:57:23 +02:00
Mike Toews 7796cb7e5c Start a customstyle for bibliographic references
Modifies label to use BibTeX key name, and format names with lastfirst
2018-06-14 20:24:07 +12:00
Kurt Schwehr 5b68352062 whitespace cleanup pj_fileapi.c 2018-06-13 15:03:52 -07:00
Kristian Evers ab7de4874d Merge pull request #1041 from mwtoews/docs
Rewrite references using BibTeX and sphinxcontrib-bibtex
2018-06-10 21:50:50 +02:00
Kristian Evers 1232bee4b2 Merge pull request #1038 from kbevers/howtorelease
Complete overhaul of HOWTO-RELEASE.
2018-06-10 21:49:17 +02:00
Mike Toews aea86ed356 workaround for issue with sphinxcontrib-bibtex 2018-06-10 19:42:09 +12:00
Mike Toews 13b82cd0b0 rewrite references using BibTeX and sphinxcontrib-bibtex 2018-06-10 17:02:28 +12:00
Even Rouault fa62d68b95 cppcheck.sh: enable to run it from any directory 2018-06-09 14:46:05 +02:00
Kristian Evers 22db968545 Complete overhaul of HOWTO-RELEASE.
The release process is described in more details as well as adding
section covering release candidates and how to proceed after a
release.
2018-06-09 09:57:07 +02:00
Even Rouault 0f67d9f179 Improve travis/install.sh
- No longer do the initial useless autoconf build
- Make sure to do a cmake build from the tarball generated by
  'make dist'
2018-06-08 22:05:46 +02:00
Even Rouault 07e12e921f Add CMakeLists.txt.in to EXTRA_DIST of test/googletest/Makefile.am 2018-06-08 21:10:46 +02:00
Even Rouault 7cfe5ec293 test/unit/Makefile.am: do not install gtest_include.h 2018-06-08 20:32:20 +02:00
Kristian Evers 2ae1a3cef6 bump version numbers to 5.2.0 2018-06-08 15:56:17 +02:00
Even Rouault 323ec08a2e docs: make sure rfc are indexed 2018-06-08 15:40:20 +02:00
Howard Butler 90311ce6d5 update RFC 1 with modifications suggested by Frank, declare RFC 1 passed 2018-06-08 07:54:14 -05:00
Even Rouault e69a69bbb6 Merge pull request #1035 from rouault/html_coverage
Add a scripts/gen_html_coverage.sh to generate local report of code c…  …overage with lcov/genhtml
2018-06-08 14:14:14 +02:00
Even Rouault 44d16a9f68 Add a scripts/gen_html_coverage.sh to generate local report of code coverage with lcov/genhtml 2018-06-08 13:56:53 +02:00
Kristian Evers f3f7097c32 Merge pull request #1037 from mloskot/ml/cmake-bump-proj-version
CMake: bump PROJ version to 5.1.0
2018-06-08 10:42:40 +02:00
Mateusz Loskot 0f88afe10a Ignore VS2017 and CLion user-specific local files
- CMakeSettings.json - CMake integration for VS2017 config
- .idea - CLion config

[ci skip]
2018-06-08 09:57:30 +02:00
Mateusz Loskot a3c114a507 CMake: bump PROJ version to 5.1.0
Align version with the one defined in configure.ac.
2018-06-08 09:34:36 +02:00
Even Rouault e37ad143d7 appveyor.yml: set PATH to run tests 2018-06-08 02:12:11 +02:00
Mateusz Loskot b745ee0a10 Export proj target to scope visible for test/unit target
Refines #1034
2018-06-08 00:04:45 +02:00
Even Rouault ffd4674e4c Merge pull request #1034 from mloskot/ml/add-cmake-for-gtest
WIP: Add CMake configuration for test/googletest and test/unit
2018-06-07 23:01:32 +02:00
Mateusz Loskot e9b399fc91 Add CMake configuration for test/googletest and test/unit
For CMake builds, latest googletest 1.8.0 is downloaded.

Following officially recommended integration for CMake-enabled projects
https://github.com/google/googletest/blob/master/googletest/README.md

  "Use CMake to download GoogleTest as part of the build's configure step.
  This is just a little more complex, but doesn't have the limitations
  of the other methods."

Since, our copy of test/googletest
- is a very minimalist copy of googletest
- does not include any official CMake scripts
- would require copying parts of googletest CMakeLists.txt, compilater/linker flags (e.g. -lpthreads)
for reliable multi-platform builds, it is reasoanable to rely on download
All pros and cons advantages are discussed in teh README.md linked above.

Closes #1033
2018-06-07 21:21:49 +02:00
Even Rouault c1a7098667 Merge pull request #1024 from rouault/googletest
Add googletest 1.8.0 framework in test/googletest, and use it with autoconf builds only (CMake integration to be done)
2018-06-07 15:03:46 +02:00
Even Rouault 3e8a1984e9 Add googletest 1.8.0 framework in test/googletest, and use it with autoconf builds only (CMake integration to be done) 2018-06-07 12:58:08 +02:00
Kristian Evers 9c5741d252 Merge pull request #1032 from kbevers/gie-dms-again
Correct bad use of proj_dmstor in gie.
2018-06-06 22:25:42 +02:00
Kristian Evers 8574765a7f Correct bad use of proj_dmstor in gie.
The previous commits were added way to prematurely. The code was not
properly tested and it turned out to do more bad than good. This commit
hopefully fixes that. And this time it is backed up by tests!

DMS style coordinates should now be fully functional in gie. Finger
crossed.
2018-06-06 21:24:11 +02:00
Kristian Evers 983d18a01f Remove leftover debugging print statement 2018-06-06 17:59:48 +02:00
Kristian Evers 21abf2f132 Merge pull request #1031 from kbevers/gie-read-dms
Make gie read dms style coordinates
2018-06-06 13:16:51 +02:00
Kristian Evers b3322a80bd Make gie read dms style coordinates
proj_strtod doesn't read values like 123d45'678W so we need a bit
of help from proj_dmstor. proj_strtod effectively ignores what
comes after "d", so we use that fact that when dms is larger than
d the value was stated in "dms" form.
This could be avoided if proj_dmstor used the same proj_strtod()
as gie, but that is not the case (yet). When we remove projects.h
from the public API we can change that.
2018-06-05 23:28:49 +02:00
Kristian Evers 5613d33bd0 Merge pull request #1030 from mloskot/ml/remove-ctest-cdash
Remove include(CTest) as unnecessary
2018-06-05 20:23:11 +02:00
Mateusz Loskot 48529dbb5c Remove include(CTest) as unnecessary
The library does not require CDash server, so there is
no point in generating all testing configurations
(ie. Experimental, Continuous, Nightly)
CTest also adds implicit BUILD_TESTING option (default ON)
which is not used by the library - there is custom PROJ_TESTS.
2018-06-05 19:06:05 +02:00
Even Rouault 0a2eed78d2 README.md: fix URL [ci skip] 2018-06-04 21:44:23 +02:00
Even Rouault 95bfd9b436 appveyor.yml: run ctest on cmake builds 2018-06-04 20:56:55 +02:00
Kurt Schwehr ca8c43f556 pj_transform.c: Use errno symbols, not numeric literals (#1029) 2018-06-04 11:55:18 +02:00
Howard Butler b357bf6b9d add RFC 1 -- initial creation of the PROJ Project Steering Committee (#1028)
* add RFC 1 -- initial creation of the PROJ Project Steering Committee

* fix up copypasta items from MapServer RFC
2018-06-03 22:00:58 -05:00
Kristian Evers 6160304480 Merge pull request #1027 from mwtoews/docs
Update URLs
2018-06-02 11:06:27 +02:00
Mike Toews 5a8009e4df use modern URL for DOI 2018-06-02 20:46:35 +12:00
Mike Toews f8af17699e Update GeoTIFF URL 2018-06-02 20:19:04 +12:00
Mike Toews abf44ad415 use shortened URL from StackExchange websites 2018-06-02 19:51:25 +12:00
Mike Toews 347fdaa1e6 URL for proj4rb changed to GitHub (former URL does not work) 2018-06-02 19:42:16 +12:00
Mike Toews 152f34f98d Upgrade http:// to https:// where feasible 2018-06-02 19:40:46 +12:00
Even Rouault 524a335e0b Update encrypted projdocs-private.key.enc 2018-06-01 23:27:17 +02:00
Kristian Evers de44aa7a16 Merge pull request #1026 from kbevers/fix-geocent
Do not pivot over WGS84 when doing cs2cs-emulation with geocent
2018-06-01 22:50:55 +02:00
Howard Butler fea2d9b00f update doc deploy key for travis-ci.com 2018-06-01 15:25:24 -05:00
Kristian Evers c480b1adc5 Do not pivot over WGS84 when doing cs2cs-emulation with geocent 2018-06-01 21:54:22 +02:00
Kristian Evers ba71ff265c Ignore failure to load test_nodata.gtx grid 2018-06-01 21:46:06 +02:00
Even Rouault c48e7215cd README.md: update Travis-CI badge to point to the .com [ci skip] 2018-06-01 18:46:07 +02:00
Kristian Evers 4cd3d007d7 Fix a fix sphinx warnings about unknown options 2018-06-01 17:39:53 +02:00
Kristian Evers bfa57264f6 Update documentation for 5.1.0 release
Added NEWS section to frontpage, update download links and adjusted version number.
2018-06-01 14:51:51 +02:00
Kurt Schwehr bbb13e808b Fix buffer overflow in gie.c:append_args() (#1023)
Observed a buffer overflow in append_args with autofuzz with the strcpy in append_args.
I think the +2 is required to account for both a nul char and the space.
2018-05-31 11:07:30 +02:00
Kristian Evers 1b3c79bad5 Merge pull request #1022 from schwehr/gie-operation-overflow
Ensure that operations are less than MAX_OPERATION long.
2018-05-30 20:38:22 +02:00
Kristian Evers 559e8f1227 Merge pull request #1021 from rouault/add_test_framework
Add test framework, C++11 compilation mode and warning fixes
2018-05-30 20:33:42 +02:00
Kristian Evers 4eca7f1af7 Merge pull request #1018 from schwehr/gie-fprintf
gie T.fout output cleanup
2018-05-30 20:33:17 +02:00
Even Rouault 6fbfa8eead Move catch.hpp header in test/; rename test/cpp as test/unit 2018-05-30 12:06:10 +02:00
Even Rouault a3c592894d Replace suspicious use of strncat(), despite correct in that particular case (detected by gcc 8.1) 2018-05-30 11:48:28 +02:00
Even Rouault 9b82aef002 CI environment: adapt for C++11 capable environments 2018-05-30 11:48:28 +02:00
Even Rouault 2905176697 Enable c++ compilation with autotools and cmake, hardened compilation flags and add catch2 framework
Hardened compilation flags come from GDAL' configure.ac and are
'combat proven'

Dummy test added just to demonstrate catch2 based tests work.
2018-05-30 11:48:28 +02:00
Even Rouault f773897a30 Fix warnings found by clang with new warning flags to be added in later commit
Fixes consist in:
- no use of comma operator for multi statement purpose
- avoid confusing comma in for loops first and third clauses
- avoid implicit long to int casts by storing to long, or explicit bound checking before cast
2018-05-30 11:48:28 +02:00
Kurt Schwehr fb92dea72c Ensure that operations are less than MAX_OPERATION long.
Buffer overflow found with autofuzz.
2018-05-29 22:33:36 -07:00
Even Rouault e692e1567f cct.c: add missing va_end() in error code path (spotted by cppcheck) 2018-05-26 13:18:11 +02:00
Even Rouault 39598acec9 .gitignore: add test-driver 2018-05-24 21:50:42 +02:00
Kurt Schwehr a989cbd7f5 gie T.fout output cleanup
- printf -> fprintf in more places
- puts -> fprintf
- Move list_err_codes to after where T.fout is set

This makes fuzzing easier by allowing more of the output to be sent to
/dev/null.  Found with autofuzz.
2018-05-24 10:44:30 -07:00
605 changed files with 42685 additions and 2613 deletions
+26
View File
@@ -1,16 +1,21 @@
*~
*.bak
*.pyc
build.local.bat
build.local.sh
Makefile
Makefile.in
CMakeFiles
CMakeCache.txt
CMakeSettings.json
CTestTestfile.cmake
cmake_install.cmake
install_manifest.txt
cmake/project-config*.cmake
README
test-driver
/.idea
/.vs*
/*.manifest
/*.swp
@@ -84,16 +89,37 @@ README
/src/nad2bin
/src/proj
/src/geod
/src/geodtest.log
/src/geodtest.trs
/src/stamp-h*
/src/proj_config.h
/src/proj_config.h.in
/src/cs2cs
/src/multistresstest
/src/test228
/src/test-suite.log
/src/cct
/src/gie
/src/geodtest
# test
test/googletest/.libs/
test/googletest/libgtest.la
test/googletest/src/.deps/
test/googletest/src/.dirstamp
test/googletest/src/.libs/
test/googletest/src/gtest-all.lo
test/googletest/src/gtest-all.o
test/unit/.deps/
test/unit/.libs/
test/unit/basic_test
test/unit/basic_test.o
test/unit/main.o
test/unit/pj_phi2_test
test/unit/pj_phi2_test.o
test/unit/proj_errno_string_test
test/unit/proj_errno_string_test.o
# Java bridge
jniwrap/out
+8 -5
View File
@@ -10,8 +10,9 @@ matrix:
include:
- os: linux
dist: trusty
compiler: gcc
language: c
language: cpp
sudo: required
services:
- docker
@@ -19,8 +20,9 @@ matrix:
- BUILD_NAME=linux_gcc
- DETAILS="linux, gcc"
- os: linux
dist: trusty
compiler: clang
language: c
language: cpp
sudo: required
services:
- docker
@@ -28,13 +30,14 @@ matrix:
- BUILD_NAME=linux_clang
- DETAILS="linux, clang"
- os: osx
language: c
language: cpp
env:
- BUILD_NAME=osx
- DETAILS="osx"
- os: linux
dist: trusty
compiler: gcc
language: c
language: cpp
sudo: required
env:
- BUILD_NAME=mingw32
@@ -42,7 +45,7 @@ matrix:
- os: linux
compiler: gcc
language: c
language: cpp
dist: trusty
env:
- BUILD_NAME=csa
+2 -2
View File
@@ -1,7 +1,7 @@
To cite PROJ in publications use:
PROJ contributors (2018). PROJ coordinate transformation software
library. Open Source Geospatial Foundation. URL http://proj4.org/.
library. Open Source Geospatial Foundation. URL https://proj4.org/.
A BibTeX entry for LaTeX users is
@@ -10,5 +10,5 @@ A BibTeX entry for LaTeX users is
author = {{PROJ contributors}},
organization = {Open Source Geospatial Foundation},
year = {2018},
url = {http://proj4.org/},
url = {https://proj4.org/},
}
+10 -5
View File
@@ -12,7 +12,7 @@
cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR)
# For historic reasons, the CMake PROJECT-NAME is PROJ4
project(PROJ4 C)
project(PROJ4 LANGUAGES C CXX)
set(PROJECT_INTERN_NAME PROJ)
if (NOT CMAKE_VERSION VERSION_LESS 3.1)
@@ -23,11 +23,15 @@ endif ()
if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
# Suppress warning 4706 about assignment within conditional expression
# Suppress warning 4996 about sprintf, etc., being unsafe
# Suppress warning 4589 about Constructor of abstract class...ignores initializer for virtual base class (see https://github.com/weidai11/cryptopp/issues/214#issuecomment-230283061)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 /wd4706 /wd4996 /D_CRT_SECURE_NO_WARNINGS")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /W4 /wd4706 /wd4996 /wd4589 /D_CRT_SECURE_NO_WARNINGS")
elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-prototypes -Wmissing-declarations -Wformat -Wformat-security")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-declarations -Wformat -Wformat-security")
elseif("${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-prototypes -Wmissing-declarations -Wformat -Wformat-security -Wfloat-conversion -Wc99-extensions -Wc11-extensions")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-declarations -Wformat -Wformat-security -Wfloat-conversion")
endif()
# Tell Intel compiler to do arithmetic accurately. This is needed to
@@ -37,8 +41,10 @@ endif()
if (CMAKE_C_COMPILER_ID STREQUAL "Intel")
if (MSVC)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fp:precise")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Qstd=c++11")
else ()
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif ()
endif ()
@@ -57,9 +63,9 @@ colormsg(_HIBLUE_ "Configuring PROJ:")
#PROJ version information
#################################################################################
include(ProjVersion)
proj_version(MAJOR 5 MINOR 0 PATCH 0)
proj_version(MAJOR 6 MINOR 0 PATCH 0)
set(PROJ_API_VERSION "14")
set(PROJ_BUILD_VERSION "14.0.1")
set(PROJ_BUILD_VERSION "14.0.2")
#################################################################################
# Build features and variants
@@ -124,7 +130,6 @@ endif ()
option(PROJ_TESTS "Enable build of collection of PROJ tests" ON)
boost_report_value(PROJ_TESTS)
if(PROJ_TESTS)
include(CTest)
enable_testing()
endif(PROJ_TESTS)
include(ProjTest)
@@ -155,7 +160,7 @@ set(CMAKECONFIGDIR "${DEFAULT_CMAKEDIR}" CACHE PATH "The directory to install cm
include_directories(${PROJ4_SOURCE_DIR}/src)
message(STATUS "")
add_subdirectory(nad)
add_subdirectory(data)
add_subdirectory(src)
add_subdirectory(man)
add_subdirectory(cmake)
+4 -4
View File
@@ -68,18 +68,18 @@ Note that not all feature requests are accepted.
## Write documentation
PROJ.4 is in dire need of better documentation. Any contributions of documentation
are greatly appreciated. The PROJ.4 documentation is available on [proj4.org](ttp://proj4.org).
are greatly appreciated. The PROJ.4 documentation is available on [proj4.org](https://proj4.org).
The website is generated with [Sphinx](http://www.sphinx-doc.org/en/stable/). Contributions
to the documentation should be made as [Pull Requests](https://github.com/OSGeo/proj.4/pulls)
on GitHub.
If you intend to document one of PROJ.4's supported projections please use the
[Mercator projection](http://proj4.org/projections/merc.html) as a template.
[Mercator projection](https://proj4.org/projections/merc.html) as a template.
## Code contributions
See [Code Contributions](http://proj4.org/development/for_proj_contributors.html)
See [Code Contributions](https://proj4.org/development/for_proj_contributors.html)
#### Legalese
Committers are the front line gatekeepers to keep the code base clear of improperly contributed code.
@@ -125,7 +125,7 @@ improperly contributing code to the source repository:
## Additional Resources
* [General GitHub documentation](http://help.github.com/)
* [General GitHub documentation](https://help.github.com/)
* [GitHub pull request documentation](https://help.github.com/articles/about-pull-requests/)
## Acknowledgements
+4 -15
View File
@@ -1,24 +1,18 @@
##
# osgeo/proj.4
FROM ubuntu:xenial
FROM ubuntu:18.04
MAINTAINER Howard Butler <howard@hobu.co>
# Setup build env
RUN mkdir /build
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 16126D3A3E5C1192 \
&& apt-get update \
RUN apt-get update -y \
&& apt-get install -y --fix-missing --no-install-recommends \
software-properties-common build-essential ca-certificates \
git make cmake wget unzip libtool automake python-pip \
libpython-dev libjpeg-dev zlib1g-dev \
python-dev python-pip g++ doxygen dvipng \
cmake libjpeg8-dev zlib1g-dev texlive-latex-base \
texlive-latex-extra git \
graphviz python-matplotlib \
python-setuptools imagemagick \
git make cmake wget unzip libtool automake \
zlib1g-dev \
&& apt-get remove --purge -y $BUILD_PACKAGES && rm -rf /var/lib/apt/lists/*
@@ -35,9 +29,6 @@ RUN mkdir /vdatum \
&& wget http://download.osgeo.org/proj/vdatum/egm08_25/egm08_25.gtx && mv egm08_25.gtx /usr/share/proj \
&& rm -rf /vdatum
RUN pip install Sphinx breathe \
sphinx_bootstrap_theme awscli sphinxcontrib-bibtex \
sphinx_rtd_theme
RUN git clone https://github.com/OSGeo/proj.4.git \
&& cd proj.4 \
@@ -45,7 +36,5 @@ RUN git clone https://github.com/OSGeo/proj.4.git \
&& ./configure --prefix=/usr \
&& make \
&& make install \
&& cd /proj.4/docs \
&& make html \
&& rm -rf /proj.4
+200 -40
View File
@@ -1,24 +1,37 @@
Preparing a PROJ.4 Release
==========================
Preparing a PROJ Release
===============================================================================
1) Update the version number in configure.ac (in AC_INIT()).
Preparing a PROJ release is a three-step process. Before the actual release is
published we want to issue one or more release candidates to ensure that the
code is in fact ready to be released. That is step one. Step two starts when a
release candidate has been selected for promotion to final release. Step three
updates version numbers in the master branch to avoid confusion between
released code and code still in development.
1a) Update the version number in PROJ_BUILD_VERSION in CMakeLists.txt
1b) Update the version number in doc/source/conf.py
1c) Update version numbers in man pages in man/man1/ and man/man3/
The three phases are described below.
2) Update the version number in proj_api.h (#define PJ_VERSION).
1 Release candidate
===============================================================================
2a) Update PROJ_VERSION_MAJOR, PROJ_VERSION_MINOR and PROJ_VERSION_PATCH
in src/proj.h
At least one release candidate is necessary before the final release is
published. In case more than one release candidate is needed most steps below
can be skipped depending on what prompted the release candidate 1+n. Steps 1.6
and 1.7 are mandatory for all release candidates, otherwise it will in most
cases only be necessary to update the NEWS section (1.3).
3) Update the version number, and date in src/pj_release.c.
Release candidates should be released about a week before the final release is
scheduled. When preparing major version releases it may be wise to issue the
release candidate earlier than that.
4) Update the version number in the -version-info definition in
src/Makefile.am. It consists of "current:revision:age".
When a release candidate has not prompted any request for changes in 48 hours,
a motion for promotion to final release should be issued on the PROJ mailing
list. The PROJ PSC guidelines describes the rules for passing a motion.
4a) Increment PROJ_BUILD_VERSION in CMakeLists.txt to follow
libtool versioning
1.1 Update ABI version numbers:
-------------------------------------------------------------------------------
Determine the ABI version number. It consists of "current:revision:age". Follow
the steps below to determine the next ABI version number:
- If the library source code has changed at all since the last update,
then increment revision (c:r:a becomes c:r+1:a).
@@ -32,47 +45,194 @@
- If any interfaces have been removed since the last public release, then
set age to 0.
4.5) Run "autogen.sh" (hopefully on the same machine it was last run on)
Update the following files with the new ABI version number:
5) Update man pages:
- `src/Makefile.am` Update -version-info
- `CMakelists.txt`: Update PROJ_BUILD_VERSION (cur:rev:age) and
PROJ_API_VERSION (current)
./scripts/update_man.sh
*Commit the changes to master.*
The script builds man pages from Sphinx docs, copies them to man/ and commits
them to git.
6) Add a note to the ChangeLog that a new release is being issued, and what
the release number is.
1.2 Update man pages
-------------------------------------------------------------------------------
7) Update NEWS file with summary of release changes.
Man pages are (mostly) automatically generated from the Sphinx docs. The pages
in man/man3/ was manually updated in 1.1. Here we update the pages in
man/man1/. Follow these steps:
8) Update the year in CITATION
- Update version number and date in `man/man3/pj_init.3` and
`man/man3/geodesic.3`
- Temporarily update version in `docs/source/conf.py`
- run `script/update_man.sh`
- Revert version number in `docs/source/conf.py`
9) If this is a major release, prepare a branch.
The `update_man.sh` script builds the man pages and commits the update man pages
to master.
git checkout -b 5.0
10) Tag the release
1.3 Write release notes
-------------------------------------------------------------------------------
git tag 5.0.0
Update `NEWS` with descriptions of the changes since the last release.
Hopefully issues and pull requests that go into the new release have been
properly tagged with the milestone for the current release.
11) Do a "make dist-all" in the proj root directory. After some grinding
this should result in files like proj-4.4.3.tar.gz and proj-4.4.3.zip
being created. These are full source distributions.
End the section by thanking the authors that contributed to the release. Get a
sorted list of contributors in descending order of activity:
12) Put these in the proj ftp area on /osgeo/download/proj on
download.osgeo.org. This can be done via scp using a command like the
following.
```
git shortlog -sn x.y.z..HEAD | tac | awk '{print $2 " " $3}'
```
scp proj-4.4.3.{tar.gz,zip} warmerdam@download.osgeo.org:/osgeo/download/proj
where `x.y.z` is the tag of the previous release. You may need to edit the list
slightly since not all authors has properly configured their names in git.
13) Announce the new release on the PROJ.4 and MetaCRS mailing lists.
*Commit the changes to master.*
14) Issue a new release report on GitHub:
https://github.com/OSGeo/proj.4/releases/new
1.4 Update `CITATION`
-------------------------------------------------------------------------------
NOTES:
If needed, update the year in `CITATION` and `docs/source/about.rst`.
o Information about preparing binary releases, and RPMs should be formalized.
o A "beta" release step should likely be incorporated.
*Commit the changes to master.*
1.5 Create maintenance branch
-------------------------------------------------------------------------------
*Skip this step if you are preparing a patch release or RC2 and later.*
Create the branch:
```
git branch x.y
```
where `x` is the major version number and `y` is the minor version number. Bug
fixes found in the release candidates should be pushed to master and
subsequently cherry-picked to the maintenance branch.
*Push branch upstream.*
1.6 Prepare and upload archives
-------------------------------------------------------------------------------
Run autoconf and configure the build:
```
./autogen.sh
mkdir build
cd build
../configure
make dist
```
Rename the archives and generate MD5 sum files:
```
mv proj-x.y.z.tar.gz proj-x.y.zRCn.tar.gz
mv proj-x.y.z.zip proj-x.y.zRCn.zip
md5 proj-x.y.zRCn.tar.gz > proj-x.y.zRCn.tar.gz.md5
md5 proj-x.y.zRCn.zip > proj-x.y.zRCn.zip.md5
```
Upload to the OSGeo download server:
```
scp proj-x.y.zRCn.* warmerdam@download.osgeo.org:/osgeo/download/proj
```
Adjust version numbers and usernames accordingly.
1.7 Announce the release candidate
-------------------------------------------------------------------------------
Announce the release candidate on the PROJ mailing list.
1.8 Promotion to final release
-------------------------------------------------------------------------------
When you are confident that the latest release candidate is ready for promotion
to final release a motion for promotion should be issued on the PROJ mailing
list. Allow for a minimum of 48 hours for voting time.
2 Final release
===============================================================================
Barring a successful promotion process we can proceed with the final release.
2.1 Prepare and upload archives
-------------------------------------------------------------------------------
See step 1.6 above. Do not rename the archives with RC postfixes.
2.2 Update website
------------------------------------------------------------------------------
- Add the release notes from `NEWS` to `docs/source/news.rst`
- Update download links in `docs/source/download.rst`
- Update `$TRAVIS_BRANCH` in `travis\after_success.sh` to new maintenance
branch.
*Commit the changes to master and cherry-pick into maintenance branch.*
When pushed upstream the website will be update to the current version.
2.3 Tag the release
-------------------------------------------------------------------------------
Tag the release with:
```
git tag -a -m "Create tag x.y.z" x.y.z
git push --tags
```
2.4 Prepare the release on GitHub
-------------------------------------------------------------------------------
When the new tag is pushed upstream GitHub picks up that a new release has been
issued. Update the new release on https://github.com/OSGeo/proj.4/releases with
the release notes from `NEWS` and add the prepared source distribution archives
to the release (otherwise GitHub will just package the entire repository - we
don't want that).
2.5 Announce the new release
-------------------------------------------------------------------------------
The release should be announced on PROJ and MetaCRS mailing lists. Additionally
the release announcement should be sent to news_item@osgeo.org which will add
the announcement to osgeo.org and other OSGeo communication channels.
Make some noise on Twitter and other relevant social media.
3 Post final release
===============================================================================
3.1 Update version numbers
-------------------------------------------------------------------------------
*Skip this step if you are preparing a patch release.*
PROJ uses [semantic versioning](http://semver.org/). Depending on the changes
in the release will be either a major, minor or patch release. Update the
version numbers in the files.
- configure.ac: Update the version number in AC_INIT().
- src/proj.h: Update PROJ_VERSION_MAJOR, PROJ_VERSION_MINOR and
PROJ_VERSION_PATCH.
- src/proj_api.h: Update PJ_VERSION.
- src/pj_release.c: Update date to the scheduled release date.
- CMakelists.txt: Update proj_version()
- doc/source/conf.py: Update version number
*Commit changes to master branch.*
+2 -2
View File
@@ -1,6 +1,6 @@
SUBDIRS = src man nad jniwrap cmake test
SUBDIRS = src man data jniwrap cmake test
EXTRA_DIST = makefile.vc nmake.opt CMakeLists.txt CITATION
EXTRA_DIST = CMakeLists.txt CITATION
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = proj.pc
+75
View File
@@ -1,3 +1,78 @@
5.2.0 Release Notes
-------------------
UPDATES
-------
o Added support for deg, rad and grad in unitconvert (#1054)
o Assume +t_epoch as time input when not otherwise specified (#1065)
o Added inverse Lagrange projection (#1058)
o Added +multiplier option to vgridshift (#1072)
o Added Equal Earth projection (#1085)
o Added "require_grid" option to gie (#1088)
o Replace +transpose option of Helmert transform with +convention.
From now on the convention used should be explicitly written. An
error will be returned when using the +transpose option (#1091)
o Improved numerical precision of inverse spherical Mercator
projection (#1105)
o cct will now forward text after coordinate input to output
stream (#1111)
BUG FIXES
------------
o Do not pivot over WGS84 when doing cs2cs-emulation with geocent (#1026)
o Do not scan past the end of the read data in pj_ctx_fgets (#1042)
o Make sure proj_errno_string() is available in DLL (#1050)
o Respect +to_meter setting when doing cs2cs-emulation (#1053)
o Fixed unit conversion factors for geod (#1075)
o Fixed test failures related to GCC 8 (#1084)
o Improved handling of +geoc flag (#1093)
o Calculate correct projection factors for Webmercator (#1095)
o cs2cs now always outputs degrees when transformed coordinates are
in angular units (#1112)
All bug fix numbers refer to issues or pull requests indexed at
https://github.com/OSGeo/proj.4/
THANKS TO
------------
Version 5.2.0 is made possible by the following contributors:
Søren Holm
Mateusz Łoskot
Jürnjakob Dugge
Greg Minshall
Aaron Puchert
Vedran Stojnović
Bojan Šavrič
Charles Karney
Mateusz Loskot
Howard Butler
Mike Toews
Kurt Schwehr
Even Rouault
Kristian Evers
5.1.0 Release Notes
-------------------
+4 -28
View File
@@ -1,8 +1,10 @@
# PROJ
[![Travis Status](https://travis-ci.org/OSGeo/proj.4.svg?branch=master)](https://travis-ci.org/OSGeo/proj.4)
[![Travis Status](https://travis-ci.com/OSGeo/proj.4.svg?branch=master)](https://travis-ci.com/OSGeo/proj.4)
[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/584j49uguwoo5evi?svg=true)](https://ci.appveyor.com/project/OSGeo/proj-4)
[![Coveralls Status](https://coveralls.io/repos/github/OSGeo/proj.4/badge.svg?branch=master)](https://coveralls.io/github/OSGeo/proj.4?branch=master)
[![Gitter](https://badges.gitter.im/OSGeo/proj.4.svg)](https://gitter.im/OSGeo/proj.4)
[![Mailing List](https://img.shields.io/badge/PROJ-mailing%20list-4eb899.svg)](http://lists.maptools.org/mailman/listinfo/proj)
PROJ is a generic coordinate transformation software, that transforms
coordinates from one coordinate reference system (CRS) to another.
@@ -10,7 +12,7 @@ This includes cartographic projections as well as geodetic transformations.
For more information on the PROJ.4 project please see the web page at:
http://proj4.org/
https://proj4.org/
The PROJ.4 mailing list can be found at:
@@ -89,32 +91,6 @@ If you are building from the git repository you have to first run
which will generate a configure script that can be used as described above.
### Building on Windows with NMAKE
PROJ can be built with Microsoft Visual C/C++ using the `makefile.vc`
in the `PROJ` directory. First edit the `PROJ\nmake.opt` and
modify the `INSTDIR` value at the top to point to the directory
where the PROJ tree shall be installed.
If you want to install into `C:\PROJ`, it can remain unchanged.
Then use the `makefile.vc` to build the software e.g.:
C:\> cd proj
C:\PROJ> nmake /f makefile.vc
C:\PROJ> nmake /f makefile.vc install-all
Note that you have to have the VC++ environment variables, and path
setup properly. This may involve running the `VCVARS32.BAT`
script out of the Visual C++ tree.
The `makefile.vc` builds `proj.exe`, `proj.dll` and `proj.lib`.
On Windows you have to set the `PROJ_LIB` environment variable to make
sure that PROJ can find the resource files that it needs. For the
default install directory you can set `PROJ_LIB` with:
C:\> set PROJ_LIB=C:\PROJ\share
### Distribution files and format
Sources are distributed in one or more files. The principle elements
+28 -51
View File
@@ -5,74 +5,51 @@ platform:
environment:
matrix:
# Does not work
# VS 2008
# - BUILD_TYPE: cmake
# VS_VERSION: Visual Studio 9 2008
# VS 2010
- BUILD_TYPE: cmake
VS_VERSION: Visual Studio 10
# VS 2012
- BUILD_TYPE: cmake
VS_VERSION: Visual Studio 11
# VS 2013
- BUILD_TYPE: cmake
VS_VERSION: Visual Studio 12
# VS 2015
- BUILD_TYPE: cmake
VS_VERSION: Visual Studio 14
- VS_VERSION: Visual Studio 14
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
# VS 2017
- BUILD_TYPE: cmake
VS_VERSION: Visual Studio 15
- VS_VERSION: Visual Studio 15
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- BUILD_TYPE: nmake
shallow_clone: true
build_script:
- echo build_script
- if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x86" call "%VS120COMNTOOLS%\..\..\VC\vcvarsall.bat"
- if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x64" "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64
- if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x64" call "%VS120COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64
- if "%BUILD_TYPE%" == "nmake" nmake /f makefile.vc
- if "%BUILD_TYPE%" == "nmake" nmake /f makefile.vc install-all
- if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x64" cd src
- if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x64" nmake /f makefile.vc multistresstest.exe
# Disabled for now as it scales badly
# - if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x64" multistresstest.exe
- if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x64" cd ..
- if "%BUILD_TYPE%" == "cmake" if "%platform%" == "x64" SET VS_FULL=%VS_VERSION% Win64
- if "%BUILD_TYPE%" == "cmake" if "%platform%" == "x86" SET VS_FULL=%VS_VERSION%
- if "%BUILD_TYPE%" == "cmake" echo "%VS_FULL%"
- if "%BUILD_TYPE%" == "cmake" cmake -G "%VS_FULL%" . -DCMAKE_BUILD_TYPE=Release -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=../bin -DBUILD_LIBPROJ_SHARED=ON -DCMAKE_C_FLAGS="/WX"
- if "%BUILD_TYPE%" == "cmake" cmake --build . --config Release
- if "%platform%" == "x64" SET VS_FULL=%VS_VERSION% Win64
- if "%platform%" == "x86" SET VS_FULL=%VS_VERSION%
- echo "%VS_FULL%"
#
- if "%platform%" == "x64" mkdir build_dll
- if "%platform%" == "x64" cd build_dll
- if "%platform%" == "x64" cmake -G "%VS_FULL%" .. -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBPROJ_SHARED=ON -DCMAKE_C_FLAGS="/WX"
- if "%platform%" == "x64" cmake --build . --config Release
- if "%platform%" == "x64" cd ..
#
- if "%platform%" == "x86" mkdir build_static
- if "%platform%" == "x86" cd build_static
- if "%platform%" == "x86" cmake -G "%VS_FULL%" .. -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBPROJ_SHARED=OFF -DCMAKE_C_FLAGS="/WX"
- if "%platform%" == "x86" cmake --build . --config Release
- if "%platform%" == "x86" cd ..
test_script:
- echo test_script
- if "%BUILD_TYPE%" == "cmake" set PROJ_LIB=C:\projects\proj-4\nad
- if "%BUILD_TYPE%" == "nmake" set PROJ_LIB=C:\PROJ\SHARE
- if "%BUILD_TYPE%" == "nmake" mkdir %PROJ_LIB%\tests
- if "%BUILD_TYPE%" == "nmake" copy nad\tests\*.* %PROJ_LIB%\tests
- set PROJ_LIB=C:\projects\proj-4\data
- set CURDIR=%CD%
- cd %PROJ_LIB%
- curl -O http://download.osgeo.org/proj/proj-datumgrid-1.7.zip
- 7z e -aoa -y proj-datumgrid-1.7.zip
- dir
- cd ..
- dir
- cd bin
- echo "Contents of current directory:"
- dir
- echo "Contents of ..\test\gie:"
- dir ..\test\gie
- echo "Contents of PROJ_LIB " %PROJ_LIB%
- dir %PROJ_LIB%
- gie.exe ..\test\gie\*.gie ..\test\gigs\*.gie
- cd %CURDIR%
#
- if "%platform%" == "x64" cd build_dll
- if "%platform%" == "x64" ctest -C Release
- if "%platform%" == "x64" cd ..
#
- if "%platform%" == "x86" cd build_static
- if "%platform%" == "x86" ctest -C Release
- if "%platform%" == "x86" cd ..
deploy: off
+2 -2
View File
@@ -5,7 +5,7 @@
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
# https://www.boost.org/LICENSE_1_0.txt)
################################################################################
include (CheckIncludeFiles)
include (CheckLibraryExists)
@@ -34,7 +34,7 @@ set(PACKAGE_BUGREPORT "https://github.com/OSGeo/proj.4/issues")
set(PACKAGE_NAME "PROJ")
set(PACKAGE_STRING "PROJ ${${PROJECT_INTERN_NAME}_VERSION}")
set(PACKAGE_TARNAME "proj")
set(PACKAGE_URL "http://proj4.org")
set(PACKAGE_URL "https://proj4.org")
set(PACKAGE_VERSION "${${PROJECT_INTERN_NAME}_VERSION}")
configure_file(cmake/proj_config.cmake.in src/proj_config.h)
+1 -1
View File
@@ -7,7 +7,7 @@
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
# https://www.boost.org/LICENSE_1_0.txt)
################################################################################
# The following variables are defined:
# PROJ_COMPILER_NAME - name of compiler toolset, follows Boost toolset naming.
+3 -3
View File
@@ -9,7 +9,7 @@ function(proj_add_test_script_sh SH_NAME BIN_USE)
set(TEST_OK 1)
if(ARGV2)
set(TEST_OK 0)
set(GRID_FULLNAME ${PROJECT_SOURCE_DIR}/nad/${ARGV2})
set(GRID_FULLNAME ${PROJECT_SOURCE_DIR}/data/${ARGV2})
if(EXISTS ${GRID_FULLNAME})
set(TEST_OK 1)
endif(EXISTS ${GRID_FULLNAME})
@@ -22,8 +22,8 @@ function(proj_add_test_script_sh SH_NAME BIN_USE)
if(${TEST_OK})
add_test( NAME "${testname}"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/nad
COMMAND ${PROJECT_SOURCE_DIR}/nad/${SH_NAME}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/data
COMMAND ${PROJECT_SOURCE_DIR}/test/old/${SH_NAME}
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${${BIN_USE}}
)
endif(${TEST_OK})
+2 -2
View File
@@ -9,7 +9,7 @@
#
# Distributed under the Boost Software License, Version 1.0.
# See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt
# https://www.boost.org/LICENSE_1_0.txt
################################################################################
# Macros in this module:
#
@@ -355,7 +355,7 @@ endmacro()
#
# Scans the current directory and returns a list of subdirectories.
# Author: Robert Fleming
# Source: http://www.cmake.org/pipermail/cmake/2008-February/020114.html
# Source: https://www.cmake.org/pipermail/cmake/2008-February/020114.html
#
# Third parameter is 1 if you want relative paths returned.
# Usage: list_subdirectories(the_list_is_returned_here /path/to/project TRUE)
+136 -9
View File
@@ -1,8 +1,8 @@
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT([PROJ], [5.1.0],
[https://github.com/OSGeo/proj.4/issues], proj, [http://proj4.org])
AC_INIT([PROJ], [6.0.0],
[https://github.com/OSGeo/proj.4/issues], proj, [https://proj4.org])
AC_CONFIG_MACRO_DIR([m4])
AC_LANG(C)
@@ -10,17 +10,139 @@ AC_CONFIG_AUX_DIR([.])
AM_INIT_AUTOMAKE
AM_CONFIG_HEADER(src/proj_config.h)
dnl Enable as much warnings as possible
AX_CFLAGS_WARN_ALL(C_WFLAGS)
AC_SUBST(C_WFLAGS,$C_WFLAGS)
dnl Checks for programs.
AC_PROG_CC
AC_PROG_CXX
AX_CXX_COMPILE_STDCXX_11([noext],[mandatory])
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AM_PROG_LIBTOOL
dnl Enable as much warnings as possible
AX_CFLAGS_WARN_ALL(C_WFLAGS)
AX_CXXFLAGS_WARN_ALL(CXX_WFLAGS)
dnl For ICC: it needs -we10006 instead of -Werror to turn unknown options to errors
dnl Some gcc/clang versions might succeed on this test, so also include -Werror in ERROR_ON_UNKNOWN_OPTIONS
AX_CHECK_COMPILE_FLAG([-Werror -we10006],[ERROR_ON_UNKNOWN_OPTIONS="-Werror -we10006"],[ERROR_ON_UNKNOWN_OPTIONS="-Werror"])
dnl A few ICC warnings to turn off
dnl warning #188: enumerated type mixed with another type (needed on libcsf)
dnl warning #1684: conversion from pointer to same-sized integral type (potential portability problem) (needed on frmts/mrf)
dnl warning #2259: non-pointer conversion from "size_t={unsigned long}" to "int" may lose significant bits
dnl warning #2304: non-explicit constructor with single argument may cause implicit type conversion
dnl warning #3280: declaration hides member
dnl remark #11074: Inlining inhibited by limit max-size
dnl remark #11076: To get full report use -qopt-report=4 -qopt-report-phase ipo
AX_CHECK_COMPILE_FLAG([-diag-disable 188,1684,2259,2304,3280,11074,11076],[C_WFLAGS="$C_WFLAGS -diag-disable 188,1684,2259,2304,3280,11074,11076" CXX_WFLAGS="$CXX_WFLAGS -diag-disable 188,1684,2259,2304,3280,11074,11076"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wextra],[C_WFLAGS="$C_WFLAGS -Wextra" CXX_WFLAGS="$CXX_WFLAGS -Wextra"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Winit-self],[C_WFLAGS="$C_WFLAGS -Winit-self" CXX_WFLAGS="$CXX_WFLAGS -Winit-self"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wunused-parameter], [C_WFLAGS="$C_WFLAGS -Wunused-parameter" CXX_WFLAGS="$CXX_WFLAGS -Wunused-parameter" NO_UNUSED_PARAMETER_FLAG="-Wno-unused-parameter"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes], [C_WFLAGS="$C_WFLAGS -Wmissing-prototypes"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wmissing-declarations], [C_WFLAGS="$C_WFLAGS -Wmissing-declarations"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wformat], [C_WFLAGS="$C_WFLAGS -Wformat" CXX_WFLAGS="$CXX_WFLAGS -Wformat"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wformat -Werror=format-security -Wno-format-nonliteral], [C_WFLAGS="$C_WFLAGS -Werror=format-security -Wno-format-nonliteral" CXX_WFLAGS="$CXX_WFLAGS -Werror=format-security -Wno-format-nonliteral"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wshorten-64-to-32], [C_WFLAGS="$C_WFLAGS -Wshorten-64-to-32" CXX_WFLAGS="$CXX_WFLAGS -Wshorten-64-to-32"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wlogical-op], [C_WFLAGS="$C_WFLAGS -Wlogical-op" CXX_WFLAGS="$CXX_WFLAGS -Wlogical-op" NO_LOGICAL_OP_FLAG="-Wno-logical-op"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wshadow], [C_WFLAGS="$C_WFLAGS -Wshadow" CXX_WFLAGS="$CXX_WFLAGS -Wshadow"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl Error out on things that will fail with MSVC
AX_CHECK_COMPILE_FLAG([-Werror=vla], [C_WFLAGS="$C_WFLAGS -Werror=vla" CXX_WFLAGS="$CXX_WFLAGS -Werror=vla"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Werror=declaration-after-statement], [C_WFLAGS="$C_WFLAGS -Wdeclaration-after-statement"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl -Wclobbered is not reliable on most gcc versions
dnl AX_CHECK_COMPILE_FLAG([-Wno-clobbered], [C_WFLAGS="$C_WFLAGS -Wno-clobbered" CXX_WFLAGS="$CXX_WFLAGS -Wno-clobbered"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl Warn when macros __TIME__, __DATE__ or __TIMESTAMP__ are encountered as they might prevent bit-wise-identical reproducible compilations.
AX_CHECK_COMPILE_FLAG([-Wdate-time], [C_WFLAGS="$C_WFLAGS -Wdate-time" CXX_WFLAGS="$CXX_WFLAGS -Wdate-time"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl GCC 6 warnings
AX_CHECK_COMPILE_FLAG([-Wnull-dereference], [C_WFLAGS="$C_WFLAGS -Wnull-dereference" CXX_WFLAGS="$CXX_WFLAGS -Wnull-dereference"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wduplicated-cond], [C_WFLAGS="$C_WFLAGS -Wduplicated-cond" CXX_WFLAGS="$CXX_WFLAGS -Wduplicated-cond"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl GCC 7 warnings
dnl Do not enable yet. Causes warning in alg/gdalthinplate.cpp due to armadillo templates
dnl AX_CHECK_COMPILE_FLAG([-Wduplicated-branches], [C_WFLAGS="$C_WFLAGS -Wduplicated-branches" CXX_WFLAGS="$CXX_WFLAGS -Wduplicated-branches"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl GCC 8 warnings
AC_LANG_PUSH([C++])
AX_CHECK_COMPILE_FLAG([-Wextra-semi], [CXX_WFLAGS="$CXX_WFLAGS -Wextra-semi"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AC_LANG_POP([C++])
AX_CHECK_COMPILE_FLAG([-Wno-sign-compare], [NO_SIGN_COMPARE="-Wno-sign-compare"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl clang >= 3.9
AX_CHECK_COMPILE_FLAG([-Wcomma], [C_WFLAGS="$C_WFLAGS -Wcomma" CXX_WFLAGS="$CXX_WFLAGS -Wcomma"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl clang and gcc 5
AX_CHECK_COMPILE_FLAG([-Wfloat-conversion], [C_WFLAGS="$C_WFLAGS -Wfloat-conversion" CXX_WFLAGS="$CXX_WFLAGS -Wfloat-conversion"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl clang >= 3.2
AX_CHECK_COMPILE_FLAG([-Wdocumentation -Wno-documentation-deprecated-sync], [C_WFLAGS="$C_WFLAGS -Wdocumentation -Wno-documentation-deprecated-sync" CXX_WFLAGS="$CXX_WFLAGS -Wdocumentation -Wno-documentation-deprecated-sync"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl gnu89 is a reasonable target to get MSVC compatibility.
dnl but only apply it with gcc, since clang will throw a lot of warnings
SAVED_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $ERROR_ON_UNKNOWN_OPTIONS -std=gnu89"
AC_MSG_CHECKING([if -std=gnu89 can be enabled])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[#if defined(__clang__) || !defined(__GNUC__)
#error "not gcc"
#endif]])],
[C_WFLAGS="$C_WFLAGS -std=gnu89"]
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])])
CFLAGS=$SAVED_CFLAGS
dnl C++ specific stuff
AC_LANG_PUSH([C++])
AX_CHECK_COMPILE_FLAG([-Wunused-private-field], [CXX_WFLAGS="$CXX_WFLAGS -Wunused-private-field"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes], [CXX_WFLAGS="$CXX_WFLAGS -Wmissing-prototypes"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wmissing-declarations], [CXX_WFLAGS="$CXX_WFLAGS -Wmissing-declarations"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wnon-virtual-dtor], [CXX_WFLAGS="$CXX_WFLAGS -Wnon-virtual-dtor" NO_NON_VIRTUAL_DTOR_FLAG="-Wno-non-virtual-dtor"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wold-style-cast], [WARN_OLD_STYLE_CAST="-Wold-style-cast"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Weffc++], [WARN_EFFCPLUSPLUS="-Weffc++"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl g++-4.8 complain a bit too much with -Weffc++
if test "$WARN_EFFCPLUSPLUS" != ""; then
SAVED_CXXFLAGS=$CXXFLAGS
CXXFLAGS="$CXXFLAGS $WARN_EFFCPLUSPLUS -Werror"
AC_MSG_CHECKING([if -Weffc++ should be enabled])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[
class Base {};
class A: public Base {};
]])],
[AC_MSG_RESULT([yes])],
[WARN_EFFCPLUSPLUS=""]
[AC_MSG_RESULT([no])])
CXXFLAGS="$SAVED_CXXFLAGS"
CXX_WFLAGS="$CXX_WFLAGS $WARN_EFFCPLUSPLUS"
fi
dnl Clang enables -Woverloaded-virtual if -Wall is defined, but not GCC
AX_CHECK_COMPILE_FLAG([-Woverloaded-virtual], [CXX_WFLAGS="$CXX_WFLAGS -Woverloaded-virtual"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl Forbid use of 'or', 'and', ... alias operators
AX_CHECK_COMPILE_FLAG([-fno-operator-names], [CXX_WFLAGS="$CXX_WFLAGS -fno-operator-names"],,[$ERROR_ON_UNKNOWN_OPTIONS])
HAVE_GCC_WARNING_ZERO_AS_NULL_POINTER_CONSTANT=no
AX_CHECK_COMPILE_FLAG([-Wzero-as-null-pointer-constant], [CXX_WFLAGS="$CXX_WFLAGS -Wzero-as-null-pointer-constant" HAVE_GCC_WARNING_ZERO_AS_NULL_POINTER_CONSTANT=yes NO_ZERO_AS_NULL_POINTER_CONSTANT_FLAG="-Wno-zero-as-null-pointer-constant"],,[$ERROR_ON_UNKNOWN_OPTIONS])
if test "$HAVE_GCC_WARNING_ZERO_AS_NULL_POINTER_CONSTANT" = "yes"; then
AC_DEFINE_UNQUOTED(HAVE_GCC_WARNING_ZERO_AS_NULL_POINTER_CONSTANT, 1,
[Define to 1 if the compiler supports -Wzero-as-null-pointer-constant])
fi
AC_LANG_POP([C++])
AC_SUBST(C_WFLAGS,$C_WFLAGS)
AC_SUBST(CXX_WFLAGS,$CXX_WFLAGS)
AC_SUBST(NO_ZERO_AS_NULL_POINTER_CONSTANT_FLAG,$NO_ZERO_AS_NULL_POINTER_CONSTANT_FLAG)
dnl Checks for libraries.
save_CFLAGS="$CFLAGS"
CFLAGS=`echo "$CFLAGS" | sed "s/-Werror/ /"`
@@ -142,10 +264,15 @@ AC_SUBST(MUTEX_SETTING,$MUTEX_SETTING)
AC_SUBST(THREAD_LIB,$THREAD_LIB)
AC_CONFIG_FILES([Makefile cmake/Makefile src/Makefile
test/Makefile test/gie/Makefile test/gigs/Makefile
man/Makefile man/man1/Makefile man/man3/Makefile nad/Makefile
test/Makefile test/old/Makefile test/gie/Makefile test/gigs/Makefile test/unit/Makefile
test/googletest/Makefile test/googletest/include/Makefile
test/googletest/include/gtest/Makefile
test/googletest/include/gtest/internal/Makefile
test/googletest/include/gtest/internal/custom/Makefile
test/googletest/src/Makefile
man/Makefile man/man1/Makefile man/man3/Makefile data/Makefile
jniwrap/Makefile jniwrap/org.osgeo.proj/Makefile jniwrap/org.osgeo.proj/org/Makefile jniwrap/org.osgeo.proj/org/proj4/Makefile])
AC_CONFIG_FILES([nad/install], [chmod +x nad/install])
AC_CONFIG_FILES([data/install], [chmod +x data/install])
AC_CONFIG_FILES([proj.pc])
View File
@@ -48,16 +48,3 @@ set(ALL_DATA_FILE ${PROJ_DICTIONARY}
${GEOID_FILES})
install(FILES ${ALL_DATA_FILE}
DESTINATION ${DATADIR})
#
# test
#
set(CS2CS_BIN "cs2cs")
set(PROJ_BIN "proj")
proj_add_test_script_sh("test27" PROJ_BIN )
proj_add_test_script_sh("test83" PROJ_BIN )
proj_add_test_script_sh("testvarious" CS2CS_BIN )
proj_add_test_script_sh("testdatumfile" CS2CS_BIN "connu")
proj_add_test_script_sh("testIGNF" CS2CS_BIN "ntf_r93.gsb")
proj_add_test_script_sh("testntv2" CS2CS_BIN "ntv2_0.gsb")
View File
View File
+10 -10
View File
@@ -3,22 +3,22 @@
# ITRF2000 -> ITRF2005 is only defined the opposite way, so we flip the sign on all
# parameters to get the opposite transformation. Parameters from http://itrf.ign.fr/ITRF_solutions/2005/tp_05-00.php
<ITRF2005> +proj=helmert +x=-0.0001 +y=0.0008 +z=0.0058 +s=-0.0004 +dx=0.0002 +dy=-0.0001 +dz=0.0018 +ds=-0.000008 +t_epoch=2000.0 +transpose
<ITRF2005> +proj=helmert +x=-0.0001 +y=0.0008 +z=0.0058 +s=-0.0004 +dx=0.0002 +dy=-0.0001 +dz=0.0018 +ds=-0.000008 +t_epoch=2000.0 +convention=position_vector
<ITRF97> +proj=helmert +x=0.0067 +y=0.0061 +z=-0.0185 +s=0.00155 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1997.0 +transpose
<ITRF97> +proj=helmert +x=0.0067 +y=0.0061 +z=-0.0185 +s=0.00155 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1997.0 +convention=position_vector
<ITRF96> +proj=helmert +x=0.0067 +y=0.0061 +z=-0.0185 +s=0.00155 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1997.0 +transpose
<ITRF96> +proj=helmert +x=0.0067 +y=0.0061 +z=-0.0185 +s=0.00155 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1997.0 +convention=position_vector
<ITRF94> +proj=helmert +x=0.0067 +y=0.0061 +z=-0.0185 +s=0.00155 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1997.0 +transpose
<ITRF94> +proj=helmert +x=0.0067 +y=0.0061 +z=-0.0185 +s=0.00155 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1997.0 +convention=position_vector
<ITRF93> +proj=helmert +x=0.0127 +y=0.0065 +z=-0.0209 +s=0.00195 +rx=-0.00039 +ry=0.00080 +rz=-0.00114 +dx=-0.0029 +dy=-0.0002 +dz=-0.0006 +ds=0.00001 +drx=-0.00011 +dry=-0.00019 +drz=0.00007 +t_epoch=1988.0 +transpose
<ITRF93> +proj=helmert +x=0.0127 +y=0.0065 +z=-0.0209 +s=0.00195 +rx=-0.00039 +ry=0.00080 +rz=-0.00114 +dx=-0.0029 +dy=-0.0002 +dz=-0.0006 +ds=0.00001 +drx=-0.00011 +dry=-0.00019 +drz=0.00007 +t_epoch=1988.0 +convention=position_vector
<ITRF92> +proj=helmert +x=0.0147 +y=0.0135 +z=-0.0139 +s=0.00075 +rz=-0.00018 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1988.0 +transpose
<ITRF92> +proj=helmert +x=0.0147 +y=0.0135 +z=-0.0139 +s=0.00075 +rz=-0.00018 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1988.0 +convention=position_vector
<ITRF91> +proj=helmert +x=0.0267 +y=0.0275 +z=-0.0199 +s=0.00215 +rz=-0.00018 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1988.0 +transpose
<ITRF91> +proj=helmert +x=0.0267 +y=0.0275 +z=-0.0199 +s=0.00215 +rz=-0.00018 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1988.0 +convention=position_vector
<ITRF90> +proj=helmert +x=0.0247 +y=0.0235 +z=-0.0359 +s=0.00245 +rz=-0.00018 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1988.0 +transpose
<ITRF90> +proj=helmert +x=0.0247 +y=0.0235 +z=-0.0359 +s=0.00245 +rz=-0.00018 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1988.0 +convention=position_vector
<ITRF89> +proj=helmert +x=0.0297 +y=0.0475 +z=-0.0739 +s=0.00585 +rz=-0.00018 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1988.0 +transpose
<ITRF89> +proj=helmert +x=0.0297 +y=0.0475 +z=-0.0739 +s=0.00585 +rz=-0.00018 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1988.0 +convention=position_vector
<ITRF88> +proj=helmert +x=0.0247 +y=0.0115 +z=-0.0979 +s=0.00895 +rx=0.0001 +rz=-0.00018 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1988.0 +transpose
<ITRF88> +proj=helmert +x=0.0247 +y=0.0115 +z=-0.0979 +s=0.00895 +rx=0.0001 +rz=-0.00018 +dy=-0.0006 +dz=-0.0014 +ds=0.00001 +drz=0.00002 +t_epoch=1988.0 +convention=position_vector
+25 -25
View File
@@ -1,27 +1,27 @@
# ITRF2008 params are in mm/year, PJ_helmert uses m/year
<metadata> +version=1.0.0 +origin=http://itrf.ign.fr/doc_ITRF/Transfo-ITRF2008_ITRFs.txt +lastupdate=2017-07-26
<ITRF2005> +proj=helmert +x=-0.002 +y=-0.0009 +z=-0.0047 +s=0.00094 +dx=0.0003 +t_epoch=2000.0 +transpose
<ITRF2005> +proj=helmert +x=-0.002 +y=-0.0009 +z=-0.0047 +s=0.00094 +dx=0.0003 +t_epoch=2000.0 +convention=position_vector
<ITRF2000> +proj=helmert +x=-0.0019 +y=-0.0017 +z=-0.0105 +s=0.00134 +dx=0.0001 +dy=0.0001 +dz=-0.0018 +ds=0.00008 +t_epoch=2000.0 +transpose
<ITRF2000> +proj=helmert +x=-0.0019 +y=-0.0017 +z=-0.0105 +s=0.00134 +dx=0.0001 +dy=0.0001 +dz=-0.0018 +ds=0.00008 +t_epoch=2000.0 +convention=position_vector
<ITRF97> +proj=helmert +x=0.0048 +y=0.0026 +z=-0.0332 +s=0.00292 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +transpose
<ITRF97> +proj=helmert +x=0.0048 +y=0.0026 +z=-0.0332 +s=0.00292 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +convention=position_vector
<ITRF96> +proj=helmert +x=0.0048 +y=0.0026 +z=-0.0332 +s=0.00292 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +transpose
<ITRF96> +proj=helmert +x=0.0048 +y=0.0026 +z=-0.0332 +s=0.00292 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +convention=position_vector
<ITRF94> +proj=helmert +x=0.0048 +y=0.0026 +z=-0.0332 +s=0.00292 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +transpose
<ITRF94> +proj=helmert +x=0.0048 +y=0.0026 +z=-0.0332 +s=0.00292 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +convention=position_vector
<ITRF93> +proj=helmert +x=-0.024 +y=0.0024 +z=-0.00386 +s=0.00341 +rx=-0.00171 +ry=-0.00148 +rz=-0.0003 +dx=-0.0028 +dy=-0.0001 +dz=-0.0024 +ds=0.00009 +drx=-0.00011 +dry=-0.00019 +drz=0.00007 +t_epoch=2000.0 +transpose
<ITRF93> +proj=helmert +x=-0.024 +y=0.0024 +z=-0.00386 +s=0.00341 +rx=-0.00171 +ry=-0.00148 +rz=-0.0003 +dx=-0.0028 +dy=-0.0001 +dz=-0.0024 +ds=0.00009 +drx=-0.00011 +dry=-0.00019 +drz=0.00007 +t_epoch=2000.0 +convention=position_vector
<ITRF92> +proj=helmert +x=0.0128 +y=0.0046 +z=-0.0412 +s=0.00221 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +transpose
<ITRF92> +proj=helmert +x=0.0128 +y=0.0046 +z=-0.0412 +s=0.00221 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +convention=position_vector
<ITRF91> +proj=helmert +x=0.0248 +y=0.0186 +z=-0.0472 +s=0.00361 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +transpose
<ITRF91> +proj=helmert +x=0.0248 +y=0.0186 +z=-0.0472 +s=0.00361 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +convention=position_vector
<ITRF90> +proj=helmert +x=0.0228 +y=0.0146 +z=-0.0632 +s=0.00391 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +transpose
<ITRF90> +proj=helmert +x=0.0228 +y=0.0146 +z=-0.0632 +s=0.00391 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +convention=position_vector
<ITRF89> +proj=helmert +x=0.0278 +y=0.0386 +z=-0.1012 +s=0.00731 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +transpose
<ITRF89> +proj=helmert +x=0.0278 +y=0.0386 +z=-0.1012 +s=0.00731 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +convention=position_vector
<ITRF88> +proj=helmert +x=0.0228 +y=0.0026 +z=-0.1252 +s=0.01041 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +transpose
<ITRF88> +proj=helmert +x=0.0228 +y=0.0026 +z=-0.1252 +s=0.01041 +rz=0.00006 +dx=0.0001 +dy=-0.0005 +dz=-0.0032 +ds=0.00009 +drz=0.00002 +t_epoch=2000.0 +convention=position_vector
# ITRF2008 Plate Motion Model parameters
@@ -32,30 +32,30 @@
# J. Geophys. Res., 117, B07402, doi:10.1029/2011JB008930.
<AMUR> +proj=helmert +drx=-0.000190 +dry=-0.000442 +drz=0.000915
<AMUR> +proj=helmert +drx=-0.000190 +dry=-0.000442 +drz=0.000915 +convention=position_vector
<ANTA> +proj=helmert +drx=-0.000252 +dry=-0.000302 +drz=0.000643
<ANTA> +proj=helmert +drx=-0.000252 +dry=-0.000302 +drz=0.000643 +convention=position_vector
<ARAB> +proj=helmert +drx=0.001202 +dry=-0.000054 +drz=0.001485
<ARAB> +proj=helmert +drx=0.001202 +dry=-0.000054 +drz=0.001485 +convention=position_vector
<AUST> +proj=helmert +drx=0.001504 +dry=0.001172 +drz=0.001228
<AUST> +proj=helmert +drx=0.001504 +dry=0.001172 +drz=0.001228 +convention=position_vector
<CARB> +proj=helmert +drx=0.000049 +dry=-0.001088 +drz=0.000664
<CARB> +proj=helmert +drx=0.000049 +dry=-0.001088 +drz=0.000664 +convention=position_vector
<EURA> +proj=helmert +drx=-0.000083 +dry=0.000534 +drz=0.000750
<EURA> +proj=helmert +drx=-0.000083 +dry=0.000534 +drz=0.000750 +convention=position_vector
<INDI> +proj=helmert +drx=0.001232 +dry=0.000303 +drz=0.001540
<INDI> +proj=helmert +drx=0.001232 +dry=0.000303 +drz=0.001540 +convention=position_vector
<NAZC> +proj=helmert +drx=-0.000330 +dry=-0.001551 +drz=0.001625
<NAZC> +proj=helmert +drx=-0.000330 +dry=-0.001551 +drz=0.001625 +convention=position_vector
<NOAM> +proj=helmert +drx=0.000035 +dry=-0.000662 +drz=0.0001
<NOAM> +proj=helmert +drx=0.000035 +dry=-0.000662 +drz=0.0001 +convention=position_vector
<NUBI> +proj=helmert +drx=0.000095 +dry=-0.000598 +drz=0.000723
<NUBI> +proj=helmert +drx=0.000095 +dry=-0.000598 +drz=0.000723 +convention=position_vector
<PCFC> +proj=helmert +drx=0.000411 +dry=0.001036 +drz=-0.002166
<PCFC> +proj=helmert +drx=0.000411 +dry=0.001036 +drz=-0.002166 +convention=position_vector
<SOAM> +proj=helmert +drx=-0.000243 +dry=-0.000311 +drz=-0.000154
<SOAM> +proj=helmert +drx=-0.000243 +dry=-0.000311 +drz=-0.000154 +convention=position_vector
<SOMA> +proj=helmert +drx=-0.000080 +dry=-0.000745 +drz=0.000897
<SOMA> +proj=helmert +drx=-0.000080 +dry=-0.000745 +drz=0.000897 +convention=position_vector
<SUND> +proj=helmert +drx=0.000047 +dry=-0.001 +drz=0.000975
<SUND> +proj=helmert +drx=0.000047 +dry=-0.001 +drz=0.000975 +convention=position_vector
+23 -23
View File
@@ -1,29 +1,29 @@
# ITRF2014 params are in mm/year, PJ_helmert uses m/year
<metadata> +version=1.0.0 +origin=http://itrf.ign.fr/doc_ITRF/Transfo-ITRF2014_ITRFs.txt +lastupdate=2017-07-26
<ITRF2008> +proj=helmert +x=0.0016 +y=0.0019 +z=0.0024 +s=-0.00002 +dz=-0.0001 +ds=0.00003 +t_epoch=2010.0 +transpose
<ITRF2008> +proj=helmert +x=0.0016 +y=0.0019 +z=0.0024 +s=-0.00002 +dz=-0.0001 +ds=0.00003 +t_epoch=2010.0 +convention=position_vector
<ITRF2005> +proj=helmert +x=0.0026 +y=0.001 +z=-0.0023 +s=0.00092 +dx=0.0003 +dz=-0.0001 +ds=0.00003 +t_epoch=2010.0 +transpose
<ITRF2005> +proj=helmert +x=0.0026 +y=0.001 +z=-0.0023 +s=0.00092 +dx=0.0003 +dz=-0.0001 +ds=0.00003 +t_epoch=2010.0 +convention=position_vector
<ITRF2000> +proj=helmert +x=0.0007 +y=0.0012 +z=-0.0261 +s=0.00212 +dx=0.0001 +dy=0.0001 +dz=-0.0019 +ds=0.00011 +t_epoch=2010.0 +transpose
<ITRF2000> +proj=helmert +x=0.0007 +y=0.0012 +z=-0.0261 +s=0.00212 +dx=0.0001 +dy=0.0001 +dz=-0.0019 +ds=0.00011 +t_epoch=2010.0 +convention=position_vector
<ITRF97> +proj=helmert +x=0.0074 +y=-0.0005 +z=-0.0628 +d=0.0038 +rz=0.00026 +dx0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +transpose
<ITRF97> +proj=helmert +x=0.0074 +y=-0.0005 +z=-0.0628 +d=0.0038 +rz=0.00026 +dx0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +convention=position_vector
<ITRF96> +proj=helmert +x=0.0074 +y=-0.0005 +z=-0.0628 +s=0.0038 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +t_epoch=2010.0 +transpose
<ITRF96> +proj=helmert +x=0.0074 +y=-0.0005 +z=-0.0628 +s=0.0038 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +t_epoch=2010.0 +convention=position_vector
<ITRF94> +proj=helmert +x=0.0074 +y=-0.0005 +z=-0.0628 +s=0.0038 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +t_epoch=2010.0 +transpose
<ITRF94> +proj=helmert +x=0.0074 +y=-0.0005 +z=-0.0628 +s=0.0038 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +t_epoch=2010.0 +convention=position_vector
<ITRF93> +proj=helmert +x=-0.0504 +y=0.0033 +z=-0.0602 +s=0.00429 +rx=-0.00281 +ry=-0.00338 +rz=0.0004 +dx=-0.0028 +dy=-0.0001 +dz=-0.0025 +ds=0.00012 +drx=-0.00011 +dry=-0.00019 +drz=0.00007 +t_epoch=2010.0 +transpose
<ITRF93> +proj=helmert +x=-0.0504 +y=0.0033 +z=-0.0602 +s=0.00429 +rx=-0.00281 +ry=-0.00338 +rz=0.0004 +dx=-0.0028 +dy=-0.0001 +dz=-0.0025 +ds=0.00012 +drx=-0.00011 +dry=-0.00019 +drz=0.00007 +t_epoch=2010.0 +convention=position_vector
<ITRF92> +proj=helmert +x=0.0154 +y=0.0015 +z=-0.0708 +s=0.00309 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +transpose
<ITRF92> +proj=helmert +x=0.0154 +y=0.0015 +z=-0.0708 +s=0.00309 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +convention=position_vector
<ITRF91> +proj=helmert +x=0.0274 +y=0.0155 +z=-0.0768 +s=0.00449 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +transpose
<ITRF91> +proj=helmert +x=0.0274 +y=0.0155 +z=-0.0768 +s=0.00449 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +convention=position_vector
<ITRF90> +proj=helmert +x=0.0254 +y=0.0115 +z=-0.0928 +s=0.00479 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +transpose
<ITRF90> +proj=helmert +x=0.0254 +y=0.0115 +z=-0.0928 +s=0.00479 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +convention=position_vector
<ITRF89> +proj=helmert +x=0.0304 +y=0.0355 +z=-0.1308 +s=0.00819 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +transpose
<ITRF89> +proj=helmert +x=0.0304 +y=0.0355 +z=-0.1308 +s=0.00819 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +convention=position_vector
<ITRF88> +proj=helmert +x=0.0254 +y=-0.0005 +z=-0.1548 +s=0.01129 +rx=0.0001 +rz= +dx=0.00026 +dy=0.0001 +dx=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +transpose
<ITRF88> +proj=helmert +x=0.0254 +y=-0.0005 +z=-0.1548 +s=0.01129 +rx=0.0001 +rz= +dx=0.00026 +dy=0.0001 +dx=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +convention=position_vector
# ITRF2014 Plate Motion Model parameters
#
@@ -32,24 +32,24 @@
# Z. Altamimi et al, 2017, ITRF2014 plate motion model,
# doi: 10.1093/gji/ggx136
<ANTA> +proj=helmert +drx=−0.000248 +dry=−0.000324 +drz=0.000675
<ANTA> +proj=helmert +drx=−0.000248 +dry=−0.000324 +drz=0.000675 +convention=position_vector
<ARAB> +proj=helmert +drx=0.001154 +dry=−0.000136 +drz=0.001444
<ARAB> +proj=helmert +drx=0.001154 +dry=−0.000136 +drz=0.001444 +convention=position_vector
<AUST> +proj=helmert +drx=0.001510 +dry=0.001182 +drz=0.001215
<AUST> +proj=helmert +drx=0.001510 +dry=0.001182 +drz=0.001215 +convention=position_vector
<EURA> +proj=helmert +drx=−0.000085 +dry=−0.000531 +drz=0.000770
<EURA> +proj=helmert +drx=−0.000085 +dry=−0.000531 +drz=0.000770 +convention=position_vector
<INDI> +proj=helmert +drx=0.001154 +dry=−0.000005 +drz=0.001454
<INDI> +proj=helmert +drx=0.001154 +dry=−0.000005 +drz=0.001454 +convention=position_vector
<NAZC> +proj=helmert +drx=−0.000333 +dry=−0.001544 +drz=0.001623
<NAZC> +proj=helmert +drx=−0.000333 +dry=−0.001544 +drz=0.001623 +convention=position_vector
<NOAM> +proj=helmert +drx=0.000024 +dry=-0.000694 +drz=-0.000063
<NOAM> +proj=helmert +drx=0.000024 +dry=-0.000694 +drz=-0.000063 +convention=position_vector
<NUBI> +proj=helmert +drx=0.000099 +dry=−0.000614 +drz=0.000733
<NUBI> +proj=helmert +drx=0.000099 +dry=−0.000614 +drz=0.000733 +convention=position_vector
<PCFC> +proj=helmert +drx=−0.000409 +dry=0.001047 +drz=-0.002169
<PCFC> +proj=helmert +drx=−0.000409 +dry=0.001047 +drz=-0.002169 +convention=position_vector
<SOAM> +proj=helmert +drx=−0.000270 +dry=−0.000301 +drz=−0.000140
<SOAM> +proj=helmert +drx=−0.000270 +dry=−0.000301 +drz=−0.000140 +convention=position_vector
<SOMA> +proj=helmert +drx=−0.000121 +dry=−0.000794 +drz=0.000884
<SOMA> +proj=helmert +drx=−0.000121 +dry=−0.000794 +drz=0.000884 +convention=position_vector
+55
View File
@@ -0,0 +1,55 @@
DATAPATH = $(top_srcdir)/data
pkgdata_DATA = GL27 nad.lst proj_def.dat nad27 nad83 world epsg esri \
esri.extra other.extra \
CH IGNF \
ITRF2000 ITRF2008 ITRF2014
EXTRA_DIST = GL27 nad.lst proj_def.dat nad27 nad83 \
world epsg esri \
esri.extra other.extra \
CH IGNF \
ITRF2000 ITRF2008 ITRF2014 \
CMakeLists.txt tests/test_nodata.gtx null.lla
process-nad2bin:
@if [ -f $(DATAPATH)/null.lla -a ! -f null ] || [ -f $(DATAPATH)/conus.lla -a ! -f conus ] ; then \
for x in $(DATAPATH)/*.lla ; do \
DEST=`basename $$x .lla`; \
echo "../src/nad2bin$(EXEEXT) $$DEST < $$x"; \
../src/nad2bin$(EXEEXT) $$DEST < $$x ; \
done; \
fi
install-data-local: process-nad2bin
$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
@if [ -f $(DATAPATH)/null.lla -a ! -f $(DATAPATH)/null ] || [ -f $(DATAPATH)/conus.lla -a ! -f $(DATAPATH)/conus ] ; then \
for x in $(DATAPATH)/*.lla ; do \
DEST=$(DESTDIR)$(pkgdatadir)/`basename $$x .lla`; \
echo "../src/nad2bin$(EXEEXT) $$DEST < $$x"; \
../src/nad2bin$(EXEEXT) $$DEST < $$x ; \
if [ $$? -ne 0 ] ; then \
echo "nad2bin$(EXEEXT) failed to install $$DEST"; \
exit 1; \
fi; \
done; \
else \
echo "nad2nad NADCON source files not present"; \
fi
@for gridfile in $(DATAPATH)/*.gsb $(DATAPATH)/*.gtx $(DATAPATH)/ntv1_can.dat dummy \
$(DATAPATH)/alaska $(DATAPATH)/conus $(DATAPATH)/hawaii $(DATAPATH)/null \
$(DATAPATH)/prvi $(DATAPATH)/stgeorge $(DATAPATH)/stlrnc $(DATAPATH)/stpaul \
$(DATAPATH)/FL $(DATAPATH)/MD $(DATAPATH)/TN $(DATAPATH)/WI $(DATAPATH)/WO; do \
if test "$$gridfile" != "dummy" -a -f "$$gridfile" ; then \
echo $(INSTALL_DATA) $$gridfile $(DESTDIR)$(pkgdatadir)/`basename $$gridfile`; \
$(INSTALL_DATA) $$gridfile $(DESTDIR)$(pkgdatadir)/`basename $$gridfile`; \
fi; \
done
# For out-of-tree builds, link all file of the source data dir to the generated data
check-local: process-nad2bin
@if [ ! -f GL27 ]; then \
for x in $(DATAPATH)/*; do \
ln -sf $$x .; \
done \
fi
+36
View File
@@ -0,0 +1,36 @@
The files in this directory are support data for PROJ programs
as well as test scripts for testing proj installation.
File Contents:
README --- This file
proj_def.dat --- basic default file used by proj.
epsg --- Translation of EPSG GCS/PCS codes into PROJ via init= mechanism.
epsg-deprecated --- EPSG definitions that have been deprecated. They are
not part of 'epsg' anymore, but may have been delivered
with earlier versions of 'epsg'.
Thus, they might occur e.g. in WMS (Web Mapping Services)
running with old EPSG definitions.
This file is not complete at all - it contains just
definitions that were individually reported.
nad27 --- North American Datum 1927 for "init=" definition of
State Plane Coordinate Systems (SPCS).
nad83 --- North American Datum 1983 for "init=" definition of SPCS.
GL27 --- Great Lakes Survey grids, NAD27
world --- Proj specifications for several international grid systems.
nad.lst --- Reference list of SPCS States and NGS datum identifiers
IGNF --- Translation of French Mapping Agency codes into PROJ via init= mechanism.
install --- Unix shell (sh) script to install nad2nad file and proj
init files. Read beginning for usage instructions.
Additional data files are available in https://github.com/OSGeo/proj-datumgrid/
View File
View File
View File
View File
View File
View File
View File
View File
View File
+1 -1
View File
@@ -2,7 +2,7 @@
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXOPTS = -W
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
+13
View File
@@ -0,0 +1,13 @@
FROM ubuntu:18.04
RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
python-dev python-pip g++ doxygen dvipng latexmk \
cmake libjpeg8-dev zlib1g-dev texlive-latex-base \
texlive-latex-extra git \
graphviz python-matplotlib
RUN pip install Sphinx breathe \
sphinx_bootstrap_theme awscli sphinxcontrib-bibtex \
sphinx_rtd_theme
Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

+86
View File
@@ -0,0 +1,86 @@
name: proj
channels:
- defaults
dependencies:
- blas=1.0=mkl
- bzip2=1.0.6=h1de35cc_5
- ca-certificates=2018.03.07=0
- cairo=1.14.12=hc4e6be7_4
- certifi=2018.8.24=py37_1
- click=6.7=py37_0
- click-plugins=1.0.3=py37_1
- cligj=0.4.0=py37_1
- curl=7.61.0=ha441bb4_0
- cycler=0.10.0=py37_0
- descartes=1.1.0=py37_0
- expat=2.2.6=h0a44026_0
- fiona=1.7.12=py37h0dff353_0
- fontconfig=2.13.0=h5d5b041_1
- freetype=2.9.1=hb4e5f40_0
- freexl=1.0.5=h1de35cc_0
- gdal=2.2.4=py37h6440ff4_1
- geos=3.6.2=h5470d99_2
- gettext=0.19.8.1=h15daf44_3
- giflib=5.1.4=h1de35cc_1
- glib=2.56.2=hd9629dc_0
- hdf4=4.2.13=h39711bb_2
- hdf5=1.10.2=hfa1e0ec_1
- icu=58.2=h4b95b61_1
- intel-openmp=2019.0=118
- jpeg=9b=he5867d9_2
- json-c=0.13.1=h3efe00b_0
- kealib=1.4.7=h40e48e4_6
- kiwisolver=1.0.1=py37h0a44026_0
- krb5=1.16.1=h24a3359_6
- libboost=1.67.0=hebc422b_4
- libcurl=7.61.0=hf30b1f0_0
- libcxx=4.0.1=h579ed51_0
- libcxxabi=4.0.1=hebd6815_0
- libdap4=3.19.1=h3d3e54a_0
- libedit=3.1.20170329=hb402a30_2
- libffi=3.2.1=h475c297_4
- libgdal=2.2.4=h7b1ea53_1
- libgfortran=3.0.1=h93005f0_2
- libiconv=1.15=hdd342a3_7
- libkml=1.3.0=hbe12b63_4
- libnetcdf=4.6.1=h4e6abe9_1
- libpng=1.6.34=he12f830_0
- libpq=10.5=hf30b1f0_0
- libspatialite=4.3.0a=ha12ebda_19
- libssh2=1.8.0=h322a93b_4
- libtiff=4.0.9=hcb84e12_2
- libuuid=1.0.3=h6bb4b03_2
- libxml2=2.9.8=hab757c2_1
- matplotlib=2.2.3=py37h54f8f79_0
- mkl=2019.0=118
- mkl_fft=1.0.4=py37h5d10147_1
- mkl_random=1.0.1=py37h5d10147_1
- munch=2.3.2=py37_0
- ncurses=6.1=h0a44026_0
- numpy=1.15.1=py37h6a91979_0
- numpy-base=1.15.1=py37h8a80b8c_0
- openjpeg=2.3.0=hb95cd4c_1
- openssl=1.0.2p=h1de35cc_0
- pcre=8.42=h378b8a2_0
- pip=10.0.1=py37_0
- pixman=0.34.0=hca0a616_3
- poppler=0.65.0=ha097c24_1
- poppler-data=0.4.9=0
- proj4=5.0.1=h1de35cc_0
- pyparsing=2.2.0=py37_1
- python=3.7.0=hc167b69_0
- python-dateutil=2.7.3=py37_0
- pytz=2018.5=py37_0
- readline=7.0=h1de35cc_5
- setuptools=40.2.0=py37_0
- shapely=1.6.4=py37h20de77a_0
- six=1.11.0=py37_1
- sqlite=3.24.0=ha441bb4_0
- tk=8.6.8=ha441bb4_0
- tornado=5.1=py37h1de35cc_0
- wheel=0.31.1=py37_0
- xerces-c=3.2.1=h44e365a_0
- xz=5.2.4=h1de35cc_4
- zlib=1.2.11=hf3cbc9b_2
prefix: /usr/local/miniconda3/envs/proj
+2
View File
@@ -0,0 +1,2 @@
python3 figure_captions.py plotdefs.json ../source/operations/projections/
+79
View File
@@ -0,0 +1,79 @@
import sys
import os
import json
import pathlib
import re
def update_caption(image_filename, proj_string, doc_directory,
doc_extension='rst'):
"""
Update the figure caption with a proj-string
This function assumes that within the "doc_directory" there is a file with
the same basename as the "image_filename" (e.g. for the image "aea.png",
the function will assume that there is a documentation file "aea.rst").
Within that documentation file, the function will try to find a section
starting with "..figure:: ./images/" and ending with a line like
" proj-string:...".
This line will be replaced with something like
" proj-string: ``+proj=aea``"
:param filename: The name of the image that's used in the documentation
:param proj_string: The proj-string that was used to generate the image
:param doc_directory: The directory containing the projection documentation .rst files
:return:
"""
basename, image_extension = os.path.splitext(image_filename)
doc_path = os.path.join(doc_directory, basename + os.extsep + doc_extension)
p = pathlib.Path(doc_path)
if p.is_file():
replacement_string = r'\1 proj-string: ``{}``\2'.format(proj_string)
new_doc_content = re.sub(
r'(\.\. figure\:\: \.\/images\/.*?^)[ \t]*proj-string.*?($)',
replacement_string,
p.read_text(),
flags=re.MULTILINE + re.DOTALL)
p.write_text(new_doc_content)
else:
print("File {} not found.".format(doc_path))
def main():
"""
Main function of caption replacement script.
Parses json-file with plot setups and runs the caption replacement
for each plot setup.
"""
if os.path.exists(sys.argv[1]):
# first argument is the JSON plot definition setup file
with open(sys.argv[1]) as plotsetup:
plotdefs = json.load(plotsetup)
else:
raise ValueError('No plot definition file entered')
plots = []
# second argument is the projections documentation directory
outdir = sys.argv[2]
for i, plotdef in enumerate(plotdefs):
if plots != [] and plotdef['name'] not in plots:
continue
print(i, plotdef['projstring'])
if 'skip' in plotdef.keys():
print('skipping')
continue
update_caption(plotdef['name'],
plotdef['projstring'],
outdir)
if __name__ == "__main__":
sys.exit(main())
+3 -7
View File
@@ -1,7 +1,3 @@
for f in $(ls *.png)
do
convert $f -fx '(r+g+b)/3' -colorspace Gray $f
done;
# Use Imagemagick to convert all images to grayscale,
# printing progress information
mogrify -monitor -colorspace Gray *.png
+25 -12
View File
@@ -62,7 +62,7 @@ from shapely.ops import transform
from descartes import PolygonPatch
PROJ = '../../src/proj'
PROJ_LIB = '../../nad'
PROJ_LIB = '../../data'
LINE_LOW = 'data/coastline.geojson'
LINE_MED = 'data/coastline50.geojson'
@@ -85,7 +85,7 @@ def interp_coords(coords, tol):
The function tries to densify a list of coordinates based on a simple measure.
If two adjacent points in the input coordinate list are further away from each
other than the specified tolerance, the list will be densied between those two
other than the specified tolerance, the list will be densified between those two
points. Roughly speaking, a point will be inserted every `tol` between the
points.
@@ -118,7 +118,7 @@ def interp_coords(coords, tol):
xy.append((x[offset:i], y[offset:i]))
# Interpolate between points above tolerance.
n = np.ceil(dsts[i] / tol)
n = int(np.ceil(dsts[i] / tol))
x1 = np.linspace(x[i], x[i + 1], n + 1)
y1 = np.linspace(y[i], y[i + 1], n + 1)
xy.append((x1[:-1], y1[:-1]))
@@ -157,8 +157,14 @@ def project(coordinates, proj_string, in_radians=False):
args = [PROJ, '-b']
args.extend(proj_string.split(' '))
proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
env={'PROJ_LIB': os.path.abspath(PROJ_LIB)})
try:
proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
env={'PROJ_LIB': os.path.abspath(PROJ_LIB)})
except FileNotFoundError:
print("'proj' binary not found, please update PROJ constant in plot.py "
"to point to your local 'proj' binary")
exit(1)
stdout, _ = proc.communicate(coordinates.tobytes(order='C'))
out = np.frombuffer(stdout, dtype=np.double)
@@ -230,7 +236,7 @@ def plotproj(plotdef, data, outdir):
'''
Plot map.
'''
fig, axes = plt.subplots()
axes = plt.axes()
bounds = (plotdef['lonmin'], plotdef['latmin'], plotdef['lonmax'], plotdef['latmax'])
for geom in data.filter(bbox=bounds):
@@ -288,23 +294,30 @@ def plotproj(plotdef, data, outdir):
y = feature[:, 1]
axes.plot(x, y, color=COLOR_GRAT, linewidth=0.4)
axes.axis('off')
# Switch off the axis lines...
plt.axis('off')
# ... and additionally switch off the visibility of the axis lines and
# labels so they can be removed by "bbox_inches='tight'" when saving
axes.get_xaxis().set_visible(False)
axes.get_yaxis().set_visible(False)
font = {
'family': 'serif',
'color': 'black',
'style': 'italic',
'size': 12
}
fig.suptitle(plotdef['projstring'], fontdict=font)
axes.autoscale(tight=True)
# Make sure the plot is not stretched
axes.set_aspect('equal')
if not os.path.exists(outdir):
os.makedirs(outdir)
fig.savefig(outdir + '/' + plotdef['filename'], dpi=300)
plt.savefig(outdir + '/' + plotdef['filename'],
dpi=400,
bbox_inches='tight')
# Clean up
fig = None
del fig
axes = None
del axes
plt.close()
+34
View File
@@ -87,6 +87,18 @@
"res": "low",
"type": "poly"
},
{
"filename": "bertin1953.png",
"latmax": 90,
"latmin": -90,
"latmin": -60,
"lonmax": 180,
"lonmin": -180,
"name": "bertin1953",
"projstring": "+proj=bertin1953",
"res": "low",
"type": "poly"
},
{
"filename": "bipc.png",
"latmax": 90,
@@ -307,6 +319,17 @@
"res": "low",
"type": "poly"
},
{
"filename": "eqearth.png",
"latmax": 90,
"latmin": -90,
"lonmax": 180,
"lonmin": -180,
"name": "eqearth",
"projstring": "+proj=eqearth",
"res": "low",
"type": "poly"
},
{
"filename": "euler.png",
"latmax": 90,
@@ -1231,6 +1254,17 @@
"res": "low",
"type": "poly"
},
{
"filename": "tobmerc.png",
"latmax": 80,
"latmin": -80,
"lonmax": 180,
"lonmin": -180,
"name": "tobmerc",
"projstring": "+proj=tobmerc",
"res": "low",
"type": "poly"
},
{
"filename": "tpeqd.png",
"latmax": 90,
+2 -2
View File
@@ -26,7 +26,7 @@ Citation
To cite PROJ in publications use:
PROJ contributors (2018). PROJ coordinate transformation software
library. Open Source Geospatial Foundation. URL http://proj4.org/.
library. Open Source Geospatial Foundation. URL https://proj4.org/.
A BibTeX entry for LaTeX users is
@@ -37,7 +37,7 @@ A BibTeX entry for LaTeX users is
author = {{PROJ contributors}},
organization = {Open Source Geospatial Foundation},
year = {2018},
url = {http://proj4.org/},
url = {https://proj4.org/},
}
License
+15 -2
View File
@@ -32,6 +32,12 @@ The following control parameters can appear in any order:
Specify input columns for (up to) 4 input parameters. Defaults to 1,2,3,4.
.. option:: -d <n>
.. versionadded:: 5.2.0
Specify the number of decimals in the output.
.. option:: -I
Do the inverse transformation.
@@ -133,6 +139,13 @@ Should give results comparable to the classic :program:`proj` command
cct -t 0 -z 0 +proj=utm +ellps=GRS80 +zone=32
6. Auxiliary data following the coordinate input is forward to the output
stream:
.. code-block:: console
$ echo 12 56 100 2018.0 auxiliary data | cct +proj=merc
1335833.8895 7522963.2411 100.0000 2018.0000 auxiliary data
Background
**********
@@ -171,10 +184,10 @@ Hence, in honour of *cct* (the geodesist) this is :program:`cct` (the program).
Bugs
****
A list of know bugs can be found at http://github.com/OSGeo/proj.4/issues
A list of know bugs can be found at https://github.com/OSGeo/proj.4/issues
where new bug reports can be submitted to.
Home page
*********
http://proj4.org/
https://proj4.org/
+9 -3
View File
@@ -36,6 +36,12 @@ The following control parameters can appear in any order:
line to be passed through without processing. This option applicable to
ASCII input only. (# is the default value).
.. option:: -d <n>
.. versionadded:: 5.2.0
Specify the number of decimals in the output.
.. option:: -e <string>
Where *string* is an arbitrary string to be output if an error is detected during
@@ -171,7 +177,7 @@ The x-y output data will appear as three lines of:
::
1402285.99 5076292.42 0.000
1402285.98 5076292.42 -0.00
.. only:: man
@@ -183,10 +189,10 @@ The x-y output data will appear as three lines of:
Bugs
****
A list of know bugs can be found at http://github.com/OSGeo/proj.4/issues
A list of know bugs can be found at https://github.com/OSGeo/proj.4/issues
where new bug reports can be submitted to.
Home page
*********
http://proj4.org/
https://proj4.org/
+2 -2
View File
@@ -205,10 +205,10 @@ Further reading
Bugs
****
A list of know bugs can be found at http://github.com/OSGeo/proj.4/issues
A list of know bugs can be found at https://github.com/OSGeo/proj.4/issues
where new bug reports can be submitted to.
Home page
*********
http://proj4.org/
https://proj4.org/
+10 -2
View File
@@ -275,6 +275,14 @@ gie command language
See ``gie -l`` for a list of error codes that can be ignored.
.. option:: require_grid <grid_name>
Checks the availability of the grid <grid_name>. If it is not found, then
all :option:`accept`/:option:`expect` pairs until the next
:option:`operation` will be skipped.
:option:`require_grid` can be repeated several times to specify several grids whose
presence is required.
.. option:: echo <text>
Add user defined text to the output stream. See the example below.
@@ -363,10 +371,10 @@ So in honour, and hopefully also in the spirit, of Gerald Ian Evenden
Bugs
****
A list of know bugs can be found at http://github.com/OSGeo/proj.4/issues
A list of know bugs can be found at https://github.com/OSGeo/proj.4/issues
where new bug reports can be submitted to.
Home page
*********
http://proj4.org/
https://proj4.org/
+10 -4
View File
@@ -20,7 +20,7 @@ Synopsis
Description
***********
:program:`proj` and :program:`invproj` perform respective forward and inverse
transformation of cartographic data to or from cartesian data with a wide
conversion of cartographic data to or from cartesian data with a wide
range of selectable projection functions.
:program:`invproj` may not be available on all platforms; in this case
@@ -37,6 +37,12 @@ The following control parameters can appear in any order
floating point words. This option is to be used when :program:`proj` is a child process
and allows bypassing formatting operations.
.. option:: -d <n>
.. versionadded:: 5.2.0
Specify the number of decimals in the output.
.. option:: -i
Selects binary input only (see :option:`-b`).
@@ -179,7 +185,7 @@ also used for supporting files like datum shift files.
One or more files (processed in left to right order) specify the source of
data to be transformed. A ``-`` will specify the location of processing standard
data to be converted. A ``-`` will specify the location of processing standard
input. If no files are specified, the input is assumed to be from stdin.
For ASCII input data the two data values must be in the first two white space
separated fields and when both input and output are ASCII all trailing
@@ -230,10 +236,10 @@ data will appear as three lines of::
Bugs
****
A list of know bugs can be found at http://github.com/OSGeo/proj.4/issues
A list of know bugs can be found at https://github.com/OSGeo/proj.4/issues
where new bug reports can be submitted to.
Home page
*********
http://proj4.org/
https://proj4.org/
+64
View File
@@ -0,0 +1,64 @@
###############################################################################
#
# Purpose: Configure custom bibliography style for sphinxcontrib-bibtex
# Author: Mike Toews <mwtoews at gmail.com>
#
###############################################################################
# Copyright (c) 2018, Mike Toews <mwtoews at gmail.com>
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
###############################################################################
import re
from pybtex.style.formatting.unsrt import Style as UnsrtStyle
from pybtex.style.labels.alpha import LabelStyle
from pybtex.plugin import register_plugin
class LinkLabelStyle(LabelStyle):
"""Citation label used in text, and before each item in the
References section"""
re_char_nums = re.compile(r'^[\d\w]+$')
def format_label(self, entry):
"""Returns BibTeX key for label
Raises KeyError if BibTeX key has other characters other than letters
and numbers.
"""
label = entry.key
if not self.re_char_nums.match(label):
raise KeyError(
'BibTeX key must contain only letters and numbers '
'(found {0!r})'.format(label))
return label
class CustomStyle(UnsrtStyle):
"""Citation style in the References section"""
default_label_style = 'linklabel'
default_name_style = 'lastfirst'
default_sorting_style = 'author_year_title'
# TODO: Make more Harvard-like, i.e. year after name(s)
register_plugin('pybtex.style.labels', 'linklabel', LinkLabelStyle)
register_plugin('pybtex.style.formatting', 'customstyle', CustomStyle)
+9
View File
@@ -35,3 +35,12 @@ The PROJ GitHub page can be found at https://github.com/OSGeo/proj.4
your questions about the use of PROJ on the mailing list instead.
Gitter
-------------------------------------------------------------------------------
Gitter is the instant messaging alternative to the mailing list. PROJ has a
room under the OSGeo organization. Most of the core developers stop by from
time to time for an informal chat. You are more than welcome to join the
discussion.
The Gitter room can be found at https://gitter.im/OSGeo/proj.4
+2 -2
View File
@@ -86,7 +86,7 @@ Write documentation
PROJ is in dire need of better documentation. Any contributions of
documentation are greatly appreciated. The PROJ documentation is
available on `proj4.org <http://proj4.org>`__. The website is generated
available on `proj4.org <https://proj4.org>`__. The website is generated
with `Sphinx <http://www.sphinx-doc.org/en/stable/>`__. Contributions to
the documentation should be made as `Pull
Requests <https://github.com/OSGeo/proj.4/pulls>`__ on GitHub.
@@ -159,7 +159,7 @@ repository:
Additional Resources
--------------------
- `General GitHub documentation <http://help.github.com/>`__
- `General GitHub documentation <https://help.github.com/>`__
- `GitHub pull request
documentation <https://help.github.com/articles/about-pull-requests/>`__
+1
View File
@@ -14,3 +14,4 @@ contributor the community is always very welcoming.
channels
contributing
code_contributions
rfc/index
+14
View File
@@ -0,0 +1,14 @@
.. _rfcs:
*****************************************************************************
Request for Comments
*****************************************************************************
A PROJ RFC describes a major change in the technological underpinnings of
PROJ, major additions to functionality, or changes in the direction of
the project.
.. toctree::
:maxdepth: 1
rfc-1
+172
View File
@@ -0,0 +1,172 @@
.. _rfc1:
====================================================================
PROJ RFC 1: Project Committee Guidelines
====================================================================
:Author: Frank Warmerdam, Howard Butler
:Contact: howard@hobu.co
:Status: Passed
:Last Updated: 2018-06-08
Summary
-----------
This document describes how the PROJ Project Steering Committee (PSC)
determines membership, and makes decisions on all aspects of the
PROJ project - both technical and non-technical.
Examples of PSC management responsibilities:
* setting the overall development road map
* developing technical standards and policies (e.g. coding standards,
file naming conventions, etc...)
* ensuring regular releases (major and maintenance) of PROJ software
* reviewing RFC for technical enhancements to the software
* project infrastructure (e.g. GitHub, continuous integration hosting options, etc...)
* formalization of affiliation with external entities such as OSGeo
* setting project priorities, especially with respect to project sponsorship
* creation and oversight of specialized sub-committees (e.g. project
infrastructure, training)
In brief the project team votes on proposals on the `proj mailing list`_. Proposals are available for review for at least two days, and a single
veto is sufficient delay progress though ultimately a majority of members can
pass a proposal.
.. _`proj mailing list`: http://lists.maptools.org/mailman/listinfo/proj
List of PSC Members
-------------------
(up-to-date as of 2018-06)
* Kristian Evers `@kbevers <https://github.com/kbevers>`_ (DK) **Chair**
* Howard Butler `@hobu <https://github.com/hobu>`_ (USA)
* Charles Karney `@cffk <https://github.com/cffk>`_ (USA)
* Thomas Knudsen `@busstoptaktik <https://github.com/busstoptaktik>`_ (DK)
* Even Rouault `@rouault <https://github.com/rouault>`_ (FR)
* Kurt Schwehr `@schwehr <https://github.com/schwehr>`_ (USA)
* Frank Warmerdam `@warmerdam <https://github.com/warmerdam>`_ (USA) **Emeritus**
Detailed Process
-----------------------
* Proposals are written up and submitted on the `proj mailing list`_
for discussion and voting, by any interested party, not just
committee members.
* Proposals need to be available for review for at least two business
days before a final decision can be made.
* Respondents may vote "+1" to indicate support for the proposal and a
willingness to support implementation.
* Respondents may vote "-1" to veto a proposal, but must provide clear
reasoning and alternate approaches to resolving the problem within
the two days.
* A vote of -0 indicates mild disagreement, but has no effect. A 0
indicates no opinion. A +0 indicate mild support, but has no
effect.
* Anyone may comment on proposals on the list, but only members of the
Project Steering Committee's votes will be counted.
* A proposal will be accepted if it receives +2 (including the
author) and no vetoes (-1).
* If a proposal is vetoed, and it cannot be revised to satisfy all
parties, then it can be resubmitted for an override vote in which a
majority of all eligible voters indicating +1 is sufficient to pass it.
Note that this is a majority of all committee members, not just those who
actively vote.
* Upon completion of discussion and voting the author should announce
whether they are proceeding (proposal accepted) or are withdrawing
their proposal (vetoed).
* The Chair gets a vote.
* The Chair is responsible for keeping track of who is a member of the
Project Steering Committee (perhaps as part of a PSC file in CVS).
* Addition and removal of members from the committee, as well as selection
of a Chair should be handled as a proposal to the committee.
* The Chair adjudicates in cases of disputes about voting.
RFC Origin
.............
PROJ RFC and Project Steering Committee is derived from similar governance
bodies in both the `GDAL <https://trac.osgeo.org/gdal/wiki/rfc1_pmc>`__ and
`MapServer <http://mapserver.org/development/rfc/ms-rfc-23.html>`__ software
projects.
When is Vote Required?
-----------------------
* Any change to committee membership (new members, removing inactive members)
* Changes to project infrastructure (e.g. tool, location or substantive
configuration)
* Anything that could cause backward compatibility issues.
* Adding substantial amounts of new code.
* Changing inter-subsystem APIs, or objects.
* Issues of procedure.
* When releases should take place.
* Anything dealing with relationships with external entities such as OSGeo
* Anything that might be controversial.
Observations
----------------
* The Chair is the ultimate adjudicator if things break down.
* The absolute majority rule can be used to override an obstructionist
veto, but it is intended that in normal circumstances vetoers need to be
convinced to withdraw their veto. We are trying to reach consensus.
Committee Membership
---------------------
The PSC is made up of individuals consisting of technical contributors
(e.g. developers) and prominent members of the PROJ user community.
There is no set number of members for the PSC although the initial desire
is to set the membership at 6.
Adding Members
..............
Any member of the `proj mailing list`_ may nominate someone for
committee membership at any time. Only existing PSC committee members may
vote on new members. Nominees must receive a majority vote from existing
members to be added to the PSC.
Stepping Down
.............
If for any reason a PSC member is not able to fully participate then they
certainly are free to step down. If a member is not active (e.g. no
voting, no IRC or email participation) for a period of two months then
the committee reserves the right to seek nominations to fill that position.
Should that person become active again (hey, it happens) then they would
certainly be welcome, but would require a nomination.
Membership Responsibilities
-----------------------------
Guiding Development
...............................
Members should take an active role guiding the development of new features
they feel passionate about. Once a change request has been accepted
and given a green light to proceed does not mean the members are free of
their obligation. PSC members voting "+1" for a change request are
expected to stay engaged and ensure the change is implemented and
documented in a way that is most beneficial to users. Note that this
applies not only to change requests that affect code, but also those
that affect the web site, technical infrastructure, policies and standards.
Mailing List Participation
...............................
PSC members are expected to be active on the
`proj mailing list`_, subject to Open Source mailing list
etiquette. Non-developer members of the PSC are not expected to respond
to coding level questions on the developer mailing list, however they
are expected to provide their thoughts and opinions on user level
requirements and compatibility issues when RFC discussions take place.
Updates
---------
**June 2018**
RFC 1 was ratified by the following members
+6 -3
View File
@@ -19,7 +19,9 @@ import datetime
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
sys.path.insert(0, os.path.abspath('.'))
import bibstyle
# -- General configuration ------------------------------------------------
@@ -31,6 +33,7 @@ import datetime
# ones.
extensions = [
'sphinx.ext.mathjax',
'sphinxcontrib.bibtex',
]
# Add any paths that contain templates here, relative to this directory.
@@ -62,7 +65,7 @@ copyright = u'1983-{0}'.format(now.year)
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
version = '5.0.1'
version = '6.0.0'
# use same |release| as |version|
release = version
@@ -82,7 +85,7 @@ language = None
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = []
exclude_patterns = ['operations/options/*.rst']
# The reST default role (used for this markup: `text`) to use for all
# documents.
+3 -3
View File
@@ -8,14 +8,14 @@ PROJ bindings are available for a number of different development platforms.
Python
======
`pyproj <http://pypi.python.org/pypi/pyproj>`_:
`pyproj <https://pypi.python.org/pypi/pyproj>`_:
Python interface (wrapper for PROJ)
Ruby
=======
`proj4rb <http://proj4rb.rubyforge.org>`_:
`proj4rb <https://github.com/cfis/proj4rb>`_:
Bindings for PROJ in ruby
TCL
@@ -26,7 +26,7 @@ Bindings for PROJ in tcl (critcl source)
MySQL
=====
`fProj4 <http://sourceforge.net/projects/mysqlscientific/files/fPROJ4/>`_:
`fProj4 <https://sourceforge.net/projects/mysqlscientific/files/fPROJ4/>`_:
Bindings for PROJ in MySQL
+24
View File
@@ -19,3 +19,27 @@ PROJ project or using the library in their own software.
cmake
bindings
migration
.. attention::
The ``projects.h`` header and the functions related to it is considered
deprecated from version 5.0.0 and onwards. The header will be removed
from PROJ in version 6.0.0 scheduled for release February 1st 2019.
.. attention::
The nmake build system on Windows will not be supported from
version 6.0.0 on onwards. Use CMake instead.
.. attention::
The ``proj_api.h`` header and the functions related to it is
considered deprecated from version 5.0.0 and onwards. The header will be
removed from PROJ in version 7.0.0 scheduled for release February 1st
2020.
.. attention::
With the introduction of PROJ 5, behavioural changes has been made to
existing functionality. Consult :ref:`differences` for the details.
+2 -2
View File
@@ -109,8 +109,8 @@ The same program implemented using PROJ v. 5:
return 1;
while (scanf("%lf %lf", &c.lp.lam, &c.lp.phi) == 2) {
c.lp.lam = proj_todeg(c.lp.lam);
c.lp.phi = proj_todeg(c.lp.phi);
c.lp.lam = proj_torad(c.lp.lam);
c.lp.phi = proj_torad(c.lp.phi);
c = proj_trans(P, PJ_FWD, c);
printf("%.2f\t%.2f\n", c.xy.x, c.xy.y);
}
+23 -23
View File
@@ -472,12 +472,12 @@ List structures
.. code-block:: C
struct PJ_OPERATIONS {
char *id; /* operation keyword */
PJ *(*proj)(PJ *); /* operation entry point */
char * const *descr; /* description text */
const char *id; /* operation keyword */
PJ *(*proj)(PJ *); /* operation entry point */
char * const *descr; /* description text */
};
.. c:member:: char *id
.. c:member:: const char *id
Operation keyword.
@@ -497,25 +497,25 @@ List structures
.. code-block:: C
struct PJ_ELLPS {
char *id;
char *major;
char *ell;
char *name;
const char *id;
const char *major;
const char *ell;
const char *name;
};
.. c:member:: char *id
.. c:member:: const char *id
Keyword name of the ellipsoid.
.. c:member:: char *major
.. c:member:: const char *major
Semi-major axis of the ellipsoid, or radius in case of a sphere.
.. c:member:: char *ell
.. c:member:: const char *ell
Elliptical parameter, e.g. `rf=298.257` or `b=6356772.2`.
.. c:member:: char *name
.. c:member:: const char *name
Name of the ellipsoid
@@ -526,21 +526,21 @@ List structures
.. code-block:: C
struct PJ_UNITS {
char *id; /* units keyword */
char *to_meter; /* multiply by value to get meters */
char *name; /* comments */
double factor; /* to_meter factor in actual numbers */
const char *id; /* units keyword */
const char *to_meter; /* multiply by value to get meters */
const char *name; /* comments */
double factor; /* to_meter factor in actual numbers */
};
.. c:member:: char *id
.. c:member:: const char *id
Keyword for the unit.
.. c:member:: char *to_meter
.. c:member:: const char *to_meter
Text representation of the factor that converts a given unit to meters
.. c:member:: char *name
.. c:member:: const char *name
Name of the unit.
@@ -555,15 +555,15 @@ List structures
.. code-block:: C
struct PJ_PRIME_MERIDIANS {
char *id;
char *defn;
const char *id;
const char *defn;
};
.. c:member:: char *id
.. c:member:: const char *id
Keyword for the prime meridian
.. c:member:: char *def
.. c:member:: const char *def
Offset from Greenwich in DMS format.
@@ -32,6 +32,10 @@ Transformation setup
PJ *P = proj_create(0, "+proj=etmerc +lat_0=38 +lon_0=125 +ellps=bessel");
If creation of the transformation object fails, the function returns `0` and
the PROJ error number is updated. The error number can be read with
:c:func:`proj_errno` or :c:func:`proj_context_errno`.
The returned :c:type:`PJ`-pointer should be deallocated with :c:func:`proj_destroy`.
:param PJ_CONTEXT* ctx: Threading context.
@@ -51,6 +55,10 @@ Transformation setup
char *args[3] = {"proj=utm", "zone=32", "ellps=GRS80"};
PJ* P = proj_create_argv(0, 3, args);
If creation of the transformation object fails, the function returns `0` and
the PROJ error number is updated. The error number can be read with
:c:func:`proj_errno` or :c:func:`proj_context_errno`.
The returned :c:type:`PJ`-pointer should be deallocated with :c:func:`proj_destroy`.
:param PJ_CONTEXT* ctx: Threading context
@@ -81,6 +89,11 @@ Transformation setup
PJ *P = proj_create_crs_to_crs(0, "epsg:25832", "epsg:25833", 0);
If creation of the transformation object fails, the function returns `0` and
the PROJ error number is updated. The error number can be read with
:c:func:`proj_errno` or :c:func:`proj_context_errno`.
The returned :c:type:`PJ`-pointer should be deallocated with :c:func:`proj_destroy`.
:param PJ_CONTEXT* ctx: Threading context.
@@ -212,12 +225,25 @@ Error reporting
Get a reading of the current error-state of :c:data:`P`. An non-zero error
codes indicates an error either with the transformation setup or during a
transformation.
transformation. In cases :c:data:`P` is `0` the error number of the default
context is read. A text representation of the error number can be retrieved
with :c:func:`proj_errno_string`.
:param: PJ* P: Transformation object.
:returns: :c:type:`int`
.. c:function:: int proj_context_errno(PJ_CONTEXT *ctx)
Get a reading of the current error-state of :c:data:`ctx`. An non-zero error
codes indicates an error either with the transformation setup or during a
transformation. A text representation of the error number can be retrieved
with :c:func:`proj_errno_string`.
:param: PJ_CONTEXT* ctx: threading context.
:returns: :c:type:`int`
.. c:function:: void proj_errno_set(PJ *P, int err)
Change the error-state of :c:data:`P` to `err`.
@@ -268,15 +294,14 @@ Change the error-state of :c:data:`P` to `err`.
.. c:function:: const char* proj_errno_string(int err)
.. versionadded:: 5.1.0
Get a text representation of an error number.
:param int err: Error number.
:returns: :c:type:`const char*` String with description of error.
.. note:: Available from version 5.1.0.
Logging
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -551,7 +576,7 @@ Various
.. c:function:: int proj_angular_output (PJ *P, enum PJ_DIRECTION dir)
Check if an operation returns angular output.
Check if an operation returns angular output.
:param `P`: Transformation object
:type `P`: const PJ*
+15 -5
View File
@@ -13,23 +13,30 @@ distribution of the source code and various resource files archives. See
Current Release
--------------------------------------------------------------------------------
* **2018-04-01** `proj-5.0.1.tar.gz`_ (`md5`_)
* **2018-03-01** `proj-datumgrid-1.7.zip`_
* **2018-03-01** `proj-datumgrid-europe-1.0.zip`_
* **2018-03-01** `proj-datumgrid-north-america-1.0.zip`_
* **2018-09-15** `proj-5.2.0.tar.gz`_ (`md5`_)
* **2018-09-15** `proj-datumgrid-1.8.zip`_
* **2018-09-15** `proj-datumgrid-europe-1.1.zip`_
* **2018-09-15** `proj-datumgrid-north-america-1.1.zip`_
* **2018-03-01** `proj-datumgrid-oceania-1.0.zip`_
* **PDF Manual** `proj.pdf`_
Past Releases
--------------------------------------------------------------------------------
* **2018-06-01** `proj-5.1.0.tar.gz`_ (`md5`_)
* **2018-04-01** `proj-5.0.1.tar.gz`_ (`md5`_)
* **2018-03-01** `proj-5.0.0.tar.gz`_
* **2016-09-02** `proj-4.9.3.tar.gz`_
* **2015-09-13** `proj-4.9.2.tar.gz`_
* **2015-03-04** `proj-4.9.1.tar.gz`_
* **2016-09-11** `proj-datumgrid-1.6.zip`_
* **2018-03-01** `proj-datumgrid-1.7.zip`_
* **2018-03-01** `proj-datumgrid-europe-1.0.zip`_
* **2018-03-01** `proj-datumgrid-north-america-1.0.zip`_
.. _`proj-5.2.0.tar.gz`: http://download.osgeo.org/proj/proj-5.2.0.tar.gz
.. _`proj-5.1.0.tar.gz`: http://download.osgeo.org/proj/proj-5.1.0.tar.gz
.. _`proj-5.0.1.tar.gz`: http://download.osgeo.org/proj/proj-5.0.1.tar.gz
.. _`proj-5.0.0.tar.gz`: http://download.osgeo.org/proj/proj-5.0.0.tar.gz
.. _`proj-4.9.1.tar.gz`: http://download.osgeo.org/proj/proj-4.9.1.tar.gz
@@ -37,8 +44,11 @@ Past Releases
.. _`proj-4.9.3.tar.gz`: http://download.osgeo.org/proj/proj-4.9.3.tar.gz
.. _`proj-datumgrid-1.6.zip`: http://download.osgeo.org/proj/proj-datumgrid-1.6.zip
.. _`proj-datumgrid-1.7.zip`: http://download.osgeo.org/proj/proj-datumgrid-1.7.zip
.. _`proj-datumgrid-1.8.zip`: http://download.osgeo.org/proj/proj-datumgrid-1.8.zip
.. _`proj-datumgrid-europe-1.0.zip`: http://download.osgeo.org/proj/proj-datumgrid-europe-1.0.zip
.. _`proj-datumgrid-europe-1.1.zip`: http://download.osgeo.org/proj/proj-datumgrid-europe-1.1.zip
.. _`proj-datumgrid-north-america-1.0.zip`: http://download.osgeo.org/proj/proj-datumgrid-north-america-1.0.zip
.. _`proj-datumgrid-north-america-1.1.zip`: http://download.osgeo.org/proj/proj-datumgrid-north-america-1.1.zip
.. _`proj-datumgrid-oceania-1.0.zip`: http://download.osgeo.org/proj/proj-datumgrid-oceania-1.0.zip
.. _`md5`: http://download.osgeo.org/proj/proj-5.0.1.tar.gz.md5
.. _`md5`: http://download.osgeo.org/proj/proj-5.2.0.tar.gz.md5
.. _`proj.pdf`: https://raw.githubusercontent.com/OSGeo/proj.4/gh-pages/proj.pdf
+40 -124
View File
@@ -15,33 +15,23 @@ FAQ
Where can I find the list of projections and their arguments?
--------------------------------------------------------------------------------
There is no simple single location to find all the required information. The
!PostScript/PDF documents listed on the [http://trac.osgeo.org/proj/wiki main]
PROJ page under documentation are the authoritative source but projections
and options are spread over several documents in a form more related to their
order of implementation than anything else.
:doc:`Here<../operations/projections/index>`.
The '''proj''' command itself can report the list of projections using the
'''-lp''' option, the list of ellipsoids with the '''-le''' option, the list of
units with the '''-lu''' option, and the list of built-in datums with the
'''-ld''' option.
Additinoally, the ``proj`` command itself can report the list of projections
using the ``-lp`` option, the list of ellipsoids with the ``-le`` option,
the list of units with the ``-lu`` option, and the list of built-in datums with
the ``-ld`` option.
The [http://www.remotesensing.org/geotiff/proj_list/ GeoTIFF Projections Pages]
include most of the common PROJ projections, and a definition of the
projection specific options for each.
How do I do datum shifts between NAD27 and NAD83?
--------------------------------------------------------------------------------
* How do I do datum shifts between NAD27 and NAD83?
While the '''nad2nad''' program can be used in some cases, the '''cs2cs''' is
now the preferred mechanism. The following example demonstrates using the
Using the ``cs2cs`` application. The following example demonstrates using the
default shift parameters for NAD27 to NAD83:
::
% cs2cs +proj=latlong +datum=NAD27 +to +proj=latlong +datum=NAD83 -117 30
producing:
::
@@ -49,8 +39,8 @@ producing:
117d0'2.901"W 30d0'0.407"N 0.000
In order for datum shifting to work properly the various grid shift files must
be available. See below. More details are available in the
[wiki:GenParms#nadgrids-GridBasedDatumAdjustments General Parameters] document.
be available. See below. More details are available in the
section on :doc:`resource files<resource_files>`.
How do I build/configure PROJ to support datum shifting?
--------------------------------------------------------------------------------
@@ -59,12 +49,9 @@ After downloading and unpacking the PROJ source, also download and unpack the
set of datum shift files. See :ref:`download` for instructions how to fetch
and install these files
On Windows the extra nadshift target must be used. For instance
``nmake /f makefile.vc nadshift`` in the ``proj/src`` directory.
A default build and install on Unix will normally build knowledge of the
directory where the grid shift files are installed into the PROJ library
(usually /usr/local/share/proj). On Windows the library is normally built
(usually ``/usr/local/share/proj``). On Windows the library is normally built
thinking that C:\PROJ\NAD is the installed directory for the grid shift files.
If the built in concept of the PROJ data directory is incorrect, the ``PROJ_LIB``
environment can be defined with the correct directory.
@@ -72,24 +59,24 @@ environment can be defined with the correct directory.
How do I debug problems with NAD27/NAD83 datum shifting?
--------------------------------------------------------------------------------
1. Verify that you have the binary files (eg. /usr/local/share/proj/conus)
1. Verify that you have the binary files (eg. ``/usr/local/share/proj/conus``)
installed on your system. If not, see the previous question.
2. Try a datum shifting operation in relative isolation, such as with the cs2cs
2. Try a datum shifting operation in relative isolation, such as with the :program:`cs2cs`
command listed above. Do you get reasonable results? If not it is likely
the grid shift files aren't being found. Perhaps you need to define
PROJ_LIB?
3. The cs2cs command and the underlying pj_transform() API know how to do a
:envvar:`PROJ_LIB`?
3. The :program:`cs2cs` command and the underlying :c:func:`pj_transform()` API know how to do a
grid shift as part of a more complex coordinate transformation; however, it
is imperative that both the source and destination coordinate system be
defined with appropriate datum information. That means that implicitly or
explicitly there must be a +datum= clause, a +nadgrids= clause or a
+towgs84= clause. For instance
explicitly there must be a ``+datum=`` clause, a ``+nadgrids=`` clause or a
``+towgs84=`` clause. For instance
``cs2cs +proj=latlong +datum=NAD27 +to +proj=latlong +ellps=WGS84`` won't work because defining the output
coordinate system as using the ellipse WGS84 isn't the same as defining it
to use the datum WGS84 (use +datum=WGS84). If either the input or output
to use the datum WGS84 (use ``+datum=WGS84``). If either the input or output
are not identified as having a datum, the datum shifting (and ellipsoid
change) step is just quietly skipped!
4. The ``PROJ_DEBUG`` environment can be defined (any value) to force extra output
4. The :envvar:`PROJ_DEBUG` environment can be defined (any value) to force extra output
from the PROJ library to stderr (the text console normally) with
information on what data files are being opened and in some cases why a
transformation fails.
@@ -103,16 +90,16 @@ How do I debug problems with NAD27/NAD83 datum shifting?
.. note::
``PROJ_DEBUG`` support is not yet very mature in the PROJ library.
5. The ``-v`` flag to cs2cs can be useful in establishing more detail on what
5. The :option:`-v` flag to :program:`cs2cs` can be useful in establishing more detail on what
parameters being used internally for a coordinate system. This will include
expanding the definition of +datum clause.
expanding the definition of ``+datum`` clause.
How do I use EPSG coordinate system codes with PROJ?
--------------------------------------------------------------------------------
There is somewhat imperfect translation between 2d geographic and projected
There is somewhat imperfect translation between 2D geographic and projected
coordinate system codes and PROJ descriptions of the coordinate system
available in the epsg definition file that normally lives in the proj/nad
available in the ``epsg`` definition file that normally lives in the ``proj/data``
directory. If installed (it is installed by default on Unix), it is possible
to use EPSG numbers like this:
@@ -133,29 +120,31 @@ to use EPSG numbers like this:
#
# +proj=latlong +datum=NAD27 +ellps=clrk66 +nadgrids=conus,ntv1_can.dat
The proj/nad/epsg file can be browsed and searched in a text editor for
The ``proj/data/epsg`` file can be browsed and searched in a text editor for
coordinate systems. There are known to be problems with some coordinate
systems, and any coordinate systems with odd axes, a non-greenwich prime
meridian or other quirkiness are unlikely to work properly. Caveat Emptor!
meridian or other quirkiness are unlikely to work properly. Caveat Emptor!
How do I use 3 parameter and 7 parameter datum shifting
--------------------------------------------------------------------------------
Datum shifts can be approximated with 3 and 7 parameter transformations. Their
use is more fully described in the
[wiki:GenParms#towgs84-DatumtransformationtoWGS84 towgs84] parameter
discussion.
Datum shifts can be approximated with 3 and 7 parameter transformations. Their
use with :program:`cs2cs` is more fully described in the
:ref:`geodetic transformation<cs2cs_specific_options>` section.
More generically, the :ref:`helmert` can be used with :program:`cct`.
Does PROJ work in different international numeric locales?
--------------------------------------------------------------------------------
No. PROJ makes extensive use of sprintf() and atof() internally to translate
numeric values. If a locale is in effect that modifies formatting of numbers,
altering the role of commas and periods in numbers, then PROJ will not work.
This problem is common in some European locales.
No. PROJ makes extensive use of the :c:func:`sprintf()` and :c:func:`atof()` C functions
internally to translate numeric values. If a locale is in effect that modifies
formatting of numbers, altering the role of commas and periods in numbers, then
PROJ will not work. This problem is common in some European locales.
On unix-like platforms, this problem can be avoided by forcing the use of the
default numeric locale by setting the LC_NUMERIC environment variable to C.
On UNIX-like platforms, this problem can be avoided by forcing the use of the
default numeric locale by setting the :envvar:`LC_NUMERIC` environment variable to C.
::
@@ -189,7 +178,7 @@ But, if you do something like:
+x_0=0.0 +y_0=0 +k=1.0 +units=m +no_defs
to convert between WGS84 and mercator on the sphere there will be substantial
shifts in the Y mercator coordinates. This is because internally cs2cs is
shifts in the Y mercator coordinates. This is because internally :program:`cs2cs` is
having to adjust the lat/long coordinates from being on the sphere to being on
the WGS84 datum which has a quite differently shaped ellipsoid.
@@ -207,7 +196,7 @@ your spherical lat/long coordinates to WGS84.
+to +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 \
+x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs
Note the strategic addition of +nadgrids=@null to the spherical projection
Note the strategic addition of ``+nadgrids=@null`` to the spherical projection
definition.
Similar issues apply with many other datasets distributed with projections
@@ -215,7 +204,7 @@ based on a spherical earth model - such as many NASA datasets. This coordinate
system is now known by the EPSG code 3857 and has in the past been known as
EPSG:3785 and EPSG:900913. When using this coordinate system with GDAL/OGR it
is helpful to include the +wktext so the exact PROJ string will be preserved
in the WKT representation (otherwise key parameters like `+nadgrids=@null` will
in the WKT representation (otherwise key parameters like ``+nadgrids=@null`` will
be dropped):
::
@@ -223,17 +212,6 @@ be dropped):
+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0
+units=m +nadgrids=@null +wktext +no_defs
Why do I get different results with 4.5.0 and 4.6.0?
--------------------------------------------------------------------------------
The default datum application behavior changed with the 4.6.0 release. PROJ
will now only apply a datum shift if both the source and destination coordinate
system have valid datum shift information.
From the PROJ 4.6.0 Release Notes (in NEWS):
* MAJOR: Rework pj_transform() to avoid applying ellipsoid to ellipsoid
transformations as a datum shift when no datum info is available.
How do I calculate distances/directions on the surface of the earth?
--------------------------------------------------------------------------------
@@ -241,68 +219,6 @@ How do I calculate distances/directions on the surface of the earth?
These are called geodesic calculations. There is a page about it here:
:ref:`geodesic`.
What is the HEALPix projection and how can I use it?
--------------------------------------------------------------------------------
.. figure::
../images/rhealpix.png
:scale: 40%
:align: left
The HEALPix projection is area preserving and can be used with a
spherical and ellipsoidal model. It was initially developed for mapping cosmic
background microwave radiation. The image below is the graphical
representation of the mapping and consists of eight isomorphic triangular
interrupted map graticules. The north and south contains four in which
straight meridians converge polewards to a point and unequally spaced
horizontal parallels. HEALPix provides a mapping in which points of equal
latitude and equally spaced longitude are mapped to points of equal latitude
and equally spaced longitude with the module of the polar interruptions. ||
To run a forward HEALPix projection on a unit sphere model, use the following command:
::
proj +proj=healpix +lon_0=0 +a=1 -E <<EOF
0 0
EOF
Output of the above command.
::
0 0 0.00 0.00
What is the rHEALPix projection and how can I use it?
--------------------------------------------------------------------------------
.. figure::
../images/healpix.png
:scale: 40%
:align: left
rHEALPix is a projection based on the HEALPix projection. The implementation
of rHEALPix uses the HEALPix projection. The rHEALPix combines the peaks of
the HEALPix into a square. The square's position can be translated and rotated
across the x-axis which is a novel approach for the rHEALPix projection. The
initial intention of using rHEALPix in the Spatial Computation Engine Science
Collaboration Environment (SCENZGrid).
To run a inverse rHEALPix projection on a WGS84 ellipsoidal model, use the following command:
::
proj +proj=rhealpix -f '%.2f' -I +lon_0=0 +a=1 +ellps=WGS84 +npole=0 +spole=0 -E <<EOF
0 0.7853981633974483
EOF
Where spole and npole are integers from the range of 0 to 3 inclusive and represent the positions of the north polar and south polar squares.
Output of above command:
::
0 0.7853981633974483 0.00 41.94
What options does PROJ allow for the shape of the Earth (geodesy)?
--------------------------------------------------------------------------------
+10 -6
View File
@@ -152,10 +152,11 @@ catalog of those cases:
Background
----------
The algorithms implemented by this package are given in [Karney2013]_
and are based on [Bessel1825]_ and [Helmert1880]_; the algorithm for
areas is based on [Danielsen1989]_. These improve on the work of
[Vincenty1975]_ in the following respects:
The algorithms implemented by this package are given in :cite:`Karney2013`
(`addenda <https://geographiclib.sourceforge.io/geod-addenda.html>`_)
and are based on :cite:`Bessel1825` and :cite:`Helmert1880`; the algorithm for
areas is based on :cite:`Danielsen1989`. These improve on the work of
:cite:`Vincenty1975` in the following respects:
* The results are accurate to round-off for terrestrial ellipsoids (the
error in the distance is less then 15 nanometers, compared to 0.1 mm
@@ -166,5 +167,8 @@ areas is based on [Danielsen1989]_. These improve on the work of
geodesic. This allows, for example, the area of a geodesic polygon to
be computed.
Additional background material is provided in [GeodesicBib]_,
[GeodesicWiki]_, and [Karney2011]_.
Additional background material is provided in GeographicLib's `geodesic
bibliography <https://geographiclib.sourceforge.io/geodesic-papers/biblio.html>`_,
Wikipedia's article "`Geodesics on an ellipsoid
<https://en.wikipedia.org/wiki/Geodesics_on_an_ellipsoid>`_", and :cite:`Karney2011`
(`errata <https://geographiclib.sourceforge.io/geod-addenda.html#geod-errata>`_).
+28 -303
View File
@@ -8,6 +8,7 @@ PROJ
:hidden:
about
news
download
install
usage/index
@@ -19,309 +20,33 @@ PROJ
community/index
faq
glossary
references
zreferences
.. only:: html
PROJ is a standard UNIX filter function which converts geographic longitude
and latitude coordinates into cartesian coordinates (and vice versa), and it is
a C API for software developers to include coordinate transformation in their
own software. PROJ is maintained on `GitHub <http://github.com/OSGeo/proj.4/>`_.
NEWS
---------------------------------------------------------------------------
.. attention::
The ``projects.h`` header and the functions related to it is considered
deprecated from version 5.0.0 and onwards. The header will be removed
from PROJ in version 6.0.0 scheduled for release February 1st 2019.
.. attention::
The nmake build system on Windows will not be supported from
version 6.0.0 on onwards. Use CMake instead.
.. attention::
The ``proj_api.h`` header and the functions related to it is
considered deprecated from version 5.0.0 and onwards. The header will be
removed from PROJ in version 7.0.0 scheduled for release February 1st
2020.
.. attention::
With the introduction of PROJ 5, behavioural changes has been made to
existing functionality. Consult :ref:`differences` for the details.
PROJ 5.0.1
++++++++++++++++++++++++++++++++++++++++
*March 1st 2018*
Bug fixes
***********
* Handle ellipsoid change correctly in pipelines when ``+towgs84=0,0,0`` is set (`#881 <https://github.com/OSGeo/proj.4/issues/881>`_)
* Handle the case where nad_ctable2_init returns NULL (`#883 <https://github.com/OSGeo/proj.4/issues/883>`_)
* Avoid shadowed declaration errors with old gcc (`#880 <https://github.com/OSGeo/proj.4/issues/880>`_)
* Expand ``+datum`` properly in pipelines (`#872 <https://github.com/OSGeo/proj.4/issues/872>`_)
* Fail gracefully when incorrect headers are encountered in grid files (`#875 <https://github.com/OSGeo/proj.4/issues/875>`_)
* Improve roundtrip stability in pipelines using ``+towgs84`` (`#871 <https://github.com/OSGeo/proj.4/issues/871>`_)
* Fixed typo in gie error codes (`#861 <https://github.com/OSGeo/proj.4/issues/861>`_)
* Numerical stability fixes to the geodesic package (`#826 <https://github.com/OSGeo/proj.4/issues/826>`_ & `#843 <https://github.com/OSGeo/proj.4/issues/843>`_)
* Make sure that transient errors are returned correctly (`#857 <https://github.com/OSGeo/proj.4/issues/857>`_)
* Make sure that locally installed header files are not used when building PROJ (`#849 <https://github.com/OSGeo/proj.4/issues/849>`_)
* Fix inconsistent parameter names in ``proj.h``/``proj_4D_api.c`` (`#842 <https://github.com/OSGeo/proj.4/issues/842>`_)
* Make sure ``+vunits`` is applied (`#833 <https://github.com/OSGeo/proj.4/issues/833>`_)
* Fix incorrect Web Mercator transformations (`#834 <https://github.com/OSGeo/proj.4/issues/834>`_)
PROJ 5.0.0
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*February 1st 2018*
This version of PROJ introduces some significant extensions and
improvements to (primarily) the geodetic functionality of the system.
The main driver for introducing the new features is the emergence of
dynamic reference frames, the increasing use of high accuracy GNSS,
and the related growing demand for accurate coordinate
transformations. While older versions of PROJ included some geodetic
functionality, the new framework lays the foundation for turning PROJ
into a generic geospatial coordinate transformation engine.
The core of the library is still the well established projection code.
The new functionality is primarily exposed in a new programming
interface and a new command line utility, :ref:`cct<cct>`
(for "Coordinate Conversion and Transformation"). The old programming interface is
still available and can - to some extent - use the new geodetic
transformation features.
The internal architecture has also seen many changes and much
improvement. So far, these improvements respect the existing
programming interface. But the process has revealed a need to simplify
and reduce the code base, in order to support sustained active
development.
**Therefore we have scheduled regular releases over the coming years**
**which will gradually remove the old programming interface.**
**This will cause breaking changes with the next two major version**
**releases, which will affect all projects that depend on PROJ**
**(cf. section "deprecations" below).**
The decision to break the existing API has not been easy, but has
ultimately been deemed necessary to ensure the long term survival of
the project. Not only by improving the maintainability immensely, but
also by extending the potential user (and hence developer) community.
The end goal is to deliver a generic coordinate transformation
software package with a clean and concise code base appealing to
both users and developers.
Versioning and naming
***************************************************************************
For the first time in more than 25 years the major version number of
the software is changed. The decision to do this is based on the many
new features and new API. While backwards compatibility remains -
except in a few rare corner cases - the addition of a new and improved
programming interface warrants a new major release.
The new major version number unfortunately leaves the project in a bit
of a conundrum regarding the name. For the majority of the life-time
of the product it has been known as PROJ.4, but since we have now
reached version 5 the name is no longer aligned with the version
number.
Hence we have decided to decouple the name from the version number and
from this version and onwards the product will simply be called PROJ.
In recognition of the history of the software we are keeping PROJ.4 as
the *name of the organizing project*. The same project team also
produces the datum-grid package.
In summary:
* The PROJ.4 project provides the product PROJ, which is now at
version 5.0.0.
* The foundational component of PROJ is the library libproj.
* Other PROJ components include the application proj, which provides
a command line interface to libproj.
* The PROJ.4 project also distributes the datum-grid package,
which at the time of writing is at version 1.6.0.
Updates
***************************************************************************
* Introduced new API in ``proj.h``.
- The new API is orthogonal to the existing ``proj_api.h`` API and the internally used ``projects.h`` API.
- The new API adds the ability to transform spatiotemporal (4D) coordinates.
- Functions in the new API use the ``proj_`` namespace.
- Data types in the new API use the ``PJ_`` namespace.
* Introduced the concept of "transformation pipelines" that makes possible to do complex geodetic transformations of coordinates by daisy chaining simple coordinate operations.
* Introduced :ref:`cct`, the Coordinate Conversion and Transformation application.
* Introduced :ref:`gie`, the Geospatial Integrity Investigation Environment.
- Selftest invoked by ``-C`` flag in :ref:`proj` has been removed
- Ported approx. 1300 built-in selftests to :ref:`gie` format
- Ported approx. 1000 tests from the gigs test framework
- Added approx. 200 new tests
* Adopted terminology from the OGC/ISO-19100 geospatial standards series. Key definitions are:
- At the most generic level, a *coordinate operation* is a change of coordinates, based on a one-to-one relationship, from one coordinate reference system to another.
- A *transformation* is a coordinate operation in which the two coordinate reference systems are based on different datums, e.g. a change from a global reference frame to a regional frame.
- A *conversion* is a coordinate operation in which both coordinate reference systems are based on the same datum, e.g. change of units of coordinates.
- A *projection* is a coordinate conversion from an ellipsoidal coordinate system to a plane. Although projections are simply conversions according to the standard, they are treated as separate entities in PROJ as they make up the vast majority of operations in the library.
* New operations
- :ref:`The pipeline operator<pipeline>` (``pipeline``)
- Transformations
+ :ref:`Helmert transform<helmert>` (``helmert``)
+ Horner real and complex polynomial evaluation (``horner``)
+ :ref:`Horizontal gridshift<hgridshift>` (``hgridshift``)
+ :ref:`Vertical gridshift<vgridshift>` (``vgridshift``)
+ :ref:`Molodensky transform<molodensky>` (``molodensky``)
+ :ref:`Kinematic gridshift with deformation model<deformation>` (``deformation``)
- Conversions
+ :ref:`Unit conversion<unitconvert>` (``unitconvert``)
+ :ref:`Axis swap<axisswap>` (``axisswap``)
- Projections
+ :ref:`Central Conic projection<ccon>` (``ccon``)
* Significant documentation updates, including
- Overhaul of the structure of the documentation
- A better introduction to the use of PROJ
- :ref:`A complete reference to the new API<reference>`
- a complete rewrite of the section on geodesic calculations
- Figures for all projections
* New "free format" option for operation definitions, which permits separating tokens by whitespace when specifying key/value- pairs, e.g. ``proj = merc lat_0 = 45``.
* Added metadata to init-files that can be read with the :c:func:`proj_init_info` function in the new ``proj.h`` API.
* Added ITRF2000, ITRF2008 and ITRF2014 init-files with ITRF transformation parameters, including plate motion model parameters.
* Added ellipsoid parameters for GSK2011, PZ90 and "danish". The latter is similar to the already supported andrae ellipsoid, but has a slightly different semimajor axis.
* Added Copenhagen prime meridian.
* Updated EPSG database to version 9.2.0.
* Geodesic library updated to version 1.49.2-c.
* Support for analytical partial derivatives has been removed.
* Improved performance in Winkel Tripel and Aitoff.
* Introduced ``pj_has_inverse()`` function to ``proj_api.h``. Checks if an operation has an inverse. Use this instead of checking whether ``P->inv`` exists, since that can no longer be relied on.
* ABI version number updated to 13:0:0.
* Removed support for Windows CE.
* Removed the VB6 COM interface.
Bug fixes
***************************************************************************
* Fixed incorrect convergence calculation in Lambert Conformal Conic. (`#16 <https://github.com/OSGeo/proj.4/issues/16>`_)
* Handle ellipsoid parameters correctly when using ``+nadgrids=@null``. (`#22 <https://github.com/OSGeo/proj.4/issues/22>`_)
* Return correct latitude when using negative northings in Transverse Mercator. (`#138 <https://github.com/OSGeo/proj.4/issues/138>`_)
* Return correct result at origin in inverse Mod. Stereographic of Alaska. (`#161 <https://github.com/OSGeo/proj.4/issues/161>`_)
* Return correct result at origin in inverse Mod. Stereographic of 48 U.S. (`#162 <https://github.com/OSGeo/proj.4/issues/162>`_)
* Return correct result at origin in inverse Mod. Stereographic of 50 U.S. (`#163 <https://github.com/OSGeo/proj.4/issues/163>`_)
* Return correct result at origin in inverse Lee Oblated Stereographic. (`#164 <https://github.com/OSGeo/proj.4/issues/164>`_)
* Return correct result at origin in inverse Miller Oblated Stereographic. (`#165 <https://github.com/OSGeo/proj.4/issues/165>`_)
* Fixed scaling and wrap-around issues in Oblique Cylindrical Equal Area. (`#166 <https://github.com/OSGeo/proj.4/issues/166>`_)
* Corrected a coefficient error in inverse Transverse Mercator. (`#174 <https://github.com/OSGeo/proj.4/issues/174>`_)
* Respect ``-r`` flag when calling :program:`proj` with ``-V``. (`#184 <https://github.com/OSGeo/proj.4/issues/184>`_)
* Remove multiplication by 2 at the equator error in Stereographic projection. (`#194 <https://github.com/OSGeo/proj.4/issues/194>`_)
* Allow +alpha=0 and +gamma=0 when using Oblique Mercator. (`#195 <https://github.com/OSGeo/proj.4/issues/195>`_)
* Return correct result of inverse Oblique Mercator when alpha is between 90 and 270. (`#331 <https://github.com/OSGeo/proj.4/issues/331>`_)
* Avoid segmentation fault when accessing point outside grid. (`#396 <https://github.com/OSGeo/proj.4/issues/396>`_)
* Avoid segmentation fault on NaN input in Robin inverse. (`#463 <https://github.com/OSGeo/proj.4/issues/463>`_)
* Very verbose use of :program:`proj` (``-V``) on Windows is fixed. (`#484 <https://github.com/OSGeo/proj.4/issues/484>`_)
* Fixed memory leak in General Oblique Transformation. (`#497 <https://github.com/OSGeo/proj.4/issues/497>`_)
* Equations for meridian convergence and partial derivatives have
been corrected for non-conformal projections. (`#526 <https://github.com/OSGeo/proj.4/issues/526>`_)
* Fixed scaling of cartesian coordinates in ``pj_transform()``. (`#726 <https://github.com/OSGeo/proj.4/issues/726>`_)
* Additional bug fixes courtesy of `Google's OSS-Fuzz program <https://bugs.chromium.org/p/oss-fuzz/issues/list?can=1&q=proj4>`_
PROJ is a generic coordinate transformation software, that transforms geospatial
coordinates from one coordinate reference system (CRS) to another. This
includes cartographic projections as well as geodetic transformations.
PROJ includes :ref:`command line applications<apps>` for easy conversion of
coordinates from text files or directly from user input. In addition to the
command line utilities PROJ also exposes an
:ref:`application programming interface<reference>`, or API in short. The API
let developers use the functionality of PROJ in their own software without having
to implement similar functionality themselves.
PROJ started purely as a cartography application letting users convert geodetic
coordinates into projected coordinates using a number of different cartographic
projections. Over the years, as the need has become apparent, support for datum
shifts has slowly worked it's way into PROJ as well. Today PROJ support more
than a hundred different map projections and can transform coordinates between
datums using all but the most obscure geodetic techniques.
You can download the source code for PROJ on the :ref:`download section<download>`
and find links to prepackaged executables in the
:ref:`installation section<install>`.
In addition to this website the PROJ documentation is also available in `PDF`_
form.
.. _`PDF`: https://raw.githubusercontent.com/OSGeo/proj.4/gh-pages/proj.pdf
+3 -3
View File
@@ -32,7 +32,7 @@ Docker
A `Docker`_ image with just PROJ binaries and a full compliment of grid shift
files is available on `DockerHub`_. Get the package with::
docker pull osgeo/proj.4
docker pull osgeo/proj
.. _`Docker`: https://docker.org
.. _`DockerHub`: https://hub.docker.com/r/osgeo/proj.4/
@@ -140,9 +140,9 @@ In either case, the directory of the prefix path must exist and be writable by
the installer.
Before proceeding with the installation we need to add the datum grids. Unzip
the contents of the *proj-datumgrid* package into ``nad/``::
the contents of the *proj-datumgrid* package into ``data/``::
unzip proj-datumgrid-1.7.zip -d proj-5.0.1/nad/
unzip proj-datumgrid-1.7.zip -d proj-5.0.1/data/
The installation will automatically move the grid files to the correct location.
Alternatively the grids can be installed manually in the directory pointed to
+397
View File
@@ -0,0 +1,397 @@
.. _news:
News
###############################################################################
PROJ 5.2.0
++++++++++++++++++++++++++++++++++++++++
*September 15th 2018*
UPDATES
-------
* Added support for deg, rad and grad in unitconvert (`#1054 <https://github.com/OSGeo/proj.4/issues/1054>`_)
* Assume :option:`+t_epoch` as time input when not otherwise specified (`#1065 <https://github.com/OSGeo/proj.4/issues/1065>`_)
* Added inverse Lagrange projection (`#1058 <https://github.com/OSGeo/proj.4/issues/1058>`_)
* Added :option:`+multiplier` option to vgridshift (`#1072 <https://github.com/OSGeo/proj.4/issues/1072>`_)
* Added Equal Earth projection (`#1085 <https://github.com/OSGeo/proj.4/issues/1085>`_)
* Added "require_grid" option to gie (`#1088 <https://github.com/OSGeo/proj.4/issues/1088>`_)
* Replace :option:`+transpose` option of Helmert transform with :option:`+convention`.
From now on the convention used should be explicitly written. An
error will be returned when using the +transpose option (`#1091 <https://github.com/OSGeo/proj.4/issues/1091>`_)
* Improved numerical precision of inverse spherical Mercator
projection (`#1105 <https://github.com/OSGeo/proj.4/issues/1105>`_)
* :program:`cct` will now forward text after coordinate input to output
stream (`#1111 <https://github.com/OSGeo/proj.4/issues/1111>`_)
BUG FIXES
------------
* Do not pivot over WGS84 when doing cs2cs-emulation with geocent (`#1026 <https://github.com/OSGeo/proj.4/issues/1026>`_)
* Do not scan past the end of the read data in :c:func:`pj_ctx_fgets` (`#1042 <https://github.com/OSGeo/proj.4/issues/1042>`_)
* Make sure :c:func:`proj_errno_string()` is available in DLL (`#1050 <https://github.com/OSGeo/proj.4/issues/1050>`_)
* Respect `+to_meter` setting when doing cs2cs-emulation (`#1053 <https://github.com/OSGeo/proj.4/issues/1053>`_)
* Fixed unit conversion factors for :program:`geod` (`#1075 <https://github.com/OSGeo/proj.4/issues/1075>`_)
* Fixed test failures related to GCC 8 (`#1084 <https://github.com/OSGeo/proj.4/issues/1084>`_)
* Improved handling of `+geoc` flag (`#1093 <https://github.com/OSGeo/proj.4/issues/1093>`_)
* Calculate correct projection factors for Webmercator (`#1095 <https://github.com/OSGeo/proj.4/issues/1095>`_)
* :program:`cs2cs` now always outputs degrees when transformed coordinates are
in angular units (`#1112 <https://github.com/OSGeo/proj.4/issues/1112>`_)
PROJ 5.1.0
++++++++++++++++++++++++++++++++++++++++
*June 1st 2018*
UPDATES
-------
* Function :c:func:`proj_errno_string()` added to ``proj.h`` API (`#847 <https://github.com/OSGeo/proj.4/issues/847>`_)
* Validate units between pipeline steps and ensure transformation
sanity (`#906 <https://github.com/OSGeo/proj.4/issues/906>`_)
* Print help when calling :program:`cct` and :program:`gie` without arguments (`#907 <https://github.com/OSGeo/proj.4/issues/907>`_)
* `CITATION` file added to source distribution (`#914 <https://github.com/OSGeo/proj.4/issues/914>`_)
* Webmercator operation added (`#925 <https://github.com/OSGeo/proj.4/issues/925>`_)
* Enhanced numerical precision of forward spherical Mercator near
the Equator (`#928 <https://github.com/OSGeo/proj.4/issues/928>`_)
* Added ``--skip-lines`` option to :program:`cct` (`#923 <https://github.com/OSGeo/proj.4/issues/923>`_)
* Consistently return ``NaN`` values on ``NaN`` input (`#949 <https://github.com/OSGeo/proj.4/issues/949>`_)
* Removed unused ``src/org_proj4_Projections.h`` file (`#956 <https://github.com/OSGeo/proj.4/issues/956>`_)
* Java Native Interface bindings updated (`#957 <https://github.com/OSGeo/proj.4/issues/957>`_, `#969 <https://github.com/OSGeo/proj.4/issues/969>`_)
* Horizontal and vertical gridshift operations extended to
the temporal domain (`#1015 <https://github.com/OSGeo/proj.4/issues/1015>`_)
BUG FIXES
------------
* Handle ``NaN`` float cast overflow in ``PJ_robin.c`` and ``nad_intr.c`` (`#887 <https://github.com/OSGeo/proj.4/issues/887>`_)
* Avoid overflow when Horner order is unreasonably large (`#893 <https://github.com/OSGeo/proj.4/issues/893>`_)
* Avoid unwanted NaN conversions in etmerc (`#899 <https://github.com/OSGeo/proj.4/issues/899>`_)
* Avoid memory failure in :program:`gie` when not specifying x,y,z in gie files (`#902 <https://github.com/OSGeo/proj.4/issues/902>`_)
* Avoid memory failure when :option:`+sweep` is initialized incorrectly in geos (`#908 <https://github.com/OSGeo/proj.4/issues/908>`_)
* Return ``HUGE_VAL`` on erroneous input in ortho (`#912 <https://github.com/OSGeo/proj.4/issues/912>`_)
* Handle commented lines correctly in cct (`#933 <https://github.com/OSGeo/proj.4/issues/933>`_)
* Avoid segmentation fault when transformation coordinates outside grid
area in deformation (`#934 <https://github.com/OSGeo/proj.4/issues/934>`_)
* Avoid doing false easting/northing adjustments on cartesian
coordinates (`#936 <https://github.com/OSGeo/proj.4/issues/936>`_)
* Thread-safe creation of proj mutex (`#954 <https://github.com/OSGeo/proj.4/issues/954>`_)
* Avoid errors when setting up geos with +lat_0!=0 (`#986 <https://github.com/OSGeo/proj.4/issues/986>`_)
* Reset errno when running :program:`proj` in verbose mode (`#988 <https://github.com/OSGeo/proj.4/issues/988>`_)
* Do not interpolate node values at nodata value in vertical
grid shifts (`#1004 <https://github.com/OSGeo/proj.4/issues/1004>`_)
* Restrict Horner degrees to positive integer values to avoid
memory allocation issues (`#1005 <https://github.com/OSGeo/proj.4/issues/1005>`_)
PROJ 5.0.1
++++++++++++++++++++++++++++++++++++++++
*March 1st 2018*
Bug fixes
---------
* Handle ellipsoid change correctly in pipelines when ``+towgs84=0,0,0`` is set (`#881 <https://github.com/OSGeo/proj.4/issues/881>`_)
* Handle the case where nad_ctable2_init returns NULL (`#883 <https://github.com/OSGeo/proj.4/issues/883>`_)
* Avoid shadowed declaration errors with old gcc (`#880 <https://github.com/OSGeo/proj.4/issues/880>`_)
* Expand ``+datum`` properly in pipelines (`#872 <https://github.com/OSGeo/proj.4/issues/872>`_)
* Fail gracefully when incorrect headers are encountered in grid files (`#875 <https://github.com/OSGeo/proj.4/issues/875>`_)
* Improve roundtrip stability in pipelines using ``+towgs84`` (`#871 <https://github.com/OSGeo/proj.4/issues/871>`_)
* Fixed typo in gie error codes (`#861 <https://github.com/OSGeo/proj.4/issues/861>`_)
* Numerical stability fixes to the geodesic package (`#826 <https://github.com/OSGeo/proj.4/issues/826>`_ & `#843 <https://github.com/OSGeo/proj.4/issues/843>`_)
* Make sure that transient errors are returned correctly (`#857 <https://github.com/OSGeo/proj.4/issues/857>`_)
* Make sure that locally installed header files are not used when building PROJ (`#849 <https://github.com/OSGeo/proj.4/issues/849>`_)
* Fix inconsistent parameter names in ``proj.h``/``proj_4D_api.c`` (`#842 <https://github.com/OSGeo/proj.4/issues/842>`_)
* Make sure ``+vunits`` is applied (`#833 <https://github.com/OSGeo/proj.4/issues/833>`_)
* Fix incorrect Web Mercator transformations (`#834 <https://github.com/OSGeo/proj.4/issues/834>`_)
PROJ 5.0.0
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*February 1st 2018*
This version of PROJ introduces some significant extensions and
improvements to (primarily) the geodetic functionality of the system.
The main driver for introducing the new features is the emergence of
dynamic reference frames, the increasing use of high accuracy GNSS,
and the related growing demand for accurate coordinate
transformations. While older versions of PROJ included some geodetic
functionality, the new framework lays the foundation for turning PROJ
into a generic geospatial coordinate transformation engine.
The core of the library is still the well established projection code.
The new functionality is primarily exposed in a new programming
interface and a new command line utility, :ref:`cct<cct>`
(for "Coordinate Conversion and Transformation"). The old programming interface is
still available and can - to some extent - use the new geodetic
transformation features.
The internal architecture has also seen many changes and much
improvement. So far, these improvements respect the existing
programming interface. But the process has revealed a need to simplify
and reduce the code base, in order to support sustained active
development.
**Therefore we have scheduled regular releases over the coming years**
**which will gradually remove the old programming interface.**
**This will cause breaking changes with the next two major version**
**releases, which will affect all projects that depend on PROJ**
**(cf. section "deprecations" below).**
The decision to break the existing API has not been easy, but has
ultimately been deemed necessary to ensure the long term survival of
the project. Not only by improving the maintainability immensely, but
also by extending the potential user (and hence developer) community.
The end goal is to deliver a generic coordinate transformation
software package with a clean and concise code base appealing to
both users and developers.
Versioning and naming
---------------------
For the first time in more than 25 years the major version number of
the software is changed. The decision to do this is based on the many
new features and new API. While backwards compatibility remains -
except in a few rare corner cases - the addition of a new and improved
programming interface warrants a new major release.
The new major version number unfortunately leaves the project in a bit
of a conundrum regarding the name. For the majority of the life-time
of the product it has been known as PROJ.4, but since we have now
reached version 5 the name is no longer aligned with the version
number.
Hence we have decided to decouple the name from the version number and
from this version and onwards the product will simply be called PROJ.
In recognition of the history of the software we are keeping PROJ.4 as
the *name of the organizing project*. The same project team also
produces the datum-grid package.
In summary:
* The PROJ.4 project provides the product PROJ, which is now at
version 5.0.0.
* The foundational component of PROJ is the library libproj.
* Other PROJ components include the application proj, which provides
a command line interface to libproj.
* The PROJ.4 project also distributes the datum-grid package,
which at the time of writing is at version 1.6.0.
Updates
-------
* Introduced new API in ``proj.h``.
- The new API is orthogonal to the existing ``proj_api.h`` API and the internally used ``projects.h`` API.
- The new API adds the ability to transform spatiotemporal (4D) coordinates.
- Functions in the new API use the ``proj_`` namespace.
- Data types in the new API use the ``PJ_`` namespace.
* Introduced the concept of "transformation pipelines" that makes possible to do complex geodetic transformations of coordinates by daisy chaining simple coordinate operations.
* Introduced :ref:`cct`, the Coordinate Conversion and Transformation application.
* Introduced :ref:`gie`, the Geospatial Integrity Investigation Environment.
- Selftest invoked by ``-C`` flag in :ref:`proj` has been removed
- Ported approx. 1300 built-in selftests to :ref:`gie` format
- Ported approx. 1000 tests from the gigs test framework
- Added approx. 200 new tests
* Adopted terminology from the OGC/ISO-19100 geospatial standards series. Key definitions are:
- At the most generic level, a *coordinate operation* is a change of coordinates, based on a one-to-one relationship, from one coordinate reference system to another.
- A *transformation* is a coordinate operation in which the two coordinate reference systems are based on different datums, e.g. a change from a global reference frame to a regional frame.
- A *conversion* is a coordinate operation in which both coordinate reference systems are based on the same datum, e.g. change of units of coordinates.
- A *projection* is a coordinate conversion from an ellipsoidal coordinate system to a plane. Although projections are simply conversions according to the standard, they are treated as separate entities in PROJ as they make up the vast majority of operations in the library.
* New operations
- :ref:`The pipeline operator<pipeline>` (``pipeline``)
- Transformations
+ :ref:`Helmert transform<helmert>` (``helmert``)
+ Horner real and complex polynomial evaluation (``horner``)
+ :ref:`Horizontal gridshift<hgridshift>` (``hgridshift``)
+ :ref:`Vertical gridshift<vgridshift>` (``vgridshift``)
+ :ref:`Molodensky transform<molodensky>` (``molodensky``)
+ :ref:`Kinematic gridshift with deformation model<deformation>` (``deformation``)
- Conversions
+ :ref:`Unit conversion<unitconvert>` (``unitconvert``)
+ :ref:`Axis swap<axisswap>` (``axisswap``)
- Projections
+ :ref:`Central Conic projection<ccon>` (``ccon``)
* Significant documentation updates, including
- Overhaul of the structure of the documentation
- A better introduction to the use of PROJ
- :ref:`A complete reference to the new API<reference>`
- a complete rewrite of the section on geodesic calculations
- Figures for all projections
* New "free format" option for operation definitions, which permits separating tokens by whitespace when specifying key/value- pairs, e.g. ``proj = merc lat_0 = 45``.
* Added metadata to init-files that can be read with the :c:func:`proj_init_info` function in the new ``proj.h`` API.
* Added ITRF2000, ITRF2008 and ITRF2014 init-files with ITRF transformation parameters, including plate motion model parameters.
* Added ellipsoid parameters for GSK2011, PZ90 and "danish". The latter is similar to the already supported andrae ellipsoid, but has a slightly different semimajor axis.
* Added Copenhagen prime meridian.
* Updated EPSG database to version 9.2.0.
* Geodesic library updated to version 1.49.2-c.
* Support for analytical partial derivatives has been removed.
* Improved performance in Winkel Tripel and Aitoff.
* Introduced ``pj_has_inverse()`` function to ``proj_api.h``. Checks if an operation has an inverse. Use this instead of checking whether ``P->inv`` exists, since that can no longer be relied on.
* ABI version number updated to 13:0:0.
* Removed support for Windows CE.
* Removed the VB6 COM interface.
Bug fixes
---------
* Fixed incorrect convergence calculation in Lambert Conformal Conic. (`#16 <https://github.com/OSGeo/proj.4/issues/16>`_)
* Handle ellipsoid parameters correctly when using ``+nadgrids=@null``. (`#22 <https://github.com/OSGeo/proj.4/issues/22>`_)
* Return correct latitude when using negative northings in Transverse Mercator. (`#138 <https://github.com/OSGeo/proj.4/issues/138>`_)
* Return correct result at origin in inverse Mod. Stereographic of Alaska. (`#161 <https://github.com/OSGeo/proj.4/issues/161>`_)
* Return correct result at origin in inverse Mod. Stereographic of 48 U.S. (`#162 <https://github.com/OSGeo/proj.4/issues/162>`_)
* Return correct result at origin in inverse Mod. Stereographic of 50 U.S. (`#163 <https://github.com/OSGeo/proj.4/issues/163>`_)
* Return correct result at origin in inverse Lee Oblated Stereographic. (`#164 <https://github.com/OSGeo/proj.4/issues/164>`_)
* Return correct result at origin in inverse Miller Oblated Stereographic. (`#165 <https://github.com/OSGeo/proj.4/issues/165>`_)
* Fixed scaling and wrap-around issues in Oblique Cylindrical Equal Area. (`#166 <https://github.com/OSGeo/proj.4/issues/166>`_)
* Corrected a coefficient error in inverse Transverse Mercator. (`#174 <https://github.com/OSGeo/proj.4/issues/174>`_)
* Respect ``-r`` flag when calling :program:`proj` with ``-V``. (`#184 <https://github.com/OSGeo/proj.4/issues/184>`_)
* Remove multiplication by 2 at the equator error in Stereographic projection. (`#194 <https://github.com/OSGeo/proj.4/issues/194>`_)
* Allow +alpha=0 and +gamma=0 when using Oblique Mercator. (`#195 <https://github.com/OSGeo/proj.4/issues/195>`_)
* Return correct result of inverse Oblique Mercator when alpha is between 90 and 270. (`#331 <https://github.com/OSGeo/proj.4/issues/331>`_)
* Avoid segmentation fault when accessing point outside grid. (`#396 <https://github.com/OSGeo/proj.4/issues/396>`_)
* Avoid segmentation fault on NaN input in Robin inverse. (`#463 <https://github.com/OSGeo/proj.4/issues/463>`_)
* Very verbose use of :program:`proj` (``-V``) on Windows is fixed. (`#484 <https://github.com/OSGeo/proj.4/issues/484>`_)
* Fixed memory leak in General Oblique Transformation. (`#497 <https://github.com/OSGeo/proj.4/issues/497>`_)
* Equations for meridian convergence and partial derivatives have
been corrected for non-conformal projections. (`#526 <https://github.com/OSGeo/proj.4/issues/526>`_)
* Fixed scaling of cartesian coordinates in ``pj_transform()``. (`#726 <https://github.com/OSGeo/proj.4/issues/726>`_)
* Additional bug fixes courtesy of `Google's OSS-Fuzz program <https://bugs.chromium.org/p/oss-fuzz/issues/list?can=1&q=proj4>`_
+17 -4
View File
@@ -1,23 +1,36 @@
.. _cart:
================================================================================
Cartesian to geodetic conversion
Geodetic to cartesian conversion
================================================================================
.. versionadded:: 5.0.0
Convert geodetic coordinates to cartesian coordinates.
Convert geodetic coordinates to cartesian coordinates (in the forward path).
+---------------------+--------------------------------------------------------+
| **Alias** | cart |
+---------------------+--------------------------------------------------------+
| **Domain** | 3D |
+---------------------+--------------------------------------------------------+
| **Input type** | Cartesian coordinates |
| **Input type** | Geodetic coordinates |
+---------------------+--------------------------------------------------------+
| **Output type** | Cartesian coordinates |
| **Output type** | Geocentric cartesian coordinates |
+---------------------+--------------------------------------------------------+
This conversion converts geodetic coordinate values (longitude, latitude,
elevation above ellipsoid) to their geocentric (X, Y, Z) representation, where
the first axis (X) points from the Earth centre to the point of longitude=0,
latitude=0, the second axis (Y) points from the Earth centrer to the point of
longitude=90, latitude=0 and the third axis (Z) points to the North pole.
Usage
################################################################################
Convert geodetic coordinates to GRS80 cartesian coordinates::
echo 17.7562015132 45.3935192042 133.12 2017.8 | cct +proj=cart +ellps=GRS80
4272922.1553 1368283.0597 4518261.3501 2017.8000
Parameters
################################################################################
@@ -0,0 +1,75 @@
.. _geoc:
================================================================================
Geocentric Latitude
================================================================================
.. versionadded:: 5.0.0
Convert from Geodetic Latitude to Geocentric Latitude (in the forward path).
+---------------------+--------------------------------------------------------+
| **Alias** | geoc |
+---------------------+--------------------------------------------------------+
| **Domain** | 2D |
+---------------------+--------------------------------------------------------+
| **Input type** | Geodetic coordinates |
+---------------------+--------------------------------------------------------+
| **Output type** | Geocentric angular coordinates |
+---------------------+--------------------------------------------------------+
The geodetic (or geographic) latitude (also called planetographic latitude
in the context of non-Earth bodies) is the angle between the equatorial plane
and the normal (vertical) to the ellipsoid surface at the considered point.
The geodetic latitude is what is normally used everywhere in PROJ when angular
coordinates are expected or produced.
The geocentric latitude (also called planetocentric latitude in the context of
non-Earth bodies) is the angle between the equatorial plane and a line joining
the body centre to the considered point.
.. image:: ./images/geocentric_latitude.png
:align: center
:scale: 100%
:alt: Geocentric latitude
.. note::
This conversion must be distinguished fom the :ref:`cart`
which converts geodetic coordinates to geocentric coordinates in the cartesian
domain.
Mathematical definition
#######################
The formulas describing the conversion are taken from :cite:`Snyder1987`
(equation 3-28)
Let :math:`\phi'` to be the geocentric latitude and :math:`\phi` the
geodetic latitude, then
.. math::
\phi' = \arctan \left[ (1 - e^2) \tan \left( \phi \right) \right]
The geocentric latitude is consequently lesser (in absolute value) than the geodetic
latitude, except at the equator and the poles where they are equal.
On a sphere, they are always equal.
Usage
################################################################################
Converting from geodetic latitude to geocentric latitude::
+proj=geoc +ellps=GRS80
Converting from geocentric latitude to geodetic latitude::
+proj=pipeline +step +proj=geoc +inv +ellps=GRS80
Parameters
################################################################################
.. include:: ../options/ellps.rst
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@@ -0,0 +1,222 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="140mm"
height="80mm"
viewBox="0 0 496.06299 283.46457"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="geocentric_latitude.svg"
inkscape:export-filename="/home/even/geocentric_latitude.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="-24.364532"
inkscape:cy="179.59147"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1004"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-147.57144,-187.04048)">
<ellipse
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path3336"
cx="360"
cy="335.21933"
rx="210"
ry="118.57143" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 150.01742,328.40826 419.30163,-0.75019"
id="path3338"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.96771652px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 363.32468,217.04313 0.16174,236.75597"
id="path3340"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 362.28019,328.82684 500.94901,247.46623"
id="path3342"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 444.633,218.67689 110.86424,56.316"
id="path3346"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 458.01752,327.77337 70.2056,-130.05715"
id="path3348"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 504.232,242.92055 5.05076,2.27284 -2.77792,4.79823"
id="path3350"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 478.21428,328.07649 c 0,0 3.34873,-9.57295 -10.49045,-17.89492"
id="path4172"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71625429px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 381.31112,328.6754 c 0,0 1.06694,-7.99101 -5.65105,-7.9116"
id="path4172-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 468.62412,315.90407 -0.75761,-5.55584 5.80838,-0.25253"
id="path4189"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 376.70024,324.23783 0.25254,-3.78807 5.3033,-0.25254"
id="path4191"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="458.19504"
y="341.07974"
id="text4193"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4195"
x="458.19504"
y="341.07974">Geodetic</tspan><tspan
sodipodi:role="line"
x="458.19504"
y="356.70474"
id="tspan4197">latitude</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="366.77863"
y="341.95016"
id="text4193-6"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4195-7"
x="366.77863"
y="341.95016"
style="font-size:12.5px">Geocentric</tspan><tspan
sodipodi:role="line"
x="366.77863"
y="357.57516"
id="tspan4197-5"
style="font-size:12.5px">latitude</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="478.72565"
y="317.92438"
id="text4220"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4222"
x="478.72565"
y="317.92438">φ</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="394.50311"
y="322.51547"
id="text4220-3"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4222-5"
x="394.50311"
y="322.51547">φ'</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="159.38527"
y="340.53079"
id="text4193-62"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="159.38527"
y="340.53079"
id="tspan4197-1">Equatorial plane</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="331.11118"
y="209.21098"
id="text4193-62-2"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="331.11118"
y="209.21098"
id="tspan4197-1-0">North pole</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="526.23138"
y="211.77133"
id="text4193-62-9"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="526.23138"
y="211.77133"
id="tspan4197-1-3">Normal to</tspan><tspan
sodipodi:role="line"
x="526.23138"
y="224.27133"
id="tspan4306">the ellipsoid</tspan><tspan
sodipodi:role="line"
x="526.23138"
y="236.77133"
id="tspan4308">surface</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.1 KiB

@@ -13,5 +13,6 @@ conversions.
axisswap
cart
geoc
latlon
unitconvert
@@ -6,7 +6,7 @@ Unit conversion
.. versionadded:: 5.0.0
Convert between various distance and time units.
Convert between various distance, angular and time units.
+---------------------+--------------------------------------------------------+
| **Alias** | unitconvert |
@@ -27,7 +27,7 @@ Many North American systems are defined with coordinates in feet. For example
in Vermont::
+proj=pipeline
+step +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000.00001016 +y_0=0
+step +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k_0=0.999964286 +x_0=500000.00001016 +y_0=0
+step +proj=unitconvert +xy_in=m +xy_out=us-ft
Often when working with GNSS data the timestamps are presented in GPS-weeks,
@@ -35,30 +35,38 @@ but when the data transformed with the `helmert` operation timestamps are
expected to be in units of decimalyears. This can be fixed with `unitconvert`::
+proj=pipeline
+step +proj=unitconvert +t_in=gpsweek +t_out=decimalyear
+step +proj=unitconvert +t_in=gps_week +t_out=decimalyear
+step +proj=helmert +epoch=2000.0 +t_obs=2017.5 ...
Parameters
################################################################################
.. option:: +xy_in=<unit>
.. option:: +xy_in=<unit> or <conversion_factor>
Horizontal input units. See :ref:`distance_units` for a list of available
Horizontal input units. See :ref:`distance_units` and :ref:`angular_units`
for a list of available units. `<conversion_factor>` is the conversion factor
from the input unit to metre for linear units, or to radian for angular
units.
.. option:: +xy_out=<unit>
.. option:: +xy_out=<unit> or <conversion_factor>
Horizontal output units. See :ref:`distance_units` for a list of available
Horizontal output units. See :ref:`distance_units` and :ref:`angular_units`
for a list of available units. `<conversion_factor>` is the conversion factor
from the output unit to metre for linear units, or to radian for angular
units.
.. option:: +z_in=<unit>
.. option:: +z_in=<unit> or <conversion_factor>
Vertical output units. See :ref:`distance_units` for a list of available
Vertical output units. See :ref:`distance_units` and :ref:`angular_units`
for a list of available units. `<conversion_factor>` is the conversion factor
from the input unit to metre for linear units, or to radian for angular
units.
.. option:: +z_out=<unit>
.. option:: +z_out=<unit> or <conversion_factor>
Vertical output units. See :ref:`distance_units` for a list of available
Vertical output units. See :ref:`distance_units` and :ref:`angular_units`
for a list of available units. `<conversion_factor>` is the conversion factor
from the output unit to metre for linear units, or to radian for angular
units.
.. option:: +t_in=<unit>
@@ -74,7 +82,7 @@ Parameters
Distance units
###############################################################################
In the table below all distance units supported by PROJ is listed.
In the table below all distance units supported by PROJ are listed.
The same list can also be produced on the command line with :program:`proj` or
:program:`cs2cs`, by adding the `-lu` flag when calling the utility.
@@ -124,12 +132,31 @@ The same list can also be produced on the command line with :program:`proj` or
| ind-ch | Indian Chain |
+----------+---------------------------------+
.. _angular_units:
Angular units
###############################################################################
.. versionadded:: 5.2.0
In the table below all angular units supported by PROJ `unitconvert` are listed.
+----------+---------------------------------+
| **Label**| **Name** |
+----------+---------------------------------+
| deg | Degree |
+----------+---------------------------------+
| grad | Grad |
+----------+---------------------------------+
| rad | Radian |
+----------+---------------------------------+
.. _time_units:
Time units
###############################################################################
In the table below all time units supported by PROJ is listed.
In the table below all time units supported by PROJ are listed.
+--------------+-----------------------------+
| **label** | **Name** |
+5 -2
View File
@@ -20,10 +20,13 @@ Albers Equal Area
+---------------------+----------------------------------------------------------+
.. image:: ./images/aea.png
:scale: 50%
.. figure:: ./images/aea.png
:width: 500 px
:align: center
:alt: Albers Equal Area
proj-string: ``+proj=aea``
Options
################################################################################
+5 -2
View File
@@ -18,10 +18,13 @@ Azimuthal Equidistant
+---------------------+----------------------------------------------------------+
.. image:: ./images/aeqd.png
:scale: 50%
.. figure:: ./images/aeqd.png
:width: 500 px
:align: center
:alt: Azimuthal Equidistant
proj-string: ``+proj=aeqd``
Options
################################################################################
+5 -2
View File
@@ -26,10 +26,13 @@ within the small or great circle defined by an angular distance,
.. image:: ./images/airy.png
:scale: 50%
.. figure:: ./images/airy.png
:width: 500 px
:align: center
:alt: Airy
proj-string: ``+proj=airy``
Options
################################################################################
@@ -19,10 +19,13 @@ Aitoff
| **Output type** | Projected coordinates |
+---------------------+----------------------------------------------------------+
.. image:: ./images/aitoff.png
:scale: 50%
.. figure:: ./images/aitoff.png
:width: 500 px
:align: center
:alt: Aitoff
proj-string: ``+proj=aitoff``
Parameters
################################################################################
+5 -4
View File
@@ -20,10 +20,13 @@ Modified Stererographics of Alaska
+---------------------+----------------------------------------------------------+
.. image:: ./images/alsk.png
:scale: 50%
.. figure:: ./images/alsk.png
:width: 500 px
:align: center
:alt: Mod. Stererographics of Alaska
proj-string: ``+proj=alsk``
Options
################################################################################
@@ -34,5 +37,3 @@ Options
.. include:: ../options/y_0.rst
.. include:: ../options/ellps.rst
.. include:: ../options/R.rst
+5 -2
View File
@@ -21,10 +21,13 @@ Apian Globular I
+---------------------+----------------------------------------------------------+
.. image:: ./images/apian.png
:scale: 50%
.. figure:: ./images/apian.png
:width: 500 px
:align: center
:alt: Apian Globular I
proj-string: ``+proj=apian``
Options
################################################################################
+18 -3
View File
@@ -4,7 +4,22 @@
August Epicycloidal
********************************************************************************
.. image:: ./images/august.png
:scale: 50%
:alt: August Epicycloidal
.. figure:: ./images/august.png
:width: 500 px
:align: center
:alt: August Epicycloidal
proj-string: ``+proj=august``
Parameters
################################################################################
.. note:: All options are optional for the August Epicycloidal projection.
.. include:: ../options/lon_0.rst
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst
+18 -3
View File
@@ -4,7 +4,22 @@
Bacon Globular
********************************************************************************
.. image:: ./images/bacon.png
:scale: 50%
:alt: Bacon Globular
.. figure:: ./images/bacon.png
:width: 500 px
:align: center
:alt: Bacon Globular
proj-string: ``+proj=bacon``
Parameters
################################################################################
.. note:: All parameters are optional for the Bacon Globular projection.
.. include:: ../options/lon_0.rst
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst
@@ -0,0 +1,64 @@
.. _bertin1953:
********************************************************************************
Bertin 1953
********************************************************************************
.. versionadded:: 6.0.0
+---------------------+-------------------------------+
| **Classification** | Miscellaneous |
+---------------------+-------------------------------+
| **Available forms** | Forward, spherical projection |
+---------------------+-------------------------------+
| **Defined area** | Global |
+---------------------+-------------------------------+
| **Alias** | bertin1953 |
+---------------------+-------------------------------+
| **Domain** | 2D |
+---------------------+-------------------------------+
| **Input type** | Geodetic coordinates |
+---------------------+-------------------------------+
| **Output type** | Projected coordinates |
+---------------------+-------------------------------+
.. figure:: ./images/bertin1953.png
:width: 500 px
:align: center
:alt: Bertin 1953
proj-string: ``+proj=bertin1953``
The Bertin 1953 projection is intended for making world maps. Created by Jacques Bertin
in 1953, this projection was the go-to choice of the French cartographic school when they
wished to represent phenomena on a global scale. The projection was formulated in 2017
by Philippe Rivière for visionscarto.net.
Usage
###############################################################################
The Bertin 1953 projection has no special options. Its rotation parameters
are fixed. Here is an example of a forward projection with scale 1:
$ echo 122 47 | src/proj +proj=bertin1953 +R=1
0.72 0.73
Parameters
################################################################################
.. note:: All parameters for the projection are optional.
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst
Further reading
################################################################################
#. Philippe Rivière (2017). `Bertin Projection (1953) <https://visionscarto.net/bertin-projection-1953>`, Visionscarto.net.
+22 -3
View File
@@ -4,7 +4,26 @@
Bipolar conic of western hemisphere
********************************************************************************
.. image:: ./images/bipc.png
:scale: 50%
:alt: Bipolar conic of western hemisphere
.. figure:: ./images/bipc.png
:width: 500 px
:align: center
:alt: Bipolar conic of western hemisphere
proj-string: ``+proj=bipc +ns``
Parameters
################################################################################
.. note:: All options are optional for the Bipolar Conic projection.
.. option:: +ns
Return non-skewed cartesian coordinates.
.. include:: ../options/lon_0.rst
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst
+18 -3
View File
@@ -4,7 +4,22 @@
Boggs Eumorphic
********************************************************************************
.. image:: ./images/boggs.png
:scale: 50%
:alt: Boggs Eumorphic
.. figure:: ./images/boggs.png
:width: 500 px
:align: center
:alt: Boggs Eumorphic
proj-string: ``+proj=boggs``
Parameters
################################################################################
.. note:: All options are optional for the Boggs Eumorphic projection.
.. include:: ../options/lon_0.rst
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst
+26 -3
View File
@@ -4,7 +4,30 @@
Bonne (Werner lat_1=90)
********************************************************************************
.. image:: ./images/bonne.png
:scale: 50%
:alt: Bonne (Werner lat_1=90)
.. figure:: ./images/bonne.png
:width: 500 px
:align: center
:alt: Bonne (Werner lat_1=90)
proj-string: ``+proj=bonne +lat_1=10``
Parameters
################################################################################
Required
--------------------------------------------------------------------------------
.. include:: ../options/lat_1.rst
Optional
--------------------------------------------------------------------------------
.. include:: ../options/lon_0.rst
.. include:: ../options/ellps.rst
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst
@@ -26,7 +26,7 @@ California Cooperative Oceanic Fisheries Investigations program, known as CalCOF
.. image:: ../../../images/calcofi.png
:scale: 50%
:width: 500 px
:align: center
:alt: Cal Coop Ocean Fish Invest Lines/Stations
@@ -82,8 +82,8 @@ Options
Mathematical definition
################################################################################
The algorithm used to make conversions is described in [EberHewitt1979]_ with
a few corrections reported in [WeberMoore2013]_.
The algorithm used to make conversions is described in :cite:`EberHewitt1979` with
a few corrections reported in :cite:`WeberMoore2013`.
Further reading
+7 -5
View File
@@ -23,14 +23,17 @@ Although the Cassini projection has been largely replaced by the Transverse Merc
+---------------------+-------------------------------------------------------------------------+
.. image:: ./images/cass.png
:scale: 50%
.. figure:: ./images/cass.png
:width: 500 px
:align: center
:alt: Cassini
proj-string: ``+proj=cass``
Usage
#####
There has been little usage of the spherical version of the Cassini, but the ellipsoidal Cassini-Soldner version was adopted by the Ordnance Survey for the official survey of Great Britain during the second half of the 19th century [Steers1970]_.
There has been little usage of the spherical version of the Cassini, but the ellipsoidal Cassini-Soldner version was adopted by the Ordnance Survey for the official survey of Great Britain during the second half of the 19th century :cite:`Steers1970`.
Many of these maps were prepared at a scale of 1:2,500.
The Cassini-Soldner was also used for the detailed mapping of many German states during the same period.
@@ -67,7 +70,7 @@ Options
Mathematical definition
#######################
The formulas describing the Cassini projection are taken from Snyder's [Snyder1987]_.
The formulas describing the Cassini projection are taken from :cite:`Snyder1987`.
:math:`\phi_0` is the latitude of origin that match the center of the map (default to 0). It can be set with ``+lat_0``.
@@ -162,5 +165,4 @@ Further reading
###############
#. `Wikipedia <https://en.wikipedia.org/wiki/Equirectangular_projection>`_
#. [Snyder1987]_
#. `EPSG, POSC literature pertaining to Coordinate Conversions and Transformations including Formulas <http://www.ihsenergy.com/epsg/guid7.pdf>`_
+18 -3
View File
@@ -4,7 +4,22 @@
Central Cylindrical
********************************************************************************
.. image:: ./images/cc.png
:scale: 50%
:alt: Central Cylindrical
.. figure:: ./images/cc.png
:width: 500 px
:align: center
:alt: Central Cylindrical
proj-string: ``+proj=cc``
Parameters
################################################################################
.. note:: All parameters are optional for the Central Cylindricla projection.
.. include:: ../options/lon_0.rst
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst
+6 -4
View File
@@ -26,10 +26,12 @@ latitude, identical with ``conic()`` projection from ``mapproj`` R package.
+---------------------+----------------------------------------------------------+
.. image:: ./images/ccon.png
:scale: 50%
.. figure:: ./images/ccon.png
:width: 500 px
:align: center
:alt: Central Conic
proj-string: ``+proj=ccon +lat_1=52 +lon_0=19``
Usage
########
@@ -39,7 +41,7 @@ conformal.
An example of usage (and the main reason to implement this projection in proj4)
is the ATPOL geobotanical grid of Poland, developed in Institute of Botany,
Jagiellonian University, Krakow, Poland in 1970s [Zajac1978]_. The grid was
Jagiellonian University, Krakow, Poland in 1970s :cite:`Zajac1978`. The grid was
originally handwritten on paper maps and further copied by hand. The projection
(together with strange Earth radius) was chosen by its creators as the compromise
fit to existing maps during first software development in DOS era. Many years later
@@ -51,7 +53,7 @@ The ATPOL coordinates can be achieved with with the following parameters:
+proj=ccon +lat_1=52 +lon_0=19 +axis=esu +a=6390000 +x_0=330000 +y_0=-350000
For more information see [Komsta2016]_ and [Verey2017]_.
For more information see :cite:`Komsta2016` and :cite:`Verey2017`.
Parameters
################################################################################
+24 -3
View File
@@ -4,7 +4,28 @@
Equal Area Cylindrical
********************************************************************************
.. image:: ./images/cea.png
:scale: 50%
:alt: Equal Area Cylindrical
.. figure:: ./images/cea.png
:width: 500 px
:align: center
:alt: Equal Area Cylindrical
proj-string: ``+proj=cea``
Parameters
################################################################################
.. note:: All parameters are optional for the Equal Area Cylindrical projection.
.. include:: ../options/lat_ts.rst
.. include:: ../options/lon_0.rst
.. include:: ../options/ellps.rst
.. include:: ../options/R.rst
.. include:: ../options/k_0.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst
+46 -3
View File
@@ -4,7 +4,50 @@
Chamberlin Trimetric
********************************************************************************
.. image:: ./images/chamb.png
:scale: 50%
:alt: Chamberlin Trimetric
.. figure:: ./images/chamb.png
:width: 500 px
:align: center
:alt: Chamberlin Trimetric
proj-string: ``+proj=chamb +lat_1=10 +lon_1=30 +lon_2=40``
Parameters
################################################################################
Required
--------------------------------------------------------------------------------
.. option:: +lat_1=<value>
Latitude of the first control point.
.. option:: +lon_1=<value>
Longitude of the first control point.
.. option:: +lat_2=<value>
Latitude of the second control point.
.. option:: +lon_2=<value>
Longitude of the second control point.
.. option:: +lat_3=<value>
Latitude of the third control point.
.. option:: +lon_3=<value>
Longitude of the third control point.
Optional
--------------------------------------------------------------------------------
.. include:: ../options/lon_0.rst
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst
+19 -3
View File
@@ -4,7 +4,23 @@
Collignon
********************************************************************************
.. image:: ./images/collg.png
:scale: 50%
:alt: Collignon
.. figure:: ./images/collg.png
:width: 500 px
:align: center
:alt: Collignon
proj-string: ``+proj=collg``
Parameters
################################################################################
.. note:: All parameters are optional for the Collignon projection.
.. include:: ../options/lon_0.rst
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst
+19 -3
View File
@@ -4,7 +4,23 @@
Craster Parabolic (Putnins P4)
********************************************************************************
.. image:: ./images/crast.png
:scale: 50%
:alt: Craster Parabolic (Putnins P4)
.. figure:: ./images/crast.png
:width: 500 px
:align: center
:alt: Craster Parabolic (Putnins P4)
proj-string: ``+proj=crast``
Parameters
################################################################################
.. note:: All parameters are optional for the Craster Parabolic projection.
.. include:: ../options/lon_0.rst
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst
+18 -3
View File
@@ -4,7 +4,22 @@
Denoyer Semi-Elliptical
********************************************************************************
.. image:: ./images/denoy.png
:scale: 50%
:alt: Denoyer Semi-Elliptical
.. figure:: ./images/denoy.png
:width: 500 px
:align: center
:alt: Denoyer Semi-Elliptical
proj-string: ``+proj=denoy``
Parameters
################################################################################
.. note:: All parameters are optional for the Denoyer Semi-Elliptical projection.
.. include:: ../options/lon_0.rst
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst
+16 -2
View File
@@ -4,10 +4,13 @@
Eckert I
********************************************************************************
.. image:: ./images/eck1.png
:scale: 50%
.. figure:: ./images/eck1.png
:width: 500 px
:align: center
:alt: Eckert I
proj-string: ``+proj=eck1``
.. math::
@@ -15,4 +18,15 @@ Eckert I
y &= 2 \sqrt{2/3\pi}\phi
Parameters
################################################################################
.. note:: All parameters are optional for the Eckert I projection.
.. include:: ../options/lon_0.rst
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst
.. include:: ../options/y_0.rst

Some files were not shown because too many files have changed in this diff Show More