2

SQL Server 2008 に、SHAPE という GEOMETRY タイプの列を含むテーブルがあります。同じテーブルの WKT という別の列には、次のように定義された計算列式があります。

([SHAPE].[STAsText]())

[SHAPE] 列は一連の POINT (経度と緯度) を格納するために使用され、[WKT] は Well-Known Text を格納するために使用されます。

ただし、WKT は実際の経度と緯度よりも低い精度を表します。

たとえば、x = 142.592896 で y = -38.38580099 の場合、その WKT は POINT (142.593 -38.3858) として表されます。代わりに POINT (142.592896 -38.38580099) として表現するにはどうすればよいですか?

ありがとう!!

乾杯、アレックス

4

1 に答える 1

1

おそらく緯度と経度が格納されている列のタイプにかかっていると思いますが、おそらく浮動小数点数だと思います。本当に必要な場合は、それらを decima(x,y) または文字列に変更してみてください。

以下の私の例を見てください:

DECLARE @X FLOAT =  142.59289600001
DECLARE @Y FLOAT = -38.3858009900001

DECLARE @X2 DECIMAL(28,18) =  142.59289600001
DECLARE @Y2 DECIMAL(28,18)= -38.3858009900001

SELECT 
    a.Geog.STAsText() AS WKT
,   b.Geog.STAsText() AS WKT_2
,   c.Geog.STAsText() AS WKT_3
FROM 
(
    SELECT 
        GEOGRAPHY::STGeomFromText('POINT(142.59289600001 -38.3858009900001)', 4326) AS Geog
) a
,
(
    SELECT 
        GEOGRAPHY::STGeomFromText('POINT(' + CAST(@X AS VARCHAR(25)) + ' ' + CAST(@Y AS VARCHAR(25)) + ')', 4326) AS Geog
)b
,
(
    SELECT 
        GEOGRAPHY::STGeomFromText('POINT(' + CAST(@X2 AS VARCHAR(25)) + ' ' + CAST(@Y2 AS VARCHAR(25)) + ')', 4326) AS Geog
)c
于 2012-06-13T11:32:14.940 に答える