|
|||||||
Выбор и использование персональных навигаторов GPS |
|||||||
| Главная | | Описания | | Статьи | | Программы | | Загрузка | | Ссылки | | Разное |
ОБЪЕКТЫ И УРОВНИ ДЕТАЛИЗАЦИИ ИЛИ Хотелось бы снова остановиться на одном основополагающем правиле, про которое, кажется, все знают, но регулярно его нарушают. При этом фактически сводят на нет плоды своей работы и перспективы развития любой карты. Я говорю о необходимости хранения оригиналов карт только в Польском формате. Все остальные форматы, в которые возможно сохранить данные с помощью GPSMapEdit, являются конечными и предназначены только для использования в навигаторах и навигационных программах. При этом происходит нарезка крупных объектов на куски для увеличения скорости отрисовки карты. Но этот процесс и его сильные и слабые стороны рассматривались ранее. Но не менее важным отрицательным моментом для возможности редактирования карты, является то, что после сохранения в одном из конечных форматов, объекты физически, а не логически, распределяются по уровням детализации.
Разберёмся, как именно описывается принадлежность объектов к соответствующему уровню детализации
в Польском формате и как это влияет на
возможность их редактирования. Для примера, возьмём полигон с длиной сторон 1 градус и
договоримся, что карта имеет два уровня детализации. Вариант 1. [POLYGON] Type=0x1 Data0=(57.00000,67.00000),(57.00000,68.00000),(58.00000,68.00000),(58.00000,67.00000) [END]
В данном случае
объект присутствует только на первом уровне детализации. Второй уровень будет пустым. Напомню, что первым уровнем детализации считается Level0, вторым - Level1 и т.д.
То есть при масштабе, указанном в заголовке
карты для первого уровня детализации,
данный объект будет виден. Если масштаб
будет соответствовать второму уровню, то
этот объект исчезнет. Как будет видно в следующем варианте, за принадлежность к конкретному уровню детализации отвечает параметр Data#=, где # указывает на тот уровень, на котором будет виден данный объект. Вариант 2. [POLYGON] Type=0x1 Data0=(57.00000,67.00000),(57.00000,68.00000),(58.00000,68.00000),(58.00000,67.00000) [END] [POLYGON] Type=0x1 Data1=(57.00000,67.00000),(57.00000,68.00000),(58.00000,68.00000),(58.00000,67.00000) [END]
Именно так описываются два физически разных объекта,
расположенных на разных уровнях детализации.
В данном случае не будет важно какой тип,
имя или форму имеет каждый из них. Но если
эти объекты имеют схожую форму и одинаковый
тип, то как правило, они описывают один и тот же топографический объект на карте.
Такую ситуацию можно наблюдать на
абсолютном большинстве карт, доступных в
сети. О том, почему так происходит, чуть
дальше. Представим, что эти полигоны
описывают одну и ту же реку. Каждый на своём
уровне детализации. Если береговую черту
реки нужно отредактировать, то все операции
придётся делать для каждого полигона в отдельности. В результате - двойная (в случае с двумя уровнями детализации) работа и неточное соответствие формы объекта ввиду отсутствия синхронизации объектов и различной степени генерализации для каждого уровня. Вариант
3. [POLYGON] Type=0x1 EndLevel=1 Data0=(57.00000,67.00000),(57.00000,68.00000),(58.00000,68.00000),(58.00000,67.00000) [END]
В этом случае показан результат действия команды "Extend all elements up to level 1". Появившийся параметр EndLevel=1 явно указывает до какого уровня детализации будет распространён объект, физически находящийся на первом уровне. При этом, если редактировать данный объект на любом уровне детализации, то эти коррективы
в результирующей карте будут действительны
для любого из уровней, на которые этот объект распространён. Это свойство очень полезно при корректировке карт, так как позволяет не задумываться о синхронизации формы объектов в различных уровнях. Вариант 4. [POLYGON] Type=0x1 Data0=(57.00000,67.00000),(57.00000,68.00000),(58.00000,68.00000),(58.00000,67.00000) Data1=(57.00000,67.00000),(57.00000,68.00000),(58.00000,68.00000),(58.00000,67.00000) [END]
Частным случаем многоэлементного объекта является приведённая выше конструкция. Её можно встретить достаточно редко после применения команды "Join per-Level Elements". Такой объект обладает довольно интересными свойствами. Если мы будем передвигать объект на любом из уровней, то
в указанное место будут перемещены все элементы на всех уровнях детализации. А вот если мы будем работать с узлами объекта, то все изменения будут действовать только на тот элемент, который присутствует на текущем уровне детализации, и не будут применены для всех остальных. Все рассмотренные выше варианты возможны лишь для случая, когда карта сохранена в Польском формате. Они дают возможность гибко управлять объектами, быстрее и качественнее редактировать карты. Однако, стоит сохранить карту в одном из конечных форматов, например RUS или IMG, как всё разнообразие сразу исчезнет и останется распределение объектов только по второму варианту. Не забывайте и то, что большие объекты будут нарезаны на множество отдельных объектов. Обратной операции на данный момент нет. Именно в этих форматах сейчас выложены практически все карты в сети Интернет. То есть полноценно редактировать любую из таких карт будет практически невозможно. Вернее это относится с редактированию имеющихся данных, а не к вновь создаваемым. Таким образом хранение карт в Польском формате является абсолютно необходимым для каждого, кто занимается их самостоятельным созданием и актуализацией. Всегда следите за тем, чтобы у вас была версия своей карты в Польском формате и все работы по её развитию выполняйте именно на ней.
13.01.2006
|