[postgis-tickets] [PostGIS] #4758: ERROR: XX000: SQL/MM Spatial exception - geometry crosses edge 2, LOCATION: pg_error, lwgeom_pg.c:250

PostGIS trac at osgeo.org
Tue Sep 22 22:04:45 PDT 2020


#4758: ERROR:  XX000: SQL/MM Spatial exception - geometry crosses edge 2,
LOCATION:  pg_error, lwgeom_pg.c:250
----------------------+---------------------------
 Reporter:  laopsahl  |      Owner:  pramsey
     Type:  defect    |     Status:  new
 Priority:  medium    |  Milestone:  PostGIS 3.1.0
Component:  postgis   |    Version:  3.0.x
 Keywords:            |
----------------------+---------------------------
 When running a test with about 20 millions edges I see this error 625
 times and I am able to handle it most of this errors with different retry
 patterns but with a side effects that creates extra nodes or having to
 delete re add an old edge.

 I had problems to create a simple test case that failed until I discovered
 that the order of adding lines are very important.

 I case 1 it fails, but in case 2 it goes ok and I have only changed the
 order of adding the same lines.

 I am running on
 POSTGIS="3.1.0dev 3.1.0alpha2-63-g82d31f3" [EXTENSION] PGSQL="120"
 GEOS="3.8.1-CAPI-1.13.3" PROJ="7.1.0" LIBXML="2.9.1" LIBJSON="0.11"
 TOPOLOGY

 Test case 1 that fails.

 {{{
 select topology.CreateTopology ('test01_fail', 4258, 1e-06);
 select
 topology.TopoGeo_addLinestring('test01_fail','0102000020A210000019000000ACFF73982FC326404B9D369927344E400127254E38C32640C2A5BE8726344E40D77CA6A844C32640CEAF9C7326344E40D381ACA756C32640E1AAFC7C25344E401DF0AFD469C32640350BB43B24344E408C88BDAB79C32640B862354C23344E40AC7713D78CC32640D006600322344E403AAE4676A5C326402B27EB8120344E40F4A3E194B9C326401FAD7B751F344E408C73E5FDC9C32640259B61591F344E400987DEE2E1C32640F5E27ACA20344E40C64CA25EF0C32640C49A255C23344E40AA0029FBF8C32640453FBF9426344E408EE8F92E00C42640D246BFC72A344E40DF2A99AD06C426404D147C2E2E344E40E0AF13A80FC42640BDC3EDD030344E405458045A15C42640155FA39B33344E4098480E7D1CC426407F37386C36344E40A09630E422C426401894693439344E40CD4AA47E28C426408E4B66063B344E401EC18D942DC42640103EEF213C344E40C896E5EB32C426406F719EFB3C344E406D872B0C36C426409FDB95A73D344E40E6142EF53DC426404531D4BC3E344E406A6F4B3F3CC426405CB521B53F344E40',1e-06);
 select
 topology.TopoGeo_addLinestring('test01_fail','0102000020A2100000040000006A6F4B3F3CC426405CB521B53F344E40C62A4AAE07C4264090943EBE4E344E40C6CE256607C42640BF2FE4C74E344E407EBF3D74E6C3264032E0D16B58344E40',1e-06);
 select
 topology.TopoGeo_addLinestring('test01_fail','0102000020A21000000200000040F09D3D3CC4264026158DB53F344E406A6F4B3F3CC426405CB521B53F344E40',1e-06);
 select
 topology.TopoGeo_addLinestring('test01_fail','0102000020A210000002000000E24A87985CC42640BAF3C47336344E406A6F4B3F3CC426405CB521B53F344E40',1e-06);
 select
 topology.TopoGeo_addLinestring('test01_fail','0102000020A21000001E0000000EEC42BD2AC526400E61A17BFB334E40CEF4B7A926C52640730F09DFFB334E40B08ADC781CC526406675BC13FD334E40EADB93D112C52640AD94AF15FE334E409558BED309C52640D1F4C8D5FE334E40BC4681F403C52640CAD53494FF334E409A5F28BBF4C426407BD058A002344E40D0CBCDDCE8C42640E5D6FF9405344E40CE5AC0BAE0C4264090FDE20808344E40F37B5171D2C42640643BDF4F0D344E40A58DD948C8C426408C07A57911344E40852BFB09C2C42640CCA843B813344E40CCA66D0DB6C42640DDDFEA4A15344E40B475CB69AAC426400CC0AB8A15344E40D6D127A897C42640ADA0698915344E40765BD88981C4264054104DEA15344E405C68F86063C42640651C7E9216344E4035E4446051C42640EEB7D15B17344E40D20D5E0542C4264094C8F43A18344E40CE9BD4E132C426406A15FDA119344E401F3D8F9B2BC426402DF713DF1A344E405F03C70A23C42640E4C814BD1D344E403CBD529621C42640FB5D335420344E40123EA59421C426400B4A873D23344E406310B3F226C426407461FFD027344E40AA91A7F633C42640361D01DC2C344E40F73768AF3EC426404665790D30344E4081D1408754C426401AD1877835344E4007F98F3B5BC4264049809A5A36344E40E24A87985CC42640BAF3C47336344E40',1e-06);
 select
 topology.TopoGeo_addLinestring('test01_fail','0102000020A2100000020000000EEC42BD2AC526400E61A17BFB334E40E24A87985CC42640BAF3C47336344E40',1e-06);
 select topology.TopoGeo_addLinestring('test01_fail',
 '0102000020A210000025000000E24A87985CC42640BAF3C47336344E40573B2FBA61C426406163A8D436344E4070C0F8B369C42640E3C85E4A38344E409D746C4E6FC4264077F52A323A344E4077BAF3C473C42640BD569D303C344E40450A0A2879C42640C8FB82273E344E407AB07BE184C42640BAE2981B42344E407E75B05989C42640E341695E44344E40E5F3E56091C4264041FCB26A46344E400A3BD6D699C4264016BCE82B48344E40DEEBFF779FC426402D54A3FC49344E404C7B945BA4C4264097D3AFBE4B344E4060FB6E5FACC4264013D5B6BC4D344E4087AAF303B2C42640669C2BEF4F344E408F0C8343B9C42640F439D27451344E40E03AB5E9BEC426406A1FE16A53344E4013848659C3C42640920B845355344E40B33396FAC3C426406239F87857344E407E969D34C3C42640EA44DD6259344E403E0FA441C0C42640E9C8DB5B5B344E40ED98BA2BBBC42640E202D0285D344E401166248CB0C42640DB28571D5E344E40233031F1A2C42640476C1C565D344E40F35A649698C426408F66D1E05B344E4067E66E7C92C42640C69970F959344E40BEB4F2DC8CC42640BBF48A0258344E40A1BB24CE8AC42640C8A87C1956344E405251AB9E82C426404102902452344E40603F1FC07DC4264036D0D78750344E40F763496F6EC42640E49B6D6E4C344E40AEA29AED65C42640BC81B8614A344E40B91391065CC4264058F0918348344E400AB54BC054C426403B3CDFAA46344E409E094D124BC42640FA3B80EA44344E40D782DE1B43C42640D7B0F03F43344E4085483C8F40C426404F77F93141344E4040F09D3D3CC4264026158DB53F344E40',
 1e-06);

 ERROR:  XX000: SQL/MM Spatial exception - geometry crosses edge 2
 LOCATION:  pg_error, lwgeom_pg.c:250

 }}}

 Test case 2, that works ok with same lines but in different order than
 case 1.

 {{{
 select topology.CreateTopology ('test01_ok', 4258, 1e-06);
 select
 topology.TopoGeo_addLinestring('test01_ok','0102000020A21000001E0000000EEC42BD2AC526400E61A17BFB334E40CEF4B7A926C52640730F09DFFB334E40B08ADC781CC526406675BC13FD334E40EADB93D112C52640AD94AF15FE334E409558BED309C52640D1F4C8D5FE334E40BC4681F403C52640CAD53494FF334E409A5F28BBF4C426407BD058A002344E40D0CBCDDCE8C42640E5D6FF9405344E40CE5AC0BAE0C4264090FDE20808344E40F37B5171D2C42640643BDF4F0D344E40A58DD948C8C426408C07A57911344E40852BFB09C2C42640CCA843B813344E40CCA66D0DB6C42640DDDFEA4A15344E40B475CB69AAC426400CC0AB8A15344E40D6D127A897C42640ADA0698915344E40765BD88981C4264054104DEA15344E405C68F86063C42640651C7E9216344E4035E4446051C42640EEB7D15B17344E40D20D5E0542C4264094C8F43A18344E40CE9BD4E132C426406A15FDA119344E401F3D8F9B2BC426402DF713DF1A344E405F03C70A23C42640E4C814BD1D344E403CBD529621C42640FB5D335420344E40123EA59421C426400B4A873D23344E406310B3F226C426407461FFD027344E40AA91A7F633C42640361D01DC2C344E40F73768AF3EC426404665790D30344E4081D1408754C426401AD1877835344E4007F98F3B5BC4264049809A5A36344E40E24A87985CC42640BAF3C47336344E40',1e-06);
 select
 topology.TopoGeo_addLinestring('test01_ok','0102000020A2100000020000000EEC42BD2AC526400E61A17BFB334E40E24A87985CC42640BAF3C47336344E40',1e-06);
 select
 topology.TopoGeo_addLinestring('test01_ok','0102000020A210000019000000ACFF73982FC326404B9D369927344E400127254E38C32640C2A5BE8726344E40D77CA6A844C32640CEAF9C7326344E40D381ACA756C32640E1AAFC7C25344E401DF0AFD469C32640350BB43B24344E408C88BDAB79C32640B862354C23344E40AC7713D78CC32640D006600322344E403AAE4676A5C326402B27EB8120344E40F4A3E194B9C326401FAD7B751F344E408C73E5FDC9C32640259B61591F344E400987DEE2E1C32640F5E27ACA20344E40C64CA25EF0C32640C49A255C23344E40AA0029FBF8C32640453FBF9426344E408EE8F92E00C42640D246BFC72A344E40DF2A99AD06C426404D147C2E2E344E40E0AF13A80FC42640BDC3EDD030344E405458045A15C42640155FA39B33344E4098480E7D1CC426407F37386C36344E40A09630E422C426401894693439344E40CD4AA47E28C426408E4B66063B344E401EC18D942DC42640103EEF213C344E40C896E5EB32C426406F719EFB3C344E406D872B0C36C426409FDB95A73D344E40E6142EF53DC426404531D4BC3E344E406A6F4B3F3CC426405CB521B53F344E40',1e-06);
 select
 topology.TopoGeo_addLinestring('test01_ok','0102000020A210000002000000E24A87985CC42640BAF3C47336344E406A6F4B3F3CC426405CB521B53F344E40',1e-06);
 select
 topology.TopoGeo_addLinestring('test01_ok','0102000020A21000000200000040F09D3D3CC4264026158DB53F344E406A6F4B3F3CC426405CB521B53F344E40',1e-06);
 select
 topology.TopoGeo_addLinestring('test01_ok','0102000020A2100000040000006A6F4B3F3CC426405CB521B53F344E40C62A4AAE07C4264090943EBE4E344E40C6CE256607C42640BF2FE4C74E344E407EBF3D74E6C3264032E0D16B58344E40',1e-06);

 -- Works ok
 select topology.TopoGeo_addLinestring('test01_ok',
 '0102000020A210000025000000E24A87985CC42640BAF3C47336344E40573B2FBA61C426406163A8D436344E4070C0F8B369C42640E3C85E4A38344E409D746C4E6FC4264077F52A323A344E4077BAF3C473C42640BD569D303C344E40450A0A2879C42640C8FB82273E344E407AB07BE184C42640BAE2981B42344E407E75B05989C42640E341695E44344E40E5F3E56091C4264041FCB26A46344E400A3BD6D699C4264016BCE82B48344E40DEEBFF779FC426402D54A3FC49344E404C7B945BA4C4264097D3AFBE4B344E4060FB6E5FACC4264013D5B6BC4D344E4087AAF303B2C42640669C2BEF4F344E408F0C8343B9C42640F439D27451344E40E03AB5E9BEC426406A1FE16A53344E4013848659C3C42640920B845355344E40B33396FAC3C426406239F87857344E407E969D34C3C42640EA44DD6259344E403E0FA441C0C42640E9C8DB5B5B344E40ED98BA2BBBC42640E202D0285D344E401166248CB0C42640DB28571D5E344E40233031F1A2C42640476C1C565D344E40F35A649698C426408F66D1E05B344E4067E66E7C92C42640C69970F959344E40BEB4F2DC8CC42640BBF48A0258344E40A1BB24CE8AC42640C8A87C1956344E405251AB9E82C426404102902452344E40603F1FC07DC4264036D0D78750344E40F763496F6EC42640E49B6D6E4C344E40AEA29AED65C42640BC81B8614A344E40B91391065CC4264058F0918348344E400AB54BC054C426403B3CDFAA46344E409E094D124BC42640FA3B80EA44344E40D782DE1B43C42640D7B0F03F43344E4085483C8F40C426404F77F93141344E4040F09D3D3CC4264026158DB53F344E40',
 1e-06);


 }}}

-- 
Ticket URL: <https://trac.osgeo.org/postgis/ticket/4758>
PostGIS <http://trac.osgeo.org/postgis/>
The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project.


More information about the postgis-tickets mailing list