[PROJ] Proj 6 API questions

Kristian Evers kreve at sdfe.dk
Mon Mar 18 00:34:25 PDT 2019


I may be wrong but I don’t think there are acronyms for them. It’s based
on the EPSG dataset and acronyms are not assigned in that regime. Do
you actually need them or is this just so that it fits better in existing QGIS
infrastructure?

We could potentially assign acronyms for all ellipsoids but I fear that will
become a maintenance mess whenever the EPSG dataset is updated.

/Kristian 

> On 18 Mar 2019, at 08:27, Nyall Dawson <nyall.dawson at gmail.com> wrote:
> 
> On Mon, 18 Mar 2019 at 16:56, Kristian Evers <kreve at sdfe.dk> wrote:
>> 
>> You use proj_get_authorities_from_database() for that. Generally there’s functions
>> for retrieving all info like that, just search around in the function reference a bit and you’ll
>> find it.
> 
> Ok, that part is working, and I'm seeing a LOT more! But now I'm a bit
> confused... if I use this approach to iterate through the ellipsoids,
> is there anyway to get the ellipsoid acronym from them? Using
> proj_list_ellps I could get PJ_ELLPS->id.
> 
> Nyall
> 
> 
> 
>> 
>> /Kristian
>> 
>> On 18 Mar 2019, at 07:52, Nyall Dawson <nyall.dawson at gmail.com> wrote:
>> 
>> On Mon, 18 Mar 2019 at 16:42, Kristian Evers <kreve at sdfe.dk> wrote:
>> 
>> 
>> 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
>> using type PJ_TYPE_ELLIPSOID.
>> 
>> 
>> What should I use as auth_name if I want to get ALL ellipsoids? The
>> dox state it must not be null...
>> 
>> Thanks for the detailed pointers, I'll let you know the result!
>> 
>> Nyall
>> 
>> 
>> You should then be able to get the
>> parameters with proj_ellipsoid_get_parameters. 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> 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
>> https://lists.osgeo.org/mailman/listinfo/proj
>> 
>> 
>> _______________________________________________
>> PROJ mailing list
>> PROJ at lists.osgeo.org
>> https://lists.osgeo.org/mailman/listinfo/proj
>> 
>> 



More information about the PROJ mailing list