Forum Webscript.Ru

Программирование => PHP => Тема начата: kiruxa от 21 Ноября 2005, 11:56:03

Название: Расстояние между двумя Zip
Отправлено: kiruxa от 21 Ноября 2005, 11:56:03
Добрый день,

Появилась задачка:

есть база данных MySQL с обьектами в Штатах, и указан ZIP code каждого обьекта,

надо найти все обьекты на расстоянии 25-100 миль (по выбору) от указаного ЗИП кода в базе

Кто-нибудь сталкивался с таким делами для США? ищу скрипты, а они все очень платные :(

Спасибо
Название: Расстояние между двумя Zip
Отправлено: hanslinger от 21 Ноября 2005, 11:57:41
Хех.
Храни X, Y для каждого штата, и вычисляй расстояние как SQRT(SQR(X)+SQR(Y))
=)
Название: Расстояние между двумя Zip
Отправлено: kiruxa от 21 Ноября 2005, 12:01:26
не пройдет :(

если бы все так просто...
нашел базу по зипам но, как у них там все считаеться незнаю :(
Название: Расстояние между двумя Zip
Отправлено: hanslinger от 21 Ноября 2005, 12:09:42
В каком виде эта база? Без информации о координатах ничего не посчитаешь.
Название: Расстояние между двумя Zip
Отправлено: kiruxa от 21 Ноября 2005, 12:52:15
Вот чтото типа этого
[PHP] CREATE TABLE zip_code (
  zip_code int(10) unsigned NOT NULL default \'0\',
  lattitude float NOT NULL default \'0\',
  longitude float NOT NULL default \'0\',
  city varchar(25) NOT NULL default \'\',
  state_prefix char(2) NOT NULL default \'\',
  zip_class varchar(20) NOT NULL default \'\',
  PRIMARY KEY  (zip_code)
) TYPE=MyISAM;

INSERT INTO zip_code VALUES (501, 40.9223, -72.6371, \'HOLTSVILLE\', \'NY\', \'UNIQUE\');

INSERT INTO zip_code VALUES (601, 18.1653, -66.7226, \'ADJUNTAS\', \'PR\', \'STANDARD\');
Название: Расстояние между двумя Zip
Отправлено: hanslinger от 21 Ноября 2005, 13:21:26
lattitude, longitude - то, что вам нужно.
Осталось только перевести это все в километры :) Для каждой широты свое соотношение градус/км, и его нужно вычислять. Времени эти все операции займут уйму. Возможно, следует подумать о целесообразности.
Название: Расстояние между двумя Zip
Отправлено: kiruxa от 21 Ноября 2005, 16:27:12
Уже подумал, сделал, теперь тестирую :) вроде работает пока.

Пока платят надо делать :)

Спасибо за совет