【问题标题】:Convert SQL geography to C#将 SQL 地理转换为 C#
【发布时间】:2013-05-03 14:37:49
【问题描述】:

此地理空间 T-SQL 代码的 C# 等效项是什么?

DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326);
SET @h = geography::Point(47.653, -122.358, 4326)

SELECT @g.STIntersects(@h)

我正在尝试使用 SqlGeometry 数据类型在多边形中找到一个点——并且可以使用上述 T-SQL;但我不明白如何实现等效的 C# 代码。

【问题讨论】:

标签: c# sql-server tsql sqlgeography


【解决方案1】:

试试这个:

public bool OneOffSTIntersect()
{
    var g =
        Microsoft.SqlServer.Types.SqlGeography.STGeomFromText(
            new System.Data.SqlTypes.SqlChars(
                "POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))"), 4326);
    // suffix "d" on literals below optional but explicit
    var h = Microsoft.SqlServer.Types.SqlGeography.Point(47.653d, -122.358d, 4326);

    // rough equivalent to SELECT
    System.Console.WriteLine(g.STIntersects(h));

    // Alternatively return from a C# method or property (get).
    return g.STIntersects(h);
}

MSDN 的 SqlGeography Methods 页面链接到有关 T-SQL 中关键调用的每个 C# 等效项的信息 - 例如STIntersects.

【讨论】:

  • // rough equivalent to SELECT :-)
  • @Tim:有趣的是,昨晚这只是我认为它不知道 OP 的一般 C# 知识水平或使用翻译代码的上下文的方式;但今天这也让我觉得很有趣。 :) 感谢您指出。
猜你喜欢
  • 2013-04-18
  • 2017-11-13
  • 2017-10-06
  • 1970-01-01
  • 2020-04-24
  • 2011-10-04
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多