Преобразование координат в WGS84

У меня есть следующая функция, которая отображает круг, заданный центроидом, но я хочу, чтобы координаты были в WGS84.

var coords = new List<Tuple<double, double>>();
const double EARTH_RADIUS_NM = 3437.670013352;
var lat = (latIn * Math.PI) / 180;
var lon = (lonIn * Math.PI) / 180;
double d = radiusIn / EARTH_RADIUS_NM;
for (int x = 0; x <= 360; x++)
{
    double brng = (x * Math.PI) / 180; 
    var latRadians = Math.Asin(Math.Sin(lat) * Math.Cos(d) + Math.Cos(lat) * Math.Sin(d) * Math.Cos(brng));
    var lngRadians = lon + Math.Atan2(Math.Sin(brng) * Math.Sin(d) * Math.Cos(lat), Math.Cos(d) - Math.Sin(lat) * Math.Sin(latRadians));

    coords.Add(new Tuple<double, double>(latRadians, lngRadians));
}

Ответ 1

Вы говорите, что конвертируете в WGS84, но из чего?

Посмотрите на что-то вроде http://www.gdal.org/ или http://dotspatial.codeplex.com/ (или пространственная поддержка в вашей БД, если вы используете ее).

Этот ответ на ГИС поможет объяснить WGS84/EPSG: 4326

https://gis.stackexchange.com/questions/23690/is-wgs84-itself-a-coordinate-reference-system

и это поможет, когда ваш круг превратится в эллипс:)

Круг SQL Server

Ответ 2

ИЗМЕНИТЬ **: извините, я неправильно понял проблему в начале. Я не совсем понимаю ваше соглашение об именах, поэтому я не буду писать код изначально. Также я - энтузиаст дифференциальной геометрии, поэтому шутки на меня... Функция круга

Для начала рассмотрим расстояния на поверхностях любой сферы: сферическое преобразование в качестве напоминания для координат, которые мы имеем: r ≥ 0, 0 ≤ θ ≤ π и 0 ≤ φ < 2π. (θ == широта, φ == долгота) теперь, поскольку наше смещение ds ограничено поверхностью, мы имеем dr == 0. Также мы можем рассмотреть диск расстояния ds от точки a = [r, 0, 0]

Эти точки должны тогда удовлетворять ds == r dθ, что дает b = [r, ds/r, 0]. это легко, потому что не имеет значения, что на самом деле φ, оно может идти от 0 до 2π, и это расстояние останется прежним, поэтому любая точка b = [r, ds/r, φ] находится на диске координат которые мы ищем.

Итак, что, если мы начнем с a = [r, θ, φ], вы можете спросить, к чему я говорю, то почему бы не преобразовать обратно в = [r, 0, 0], добавив вектор преобразования t = [0, -θ, -φ] вычислить координаты для диска, а затем вычесть один и тот же вектор преобразования на каждую найденную вами точку (b). может ли сила быть с вами