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

Дмитрий Шабаков (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Дмитрий Шабаков
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 ... 34 След.
[ Закрыто] gisu64vcacces.dll access violation, Application Verifier выдает access violation при загрузке gisu64vcacces.dll
 
Цитата
Александр Волков написал:
Как обстоят дела с функцией ShpLoadFolder? Удалось что-то выяснить?
В тексте функции импорта данных из SHP ShpLoadFolder поправлена обработка файла настройки SHI.
Обновлены библиотеки для GIS ToolKit версия 12 для платформы "x64" (для Visual C++) - http://gisinfo.ru/download?id=211
[ Закрыто] gisu64vcacces.dll access violation, Application Verifier выдает access violation при загрузке gisu64vcacces.dll
 
Цитата
Александр Волков написал:
Как обстоят дела с функцией ShpLoadFolder? Удалось что-то выяснить?
Разбираемся. Ответ по функции ShpLoadFolder пока не готов.

Цитата
Александр Волков написал:
Да, проекции карт отличаются, и согласно комментариям в заголовочнике mapapi.h должно происходить автоматическое трансформирование к проекции карты, переданной в первом аргументе функции mapAppendDataEx.
Но в итоге я получаю карту, объекты которой невидимы. Прикладываю карту до трансформации и после того, как отработала функция mapAppendDataEx, и была на всякий случай закрыта основная карта через mapCloseData (пробовал и mapCloseMap, результат тот же)
Попробуйте открыть карту в папке after_transform через Панорама мини - вы увидете белый экран. Воспользуйтесь поиском, нажмите найти, поиск что-то находит, но ни чего не выделяет и на экране по прежнему белый фон Панорамы Мини.
Открыл карту after_transform  в ГИС Панорама Мини x64 версии 12.5.3.
Выполнил сортировку, получил изображение карты after_transform:


Изображение карты before_transform в ГИС Панорама Мини:


Обратите внимание на координаты в строке состояния программы ГИС Панорама Мини на скриншотах карт  after_transform и before_transform.
Значение координаты Y в одной карте 8 миллионов, а в другой карте - 13 миллионов. Производную карту увидеть на месте исходной мы не сможем. Она улетела.  
[ Закрыто] gisu64vcacces.dll access violation, Application Verifier выдает access violation при загрузке gisu64vcacces.dll
 
Цитата
Александр Волков написал:
Но кто-то же ее все таки создает и именно в момент вызова функции mapAppendDataEx. Возможно это связано с аргументом transform, выставленным в 1.
Цитата
Vitaliy Belenkov написал:
Странно что Дмитрий не ответил
Данную папку создает ЯДРО, если проводилась операция трансформации карты, в папку Copy - копируется карта ДО трансформации - чтобы всегда можно было откатиться.
Спасибо за справедливое замечание.

Повторюсь, трансформирование добавляемой в документ карты выполняется в том случае, если её параметры проекции, датума и эллипсоида отличаются от установленных в главной карте документа.
Цитата
При создании производной карты в неё не заносятся параметры датума и эллипсоида.
В Вашем случае параметры проекции, датума и эллипсоида у исходной и производных карт должны совпадать.

Цитата
В новую карту необходимо установить параметры Datum и параметры эллипсоида, запрошенные ранее в исходной карте.
Код
   HSITE hSit = 0;
      HMAP fmap = mapCreateMapPro(filenameSit, filenameRsc, &mapregex, &listreg,
                             &sheet, sheetname, 0, 0);
      if (fmap != 0)
        {
         // Установить параметры DATUM и Ellipsoid
         mapSetSiteDatum(fmap, fmap, &datum);
         mapSetSiteEllipsoidParameters(fmap, fmap, &ellipsoid);

         mapSaveSite(fmap, fmap, 1);
         mapCloseData(fmap);
Изменено: Dmitry_ - 19.02.2018 13:04:13
[ Закрыто] gisu64vcacces.dll access violation, Application Verifier выдает access violation при загрузке gisu64vcacces.dll
 
Цитата
Александр Волков написал:
В архиве 2 папки и скриншоты - результаты импорта с новым и старым GTK
Добрый день!
Тестовые данные shp_import.zip скачали. В понедельник займемся данным вопросом.

Цитата
Александр Волков написал:

Потом из L1 генерю L2 и т.д. несколько уровней.
Таким образом я получаю набор карт разной деталлизации: количество точек в полигонах и ломаных в объектах уменьшается с каждым последующим уровнем, соответственно рендеру становится сильно легче все отображать.

В клиентском приложении, которое должно отображать карту, я загружаю всю пирамиду и на отрисовку выбираю самый подходящий по детализации уровень для текущего масштаба - это позволяет достаточно быстро отображать карту на любых масштабах, не ухудшая ее визуальное восприятие.

Недавно возникла необходимость обновлять кое какие данные в карте, и скорее всего это будет происходить довольно часто. Для того, чтобы не трогать основную карту, которая не меняется, а это целая большая пирамида, я подумал, почему бы нам не генерить дополнительную карту с слоем, который мы хотим обновлять, и не добавлять бы его к базовой карте на этапе загрузки.
Решил воспользоваться функцией mapAppendDataEx, ее использование сейчас приводит к падению приложения, притом падение происходит где-то сильно дальше по коду, как буд-то кто-то попортил память. Если использование данной функции закомментарить, все ок (раньше код был без этой функции).
Если не возражаете, пару наблюдений...
При создании производной карты в неё не заносятся параметры датума и эллипсоида.
В Вашем случае параметры проекции, датума и эллипсоида у исходной и производных карт должны совпадать.
При несовпадении параметров проекции (датума, эллипсоида) у добавляемой карты с документом, в который она добавляется, будет выполнено
трансформирование добавляемой карты налету (в памяти).

Предлагаю для создания и добавления производной карты L0,L1... *.SITX применять современную функцию mapCreateAndAppendSiteForMap.
Новая карта сразу создается с параметрами проекции, датума и эллипсоида по исходной карте.
Код
  // Создать пользовательскую карту по открытой карте
  // hmap -  идентификатор открытой векторной карты
  // mapname - полное имя файла карты
  // rscname - полное имя файла ресурсов
  // issitx  - признак создания карты типа SITX
  // При ошибке возвращает ноль

_MAPIMP HSITE _MAPAPI mapCreateAndAppendSiteForMap(HMAP hmap,
                                             const char * mapname,
                                             const char * rscname);

_MAPIMP HSITE _MAPAPI mapCreateAndAppendSiteForMapUn(HMAP hmap,         
                                                     const WCHAR * mapname,
                                                     const WCHAR * rscname,
                                                     long int issitx = 0);

Альтернативный вариант создания карты:
Создание производной карты L0,L1... *.SITX выполняется функцией mapCreateMapPro.
В новую карту необходимо установить параметры Datum и параметры эллипсоида, запрошенные ранее в исходной карте.
Карту добавляем в документ вызовом функции mapOpenSiteForMapPro.
Код
      HSITE hSit = 0;
      HMAP fmap = mapCreateMapPro(filenameSit, filenameRsc, &mapregex, &listreg,
                             &sheet, sheetname, 0, 0);
      if (fmap != 0)
        {
         // Установить параметры DATUM и Ellipsoid
         mapSetSiteDatum(fmap, fmap, &datum);
         mapSetSiteEllipsoidParameters(fmap, fmap, &ellipsoid);

         mapSaveSite(fmap, fmap, 1);
         mapCloseData(fmap);

         // Создать пользовательскую карту по открытой карте
         hSit = mapOpenSiteForMapPro(HMap, (filenameSit, 0, 0, 0, 0);
        }
В качестве теста, получите сначала полную копию исходной карты - отключите все манипуляции с объектами (например, фильтрацию).
Прочитали объект в исходной карте и сохранили его в производной.

Настораживает появление папки Copy. Функции ГИС-ядра не создают папку с названием "Copy".
[ Закрыто] gisu64vcacces.dll access violation, Application Verifier выдает access violation при загрузке gisu64vcacces.dll
 
Библиотека gisu64vcacces.lib содержит список имен функций, экспортируемых библиотекой gisu64vcacces.dll.
Файл \testvc12.zip\TestVC\lib\gisu64vcacces.lib из примера датирован февралем 2016-го, а файл gislib12x64vc.zip\gislib12x64vc\MS Visual Studio\gisu64vcacces.lib из архива библиотек GTK-12 - июнем 2017-го.
За полтора года в ядро (gisu64vcacces.dll) были добавлены новые функции, отсюда и разница в размере файлов *.lib.

Библиотеки для GIS ToolKit версии 12 для платформы "x64" (для Visual C++) (http://gisinfo.ru/download?id=211) собраны единообразно, с одинаковыми опциями проектов.
Работоспособность библиотек проверяется запуском контрольного примера mapviewer для Visual Studio C++ ( http://gisinfo.ru/download?id=208 ).
В архиве есть готовый модуль \testvc12.zip\TestVC\readyvc_x64\MapViewer.exe. Исходные тексты примера позволяют собрать его самостоятельно.
Распаковывается архив gislib12x64vc.zip, все необходимое для работы примера (библиотеки GIS ToolKit, библиотеки программируемых знаков, классификаторы, база кодов EPSG)  берется из папки gislib12x64vc.zip\gislib12x64vc\gislib12x64vc\. В данном случае все прозрачно и никакой мешанины быть не может.

Пример mapviewer не использует файлы gislink.h и libgislink12x64vc.lib.
Предлагаю на время файлы gislink.h и libgislink12x64vc.lib из Вашего проекта убрать. Вернемся к ним после того, как заработает приложение.
Тестироваться можно на карте \Example\Data\Noginsk.sitx из состава GIS ToolKit.

Проблему выгрузки библиотек под контролем анализатора Application Verifier можно обойти.
Для освобождения ресурсов ГИС-ядра, не выгружая библиотек GTK, закрываем данные (карты) и вызываем функцию mapCloseMapAccess перед закрытием приложения.

Функция находится в библиотеке gisu64vcacces.dll, а объявлена в mapapi.h:  
Код
// Освободить ресурсы ядра перед закрытием приложения
_MAPIMP  long int _MAPAPI mapCloseMapAccess();
[ Закрыто] gisu64vcacces.dll access violation, Application Verifier выдает access violation при загрузке gisu64vcacces.dll
 
Цитата
Александр Волков написал:
Коллеги! Вы что издеваетесь надо мной?!!!!!
В архиве по ссылке http://gisinfo.ru/download?id=208 нет *.dll файлов!!!!!!!!!
Пожалуйста, прочитайте внимательнее:

Цитата
Объявление API-функций восстановлено, обновленные библиотеки размещены на нашем сайте:  http://gisinfo.ru/download?id=211
Цитата
Контрольный пример mapviewer ( http://gisinfo.ru/download?id=208 ) для Visual Studio C++ ...
По ссылке  http://gisinfo.ru/download?id=208 размещен архив с исходными текстами тестового приложения.
Описание контрольного примера mapviewer для Visual Studio C++ из файла testvc12.zip\TestVC\readme.txt
Код
Пример использования библиотек GTK в MS VS 2008 (C++)

  Для сборки проекта необходимо распаковать архив и запустить  
Microsoft Visual Studio 2008.

Сборка включает в себя три проекта.
Все проекты основаны на одних и тех же исходных текстах.
Исходные тексты адаптированы таким образом, чтобы все проекты могли быть собраны 
как в unicode, так и в ansi 
(см. опции проекта Property->ConfigurationProp.->General->Character Set)

Для работы разместить в приведенных ниже директориях соответсвующие комплекты DLL:
ready11_x32 - GTK11 (gis*.dll)  
           архив библиотек gislib11.zip - http://gisinfo.ru/download?id=101;
ready12_x32 - GTK12 (gisu*.dll) 
           архив библиотек gislib12x32.zip - http://gisinfo.ru/download?id=179;
readyvc_x64 - GTK12VC (gisu64vc*.dll) 
           архив библиотек gislib12x64vc.zip - http://gisinfo.ru/download?id=211;
[ Закрыто] gisu64vcacces.dll access violation, Application Verifier выдает access violation при загрузке gisu64vcacces.dll
 
Действительно, при слиянии библиотек потерялось 3 API-функции по импорту данных из SHP.
Выяснили отсутствие функции в пятницу, 9-го февраля. Объявление API-функций восстановлено, обновленные библиотеки размещены на нашем сайте: http://gisinfo.ru/download?id=211
Функции по импорту данных из SHP находятся в библиотеке gisu64vcvectr.dll (gisu64vectr.dll) и объявлены в h-файле vectrapi.h:
Код
  //   Импорт из ShapeFile набора данных
  //   handle  - окно визуального сопровождения процесса обработки
  //   mapname - имя файла (полный путь) создаваемой карты
  //             Если имя не указано - сформируется по имени первого SHP в списке
  //             Если карта с указанным (или сформированным) именем не существует
  //                 - будет создана
  //             Если карта уже существует и clear = 1 - выполняется перезапись
  //             (предварительное удаление старых объектов)
  //   clear   - 0/1 предварительно чистить существующую карту?
  //   rscname - имя файла (полный путь) классификатора (может = 0, если карта
  //             уже существует), обязан быть, если карты еще нет
  //   shiname - имя файла настроек(полный путь) 0 - для набора данных,
  //             сформированных средствами "Панорама"
  //   scale   - знаменатель масштаба создаваемой карты (может = 0, если карта
  //             уже существует)
  //   shppath - путь к папке с набором данных
  //   charset - таблица кодировки таблицы DBF (0 - ANSI,1 - UTF-8, 2-OEM,
  //                                     -1 - неизвестно, опр. автоматически)
  //   sort    - выполнить итоговую сортировку карты (0,1)
  //   clear   - выполнить предварительную очистку карты (0,1)
  //   Возврат:  1 - нормальное завершение, 0 - загрузка не выполнена, -1 - выполнено с ошибками
  //   Ошибки, выявленные после создания (или открытия карты) пишутся в LOG карты

_MAPIMP long int WINAPI ShpLoadFolder(HMESSAGE handle,const char *mapname,const char *rscname,const char *shiname,
                 long int scale,const char *shppath,long int charset,long int sort,long int clear = 0);


  //   Импорт из ShapeFile набора данных с дополнительным параметром "onlyconfig"
  //   handle  - окно визуального сопровождения процесса обработки
  //   mapname - имя файла (полный путь) создаваемой карты
  //             Если имя не указано - сформируется по имени первого SHP в списке
  //             Если карта с указанным (или сформированным) именем не существует
  //                 - будет создана
  //             Если карта уже существует и clear = 1 - выполняется перезапись
  //             (предварительное удаление старых объектов)
  //   clear   - 0/1 предварительно чистить существующую карту?
  //   rscname - имя файла (полный путь) классификатора (может = 0, если карта
  //             уже существует), обязан быть, если карты еще нет
  //   shiname - имя файла настроек(полный путь) 0 - для набора данных,
  //             сформированных средствами "Панорама"
  //   scale   - знаменатель масштаба создаваемой карты (может = 0, если карта
  //             уже существует)
  //   shppath - путь к папке с набором данных
  //   charset - таблица кодировки таблицы DBF (0 - ANSI,1 - UTF-8, 2-OEM,
  //                                     -1 - неизвестно, опр. автоматически)
  //   sort    - выполнить итоговую сортировку карты (0,1)
  //   clear   - выполнить предварительную очистку карты (0,1)
  //   onlyconfig - загружать только настроенные слои (0,1)
  //
  //   Возврат:  1 - нормальное завершение, 0 - загрузка не выполнена, -1 - выполнено с ошибками
  //   Ошибки, выявленные после создания (или открытия карты) пишутся в LOG карты

_MAPIMP long int WINAPI ShpLoadFolderEx(HMESSAGE handle,const char *mapname,const char *rscname,const char *shiname,
                                        long int scale,const char *shppath,long int charset,long int sort,
                                        long int clear,long int onlyconfig);

  //   Импорт из OSM ShapeFile набора данных на восточное полушарие
  //   handle  - окно визуального сопровождения процесса обработки
  //   mapname - имя файла (полный путь) создаваемой карты
  //             Если имя не указано - сформируется по имени первого SHP в списке
  //             Если карта с указанным (или сформированным) именем не существует
  //                 - будет создана
  //             Если карта уже существует и clear = 1 - выполняется перезапись
  //             (предварительное удаление старых объектов)
  //   rscname - имя файла (полный путь) классификатора (может = 0, если карта
  //             уже существует), обязан быть, если карты еще нет
  //   shiname - имя файла настроек(полный путь) 0 - для набора данных,
  //             сформированных средствами "Панорама"
  //   scale   - знаменатель масштаба создаваемой карты (может = 0, если карта
  //             уже существует)
  //   shppath - путь к папке с набором данных
  //   charset - таблица кодировки таблицы DBF (0 - ANSI,1 - UTF-8, 2-OEM,
  //                                     -1 - неизвестно, опр. автоматически)
  //   sort    - выполнить итоговую сортировку карты (0,1)
  //   Возврат:  1 - нормальное завершение, 0 - загрузка не выполнена, -1 - выполнено с ошибками
  //   Ошибки, выявленные после создания (или открытия карты) пишутся в LOG карты

_MAPIMP long int WINAPI OSMShpLoadFolderEx(HMESSAGE handle,const char *mapname,const char *rscname,const char *shiname,
                 long int scale,const char *shppath,long int charset,long int sort,int source);

Далее. Файлы  gislink.h и libgislink12x64vc.lib в состав стандартной поставки не входят.
Указанные файлы передаются по дополнительному соглашению. В архиве gislib12x64vc.zip их быть не должно.
Предложение прежнее: используйте для сборки своего приложения файлы gislink.h и libgislink12x64vc.lib, переданные Вам ранее.

А теперь самое интересное. Библиотеки GTK-12 x64 собираются в Embarcadero® C++Builder® XE7.
Контрольный пример mapviewer (http://gisinfo.ru/download?id=208) для Visual Studio C++ с библиотеками GTK-12 VC x64 без анализатора запускается и работает.  
При подготовке тестовой сборки мы подбирали опции проектов библиотек для их работы под анализатором Application Verifier.
Не меняя исходных текстов удалось добиться корректной загрузки модулем, собранным в Visual C++, библиотек ядра под контролем анализатора Application Verifier:
gisu64vcacces.dll, gisu64vcpicex.dll, gisu64vcvecex.dll, gisu64vc3dtools.dll, gisu64vcgps.dll, gisu64vcmath.dll, gisu64vcmtrex.dll, gisu64vcpasp.dll, gisu64vcs57.dll, gisu64vcselec.dll, gisu64vcthem.dll, gisu64vcvectr.dll, gisu64vcforms.dll, gisu64vcjpgview.dll, gisu64vcrswg.dll, gisu64vcprint.dll, gisu64vcaddress.dll, gisu64vcformse.dll.
Тесты выполнялись с модулями, собранными в Visual Studio 2008, 2012 и 2015.

Проблему, возникающую при выгрузке библиотек, собранных в XE7, под контролем анализатора Application Verifier, устранить не удалось.
Без анализатора библиотеки GTK-12 VC x64 загружаются и выгружаются корректно.
Изменено: Dmitry_ - 12.02.2018 19:14:19
Задача "Легенда карты" что должно вернуться в качестве TWinControl в lparam при AW_GETPANELSTATE?, Не присваивается parent
 
Посмотрите опции проектов у легенды и выполняемого модуля.
Параметры PACKAGES у данных проектов должны быть идентичны.
[ Закрыто] gisu64vcacces.dll access violation, Application Verifier выдает access violation при загрузке gisu64vcacces.dll
 
На почту отправил ссылку на тестовые библиотеки.
Загрузка библиотек ядра (gisu64vcacces, gisu64vcvecex, gisu64vcpicex) под контролем анализатора Application Verifier выполняется, но проблема возникает при их выгрузке.
Задача "Легенда карты" что должно вернуться в качестве TWinControl в lparam при AW_GETPANELSTATE?, Не присваивается parent
 
Поясните, как организовано приложение.
Какие библиотеки используете в качестве ядра?
Исходные тексты легенды карты из какого SDK берете?
Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 ... 34 След.



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

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