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))'
    )
  );
Community
  • 1
  • 1
Veverke
  • 9,208
  • 4
  • 51
  • 95

1 Answers1

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)

MBo
  • 77,366
  • 5
  • 53
  • 86
  • 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). – Veverke May 21 '17 at 07:21
  • 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).* – Veverke May 21 '17 at 07:26