我已经有了一个完整的WKT(熟知文本)在一个varchar(max)列的表获取从VARCHAR(最大值)的几何形状。这与格式完全相同。所以,例如,其中一个值是:在更新查询
POLYGON ((174.893529167059 -37.0260462162965,174.89351593407 -37.0260221329151,174.893508034056 -37.0260077002766,174.893444415879 -37.0258916500588,174.893416916056 -37.0258414997842,174.893481733297 -37.0258186834198,174.893492016755 -37.0258150663863,174.89349653254 -37.025823316032,174.893512415978 -37.0258522827285,174.893556883897 -37.0259333832477,174.893591032956 -37.0259956661343,174.893604265986 -37.0260197504078,174.893575149738 -37.0260300006258,174.893529167059 -37.0260462162965))
但是,我需要将此varchar(max)字段转换为几何字段。不幸的是,为了做到这一点,SQL Server需要一些其他信息,所以我不能只将字段的类型从varchar(max)更改为geometry。
我在同一个表(MyGeometry)中创建了一个空白几何列,但我试图转换它失败。这是我的代码(其中2193是我正在处理的CRS)。 WKT是我的varchar(max)字段,MyGeometry是我的新几何字段。
UPDATE MY_TABLE
SET MyGeometry = geometry::STPolyFromText('' + WKT + '', 2193)
编辑 - 当前回来说WKT无效(System.FormatException 24111 - 输入无效)。
,因为它与其他一些投入我在它是如何完美的风格相匹配这是奇怪的。
UPDATE MY_TABLE SET MyGeometry = geometry :: STPolyFromText(WKT,2193) – cungiderm
WKT上不需要双引号。 WKT已经是一个文本。 (假设WKT是你的列名) – cungiderm
已经试过'UPDATE MY_TABLE SET MyGeometry = GEOMETRY :: STPolyFromText(WKT,2193)'(还有STGeomFromText),但仍然没有运气。也许我在那里有一些无效的几何图形,但我怀疑它。 – user25730