varchar(max)カラムにWKT(よく知られているテキスト)のテーブルがあります。これは、ジオメトリと同様にフォーマットされます。たとえば、値の1つは更新クエリでvarchar(max)からジオメトリを取得
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はmy varchar(max)フィールド、MyGeometryは新しいジオメトリフィールドです。
UPDATE MY_TABLE
SET MyGeometry = geometry::STPolyFromText('' + WKT + '', 2193)
EDIT - 現在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