Hi Sebastian,

Thanks for the link to geographiclib calculator including the geometry. I used 
it in the feature request ticket that I created 
https://github.com/qgis/QGIS/issues/40888.

-Jukka Rahkonen-

Lähettäjä: Sebastian Gutwein <[email protected]>
Lähetetty: keskiviikko 6. tammikuuta 2021 18.11
Vastaanottaja: Nicolas Cadieux <[email protected]>
Kopio: Rahkonen Jukka (MML) <[email protected]>; 
[email protected]
Aihe: Re: [Qgis-user] Confusion with ellipsoidal method of $area

Hello,
Sorry if this gets posted twice I previously attached a .gpkg and it bounced 
due to the 100kb limit.
I am enjoying this fascinating discussion. This is all fairly new to me so I 
looked some things up and want to make sure that I am getting things right,
1.       In QGIS the $area function uses the sphere/ellipsoid settings of the 
project not of the CRS of the layer.
2.       QGIS uses the PROJ library to calculate area
3.       According to the PROJ documentation 
even.rouault.free.fr/proj_cpp_api/rst_generated/html/geodesic.html<http://even.rouault.free.fr/proj_cpp_api/rst_generated/html/geodesic.html>
 PROJ uses GeographicLib to calculate area.
If this is all true then if as  Jukka Rahkonen describes the layer and the 
project were both EPSG:4326 and the ellipsoid in the Project-Settings was WGS 
84 (EPSG:7030) then the QGIS measurements should be consistent (if they are 
correct is open to discussion).with this GeographicLib web calculator that says 
it uses the WGS84 ellipsoid 
geographiclib.sourceforge.io/cgi-bin/Planimeter?type=polygon&rhumb=geodesic&input=59.95688345+20.13293641%0D%0A60.47397663+26.94617837%0D%0A62.56499443+29.74782155%0D%0A68.70650340+27.45254202%0D%0A68.24937206+23.75771765%0D%0A65.27444593+25.42698984%0D%0A63.10353609+21.51545237%0D%0A61.12318104+21.40562760%0D%0A60.40477513+19.41123592%0D%0A59.95688345+20.13293641&option=Submit<http://geographiclib.sourceforge.io/cgi-bin/Planimeter?type=polygon&rhumb=geodesic&input=59.95688345+20.13293641%0D%0A60.47397663+26.94617837%0D%0A62.56499443+29.74782155%0D%0A68.70650340+27.45254202%0D%0A68.24937206+23.75771765%0D%0A65.27444593+25.42698984%0D%0A63.10353609+21.51545237%0D%0A61.12318104+21.40562760%0D%0A60.40477513+19.41123592%0D%0A59.95688345+20.13293641&option=Submit>

Using Jukka Rahkonen's points and processes I ended up with the same non 
consistent results as they reported. Attached is a geopackage with the polygon 
that I used,

On Wed, Jan 6, 2021 at 10:29 AM Sebastian Gutwein 
<[email protected]<mailto:[email protected]>> wrote:
Hello,
I am enjoying this fascinating discussion. This is all fairly new to me so I 
looked some things up and want to make sure that I am getting things right,

  1.  In QGIS the $area function uses the sphere/ellipsoid settings of the 
project not of the CRS of the layer.
  2.  QGIS uses the PROJ library to calculate area
  3.  According to the PROJ documentation 
even.rouault.free.fr/proj_cpp_api/rst_generated/html/geodesic.html<http://even.rouault.free.fr/proj_cpp_api/rst_generated/html/geodesic.html>
 PROJ uses GeographicLib to calculate area.
If this is all true then if as  Jukka Rahkonen describes the layer and the 
project were both EPSG:4326 and the ellipsoid in the Project-Settings was WGS 
84 (EPSG:7030) then the QGIS measurements should be consistent (if they are 
correct is open to discussion).with this GeographicLib web calculator that says 
it uses the WGS84 ellipsoid 
geographiclib.sourceforge.io/cgi-bin/Planimeter?type=polygon&rhumb=geodesic&input=59.95688345+20.13293641%0D%0A60.47397663+26.94617837%0D%0A62.56499443+29.74782155%0D%0A68.70650340+27.45254202%0D%0A68.24937206+23.75771765%0D%0A65.27444593+25.42698984%0D%0A63.10353609+21.51545237%0D%0A61.12318104+21.40562760%0D%0A60.40477513+19.41123592%0D%0A59.95688345+20.13293641&option=Submit<http://geographiclib.sourceforge.io/cgi-bin/Planimeter?type=polygon&rhumb=geodesic&input=59.95688345+20.13293641%0D%0A60.47397663+26.94617837%0D%0A62.56499443+29.74782155%0D%0A68.70650340+27.45254202%0D%0A68.24937206+23.75771765%0D%0A65.27444593+25.42698984%0D%0A63.10353609+21.51545237%0D%0A61.12318104+21.40562760%0D%0A60.40477513+19.41123592%0D%0A59.95688345+20.13293641&option=Submit>

Using Jukka Rahkonen's points and processes I ended up with the same non 
consistent results as they reported. Attached is a geopackage with the polygon 
that I used,
-Sebastian

On Tue, Jan 5, 2021 at 3:52 PM Nicolas Cadieux 
<[email protected]<mailto:[email protected]>> wrote:

Hi,

QGIS is currently built on Proj version 6.3.2-1.  If the other libraries are 
using a spheroid by default, then they use a sphere for speed and not an 
ellipsoid for precision.  You can probably force this measurement in QGIS by 
creating a custom CRS with a spheroid rather than an ellipsoid. The other 
option is to use the python in QGIS and to force a geoid.

Nicolas
On 2021-01-05 1:33 p.m., Rahkonen Jukka (MML) wrote:
Hi,

I suppose that PostGIS is using the WGS 84 ellipsoid but I am not sure where 
from the documentation I could find that information. The ST_Area document 
https://postgis.net/docs/ST_Area.html says only “For geography types by default 
area is determined on a spheroid with units in square meters”. Same thing with 
Spatialite, documentation suggests just that it is “the” spheroid 
http://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html.

I did not notice this paragraph in the ST_Area document earlier “Enhanced: 
2.2.0 - measurement on spheroid performed with GeographicLib for improved 
accuracy and robustness. Requires Proj >= 4.9.0 to take advantage of the new 
feature.” So no wonder that the web app and PostGIS give the same results 
because they both use GeographicLib. And SpatiaLite 5.0 is using RTTopo that is 
a library that is based on LWGeom so close connection in there too.

So perhaps the way to get identical areas from QGIS would be to make it to use 
GeographicLib as well. I have no idea if it is a realistic approach and worth 
making a feature request.

-Jukka Rahkonen-

Lähettäjä: Nicolas Cadieux 
<[email protected]><mailto:[email protected]>
Lähetetty: tiistai 5. tammikuuta 2021 20.04
Vastaanottaja: Rahkonen Jukka (MML) 
<[email protected]><mailto:[email protected]>;
 [email protected]<mailto:[email protected]>
Aihe: Re: [Qgis-user] Confusion with ellipsoidal method of $area


Hi,

Your method in QGIS is sound.  Area is calculated using the wgs84 ellipsoid 
EPSG 7030. If you reproject to wgs84 zone 35N (I think this is close), area 
goes from 249566957499.7546m2  to 249566957499.721m2 or a difference of 0.0336 
m2.  I don't think densification would change things much.

My question is the following: You know that QGIS uses the WGS84 Ellipsoid.  
What Ellipsoid are using used in the other software???  If you don't know, I 
would proceed until you figure that out.

This is the currently used ellipsoid in the proj database in QGIS 3.16.  You 
can get this by typing proj -le in the OSFeo4W Shell.

    MERIT a=6378137.0      rf=298.257       MERIT 1983
    SGS85 a=6378136.0      rf=298.257       Soviet Geodetic System 85
    GRS80 a=6378137.0      rf=298.257222101 GRS 1980(IUGG, 1980)
    IAU76 a=6378140.0      rf=298.257       IAU 1976
     airy a=6377563.396    rf=299.3249646   Airy 1830
   APL4.9 a=6378137.0      rf=298.25        Appl. Physics. 1965
    NWL9D a=6378145.0      rf=298.25        Naval Weapons Lab., 1965
 mod_airy a=6377340.189    b=6356034.446    Modified Airy
   andrae a=6377104.43     rf=300.0         Andrae 1876 (Den., Iclnd.)
   danish a=6377019.2563   rf=300.0         Andrae 1876 (Denmark, Iceland)
  aust_SA a=6378160.0      rf=298.25        Australian Natl & S. Amer. 1969
    GRS67 a=6378160.0      rf=298.2471674270 GRS 67(IUGG 1967)
  GSK2011 a=6378136.5      rf=298.2564151   GSK-2011
   bessel a=6377397.155    rf=299.1528128   Bessel 1841
 bess_nam a=6377483.865    rf=299.1528128   Bessel 1841 (Namibia)
   clrk66 a=6378206.4      b=6356583.8      Clarke 1866
   clrk80 a=6378249.145    rf=293.4663      Clarke 1880 mod.
clrk80ign a=6378249.2      rf=293.4660212936269 Clarke 1880 (IGN).
      CPM a=6375738.7      rf=334.29        Comm. des Poids et Mesures 1799
   delmbr a=6376428.       rf=311.5         Delambre 1810 (Belgium)
  engelis a=6378136.05     rf=298.2566      Engelis 1985
  evrst30 a=6377276.345    rf=300.8017      Everest 1830
  evrst48 a=6377304.063    rf=300.8017      Everest 1948
  evrst56 a=6377301.243    rf=300.8017      Everest 1956
  evrst69 a=6377295.664    rf=300.8017      Everest 1969
  evrstSS a=6377298.556    rf=300.8017      Everest (Sabah & Sarawak)
  fschr60 a=6378166.       rf=298.3         Fischer (Mercury Datum) 1960
 fschr60m a=6378155.       rf=298.3         Modified Fischer 1960
  fschr68 a=6378150.       rf=298.3         Fischer 1968
  helmert a=6378200.       rf=298.3         Helmert 1906
    hough a=6378270.0      rf=297.          Hough
     intl a=6378388.0      rf=297.          International 1909 (Hayford)
    krass a=6378245.0      rf=298.3         Krassovsky, 1942
    kaula a=6378163.       rf=298.24        Kaula 1961
    lerch a=6378139.       rf=298.257       Lerch 1979
    mprts a=6397300.       rf=191.          Maupertius 1738
 new_intl a=6378157.5      b=6356772.2      New International 1967
  plessis a=6376523.       b=6355863.       Plessis 1817 (France)
     PZ90 a=6378136.0      rf=298.25784     PZ-90
   SEasia a=6378155.0      b=6356773.3205   Southeast Asia
  walbeck a=6376896.0      b=6355834.8467   Walbeck
    WGS60 a=6378165.0      rf=298.3         WGS 60
    WGS66 a=6378145.0      rf=298.25        WGS 66
    WGS72 a=6378135.0      rf=298.26        WGS 72
    WGS84 a=6378137.0      rf=298.257223563 WGS 84
   sphere a=6370997.0      b=6370997.0      Normal Sphere (r=6370997)

Nicolas


On 2021-01-05 11:43 a.m., Rahkonen Jukka (MML) wrote:
Hi,

I wonder what method QGIS is using when it computes ellipsoidal area with $area 
function. I made a test with this EPSG:4326 polygon:
POLYGON (( 20.13293641 59.95688345, 26.94617837 60.47397663, 29.74782155 
62.56499443, 27.45254202 68.7065034, 23.75771765 68.24937206, 25.42698984 
65.27444593, 21.51545237 63.10353609, 21.4056276 61.12318104, 19.41123592 
60.40477513, 20.13293641 59.95688345 ))

I checked that the CRS of the project and layer were both EPSG:4326. The 
ellipsoid in the Project-Settings was WGS 84 (EPSG:7030). The area that $area 
returns is
249566957499.7546

As a references I used PostGIS and web site 
https://geographiclib.sourceforge.io/scripts/geod-calc.html#area. With my test 
polygon they both give this result:
251199344354.4308

PostGIS returns bigger area. The difference is 0.654% so not huge but not 
negligible either.

A third test with SpatiaLite 5.0 gives a result that is very close to PostGIS 
(difference 0.001%).
251195856999.549927

As a conclusion I have decided to trust in PostGIS because it gives the same 
results than the web site 
https://geographiclib.sourceforge.io/scripts/geod-calc.html that feels 
scientifically sound. However, I wonder if I have used QGIS in a correct way or 
if there is anything I could do for getting areas to match better with PostGIS 
for example by densifying the long segments in my test polygon.

For getting testing easy I attach directly runnable  SQL for PostGIS and 
Spatialite (version 5.0 with RTTopo is needed) as well as a coordinate list for 
the web app.

PostGIS
select st_area(st_geogfromtext('POLYGON ((
20.13293641   59.95688345,
26.94617837   60.47397663,
29.74782155   62.56499443,
27.45254202   68.70650340,
23.75771765   68.24937206,
25.42698984   65.27444593,
21.51545237   63.10353609,
21.40562760   61.12318104,
19.41123592   60.40477513,
20.13293641   59.95688345))') , true);

Spatialite
select st_area(st_geomfromtext('POLYGON ((
20.13293641   59.95688345,
26.94617837   60.47397663,
29.74782155   62.56499443,
27.45254202   68.70650340,
23.75771765   68.24937206,
25.42698984   65.27444593,
21.51545237   63.10353609,
21.40562760   61.12318104,
19.41123592   60.40477513,
20.13293641   59.95688345))') ,true);

Web site (notice lat-lon order)
59.95688345 20.13293641
60.47397663 26.94617837
62.56499443 29.74782155
68.70650340 27.45254202
68.24937206 23.75771765
65.27444593 25.42698984
63.10353609 21.51545237
61.12318104 21.40562760
60.40477513 19.41123592
59.95688345 20.13293641

-Jukka Rahkonen-


_______________________________________________

Qgis-user mailing list

[email protected]<mailto:[email protected]>

List info: https://lists.osgeo.org/mailman/listinfo/qgis-user

Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user

--

Nicolas Cadieux

https://gitlab.com/njacadieux

--

Nicolas Cadieux

https://gitlab.com/njacadieux
_______________________________________________
Qgis-user mailing list
[email protected]<mailto:[email protected]>
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user
_______________________________________________
Qgis-user mailing list
[email protected]
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to