Главная

Интерфейс

Главная
География
Интерфейс
ТЗ
Начало
Очистка
Верификация
Описания
Эксперимент

Карта

Интерфейс пользователя




Назад...   Далее...

Так что же вообще такое представляет собой этот OpenStreetMap? Судя по всему, база данных действительно весьма интересная - как раз для Синдбада! Данные представлены в XML, который здесь почему-то обозвали "OSM" (впрочем, как же иначе - надо же "внести вклад"!) и, следовательно, данные являются фактически самоописываемыми, так что разобраться в них будет нетрудно. Понятно, что раз это карта - значит, должны быть какие-то координаты. Так и есть... МАМА ДОРОГАЯ!!!

Вот примерно так я знакомился когда-то с этой "картой мира". Мой первый вопль был "посвящён" гигантскому количеству мусора в базе. В самом деле, ну кому какое дело, какой ник или, тем более, ID был у того юзера, который закинул информацию о том или ином объекте в БД, какой был идентификатор у этой сессии, сколько часов и минут показывали часы на тамошнем сервере? Одним только обрезанием всей этой хренотени (а она передаётся даже браузеру - я проверял!) я уменьшал объём данных примерно вдвое! К счастью, исходные данные более-менее структурированы, поэтому алгоритм первичной обрезки оказался довольно простым и быстрым.

Давайте порассуждаем, какой должна бы быть эта БД в самом идеальном виде. Чтобы знать, куда стремиться. В самом общем виде задача стоит такая: получить из этого гадюшника нормальную БД по планете Земля (пряник для пользователей - уметь рисовать картинки по данным этой базы), и выковырять из неё всю информацию, которая там вообще есть. Вначале определимся с интерфейсом конечного пользователя - в конце концов, база данных предназначена именно для него.

Так каким же должен быть идеальный интерфейс при работе с картой? Разумеется, он должен быть настраиваемым, но каким именно? Как пользователь будет изменять масштаб карты? Как поворачивать окно видимости, как двигать его по карте? Какой должен быть диалог по выбору вида проекции, включение/выключение "слоёв" (карта рек, карта дорог, рельеф, леса и болота, города и сёла, памятники культуры и т.д.), какая-то статистическая информация по текущей карте. Короче говоря, информации море - вопрос, как её подавать.

Строго говоря, юзер меня мало интересует, как и вообще интерфейс - лично я очень быстро привыкаю к любому. Так что я смотрю на интерфейс только с точки зрения возможности предоставления пользователю необходимой функциональности. Во-первых, он должен быть властен над масштабом карты. Даже, возможно, над двумя масштабами. А то и тремя.

  • Один из масштабов - выбор карты, которая хранится на сервере: их должно быть несколько штук (сколько - определим позднее), от самого грубого (карта мира) до самого мелкого (отдельные улицы и дома). При этом юзер должен бы видеть текущую карту в основном окне, а в маленьком - родительскую, где текущая выделена прямоугольным контуром, который можно по ней двигать, чтобы сменить содержимое основного окна.
  • Второй масштаб - размер окна видимости на выбранной карте (например, в километрах). Поскольку сервер уж точно не будет менять масштаб своих карт по прихоти юзера, картинка должна масштабироваться непосредственно на клиенте. Это окно юзер может передвигать и поворачивать. Оно также определяет текущий набор объектов серверных карт, туда попадающих.
  • Третий масштаб - размер окна видимости на экране (например, в пикселах). Но это уже экзотика, если не сказать "выпендрёж", вроде возможности задавать различный масштаб по X и Y. В любом случае, это тема раздела программирование на WWW.

Двигать просматриваемый участок, видимо, стандартным образом: зацепил мышкой и потянул. Можно ещё добавить движение стрелками: вверх, вниз, вправо, влево. А поворачивать как? Видимо, тоже стрелками - влево/вправо с зажатым шифтом (вращение по часовой или против). Шаг поворота либо фиксированный, либо настраиваемый. К тому же, придётся пририсовать компас, который всегда показывает на север - для ориентировки. Короче, всё это тоже "выпендрёж".

Полистал я также Вики на предмет карт. Грубая выборка: Общегеографические карты изображают рельеф, гидрографию, растительно-почвенный покров, населённые пункты, хозяйственные объекты, коммуникации, границы и т.д. Тематические карты показывают расположение, взаимосвязи и динамику природных явлений, населения, экономики, социальную сферу. Карты геологические, геофизические, карты рельефа земной поверхности и дна Мирового океана, метеорологические и климатические, океанографические, ботанические, гидрологические, почвенные, карты физико-географических ландшафтов и физико-географического районирования. Общественно-политические карты включают карты населения, экономические, политические, исторические, социально-географические. Экономические карты включают также карты промышленности, сельского хозяйства, рыбной промышленности, транспорта и связи... УЖАС! Хотя математика практически одинаковая - это всего лишь фильтры на слои информационного наполнения основной карты.

Привожу также цитаты из Вики про проекции: Цилиндрические проекции используются для карт мира - модель Земли мысленно помещают в цилиндр и проецируют на его стенки земную поверхность. Конические проекции зачастую используются для изображения Евразии, Азии и мира. Меридианами в такой проекции являются прямые линии, выходящие из одной точки (полюса), а параллелями - дуги концентрических кругов. Для изображения на картах отдельных материков и океанов используют азимутальную проекцию, при которой параллели изображаются концентрическими кругами, а меридианы - прямыми (лучами). В азимутальной проекции составлены карты Антарктиды и приполярных районов. Точкой нулевого искажения является точка касания плоскости к земной поверхности, максимальное искажение имеют периферийные части карты. А я планировал как раз наоборот, касание по углам. Этот подход явно лучше. Или, как обычно, истина лежит посередине, минимизируя искажения интегрально.

И ещё две кнопки: плюс и минус (увеличить/уменьшить масштаб). Скажем, с шифтом - клиентской математикой, без - смена текущего масштаба серверной карты. Что ещё... например, фильтры: показать/подсветить реки или там рестораны, лесопарки... Выделять мышой требуемый участок карты, давать статистику по текущей карте или по выборке на ней, формировать страницы "для печати". Всё, хватит: Остапа понесло! Раздел всё-таки про базу данных, а это всего лишь рассуждения для формирования ТЗ на неё.
Назад...   Далее...

28.03.2019 09:48
 
`