[PROJ] Proj 6 API questions

Kristian Evers kreve at sdfe.dk
Sun Mar 17 23:42:12 PDT 2019


Hi Nyall,

I am very happy to see that you have started working on this!

You will probably get less discrepancies between the QGIS list of ellipsoids
and the PROJ equivalent if you instead use proj_get_codes_from_database<https://proj4.org/development/reference/functions.html#_CPPv328proj_get_codes_from_databaseP10PJ_CONTEXTPKc7PJ_TYPEi>
using type PJ_TYPE_ELLIPSOID<https://proj4.org/development/reference/datatypes.html#_CPPv3N14iso19111_types17PJ_TYPE_ELLIPSOIDE>. You should then be able to get the
parameters with proj_ellipsoid_get_parameters<https://proj4.org/development/reference/functions.html#_CPPv329proj_ellipsoid_get_parametersP10PJ_CONTEXTPK2PJPdPdPiPd>. This is untested on my part
but I believe that is the general workflow you have to go through to get the
ellipsoid out of proj.db.

proj_list_ellps() simply shows you the same list as you would get from calling
`proj -le`, i.e. ellipsoids that can be used with `+ellps=xxx` parameters. This
is confusing and I shall think of a way to change the docs so it is less confusing :-)

It would be interesting to see the difference between the ellipsoid tables from
The QGIS and PROJ databases.

/Kristian

On 18 Mar 2019, at 04:39, Nyall Dawson <nyall.dawson at gmail.com<mailto:nyall.dawson at gmail.com>> wrote:

Hi list,

So (thanks for sponsorship from the ICSM), I'm working on porting QGIS
to the Proj 6 API. I suspect I'll have many more questions (especially
as I attempt to drop QGIS' own custom projection database in favour of
the upstream proj one). Let's get started...

I thought I'd begin with a simple task of replacing QGIS' ellipsoid db
with proj's, using proj_list_ellps(). QGIS has this table of
"standard" ellipsoids, built up from... somewhere... in the vast
history of the QGIS project. When comparing against proj's db, it
includes many items which are missing in proj's:

Adrastea2000: Adrastea2000 10000.0/7000.0
Amalthea2000: Amalthea2000 125000.0/64000.0
Ananke2000: Ananke2000 10000.0/10000.0
Ariel2000: Ariel2000 581100.0/577700.0
Atlas2000: Atlas2000 18500.0/13500.0
Belinda2000: Belinda2000 33000.0/33000.0
Bianca2000: Bianca2000 21000.0/21000.0
Callisto2000: Callisto2000 2409400.0/2409300.0
Calypso2000: Calypso2000 15000.0/8000.0
Carme2000: Carme2000 15000.0/15000.0
Charon2000: Charon2000 593000.0/593000.0
IGNF:ELG004: Clarke 1866 6378206.4/6356583.799998981
IGNF:ELG003: Clarke 1880 Anglais 6378249.1453/6356514.8698
IGNF:ELG010: Clarke 1880 IGN 6378249.2/6356514.999978254
cape: Clarke 1880 mod. 6378249.145/6356514.966398753
Cordelia2000: Cordelia2000 13000.0/13000.0
Cressida2000: Cressida2000 31000.0/31000.0
Deimos2000: Deimos2000 7500.0/5200.0
Desdemona2000: Desdemona2000 27000.0/27000.0
Despina2000: Despina2000 74000.0/74000.0
Dione2000: Dione2000 560000.0/560000.0
Earth2000: Earth2000 6378140.0/6356750.0
Elara2000: Elara2000 40000.0/40000.0
Enceladus2000: Enceladus2000 256300.0/244600.0
Epimetheus2000: Epimetheus2000 69000.0/55000.0
Europa2000: Europa2000 1564130.0/1560930.0
Galatea2000: Galatea2000 79000.0/79000.0
Ganymede2000: Ganymede2000 2632400.0/2632350.0
Helene2000: Helene2000 16000.0/16000.0
Himalia2000: Himalia2000 85000.0/85000.0
Hyperion2000: Hyperion2000 164000.0/107000.0
IGNF:ELG108: IAG GRS 1967 6378160.0/6356774.5161
IGNF:ELG037: IAG GRS 1980 6378137.0/6356752.314140356
Iapetus2000: Iapetus2000 718000.0/718000.0
IGNF:ELG001: International-Hayford 1909 6378388.0/6356911.9461279465
Io2000: Io2000 1829400.0/1815700.0
Janus2000: Janus2000 97000.0/77000.0
Juliet2000: Juliet2000 42000.0/42000.0
Jupiter2000: Jupiter2000 71492000.0/66854000.0
Larissa2000: Larissa2000 96000.0/96000.0
Leda2000: Leda2000 5000.0/5000.0
Lysithea2000: Lysithea2000 12000.0/12000.0
Mars2000: Mars2000 3396190.0/3376200.0
Mercury2000: Mercury2000 2439700.0/2439700.0
Metis2000: Metis2000 21500.0/21500.0
Mimas2000: Mimas2000 209100.0/191400.0
Miranda2000: Miranda2000 240400.0/232900.0
Moon2000: Moon2000 1737400.0/1737400.0
Naiad2000: Naiad2000 29000.0/29000.0
Neptune2000: Neptune2000 24764000.0/24341000.0
Nereid2000: Nereid2000 170000.0/170000.0
Oberon2000: Oberon2000 761400.0/761400.0
Ophelia2000: Ophelia2000 15000.0/15000.0
IGNF:ELG017: PLESSIS 1817 6376523.0/6355862.933255573
Pan2000: Pan2000 10000.0/10000.0
Pandora2000: Pandora2000 55000.0/31000.0
Pasiphae2000: Pasiphae2000 18000.0/18000.0
Phobos2000: Phobos2000 13400.0/9200.0
Phoebe2000: Phoebe2000 115000.0/105000.0
Pluto2000: Pluto2000 1195000.0/1195000.0
Portia2000: Portia2000 54000.0/54000.0
Prometheus2000: Prometheus2000 74000.0/34000.0
Proteus2000: Proteus2000 218000.0/201000.0
Puck2000: Puck2000 77000.0/77000.0
Rhea2000: Rhea2000 764000.0/764000.0
Rosalind2000: Rosalind2000 27000.0/27000.0
IGNF:ELG032: SPHERE PICARD 6371598.0/6371598.0
Saturn2000: Saturn2000 60268000.0/54364000.0
Sinope2000: Sinope2000 14000.0/14000.0
Telesto2000: Telesto2000 15000.0/7500.0
Tethys2000: Tethys2000 535600.0/525800.0
Thalassa2000: Thalassa2000 40000.0/40000.0
Thebe2000: Thebe2000 58000.0/42000.0
Titan2000: Titan2000 2575000.0/2575000.0
Titania2000: Titania2000 788900.0/788900.0
Triton2000: Triton2000 1352600.0/1352600.0
Umbriel2000: Umbriel2000 584700.0/584700.0
Uranus2000: Uranus2000 25559000.0/24973000.0
Venus2000: Venus2000 6051800.0/6051800.0
IGNF:ELG052: WGS72 6378135.0/6356750.520016094
IGNF:ELG102: WGS72 (NWL-10F) 6378135.0/6356750.520016094
IGNF:ELG053: WGS84 6378137.0/6356752.314245179

The vast majority of these are planetary ellipsoids/moons, but there's
others which are less obvious (cape/IGNF*). So

Question 1: should the non-Earth ellipsoids be included in the proj database?

Question 2: What about cape/IGNF* ? Should they be included in proj,
or are they mistakes and should not even be included in the current
QGIS db?

Nyall
_______________________________________________
PROJ mailing list
PROJ at lists.osgeo.org<mailto:PROJ at lists.osgeo.org>
https://lists.osgeo.org/mailman/listinfo/proj

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/proj/attachments/20190318/e02e8eee/attachment-0001.html>


More information about the PROJ mailing list