我正在使用PostgreSQL 9.5和PostGIS 2.2。
我发现我的一些数据具有无效的几何形状,所以我试图纠正它。
UPDATE schema.table
SET geom = ST_MakeValid(geom)
WHERE NOT ST_IsValid(geom);
但我有这个错误:
ERROR: Column has M dimension but geometry does not
État SQL :22023
我之前检查过几何图形的尺寸
SELECT count(gid), ST_Dimension(geom)
FROM schema.table
GROUP BY ST_Dimension(geom) ;
他们都只有2个维度。
那么有用的是:
UPDATE schema.table
SET geom = ST_Force4D(ST_MakeValid(geom))
WHERE NOT ST_IsValid(geom);
但我不知道为什么以及发生了什么......
有人可以解释一下吗?
答案 0 :(得分:2)
列的类型实际上是3或4D几何。 您使用了错误的函数来测试坐标尺寸计数 你的几何形状。
St_Dimension为您提供几何的固有尺寸, Point为0,Lines为1,Polygons为2。
要获取维度数,您必须使用st_ndims。
参见文档:
这是一个用于说明差异的小问题:
extension String {
static func direction<T>(_ value: T) -> String {
switch value {
case 0...11.24: return "N"
case 11.25...33.74: return "NNE"
...
default: return ""
}
}
}