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 回答