| Главная | Описания | Статьи | Программы | Загрузка | Ссылки | Разное

ОБЪЕКТЫ И УРОВНИ ДЕТАЛИЗАЦИИ ИЛИ
ПОЧЕМУ ПОЛЬСКИЙ?



Хотелось бы снова остановиться на одном основополагающем правиле, про которое, кажется, все знают, но регулярно его нарушают. При этом фактически сводят на нет плоды своей работы и перспективы развития любой карты. Я говорю о необходимости хранения оригиналов карт только в Польском формате. Все остальные форматы, в которые возможно сохранить данные с помощью 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

 



Copyright © WWS 2004-2024
В дорогу!
Rambler's Top100 Экстремальный портал VVV.RU Locations of visitors to this page