На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Резка карты

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Резка карты, Как разрезать карту
 
Здравствуйте, я новичок в использовании GIS ToolKit. У меня стоит задача : Открыть карту(в моем случае Ростовской области), порезать её по границам муниципальных образований. Создать атлас, поместить все районы на атлас и в зависимости от выбранного показать нужный район(Муниципальное образование). Из примеров я понял, что нужно использовать MapOverlay, но до конца так и не разобрался с примером. Можете мне показать на более развернутом примере мою задачу.
P.S. Использую Delphi XE7
Спасибо.
 
Действительно надо использовать MapOverlay, который ищет все пересечения одного объекта с другим. Вы с одной карты выбираете нужные объекты. У вас есть объект, который является границей области интереса.
С помощью MapOverlay ищете все, что попадает внутрь области и на основе полученной метрики создаете объекты на другой карте (карте муниципального образования).
Для информации: В ГИС Панорама (профессиональная, мини) есть готовые интерактивные механизмы для вашей задачи по нарезке большой карты на куски по выбранным границам..
 
Цитата
Andrey Gheleznyakov написал:
Действительно надо использовать MapOverlay, который ищет все пересечения одного объекта с другим. Вы с одной карты выбираете нужные объекты. У вас есть объект, который является границей области интереса.
С помощью MapOverlay ищете все, что попадает внутрь области и на основе полученной метрики создаете объекты на другой карте (карте муниципального образования).
Для информации: В ГИС Панорама (профессиональная, мини) есть готовые интерактивные механизмы для вашей задачи по нарезке большой карты на куски по выбранным границам..
Да, действительно в ГИС Панорама (профессиональная, мини)  есть функционал, который мне нужен, но не могли бы Вы показать наглядно (кодом) как выделить объекты внутри области и переместить(скопировать) в другую карту.
Для информации: Некоторые объекты в картах, которые размещены у Вас на серверах, не копируются. Например, дороги, и получается после копирования нет соединения между маленькими населенными пунктами. У Вас была программа для автоматического скачивания и преобразования карт OSM, сейчас при попытке скачать сайт отвечает файл не найден. Попробовал запустить в ГИС Панорама (профессиональная, мини) импорт из польского формата, висит уже час на стадии "Подождите, идет сбор статистики".
Изменено: Денис Стрельников - 21.06.2017 15:10:38
 
C сайта GIS Lab карты ОСМ можно скачивать только зарегистрированным пользователям.

Для поиска объектов (в том числе и внутри контура другого объекта) есть компонент ТMapFind (установить область поиска TMapFind.MapSelect.SelectSeekArea).

Пример поиска объектов в различных режимах находится в \Examp\Delphi\Findobj\.

Пример работы с обрезанием объектов находится в \Examp\Delphi\mapOverlay\.

Для копирования объекта на другую карту из документации по TMapObj:

Скопировать объект карты на другую пользовательскую карту.

function SetSite(SiteNumber : integer) : integer;

Описание:

Скопировать описание объекта (тип, метрика, семантика) на другую  пользовательскую карту. Параметр SiteNumber задает порядковый номер карты в  цепочке открытых карт. При переносе объекта выполняется перекодировка для нового  классификатора, если такой классификационный код не найден, то он  устанавливается в ноль (затем требуется вызвать SetObjectByExcode), поэтому  желательно чтобы классификаторы карт совпадали. Метрика преобразуется в  соответствии с типом новой карты. При ошибке возвращает ноль

 
да  я вроде зарегистрированный пользователь.
за более подробное разъяснение отдельное спасибо. Стало более менее понятнее, но вот пример с OverLay в папках с примерами вообще неудачный. Мне из него вообще ничего не понятно, может конечно я тугодум, но я 3 дня уже его рассматриваю, разбираю и так ничего и не понял. Может у Вас есть ещё какой нибудь простенький пример с ним?
 
К сожалению, пример использования компонента TMapOverlay - только тот, что входит в комплект инсталляции GIS ToolKit.

Компонент TMapOverlay работает на основе MAPAPI-вызовов OVL-методов ГИС-ядра (см. CROSSAPI.H):

Скрытый текст
 


Вот небольшой пример от туда же:
Скрытый текст



Возможно, поможет разобраться.

Если логика работы Вам будет понятна, далее перенести ее на  базу компонент GIS ToolKit труда не представит.
 
Пример, который Вы привели во второй части сообщения в инструкции я видел, но я не силен в СИ, возможно ли его перевести на pascal? И тогда, я думаю, все станет понятным.
 
Цитата
Денис Стрельников написал:
возможно ли его перевести на pascal?

В настоящее время перевода исходных текстов примеров на Pascal нет.
Возможно, в перспективе, мы расширим функционал примера MapOverlay в GIS ToolKit, но сроки пока также не определены. Думаю, Вы быстрее разберетесь самостоятельно.

Приведенный фрагмент кода C++ дан для понимания алгоритма действий. Повторять его один в один не обязательно.
Функции MAPAPI, приведенные в данном примере, совпадают по именам с их же описанием в текстах GIS ToolKit на Delphi.
Исходные тексты GIS ToolKit на Delphi у Вас есть.
Как описаны MAPAPI для оверлейных операций можно посмотреть в файле crossapi.inc (он соответствует заголовочному файлу ГИС-ядра crossapi.h).
Если Вы планируете использовать компонент TMapOverlay, то, используя приведенный пример на C++, также можно определить, какой метод компонента следует вызвать, так как все методы компонента на базовом уровне обращаются к ГИС-ядру, используя те же вызовы MAPAPI.
Компонент TMapOverlay доступен в открытых кодах в файле mapolv.pas.
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности