Добавьте радиус к долготе и широте с помощью C # - PullRequest
3 голосов
/ 21 января 2010

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

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

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

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

Хорошо, вот мои функции <> ... пожалуйста, обратите внимание, что я не профессор математики: о)

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)
                    )
            );

1 Ответ

0 голосов
/ 08 февраля 2011

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

...