Добавление радиуса к долготе и широте с помощью C #

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

У меня есть две функции ниже, чтобы вернуть диапазон, который мне нужен +/- к координатам долготы, чтобы установить ограничивающую рамку. Однако я не думаю, что математика на 100%

Я использую формулу Хаверсина для расчета расстояния, и, похоже, она работает точно. Я также исследовал формулу Винсенти для определения расстояния, но для моих нужд это было излишним.

Моя проблема в том, что я хотел бы, чтобы мои результаты поиска были такими же точными, как Хаверсин, в том смысле, что диапазон I +/- до долготных координат учитывает эллипсоидальную кривизну или землю.

Хорошо, вот мои функции ... обратите внимание, я не профессор математики: o)

static Func<double, int, double> GetLatitudeRange = (latitude, distance) => (180.0 / Math.PI) * (distance / EARTH_RADIUS_IN_KM);


static Func<double, double, int, double> GetLongitudeRange = (longitude, latitude, distance) =>
            (
                Math.Asin(
                    Math.Sin(distance / EARTH_RADIUS_IN_KM) / Math.Cos(latitude)
                    )
            );

person Markus    schedule 21.01.2010    source источник
comment
Если вам нужна дополнительная точность, загляните в en.wikipedia.org/wiki/Great-circle_distance.   -  person MPelletier    schedule 21.01.2010


Ответы (1)


Взгляните на zipcodeworld

person Richard Schneider    schedule 08.02.2011
comment
Зачем автору заглянуть на этот сайт? - person jwanglof; 24.04.2020