|
Geometry : |
Subject: [geometry] "Overlay invalid input exception"
From: Volker Schöch (vschoech_at_[hidden])
Date: 2012-07-13 06:56:17
Hi Barend,
This has become our single most annoying issue with boost::geometry. Since I haven't heard back from you in this regard, can you confirm that it has been fixed in boost 1.50.0? Unfortunately, updating our project from 1.48.0 to 1.50.0 is not as straight-forward as it should be (for reasons outside boost.geometry) therefore I would appreciate knowing it advance if the effort is worth it from a the geometry perspective.
There seems to be no workaround for the "Overlay invalid input exception" issue, and the whole issue is getting into the way of our release schedule... Which is why I keep asking for a fix. For your reference, I have attached the original reports below. I have more reproductions available if need be.
Regards,
Volker
-- Volker Schöch | vschoech_at_[hidden] Senior Software Engineer think-cell Software GmbH | Chausseestr. 8/E | 10115 Berlin | Germany http://www.think-cell.com | phone +49 30 666473-10 | US phone +1 800 891 8091 Amtsgericht Berlin-Charlottenburg, HRB 85229 | European Union VAT Id DE813474306 Directors: Dr. Markus Hannebauer, Dr. Arno Schoedl -----Original Message----- From: Volker Schöch Sent: vendredi 20 avril 2012 14:27 To: Boost.Geometry library mailing list Subject: RE: [geometry] "Overlay invalid input exception" inboost::geometry::difference (CORRECTION) Hi again, I apologize, I reported the wrong trace. Here is the correct trace: ----------------------- A1: MULTIPOLYGON(((807 152,3958 152,3958 576,807 576))) B1: MULTIPOLYGON(((813 277,813 235,1341 235)),((3963 277,3441 235,3963 235))) boost::geometry::difference(A1, B1): MULTIPOLYGON(((3958 276,3958 576,807 576,807 152,3958 152,3958 235,3441 235),(1341 235,813 235,813 277))) ----------------------- A2: Result from (1) B2: MULTIPOLYGON(((3963 277,3441 319,2913 235,3441 235)),((2391 403,1863 235,1341 319,813 277,1341 235,1863 151))) boost::geometry::difference(A2, B2): MULTIPOLYGON(((3441 235,2913 235,3441 319,3958 277,3958 576,807 576,807 152,1856 152,1341 235,813 235,813 277,1341 319,1863 235,2391 403,1865 152,3958 152,3958 235),(3441 235,3958 276))) ----------------------- A3: Result from (2) B3: MULTIPOLYGON(((3441 319,2913 361,2391 403,2913 235)),((2391 403,1863 361,1341 319,1863 235))) boost::geometry::difference(A2, B2): MULTIPOLYGON(((3441 235,3958 276)),((2391 403,2913 361,3441 319,3958 277,3958 576,807 576,807 152,1856 152,1341 235,813 235,813 277,1341 319,1863 361)),((2391 403,1865 152,3958 152,3958 235,3441 235,2913 235))) ----------------------- A4: Result from (3) B4: MULTIPOLYGON(((2913 361,2391 571,1863 361,2391 403))) boost::geometry::difference(A4, B4) MULTIPOLYGON(((3441 235,3958 276)),((1863 361,2391 571,2913 361,3441 319,3958 277,3958 576,807 576,807 152,1856 152,1341 235,813 235,813 277,1341 319)),((2391 403,1865 152,3958 152,3958 235,3441 235,2913 235))) ----------------------- A5: MULTIPOLYGON(((813 277,1341 319,1863 361,2391 571,2913 361,3441 319,3963 277,3963 32767,813 32767))) B5: MULTIPOLYGON(((813 277,1341 319,1863 571,2391 571,2913 571,3441 319,3963 277,3963 32767,813 32767))) boost::geometry::sym_difference(A5, B5): // SYM_DIFF! MULTIPOLYGON(((2391 571,1863 571,1341 319,1863 361)),((2391 571,2913 361,3441 319,2913 571))) ----------------------- A6: Result from (4) B6: Result from (5) boost::geometry::difference(A6, B6) -> Boost.Geometry Overlay invalid input exception As always, I am using boost 1.48.0, my polygon type is oriented counter-clockwise and not closed, my point type is based on int. Regards, Volker -----Original Message----- From: Volker Schöch Sent: mardi 8 mai 2012 12:24 To: Boost.Geometry library mailing list Subject: "Overlay invalid input exception", another example Hi Barend, here we go again. As always, I am using boost 1.48.0, my polygon type is oriented counter-clockwise and not closed, my point type is based on int. Please let me know if 1.49 has this fixed, and/or if it will be fixed in 1.50. Regards, Volker Reproduction: Step 1 A1 = MULTIPOLYGON(((966 2862,1704 3348,2442 3186,3180 2376,3912 1722,4650 1398,5388 1560,5388 32767,966 32767))) B1 = MULTIPOLYGON(((966 2700,1704 3348,2442 3186,3180 2376,3912 1884,4650 1398,5388 1560,5388 32767,966 32767))) boost::geometry::sym_difference( A1, B1 ) = MULTIPOLYGON(((4650 1398,3912 1884,3180 2376,3912 1722)),((966 2862,966 2700,1704 3348))) Step 2 A2 = MULTIPOLYGON(((971 1402,5395 1402,5395 3353,971 3353))) B2 = Result from Step 1 boost::geometry::difference( A2, B2 ) = MULTIPOLYGON(((971 2704,971 1402,4640 1402,3912 1722,3180 2376,3912 1884,4643 1402,5395 1402,5395 3353,971 3353,971 2865,1704 3348))) Step 3 A3 = MULTIPOLYGON(((966 2700,1704 3348,2442 3186,3180 2376,3912 1884,4650 1398,5388 1560,5388 32767,966 32767))) B3 = MULTIPOLYGON(((966 2700,1704 3024,2442 3186,3180 2376,3912 1884,4650 1722,5388 1560,5388 32767,966 32767))) boost::geometry::sym_difference( A3, B3 ) = MULTIPOLYGON(((5388 1560,4650 1722,3912 1884,4650 1398)),((2442 3186,1704 3348,966 2700,1704 3024))) Step 4 A4 = Result from Step 2 B4 = Result from Step 3 boost::geometry::difference( A4, B4 ) = MULTIPOLYGON(((1704 3348,2442 3186,1704 3024,971 2702,971 1402,4640 1402,3912 1722,3180 2376,3912 1884,4650 1722,5388 1560,4668 1402,5395 1402,5395 3353,971 3353,971 2865),(4643 1402,3912 1884))) Step 5 A5 = MULTIPOLYGON(((966 2700,1704 3024,2442 3186,3180 2376,3912 1884,4650 1722,5388 1560,5388 32767,966 32767))) B5 = MULTIPOLYGON(((966 2208,1704 3024,2442 3186,3180 2376,3912 2376,4650 1722,5388 1560,5388 32767,966 32767))) boost::geometry::sym_difference( A5, B5 ) = MULTIPOLYGON(((3180 2376,3912 1884,4650 1722,3912 2376)),((966 2700,966 2208,1704 3024))) Step 6 A6 = Result from Step 4 B6 = Result from Step 5 boost::geometry::difference( A6, B6 ): Boost.Geometry Overlay invalid input exception
Geometry list run by mateusz at loskot.net