3

SQL Server2008R2データベースにテーブルがあります。経度と緯度のnumeric(38、8)を格納するためのX、Y、Shape列と、Geometryタイプの計算列が含まれています。XとYが挿入されるたびに、Shape列に正しいジオメトリデータが自動的に入力されるという考え方です。

XとYが入力されます。しかし、Shape列を指定できませんでした。SQL Server Management Studioで、数式の計算列仕様に次のコードのいずれかを入力すると、数式の検証に失敗するというエラーが発生しました。

(STGeomFromText('POINT (' + CAST([x] as varchar(32)) + ' ' + CAST([y] as varchar(32)) + ')', 4283))

OR

([STGeomFromText]('POINT (' + CAST([x] as varchar(32)) + ' ' + CAST([y] as varchar(32)) + ')', 4283))

誰かが私に手を貸してくれませんか?ありがとう!

乾杯、アレックス

4

2 に答える 2

4

私は実際にこの投稿によって啓発されました。

同じ質問をしている他の人に役立つことを願っています。

ALTER TABLE LOCATION
ADD Shape AS (CONVERT(GEOMETRY, CASE WHEN x<> 0
                                    AND y<> 0
                               THEN GEOMETRY::STGeomFromText('POINT('
                                                          + CONVERT(VARCHAR, x)
                                                          + ' '
                                                          + CONVERT(VARCHAR, y)
                                                          + ')', 4238)
                               ELSE NULL
                          END))
于 2012-06-21T06:22:09.327 に答える
3

少し良い解決策:

ALTER TABLE LOCATION
ADD Shape AS (CONVERT(GEOMETRY, CASE WHEN x IS NOT NULL AND y IS NOT NULL
                               THEN GEOMETRY::Point(x,y,4238)
                               ELSE NULL
                          END))

これにより、2つの不要な変換(intからvarcharへ)が節約され、赤道(緯度0°)と本初子午線(経度0°)が交差するポイントも「有効」と見なされます。

于 2014-06-16T06:49:43.457 に答える