明天的明天 永远的永远 未知的一切 我与你一起承担 ??

是非成败转头空 青山依旧在 几度夕阳红 。。。
  博客园  :: 首页  :: 管理

  最近需要通过geoserver显示多边形,首先需要先将数据库的数据转换为地理数据存储类型,但由于原本的信息是按text存储的,将text类型转换为geometry就需要用到ST_GeomFromText()函数,存储的是POLYGON。

  在mysql使用该函数过程中,遇到了一个问题,报错是:3037 - Invalid GIS data provided to function st_geometryfromtext.于是通过搜索这个错误提示,发现原因是我们原本的POLUYGON坐标不是封闭的;

解决方法是:在POLUYGON里加上起始坐标。

如一个四边形:

POLYGON((102.371 35.0049, 102.249 33.8775, 102.227 33.9519, 102.34 35.0212)) 

 

SELECT ST_GeomFromText('POLYGON((102.371 35.0049, 102.249 33.8775, 102.227 33.9519, 102.34 35.0212))')

运行这条sql语句时,就会报上述错误。

修改成:

POLYGON(''(102.371 35.0049, 102.249 33.8775, 102.227 33.9519, 102.34 35.0212, 102.371 35.0049)') 

后,问题解决

 

SQL:

SELECT * from cms_site where ST_INTERSECTS(copyright, ST_GeomFromText('MULTIPOLYGON(((110.04620237273 19.420965667399,110.04620237273 19.456669306106,110.09415343892 19.456669306106,110.09415343892 19.420965667399,110.04620237273 19.420965667399)))'))