我试图找出Shapefile的多边形的中心..并将结果插入名为center的新列中。
SELECT astext(centroid(`SHAPE`)) FROM `utdpolygon`
给出所有多边形的质心,但是当我尝试使用
将结果插入新列时INSERT INTO utdpolygon (`center`)
SELECT astext(centroid(`SHAPE`)) FROM `utdpolygon
` 我收到了这个错误
无法从发送到GEOMETRY字段的数据中获取几何对象。
我搜索了指出类似错误的问题,但他们没有帮助。 我给了点作为中心的类型,然后将其改为几何,因为形状的类型是几何,但这也无济于事。
答案 0 :(得分:1)
use "org.hibernate.spatial.dialect.mysql.MySQLSpatialDialect"
insted of "org.hibernate.dialect.MySQLDialect".
答案 1 :(得分:0)
您的代码中存在两个问题,首先,您尝试使用INSERT来更改center
列的值 - 您还没有插入新的行吗?更新现有的,因此您需要将其更改为更新。
然后center
列的值必须是几何值而不是文本值,因此您需要使用ST_GeometryFromText(或其中一个同义词)来获取几何图形,尽管在您的情况下是您的值#39 ;从质心函数中使用实际上是一个几何体,所以你可以直接使用它,否则你将它转换为文本然后再转换为几何体。
所以 - 这些UPDATE中的任何一个都可以达到你想要的效果(第二个更好,我只保留了第一个显示关于在有文本POINT时创建几何的点):
UPDATE utdpolygon
SET `center` = ST_GeometryFromText(astext(centroid(`SHAPE`)));
或
UPDATE utdpolygon
SET `center` = centroid(`SHAPE`);
我假设您已经将center
列添加到表中,因为您在上面回复说它的数据类型是POINT - 如果不是,您需要首先添加它ALTER TABLE。