将SQL地理转换为c#

本文关键字:转换 SQL | 更新日期: 2023-09-27 18:13:01

这个地理空间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#代码

将SQL地理转换为c#

试试这个:

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