[Mobilitydb-dev] Update about my experiments integrating PostGIS 3.1.3 and MobilityDB

Regina Obe lr at pcorp.us
Mon Aug 23 21:18:46 PDT 2021


Just an FYI I am now subscribed to the mobilitydb dev mailing list, so all this kind of correspondence should continue there.

It will allow for others who are interested to get more involved.

 

Thanks,

Regina

 

From: Esteban Zimanyi [mailto:estebanzimanyi at gmail.com] 
Sent: Monday, August 23, 2021 12:59 PM
To: Vicky Vergara <vicky at georepublic.de>
Cc: mobilitydb-dev at lists.osgeo.org; Regina Obe <lr at pcorp.us>; Mahmoud Sakr <m_attia_sakr at yahoo.com>; mohamed sayed <mohamed_bakli at aun.edu.eg>; SCHOEMANS Maxime <Maxime.Schoemans at ulb.be>
Subject: Re: Update about my experiments integrating PostGIS 3.1.3 and MobilityDB

 

I always solved that problem with the setPrecision functions

https://docs.mobilitydb.com/MobilityDB/develop/ch04s05.html#box_setPrecision

https://docs.mobilitydb.com/MobilityDB/develop/ch05s06.html#tpoint_setPrecision

You can find numerous setPrecision calls in all the tests. I needed to do that when switching to PosgreSQL 13 because the output of the floating point values were different between versions.

 

The difference now is that in PostGIS 3 they started using the ryu library for output coordinates. The difference wrt the other tests is that we need to output a geometry/geography as result of the trajectory function.

 

I have almost finished today to write a simple setPrecision function for geometry/geography so that for example, the test

 SELECT ST_AsText(trajectory(tnpoint 'Npoint(1, 0.5)@2000-01-01'));

will be replaced by 

 SELECT ST_AsText(setPrecision(trajectory(tnpoint 'Npoint(1, 0.5)@2000-01-01'), 6));

and this will solve the multiplatform variation for the tests.

 

 




------------------------------------------------------------
Prof. Esteban Zimanyi
Department of Computer & Decision Engineering  (CoDE) CP 165/15    
Universite Libre de Bruxelles            
Avenue F. D. Roosevelt 50                
B-1050 Brussels, Belgium                 
fax: + 32.2.650.47.13
tel: + 32.2.650.31.85
e-mail: esteban.zimanyi at ulb.be <mailto:esteban.zimanyi at ulb.be> 
Internet: http://cs.ulb.ac.be/members/esteban/
------------------------------------------------------------

 

 

On Mon, Aug 23, 2021 at 6:42 PM Vicky Vergara <vicky at georepublic.de <mailto:vicky at georepublic.de> > wrote:

Yeah, I have that problem also when testing on different platforms/compilers/postgres
But I resolved by using on some tests that were having precision problems with:
SET extra_float_digits = -3;
https://github.com/pgRouting/pgrouting/blob/main/pgtap/withPoints/withPoints_oneToOne-compare-dijkstra.test.sql#L30
Documentation about that can be found here:
https://www.postgresql.org/docs/12/datatype-numeric.html

 

In another case I had to resolve floating point comparison internally with:
https://github.com/pgRouting/pgrouting/blob/main/src/common/xy_vertex.cpp#L36

Which I got from here:
https://en.cppreference.com/w/cpp/types/numeric_limits/epsilon

 

Allways keep in mind floating point 

Remember for example that:

mathematically: 1 == 1/3 + 1/3 + 1/3

But computationally: 1 != 1/3 + 1/3 + 1/3

The reason is floating point

 

I like this article

https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/

 

 

On Sun, Aug 22, 2021 at 7:56 AM Esteban Zimanyi <estebanzimanyi at gmail.com <mailto:estebanzimanyi at gmail.com> > wrote:

Dear Vicky and Regina

 

Following the recommendations we received at the PostGIS Dev meeting this August 20, I started to experiment the embedding of liblwgeom from PostGIS 3.1.3 inside MobilityDB. I was able to run the MobilityDB tests but obviously things have changed from versions 2.5.5 to 3.1.3. 

 

You will find enclosed a diff of the results of one of the tests. As you can see there are two types of differences. The first one concerns a very small floating point precision difference, e.g.,

 

 SELECT ST_AsText(trajectory(tnpoint 'Npoint(1, 0.5)@2000-01-01'));
-                 st_astext                  
---------------------------------------------
- POINT(48.71866291282778 77.76407051015086)
+                st_astext                 
+------------------------------------------
+ POINT(48.7186629128278 77.7640705101509)
 (1 row)

 

Another type of error concerns deprecated functions

 

 SELECT setPrecision(atGeometry(tnpoint '{Npoint(1, 0.3)@2000-01-01, Npoint(1, 0.5)@2000-01-02, Npoint(1, 0.5)@2000-01-03}', geometry 'SRID=5676;Polygon((50 50,50 100,100 100,100 50,50 50))'), 6);
-ERROR
-DETAIL:  Library function 'intersects' was deprecated in PostGIS 3.0.0
-HINT:  Consider running: SELECT postgis_extensions_upgrade()
+              setprecision              
+----------------------------------------
+ {NPoint(1,0.3)@2000-01-01 00:00:00+00}
+(1 row)
+

 

In the forthcoming days I will be modifying the develop branch so that the tests can be run in both versions PostGIS 2.5.5 and 3.1.3.

 

Furthermore, as a consequence of the problem I reported on the ticket

https://trac.osgeo.org/postgis/ticket/4979#comment:5

it is not possible to mix PostGIS 2.5.5 and 3.1.3 (e.g., use liblwgeom.so from PostGIS 2.5.5 with PostGIS 3.1.3 which was one of the tests planned) since all the lwgeom struct definitions have been changed.

 

Regards

 

Esteban

 

------------------------------------------------------------

Prof. Esteban Zimanyi
Department of Computer & Decision Engineering  (CoDE) CP 165/15    
Universite Libre de Bruxelles            
Avenue F. D. Roosevelt 50                
B-1050 Brussels, Belgium                 
fax: + 32.2.650.47.13
tel: + 32.2.650.31.85
e-mail: esteban.zimanyi at ulb.be <mailto:esteban.zimanyi at ulb.be> 
Internet: http://cs.ulb.ac.be/members/esteban/
------------------------------------------------------------



-- 

Georepublic UG (haftungsbeschränkt)
Salzmannstraße 44, 
81739 München, Germany
 
Vicky Vergara
Operations Research
 
eMail: vicky at georepublic.de <http://georepublic.de> 
Web: https://georepublic.info
 
Tel: +49 (089) 4161 7698-1
Fax: +49 (089) 4161 7698-9
 
Commercial register: Amtsgericht München, HRB 181428
CEO: Daniel Kastl
 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mobilitydb-dev/attachments/20210824/ade87704/attachment-0001.html>


More information about the Mobilitydb-dev mailing list