хранение широты и долготы для маршрута - PullRequest
0 голосов
/ 15 марта 2011

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

Способ настройки моей таблицы теперь следующий:

RouteID Заказ Широта Долгота

но у маршрута может быть множество наборов широты и долготы, поэтому он становится:

RouteID Order Latitude Longitude
1         0       X         Y
1         1       X         Y
1         2       X         Y
1         3       X         Y
1         4       X         Y
2         0       X         Y  
2         1       X         Y  

У меня есть другая таблица с именем R, у которой есть RouteID, и она ссылается на эту таблицу маршрутов. Вопрос в том: 1. Это кажется разумным?

  1. Если нет, то как лучше это сделать

UPDATE: Таким образом, другая таблица называется TEMP и имеет следующий формат

TempID RouteID UserID АтрибутX АтрибутY

когда я делаю SQL:

SELECT R.LATITUDE, R.LONGITUDE
FROM TEMP T, ROUTE R
WHERE T.UserID =1
ORDER BY R.ORDER ASC ;

И в моей таблице в настоящее время UserID 1 имеет два маршрута, но он распечатывает каждую широту дважды. Мой SQL неверен?

Ответы [ 3 ]

2 голосов
/ 15 марта 2011

Это выглядит нормально для меня.

Но не загрязняйте мир таблицей с именем R. Подумайте о парне, который идет за вами, что означает R

Другая таблица, вероятно, должна называться Routes, и эта таблица, вероятно, должна называться RoutePoints или просто Points или что-то еще информативное.

А для SQL вы использовали CROSS JOIN, когда хотите использовать INNER JOIN:

SELECT R.LATITUDE, R.LONGITUDE
FROM TEMP T INNER JOIN ROUTE R ON T.ROUTEID = R.ROUTEID
WHERE T.UserID =1
ORDER BY R.ORDER ASC

Это может сработать.

1 голос
/ 15 марта 2011

Скорее всего, вы хотите использовать кривую заполнения пространства или пространственный индекс. Я использую его для хранения почтового индекса и запроса к ним только с одним оператором, независимым от уровня масштабирования. Вы можете скачать мой класс на phpclasses.org (кривая Гильберта).

0 голосов
/ 15 марта 2011

Многое зависит от того, что вы хотите делать с этой информацией после ее сохранения. Если вы просто хотите распечатать карту для данного маршрута, ваши настройки таблицы могут быть в порядке. Если вы хотите узнать, пересекались ли два маршрута или перекрывались ли они, вам, вероятно, следует больше узнать о географических информационных системах (ГИС). ГИС Stackexchange - это хорошее место, чтобы начать задавать вопросы.

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