Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2010, 10:22   #1
Nikolai_
Пользователь
 
Регистрация: 27.08.2010
Сообщений: 16
По умолчанию Хранение географ. координат в БД

У меня возникла задача хранить в БД географические координаты объекта. Ничего подобного на эту тему – как это правильно организовать – не нашел. Есть 3 варианта как это сделать, но не могу определиться какой же все-таки выбрать. Прошу более опытных коллег помочь с выбором или может быть предложить свой вариант.

1 вариант. Данные-координаты (8 переменных) с формы преобразуются функцией в запись типа 45-23-56N 34-12-44W и записываются в 1 поле coordinates varchar(20) основной таблицы.

2 вариант. Данные-координаты (8 переменных) с формы преобразуются функцией в 2 десятичных числа вида 14.5469645673 и –23.65798543556 и записываются в 2 поля в основной таблице: latitude dec(2,10) и longitude dec(3,10)

3 вариант. Создается дополнительная таблица coordinates и данные с формы (8 переменных) записываются каждая в свое поле.

PHP код:
 CREATE TABLE coordinates (
   
id_articles int(8UNSIGNED NOT NULL,
   
lat_deg tinyint(2UNSIGNED NOT NULL# широта, градусы, 0-90
   
lat_min tinyint(2UNSIGNED NOT NULL# широта, минуты, 0-60
   
lat_sec tinyint(2UNSIGNED NOT NULL# широта, секунды, 0-60
   
lat enum('N','S'), # широта, северная или южная, N или S
   
lon_deg tinyint(3UNSIGNED NOT NULL# долгота, градусы, 0-180
   
lon_min tinyint(2UNSIGNED NOT NULL# долгота, минуты, 0-60
   
lon_sec tinyint(2UNSIGNED NOT NULL# долгота, секунды, 0-60
   
lon enum('W','E'# долгота, западная или восточная, W или E
 
TYPE=MyISAM
Что лучше?
Nikolai_ вне форума Ответить с цитированием
Старый 21.11.2010, 14:40   #2
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Я бы выбрал второй вариант. Он универсальней.
ssdm вне форума Ответить с цитированием
Старый 22.11.2010, 11:25   #3
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Ну вот первый вариант удобен тем что координаты при просмотре данных в бд понятны для человеческого глаза, если понадобится просмотреть координаты в каких то случаях. Ну а если не понадобится то второй вариант норм.
Можно еще как вариант сохранить данные координат в массив, сделать serialize() и записать результат в поле типа varchar.
iankov вне форума Ответить с цитированием
Старый 22.11.2010, 14:36   #4
Nikolai_
Пользователь
 
Регистрация: 27.08.2010
Сообщений: 16
По умолчанию

Цитата:
Сообщение от iankov Посмотреть сообщение
Ну вот первый вариант удобен тем что координаты при просмотре данных в бд понятны для человеческого глаза, если понадобится просмотреть координаты в каких то случаях.
Нет, таких случаев, скорее всего не будет. Наверно, 2-й вариант использую.
Nikolai_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранение данных C++ Memfis_nya Помощь студентам 8 16.11.2010 09:28
Хранение HDD lino217 Компьютерное железо 4 19.10.2010 12:52
Хранение констант Kn793 Общие вопросы C/C++ 1 10.06.2010 23:58
Хранение данных puKo Общие вопросы Delphi 17 21.09.2009 16:08
Хранение дисков Levsha100 Свободное общение 24 04.02.2009 15:58