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

Dmitry_ (Все сообщения пользователя)

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 28 След.
Поворот и сдвиг растров.
 
[QUOTE]Добрый день!
Можно подробнее описать как  одновременно сдвинуть несколько растров, к примеру, подвинуть один растр от одной точки до другой и при этом сдвинуть все растры на карте.  На яндекс картах имеется сдвиг относительно реального положения карты. Тем более когда работаешь в УСК. Хотелось б сдвинув один растр подвинуть и остальные на определенное расстояние.[/QUOTE]
Добрый день!

Для одновременного сдвига нескольких растров предлагаю воспользоваться режимом "Изменение привязки растров".

Способ запуска режима "Изменение привязки растров":
[LIST=1]
[*]В диалоге "Список растров" (Вид\Список растров) необходимо установить указатель на строку Растры.
[*]Нажать на кнопку "Свойства" и в контекстном меню выбрать пункт "Изменение привязки на dX, dY".
[/LIST][IMG WIDTH=825 HEIGHT=545]https://b.radikal.ru/b06/2101/07/c68676db6b17.png[/IMG]

Режим предназначен для изменения привязки растров, открытых в документе, на величину dX, dY.
Растры без привязки в обработке не участвуют.
В диалоге для наглядности отображены координаты привязки первого в цепочке растра.

[IMG WIDTH=830 HEIGHT=545]https://b.radikal.ru/b13/2101/28/dac181437129.png[/IMG]
Конвертация растров в RSW
 
[QUOTE]Добрый день!
Возможно ли сделать процедуру конвертации нескольких растров в RSW многопоточной (хотя бы geotiff)? По растру на ядро?[/QUOTE]
Добрый день!

Мы планомерно переводим затяжные процессы на многопоточную реализацию.

В настоящий момент, для ускорения конвертирования растров из формата GeoTIFF предлагаю следующий вариант:
в диалоге импорта растровых данных установите галочку «Не копировать исходное изображение в RSW файл».
В данном случае на диске создается файл  RSW, который содержит ссылку на открываемый файл GeoTiff и
сформированное обзорное изображение. Загрузка основного изображения в файл  RSW не выполняется.

[IMG WIDTH=860 HEIGHT=743]https://c.radikal.ru/c25/2012/19/7389141cdd98.png[/IMG]
GIS Designer v.13.1.1.41 Free. Видимость растра, Есть ли возможность с помощью API GisDesigner-а включать/отключать видимость добавленных растров?
 
[QUOTE]Здравствуйте!
Вопрос по следующей функции:[TABLE][TR][TH]Код[/TH][/TR][TR][TD]_MAPIMP long int _MAPAPI mapSetRstTransparent(HMAP hMap, long int number, long int transparent); [/TD][/TR][/TABLE]При задании параметра transparent от 1 до 100 функция отрабатывает и меняет степень видимости растра на карте.
При задании transparent = 0 видимость не меняется (растр не скрывается), так должно быть?
Спасибо!
[/QUOTE]
При помощи слайдов проиллюстрирую работу функции mapSetRstTransparent в диалоге "Управление палитрой" ГИС Панорама.
На скриншоте 3 при значении прозрачности 5-10 (цена деления 5 единиц) изображение растра уже неразличимо.
На скриншоте 4 при сдвиге ползунка в крайнее левое положение изображение растра полностью отсутствует.

[IMG WIDTH=960 HEIGHT=575]https://c.radikal.ru/c40/2012/d6/462d5e86a737.png[/IMG]

[IMG WIDTH=960 HEIGHT=581]https://a.radikal.ru/a17/2012/2f/e28aac8eec21.png[/IMG]

[IMG WIDTH=960 HEIGHT=579]https://d.radikal.ru/d23/2012/8d/c5976c0e3596.png[/IMG]

[IMG WIDTH=960 HEIGHT=583]https://d.radikal.ru/d15/2012/78/bda510ef028e.png[/IMG]
GIS Designer v.13.1.1.41 Free. Видимость растра, Есть ли возможность с помощью API GisDesigner-а включать/отключать видимость добавленных растров?
 
[QUOTE]И еще пока не совсем понял, [B]степень видимости[/B] и [B]прозрачность[/B] это один и тот же параметр отображения растров и матриц?[/QUOTE]
Добрый день!

За эффекты "степень видимости" и "прозрачность" растра отвечает один параметр в ядре.  [CODE] // Установить степень видимости растра
 // hMap   - идентификатор открытых данных
 // number - номер файла в цепочке
 // view = 0 - не виден
 // view = 1 - полная видимость
 // view = 2 - насыщенная
 // view = 3 - полупрозрачная
 // view = 4 - средняя
 // view = 5 - прозрачная
 // При ошибке возвращает ноль
_MAPIMP  long int _MAPAPI mapSetRstView(HMAP hMap,long int number,
                                       long int view);

_MAPIMP long int _MAPAPI mapSetRstTransparent(HMAP hMap, long int number,
                                             long int transparent);
[/CODE]Значения флага view соответствуют следующим значениям флага transparent:[CODE] // view transparent описание
 // 1 100 полная видимость
 // 2 80 насыщенная
 // 3 62 полупрозрачная
 // 4 37 средняя
 // 5 20 прозрачная
[/CODE]Для отключения отображения растра применяйте функцию mapSetRstView с нулем.
Ошибка компиляции при сборке примеров из SDK12
 
Здравствуйте, Анатолий!
По ссылке находится архив с недостающими файлами для сборки примера из SDK:
[URL=http://public.gisinfo.ru/shabakov/sdk12_add.zip]http://public.gisinfo.ru/shabakov/sdk12_add.zip[/URL]
picexLoadGdalFileToRsw
 
[QUOTE][URL=http://www.gisweb.ru/forum/user/15768/]Дмитрий Т[/URL] написал:
Здравствуйте!
Вопрос по функции picexLoadGdalFileToRsw. Я пытаюсь с помощью нее получить файл растра rsw из файла изображения png.
Предаю в нее:
double meterInPixelX  = 10000;
double meterInPixelY  = 10000;
DOUBLEPOINT SWpoint;
SWpoint.X = 5.1521e+06;
SWpoint.Y = 6.81197e+06;

picexLoadGdalFileToRswUn(0, 0,imgName,rstName,&meterInPixelX, &meterInPixelY,&SWpoint,0,0,0);
Функция возвращает не 0.

Файл растра формируется, но параметры привязки (meterInPixelX, meterInPixelY,SWpoint) игнорируются. Т.е. вне зависимости от того, что будет в параметрах meterInPixelX, meterInPixelY, SWpoint, растр всегда одинаковый. Так должно быть?  
[/QUOTE]

Здравствуйте!

Для передачи привязки и размеров элемента в выходной файл RSW вместо picexLoadGdalFileToRswUn предлагаю воспользоваться функцией picexLoadGdalFileToRswExUn.[CODE]_PICIMP long int _PICAPI picexLoadGdalFileToRswExUn(HMESSAGE handle, TASKPARM* parm,
                                                   const WCHAR  * inputname,
                                                   const WCHAR  * rstname,
                                                   double* meterInPixelX,
                                                   double* meterInPixelY,
                                                   DOUBLEPOINT *point,
                                                   long int compression,
                                                   long int flagMessage,
                                                   long int flagWorkLog,
                                                   long int flagIgnoreGeoTiff);
[/CODE]Доступ к исходному графическому файлу в Функциях picexLoadGdalFileToRswUn и picexLoadGdalFileToRswExUn осуществляется при помощи методов библиотеки GDAL.
Внутри графических файлов, или в текстовых файлах настройки, находящихся рядом, могут содержаться привязка, размеры элемента и параметры системы координат.
В функции picexLoadGdalFileToRswExUn добавлен дополнительный параметр flagIgnoreGeoTiff.
Параметр flagIgnoreGeoTiff предназначен для игнорирования параметров привязки, размеров элемента и системы координат, определенных библиотекой GDAL.
При вызове функции picexLoadGdalFileToRswExUn в качестве параметра flagIgnoreGeoTiff передайте 1.
В этом случае параметры привязки будут браться из входных параметров функции:
                                                   double* meterInPixelX,
                                                   double* meterInPixelY,
                                                   DOUBLEPOINT *point.




Возможен другой вариант передачи параметров привязки в выходной растр RSW.
После импорта графического файла и получения растра RSW воспользуйтесь функциями:[CODE] // Установить привязку растра в районе работ(в метрах)
 // hMap       - идентификатор открытых данных
 // number     - номер файла в цепочке
 // location   - координаты юго-западного угла растра(в метрах)
 // При ошибке возвращает 0

_MAPIMP long int _MAPAPI mapSetRstLocation(HMAP hMap, long int number, DOUBLEPOINT *location);

 // Установка параметров растра
 // hMap            - идентификатор открытых данных
 // scale           - знаменатель масштаба
 // precision       - разрешение (точек на метр)
 // meterinelementX - количества метров на элемент  ПО ОСИ X
 // meterinelementY - количества метров на элемент  ПО ОСИ Y
 // meterinelementX и meterinelementY могут отличаться
 // Важно!!!
 // Для правильного отображения растров в 10-ой и более ранних версиях необходимо:
 //                         meterinelementX = scale / precision;
 // Если условие не выполняется, то meterinelementX и meterinelementY игнорируются и рассчитываются по формуле.

_MAPIMP long int _MAPAPI mapSetRstParameters(HMAP hMap, long int number,
                                            double scale, double precision,
                                            double meterinelementX,
                                            double meterinelementY);
[/CODE]
Сохранение векторной карты в изображение c помощью LoadMapToPicture (C#)
 
Алексей, уточните, для какой платформы разрабатываете приложение - для x32, или x64?

В объявлении LoadMapToPicture у Вас неточность при описании параметров функции:
[QUOTE]Метод LoadMapToPicture импортируется из библиотеки gispicex.dll
       [DllImport(GisLibrary3, CharSet = CharSet.Ansi)]
       public static extern int LoadMapToPicture(int map, int handle, ref DFrame dframe, int bitcount, int scale, int resolution, IntPtr filename, int handleMainWin);[/QUOTE]

Обратите внимание на объявление функции LoadMapToPicture в файле MAPPICEX.H из состава  GIS ToolKit Active 12-ой версии:
[CODE]_PICIMP long int _PICAPI LoadMapToPicture(HMAP map,HMESSAGE handle,
                                DFRAME * dframe, long bitcount,
                                long scale, long resolution,
                                const char* filename,
                                HMESSAGE handleMainWin);
[/CODE]
Параметр функции map имеет тип HMAP (maptype.h):[CODE]#if defined(_M_X64) || defined(BUILD_DLL64)

typedef __int64   HMAP;    // ИДЕНТИФИКАТОР ОТКРЫТОЙ ВЕКТОРНОЙ КАРТЫ
                          // (УКАЗАТЕЛЬ НА TMapAccess)

#else

typedef long int  HMAP;    // ИДЕНТИФИКАТОР ОТКРЫТОЙ ВЕКТОРНОЙ КАРТЫ
                          // (УКАЗАТЕЛЬ НА TMapAccess)
#endif
[/CODE]Параметры функции handle и handleMainWin имеют тип HMESSAGE (mapsyst.h):[CODE] #define HMESSAGE HWND
[/CODE]Для платформы x64 переменные типа HMAP и HWND не поместятся в int.
Не вызывается диалог выбора семантики из списка, внутри rscShowStatisticObject
 
Здравствуйте, Евгений!

[QUOTE]Здравствуйте!

Использую GisToolKitFree64. Разработка на Windows 10 x64.

Проблема: при вызове диалога с информацией об объекте, с помощью функции rscShowStatisticObject из gisu64rsctools.dll, при правке полей семантики все работает нормально, если это текстовое поле вызывается форма редактирование текста, числовое редактируется прям в ячейке, а вот при попытке править поле выбора значения из списка, вываливается ошибка: "Ошибка при вызове диалога - ???"(см рисунок). В чем может быть проблема?[/QUOTE]
Проверка работы диалога "Выбор значения семантики из списка" выполнялась на тестовом примере Findobj из состава GIS ToolKit версия 12 (\GisTool12_7_2\Example\Builder\Findobj\) под управлением ОС Windows 10.
Приложение Findobj собрано в Embarcadero XE5 для платформы x64.
Применялись библиотеки GIS ToolKit версия 12 для платформы "x64" от 30.07.2019.

Диалог "Выбор значения семантики из списка" вызывается корректно.
Результат вызова диалога "Выбор значения семантики из списка" на скриншоте:
LoadTiffToRstConverter, Объясните пожалуйста работу функции
 
[QUOTE]На тех данных, которые я сегодня отправлял на Вашу почту, программа падает внутри функции picexLoadTiffToRstAndCompressEx.[/QUOTE]
Для импорта данного файла TIFF применяется библиотека GDAL.
Перед использованием функции picexLoadTiffToRstAndCompressEx необходимо вызвать функцию picexInitGdal. Соответственно, после окончания - picexCloseGdal.
Ниже привожу текст консольного приложения, которое работает на Ваших данных(t.tif) без ошибок.
Для тестирования применялись библиотеки GTK-12 x64 от 25.07.2019.
[CODE]#pragma hdrstop
#pragma argsused

#ifdef _WIN32
#include <tchar.h>
#else
 typedef char _TCHAR;
 #define _tmain main
#endif

#include <stdio.h>

#include "maptype.h"
#include "maplib.h"

int _tmain(int argc, _TCHAR* argv[])
{
 typedef long int (WINAPI * F_picexLoadTiffToRstAndCompressEx)(HMESSAGE handle,
                              const char * TiffName,
                              const char * RstName,
                              double* meterInPixelX, double* meterInPixelY,
                              DOUBLEPOINT *point,
                              int compression,
                              int flagIgnoreGeoTiff);

 // Начать работу с Gdal
 typedef long int (WINAPI * F_picexInitGdal)();
 // Закончить работу с Gdal
 typedef long int (WINAPI * F_picexCloseGdal)();


HINSTANCE libinst = LoadLibrary(L"GISU64PICEX.DLL");
if (libinst == 0)
  {
   MessageBoxA(0, "Библиотека не найдена", "GISU64PICEX.DLL", MB_OK|MB_TASKMODAL);
   return 0;
  }

F_picexLoadTiffToRstAndCompressEx lpfn_picexLoadTiffToRstAndCompressEx =
        (F_picexLoadTiffToRstAndCompressEx)GetProcAddress(libinst,"picexLoadTiffToRstAndCompressEx");

F_picexInitGdal lpfn_picexInitGdal   = (F_picexInitGdal) GetProcAddress(libinst,"picexInitGdal");
F_picexCloseGdal lpfn_picexCloseGdal = (F_picexCloseGdal)GetProcAddress(libinst,"picexCloseGdal");

 if (lpfn_picexInitGdal != 0)
    (*lpfn_picexInitGdal)();

int ret = 0;
if (lpfn_picexLoadTiffToRstAndCompressEx != 0)
   {
    HMESSAGE handle       = 0;
    char TiffName[MAX_PATH] = {0};
    char RstName [MAX_PATH] = {0};
    double* meterInPixelX = 0;
    double* meterInPixelY = 0;
    DOUBLEPOINT *point    = 0;
    int compression       = 0;
    int flagIgnoreGeoTiff = 0;

    StrCopy(TiffName, "d:\\Data_2\\t.tif", sizeof(TiffName));
    StrCopy(RstName,  "d:\\Data_2\\t.rsw", sizeof(RstName));

    ret = (*lpfn_picexLoadTiffToRstAndCompressEx)(handle,
                              TiffName,
                              RstName,
                              meterInPixelX, meterInPixelY,
                              point,
                              compression,
                              flagIgnoreGeoTiff);
   }

 if (lpfn_picexCloseGdal != 0)
    (*lpfn_picexCloseGdal)();

 // Выгрузка библиотеки
 if (libinst)  FreeLibrary(libinst);

 if (ret != 0)
   {
    MessageBoxA(0, "Корректное выполнение функции", "picexLoadTiffToRstAndCompressEx", MB_OK|MB_TASKMODAL);
   }
  else
   {
    MessageBoxA(0, "Ошибка выполнения функции", "picexLoadTiffToRstAndCompressEx", MB_OK|MB_TASKMODAL);
   }

 return 0;
}
[/CODE]
[QUOTE]meterInElementX, meterInElementY, point - это входные или выходные данные? [/QUOTE]
meterInElementX, meterInElementY, point - входные параметры функции. Если нет необходимости передавать в функцию указанные параметры, передайте в качестве указателей NULL.
LoadTiffToRstConverter, Объясните пожалуйста работу функции
 
[QUOTE]

Здравствуйте!

Прочел тему. Осталось непонятным, каким образом использовать функцию LoadTiffToRstConverter?

Есть ли какие-то требования к scale и precision? У меня программа падает внутри функции LoadTiffToRstConverter. В чем может быть причина?

Код такой:

   HINSTANCE libinst2;

   long int (WINAPI * LoadTiffToRstConverter)(HMAP, HMESSAGE,const char *,const char *,double, double);

   LoadTiffToRstConverter = (long int (WINAPI *)(HMAP, HMESSAGE,const char *,const char *,double, double)) mapLoadLibrary("gisu64picex.dll" , &libinst2, "LoadTiffToRstConverter");

   long int res = LoadTiffToRstConverter(NULL,NULL,filename.toLocal8Bit().data(),rswName.toLocal8Bit().data(),100000,0.2);

   mapFreeLibrary(libinst2);

[/QUOTE]

Здравствуйте, Дмитрий!

Функция LoadTiffToRstConverter немного устарела.
Предлагаю Вашему вниманию современные функции импорта файлов TIFF:
[CODE]//========================================================================
// Загрузка растровой карты из Tiff(GeoTiff) в RSW
//    Handle - диалог визуального сопровождения процесса обработки.
//    TiffName - имя Tiff-файла;
//    RstName - имя Rst-файла;
//    meterInElementX - размер в метрах элемента по X
//    meterInElementY - размер в метрах элемента по Y
//    point     - точка привязки растра (в метрах)
//                (положение юго-западного угла растра в районе)
//    compression - флаг использования сжатия при формировании RST-файла (0/1)
//              0 - сжатие к блокам изображения применяться не будет
//              1 - блоки д.б. сжаты по методу LZW
//              2 - блоки д.б. сжаты по методу JPEG (справедливо для 24 битных растров)
//    flagIgnoreGeoTiff - (0/1) флаг игнорирования GeoTiff тегов
//    При ошибке возвращает ноль
//
//    Диалогу визуального сопровождения процесса обработки посылаются
//    сообщения:
//    -  (WM_PROGRESSBAR) Извещение об изменении состояния процесса
//       WPARAM - текущее состояние процесса в процентах (0% - 100%)
//       Если функция-отклик возвращает WM_PROGRESSBAR, то процесс завершается.
//
//    -  (WM_ERROR) Извещение об ошибке
//       LPARAM - указатель на структуру ERRORINFORMATION
//       Структура ERRORINFORMATION описана в picexprm.h,
//       WM_PROGRESSBAR и WM_ERROR - в maptype.h
//==========================================================­==============
_PICIMP long int _PICAPI picexLoadTiffToRstAndCompressEx(HMESSAGE handle,
                              const char * TiffName,
                              const char * RstName,
                              double* meterInPixelX, double* meterInPixelY,
                              DOUBLEPOINT *point,
                              int compression,
                              int flagIgnoreGeoTiff);

_PICIMP long int _PICAPI picexLoadTiffToRstAndCompressExUn(HMESSAGE handle,
                              const WCHAR * TiffName,
                              const WCHAR * RstName,
                              double* meterInPixelX, double* meterInPixelY,
                              DOUBLEPOINT *point,
                              int compression,
                              int flagIgnoreGeoTiff);
[/CODE]

Если есть возможность, используйте диалог загрузки графического изображения в растровую карту
(библиотека gisu64rswg.dll, функция DialogLoadImageToRsw объявлена в файле \include\rswgtapi.h):
[CODE] //========================================================================
// Диалог загрузки графического изображения в растровую карту(RSW)
// Обрабатываются файлы следующих форматов: BMP, JPEG, PCX, TIFF, GeoTIFF, PNG, GIF
//    В качестве файлов привязки растрового изображения могут применяться следующие данные:
//    - Файл настроек (*.ini),
//    - Файл настроек Фотоплан (*.tpf),
//    - Файл настроек Талка (*.pln),
//    - Файл настроек MapInfo (*.tab),
//    - Файл настроек (world file)(*.tfw;*.jgw;*.bpw;*.pcw;*.j2w;*.sdw;*.nfw;*.wld)
//    - Файл OziExplorer (*.map)
//
//    hmap - карта,содержащая векторные(растровые, матричные) данные;
//    lpszsource - указатель на имя исходного файла
//    sizesource - размер памяти, выделенной по указателю lpszsource (не менее 260 байт)
//    lpsztarget - указатель на имя выходного файла
//    sizetarget - размер памяти, выделенной по указателю lpsztarget (не менее 260 байт)
//    fileLocType- тип применяемого файла привязки растрового изображения
//                 fileLocType может принимать следующие значения:
//                 120 - (*.ini), 121 - Фотоплан (*.tpf), 122 - Талка (*.pln),
//                 123 - world file(*.tfw;*.jgw;*.bpw;*.pcw;*.j2w;*.sdw;*.nfw;*.wld),
//                 124 - MapInfo (*.tab), 125 - OziExplorer (*.map).
//    parm       - параметры прикладной задачи. Структура TASKPARM описана в MAPTYPE.H
//
//    При ошибке возвращает ноль
//==========================================================­==============
_RSWGIMP long int _RSWGAPI DialogLoadImageToRsw(HMAP hmap,
                                            char* lpszsource, long int sizesource,
                                            char* lpsztarget, long int sizetarget,
                                            long int fileLocType, TASKPARM *parm);

_RSWGIMP long int _RSWGAPI DialogLoadImageToRswUn(HMAP hmap,
                                            WCHAR* lpszsource, long int sizesource,
                                            WCHAR* lpsztarget, long int sizetarget,
                                            long int fileLocType, TASKPARM *parm);

[/CODE]
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 28 След.



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

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