Создайте многоугольник SqlGeography из центра и радиуса

Я хотел бы сохранить круг в поле географии sql-server 2008, используя c #.

В C # у меня есть широта, долгота и радиус, но я просто не могу найти способ вычислить многоугольник, который представлял бы круг, и создатьSqlGeography от него.

Я попытался использовать следующую функцию для создания многоугольника:

    private List<Coordinate> getCirclePoints(Coordinate center, int radius, int speed)  //speed 1: draws 360 sides, 2 draws 180 etc...
    {
        var centerLat = (center.Latitude * Math.PI) / 180.0;  //rad
        var centerLng = (center.Longitude * Math.PI) / 180.0; //rad
        var dist = (float)radius / 6371.0;             //d = angular distance covered on earth's surface
        var circlePoints = new List<Coordinate>();
        for (int x = 0; x <= 360; x += speed)
        {
            var brng = x * Math.PI / 180.0;         //rad
            var latitude = Math.Asin(Math.Sin(centerLat) * Math.Cos(dist) + Math.Cos(centerLat) * Math.Sin(dist) * Math.Cos(brng));
            var longitude = ((centerLng + Math.Atan2(Math.Sin(brng) * Math.Sin(dist) * Math.Cos(centerLat), Math.Cos(dist) - Math.Sin(centerLat) * Math.Sin(latitude))) * 180.0) / Math.PI;
            circlePoints.Add(new Coordinate((latitude * 180.0) / Math.PI, longitude));
        }
        return circlePoints;
    }

А затем попытайтесь преобразовать этоList<Coordinate> в анализируемую строку:

        var s = "POLYGON((" + string.Join(",", points.ConvertAll(p => p.Longitude + " " + p.Latitude).ToArray()) + "))";
        var poly = SqlGeography.STPolyFromText(new System.Data.SqlTypes.SqlChars((SqlString)s), 4326);

Но он всегда жалуется, что многоугольник должен находиться в одном полушарии, где я уверен, что это так.

Я на правильном пути вообще? Есть ли другой (более простой) способ сделать это?

Ответы на вопрос(1)

Ваш ответ на вопрос