【问题标题】:How to increase the precision of result from STAsText() on spatial GEOMETRY data type in SQL Server 2008?如何提高 STAsText() 对 SQL Server 2008 中空间 GEOMETRY 数据类型的结果精度?
【发布时间】:2012-06-12 04:35:43
【问题描述】:

我在 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)?

谢谢!!

干杯, 亚历克斯

【问题讨论】:

  • 当我尝试以最小的努力重现这一点时,一切都按预期工作。向我们展示一些插入这些值的代码。

标签: sql-server sql-server-2008 geometry spatial


【解决方案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

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    相关资源
    最近更新 更多