This Polygon object closes itself. Why is this insert still failing with Error 3037: Invalid GIS data?
Asked Answered
A

1

0

After learning about this constraint about saving Polygon objects in mySql, I am still puzzled as to why the following insert fails with the same Error Code: 3037. Invalid GIS data provided to function st_geometryfromtext.

INSERT INTO myGeom (id, ogc_geom)
VALUES
  (
    1,
    GEOMFROMTEXT(
      'POLYGON((
    -85.4783714315732 9.8651106795296,
    -85.4784492156346 9.8654277853092, 
    -85.4783714315732 9.8651106795296))'
    )
  );

It closes itself, what bit is missing here (added one more point)?

A slightly modified version, that works...

-- WORKS !
INSERT INTO mygeom (id, ogc_geom)
VALUES
  (
    552,
    GEOMFROMTEXT(
      'POLYGON((
    -85.4783714315732 9.8651106795296,
    -85.4784492156346 9.8654277853092, 
    -85.85451248764512 10.1234567893214, 
    -85.4783714315732 9.8651106795296))'
    )
  );
Atlante answered 18/5, 2017 at 14:17 Comment(0)
G
1

The first set of values contains only two points and forms line segment, not a polygon (plane figure).

(Sometimes formally it might be considered as 2-sided polygon, degenerate polygon with zero area, but it is mathematical formalism, not a common practice)

Germinative answered 18/5, 2017 at 15:39 Comment(2)
This question stems from my attempt to define which GeomFromText('POLYGON((...))') calls may result in Error 3037. One is the polygon not being closed, the other would be cases where it consists of 3 points only ? (I can't see how a closed figure can be defined by 3 points where the last one must be the 1st (so it closes) without the figure being a line. Makes sense ? Any other edge cases I am missing ? The outcome of this exercise is to clean our database of invalid objects (that must have been inserted with previous versions where such validations were not yet included).Atlante
If what I wrote above is right, if it's that crystal-clear that, following mySQL's polygon definitions you will not have one with 3 points only, never - it's very weird that mySQL dev team did not define a specific error message for such cases, where the error should be stated much clearer - mySQL does not support polygon's with less than 4 points (2 would be a point, 3 a line).Atlante

© 2022 - 2024 — McMap. All rights reserved.