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

Расстояние до объекта

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » Разработка скриптов на Python
Страницы: 1
RSS
Расстояние до объекта, Массовое добавление семантики
 
Добрый вечер! Возможно ли массово добавить семантику каждому объекту в зоне расстояние от центра зоны, чтобы не рассчитывать к каждому участку отдельно?
 
Цитата
Евгений написал:
Добрый вечер! Возможно ли массово добавить семантику каждому объекту в зоне расстояние от центра зоны, чтобы не рассчитывать к каждому участку отдельно?
Есть возможность добавить семантику каждому объекту следующим способом:
1 Выделяете нужные объекты способом Выделение произвольной областью (Подглавное меню).
2. Группа режимов "Семантика" (задачи Редактора карты) - Добавление семантики.
 
Вы меня немножко не правильно поняли. Как добавить семантику понятно, а как добавить расстояние от центра зоны в семантику и сделать это сразу на все участки массово.
 
Цитата
Евгений написал:
Вы меня немножко не правильно поняли. Как добавить семантику понятно, а как добавить расстояние от центра зоны в семантику и сделать это сразу на все участки массово.
Добрый день!
 Задача решается в два этапа:
1. Выделить объект Зона, активизировать режим "Расчёты по семантике выделенных объектов" и выполнить.
2. Воспользоваться режимом "Перенос семантики полигонов во входящие объекты" (запуск приложений).
В помощи к режиму описывается последовательность действий.
4.png (369.45 КБ)
3.png (439.71 КБ)
 
Всё сделал, но почему то во все объекты добавляется значение 990
 
Цитата
Евгений написал:
Всё сделал, но почему то во все объекты добавляется значение 990
Значение 990 это радиус зоны, который рассчитан по выбранной формуле и записан в семантику.
 
Да 990 это радиус, но мне нужна длина от каждого объекта до центра зоны. То есть моя задача была указать расстояние от каждого участка в зоне до центра зоны и добавить в семантику каждого объекта, чтобы у каждого было свое расстояние, потом выделить все эти участки и сохранить семантику в текстовый файл чтобы получился отчет по этой зоне.
 
Цитата
Евгений написал:
Да 990 это радиус, но мне нужна длина от каждого объекта до центра зоны. То есть моя задача была указать расстояние от каждого участка в зоне до центра зоны и добавить в семантику каждого объекта, чтобы у каждого было свое расстояние, потом выделить все эти участки и сохранить семантику в текстовый файл чтобы получился отчет по этой зоне.
Возможности указать расстояние от каждого участка в зоне до центра зоны и добавить в семантику каждого объекта в программе нет.
Если Вы владеете навыками программирования, то можете написать собственное приложение с помощью программы GIS ToolKit - комплекс средств разработки ГИС-приложений, базирующийся на интерфейсе доступа "MAPAPI" к ГИС-ядру "Панорама".
https://gisinfo.ru/products/gistool_win.htm
 
В новой версии ГИС Панорама добавлен скрипт на python - "Вычислить расстояние до объекта и записать в его семантику"
https://help14.gisserver.ru/russian/mapscena/index.html?runpy.html

Для выполнения скрипта необходимо на карте выделить объекты, указать объект, до которого будут вычисляться расстояния (точечный или любой другой - будет взят центр полигона или середина линии)
от выделенных объектов, и вызвать скрипт через меню Задачи\Запуск приложений, закладка Скрипты. В диалоге необходимо выбрать семантику, в которую для каждого выделенного объекта будет
записано расстояние до заданного объекта, и нажать кнопку Выполнить.

Основная функция имеет вид:
Код
def ObjectDistance(_hmap:maptype.HMAP, _hobj:maptype.HOBJ, _parm:DistanceParm) -> int:
    distance = mapapi.mapDistancePointObject(_hmap, _hobj, ctypes.byref(_parm.point()))
    iret = mapapi.mapAppendSemanticDouble(_hobj, _parm.code(), distance)
    if iret != 0:
      return mapapi.mapCommitObject(_hobj)
    return 0 

mapapi.mapDistancePointObject - вычисляет расстояние
mapapi.mapAppendSemanticDouble - добавляет значение в семантику
mapapi.mapCommitObject - сохраняет обновленный объект

Скрипты могут быть написаны в любом текстовом редакторе.
Интерпретатор python может быть скачан с сайта https://www.python.org/downloads/
Страницы: 1
Читают тему (гостей: 1)



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

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