Чи слід зберігати широту та довготу як рядки чи плаваючі (чи щось інше)?
(Я використовую activerecord / ruby на рейках, якщо це важливо).
Оновлення:
Mysql у розробці та postgresql у виробництві (чому це важливо?)
Чи слід зберігати широту та довготу як рядки чи плаваючі (чи щось інше)?
(Я використовую activerecord / ruby на рейках, якщо це важливо).
Оновлення:
Mysql у розробці та postgresql у виробництві (чому це важливо?)
Відповіді:
Якщо вам потрібно зробити більш складні географічні розрахунки, ви можете дослідити PostGIS для Postgresql або MySQL Spatial Extensions для MySQL. В іншому випадку поплавок (подвійна точність може бути непоганою ідеєю) повинен працювати.
Змінити: Схоже, бібліотека GeoRuby включає розширення Rails для роботи з просторовими / ГІС розширеннями для обох згаданих вище баз даних.
Це те, що я використовую:
add_column :table_name, :lat, :decimal, {:precision=>10, :scale=>6}
add_column :table_name, :lng, :decimal, {:precision=>10, :scale=>6}
Якщо ви не використовуєте просторово базу даних, Карти Google рекомендують використовувати плаваючі розміри (10,6). Це дає вам 6 цифр після десяткової - якщо ви хочете отримати більшу точність, ви можете налаштувати відповідно.
Я б запропонував використовувати поплавці, хоча насправді це не так сильно впливає. Поплавці легше робити розрахунки, якщо ви коли-небудь захочете цього в майбутньому.
Як правило, ви хочете, щоб Lat / Long зберігався у найбільшому типі поплавків у вас. У деяких широтах (наприклад: поблизу екватора) дуже малі зміни довготи можуть прирівнюватися до великих різниць у плані поверхневої відстані.
Я вважаю, що якщо це поле, на якому ви ніколи не захочете робити математику, ви можете використовувати рядок. Хоча я цього уникну.
Оскільки вони мають фіксовану точність, вам слід перетворити та зберегти як ціле число для значного покращення продуктивності.
(ДИВІТЬ http://www.postgresql.org/docs/9.1/static/datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL )