Формула диапазона расстояния Zipcode. Какая формула верна?

StackOverflow https://stackoverflow.com/questions/4020196

Вопрос

Мне нужно найти все почтовые почки с определенным диапазоном от Zipcode. У меня есть все Zipcode Lat / Lon в БД.

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

Формула 1:

def latRange = range/69.172
def lonRange = Math.abs(range/(Math.cos(Math.toRadians(zip.latitude)) * 69.172));
def minLat = zip.latitude - latRange
def maxLat = zip.latitude + latRange
def minLon = zip.longitude - lonRange
def maxLon = zip.longitude + lonRange

Формула 2: (идентична формулы, за исключением следующих :)

def lonRange = Math.abs(range/(Math.cos(zip.latitude) * 69.172));

(Второй не имеет Math.toRadians ) После того, как я получаю Min / Max LAT / LON, я намерен искать таблицу БД, используя между критериями между критериями. Какая формула верна?

Это было полезно?

Решение

Это зависит от единиц вашей латы / длинного. Если они находятся в градусах, вам нужно преобразовать в радианы.

Другие советы

Я бы предложил позволить DB сделать всю тяжелую подъем. Несколько DB имеют геокоптанты, но вот пара примеров: Монгодб, postgres + postgis.

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

Вы будете лучше выполнить расчет расстояния в вашем запросе MySQL, используя теорему Пифагорейской, чтобы найти расстояние, чтобы вы закончить циркулярный спектр. Этот вопрос должен помочь вам начать с этого: MySQL Выберите Zipcodes в X Km / Miles в пределах досягаемости Y .

Если вам нужно улучшить его производительность, вы можете указать его, используя Сфинкс.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top