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

Создание матрицы рельефа дна

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
Создание матрицы рельефа дна
 
Здравствуйте! Подскажите, пожалуйста, как построить матрицу рельефа дна?
 
Матрица рельефа дна ничем не отличается от матрицы рельефа суши. Основная проблема тут - наличие исходных данных.
Если у Вас есть сведения о промерах глубин, векторная карта с изолиниями или точечными отметками глубин, то матрицу рельефа дна построить не составит проблем.
Повторюсь, рельеф - он и на дне рельеф, и на суше.
Небольшие отличия есть у матрицы глубин, но и то - только в самих значениях, заносимых в матрицу (в первом случае это высота точки местности - абсолютная или относительная, во втором - расстояние от поверхности до дна).

Создать матрицу рельефа с помощью GIS ToolKit - TMapMtrs.CreateMtr.
Заполнение значения высоты в ячейку матрицы - TMapMtr.PutHeightValue

Построение матрицы высот по объектам векторной карты с помощью MAPAPI - mapBuildMtwUn
Скрытый текст


Построение матрицы глубин по отметкам глубины с векторной карты с помощью MAPAPI - mapBuildMtwDepth
Скрытый текст
 
Спасибо. Буду пробовать.
 
Получаю вот такое окно:

---------------------------
Создание матрицы
---------------------------
Недостаточно информации о глубинах для заданных параметров.
Установите область построения с контуром, ограничивающим объекты с характеристикой глубины, или установите большее значение размера элемента
---------------------------
ОК  
---------------------------

Что может быть не так?
 
Цитата

 // Построение матрицы глубин по морской карте,
 // созданной по классификатору с именем s57navy.rsc
 // hMap  - идентификатор открытой карты
 // hSite - идентификатор открытой пользовательской карты
 // Объекты для построения матрицы глубин:
 //  изобата (ключ DEPCNT_L), отметка глубины (ключ SOUNDG_P),
 //  область суши (LNDARE_S), затонувшее судно (WRECKS_P1),
 //  опасность (OBSTRN_S1), подводная осыхающая скала (UWTROC_P)
 // mtrname - полное имя создаваемой матрицы
 // mtrparm - параметры создаваемой матрицы
 // handle   - идентификатор окна диалога, которому посылаются
 //  сообщения о ходе процесса :
 //   0x0589 - сообщение о проценте выполненных работ (в WPARAM),
 //   если процесс должен быть принудительно завершен, в ответ
 //   должно вернуться значение 0x0589
 // errorcode - код ошибки
 //   IDS_PARM - ошибка входных параметров функции
 //   IDS_NOMAP - нет открытых векторных карт
 //   IDS_MEMORY - ошибка выделения памяти
 //   IDS_RSCOPEN - ошибка открытия файла RSC
 //   IDS_LOADLIBRARY - ошибка загрузки библиотеки
 //   IDS_CREATE - ошибка создания файла
 //   7300 - нет открытых морских карт
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapBuildMtwDepth(HMAP hmap, HSITE hsite, const WCHAR *mtrname,
                                          BUILDMTW *mtrparm, HMESSAGE handle, long int* errorcode);


Функция для заполнения значений использует значения глубин из объектов карты, заданной  hmap и hsite.
На карте должны быть объекты, содержащие значения глубин. Это объекты с определенными ключами классификатора:
- изобата (DEPCNT_L),
- отметка глубины (ключ SOUNDG_P),
- область суши (LNDARE_S),
- затонувшее судно (WRECKS_P1),
- опасность (OBSTRN_S1),
- подводная осыхающая скала (UWTROC_P).
Кроме того, для построения матрицы требуется корректно заполнить ее параметры - структуру mtrparm, включая габариты матрицы.

Цитата
Дмитрий Т написал:
Недостаточно информации о глубинах для заданных параметров.
Установите область построения с контуром, ограничивающим объекты с характеристикой глубины, или установите большее значение размера элемента

Это означает, что функция в указанных ей габаритах построения матрицы не нашла достаточного количества объектов, имеющих указанные выше ключи классификатора и содержащих значения глубин.
 
Благодарю за помощь.
Стало работать при LimitMatrixFrame 0 или 2, при 1 не строится. Еще требуется подбор ElemSizeMeters, при каких-то проходит при каких-то нет.
 
Еще предполагаю, что когда функция пишет "установите большее значение размера элемента", на самом деле требуется установить меньшее значение размера элемента.
 
Цитата
Дмитрий Т написал:
Еще предполагаю, что когда функция пишет "установите большее значение размера элемента", на самом деле требуется установить меньшее значение размера элемента.
Элемент - это квадратная площадка (пиксел). Некоторые элементы получают значения глубин при обработке объектов карты. Остальные элементы остаются пустыми, их значения надо вычислять
(интерполяция по окружающим найденным значениям). Чем меньше размер элемента (сторона площадки-пиксела), тем "пустых" - незаполненных из карты элементов больше
и поиски окружающих для вычисления пустых во-первых - замедляются, во-вторых - могут закончиться безрезультатно (есть ограничения).

Поэтому если "установить большее значение размера элемента", то общее кол-во элементов будет меньше и процесс пойдёт быстрее и успешнее. Но при этом конечно матрица получится
более грубая ("зерно" - пиксел будет больше).
 
Елена, я вижу обратную ситуацию, при размере элемента 500 м матрица не строится, а при 200 м строится.  
Изменено: Дмитрий Т - 20.02.2021 11:24:40
 
Цитата
Дмитрий Т написал:
Елена, я вижу обратную ситуацию, при размере элемента 500 м матрица не строится, а при 200 м строится.  
Для выяснения причины нам нужна карта и параметры, заданные в структуре BUILDMTW.

Можете выслать на почту технической поддержки КБ Панорама <panorama@gisinfo.ru>

Спасибо!

Изменено: Елена Кузнецова - 20.02.2021 11:50:36
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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