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

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

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

Страницы: Пред. 1 ... 7 8 9 10 11 12 13 14 15 16 17 ... 29 След.
Экспорт карты в графику с файлом проекции MapInfo
 
При сохранении карты в файл графического формата с файлом привязки MapInfo выполняется заполнение файла TAB.
В TAB заносятся координаты углов растра и параметры проекции.
Пример описания параметров проекции из файла TAB для СК "Pulkovo Gauss zone 8":
[CODE]CoordSys Earth Projection 8, 1001, "m", 45, 0, 1, 8500000, 0.[/CODE]
Если в файле TAB параметры проекции не указаны, то появляется запись [CODE]CoordSys NonEarth Units "m"[/CODE]
Алгоритм такой:
1. Определяется СК и параметры проекции сохраняемого документа.
2. По запрошенным параметрам проекции программа формирует запись для файла TAB (пример записи приведен выше). Если программа не смогла сформировать запись «CoordSys Earth Projection …» в формате MapInfo, в файл записывается «CoordSys NonEarth Units "m" ».
В предыдущем сообщении я указал СК, которые переносятся в файл TAB.
Экспорт карты в графику с файлом проекции MapInfo
 
В 11-ой версии в файл TAB при экспорте карты в графику и выборе файла параметров "файл привязки Mapinfo" записываются параметры следующих СК:
UTM WGS84,
UTM NAD27,
СК-42,
Широта/Долгота на эллипсоиде ПЗ-90.02,
Широта/Долгота на эллипсоиде Красовского,
Широта/Долгота на эллипсоиде WGS84,
Широта/Долгота на эллипсоиде WGS72,
Морская навигационная на эллипсоиде Красовского,
Морская навигационная на эллипсоиде WGS84.

Список сохраняемых в файл TAB СК будем увеличивать. Спасибо за сообщение.
установка GisToolKit12
 
Здравствуйте!
От какого числа у Вас дистрибутив GisToolFree 12 ?
LoadRstOptimizationEx и JPEG
 
Функции для оптимизации растров объявлены в файле mappicex.h (библиотека gispicex.dll).
[CODE]// Оптимизировать файл растровой карты с возможным сжатием изображения
//    handle         - диалог визуального сопровождения процесса обработки.
//    map            - карта,содержащая векторные данные;
//    name           - имя файла растровой карты
//    newname        - имя файла оптимизированной растровой карты
//    compressnumber - номер алгоритма сжатия блоков изображения
//                     0 - не использовать сжатие
//                     1 - алгоритм сжатия LZW
//                     2 - алгоритм сжатия JPEG (для 24 битных растров)
//    jpegCompressValue - степень сжатия изображения растра по алгоритму JPEG   // 04/12/11
//                        имеет значение, если compressnumber присвоено значение 2  
//                        (1-100, 1-максимальное сжатие, 100-сжатие без потери качества),
//                         рекомендуется значение 60.
//    flagborder     - флаг использования рамки растровой карты
//                     0 - включать в формируемый файл все блоки изображения
//                     1 - не включать в формируемый файл блоки изображения
//                         невходящие в область, ограниченную рамкой
//     Добавлен пересчет габаритов растра при обрезке изображения по
//     рамке растра (когда flagborder == 1).
//    При ошибке возвращает ноль

_MAPIMP long int WINAPI LoadRstOptimizationAndCompress(HMESSAGE handle, HMAP hMap,
char* name,char* newname,
long int compressnumber, long int jpegCompressValue,
long int flagborder);
[/CODE]
трансформирование проекции растровой карты, mapSetDocProjection() трансформирует проекцию только векторных карт
 
Здравствуйте, Сергей!
Для преобразования проекции и СК исходный растр должен иметь следующие характеристики:
1. геопространственную  привязку.
2. Параметры проекции и СК
Если для растра не установлена геопространственная  привязка, то при добавлении в документ карты изображение растра отображается в юго-западном углу района.
[CODE]// Запросить флаг существования привязки растра
 // hMap       - идентификатор открытой векторной карты
 // number     - номер файла в цепочке
 // При ошибке возвращает 0
_MAPIMP long int _MAPAPI mapCheckExistenceRstLocation(HMAP hMap, long int number);
[/CODE]Если функция mapCheckExistenceRstLocation возвращает 1, то привязка для растра установлена.
[CODE]// Установить привязку растра в районе работ(в метрах)
 // hMap       - идентификатор открытой векторной карты
 // number     - номер файла в цепочке
 // location   - координаты юго-западного угла растра(в метрах)
 // При ошибке возвращает 0
_MAPIMP long int _MAPAPI mapSetRstLocation(HMAP hMap, long int number, DOUBLEPOINT *location);

 // Запросить привязку растра в районе работ(в метрах)
 // hMap       - идентификатор открытой векторной карты
 // number     - номер файла в цепочке
 // location   - координаты юго-западного угла растра(в метрах)
 // При ошибке возвращает 0
_MAPIMP long int _MAPAPI mapGetRstLocation(HMAP hMap, long int number, DOUBLEPOINT *location);
[/CODE]
Выяснить, корректно ли установлены параметры проекции и СК в растр, можно вызвав функцию mapIsRstGeoSupported.[CODE]// Запрос - поддерживается ли пересчет к геодезическим
 // координатам из плоских прямоугольных и обратно
 // hMap     - идентификатор открытой основной карты
 // number   - номер растра
 // Если нет - возвращает ноль
 _MAPIMP long int _MAPAPI mapIsRstGeoSupported(HMAP hMap, long int number);
[/CODE]
Параметры проекции и СК передаются посредством трёх структур: MAPREGISTEREX, DATUMPARAM, ELLIPSOIDPARAM.[CODE]// Запросить данные о проекции растра
 // number      - номер файла в цепочке
 // mapregister - адрес структуры, в которой будут размещены
 // данные о проекции
 // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapGetRstProjectionData(HMAP hMap, int number,
MAPREGISTEREX* mapregister);

 // Запросить данные о проекции растра по имени файла
 // name        - имя файла растра
 // mapregister - адрес структуры, в которой будут размещены
 // данные о проекции
 // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapGetRstProjectionDataByName(const char *name,
MAPREGISTEREX* mapregister);
_MAPIMP long int _MAPAPI mapGetRstProjectionDataByNameUn(const WCHAR *name,
MAPREGISTEREX* mapregister);
// Установить данные о проекции растра
 // number - номер файла в цепочке
 // mapregister - адрес структуры
 // При ошибке возвращает ноль
_MAPIMP  long int _MAPAPI mapSetRstProjectionData(HMAP hMap, int number,
MAPREGISTEREX* mapregister);

 // Запросить параметры эллипсоида растра
 // hMap   - идентификатор открытой основной векторной карты
 // number - номер файла растра в цепочке
 // ellipsoidparam - адрес структуры, в которой будут размещены
 // параметры эллипсоида
 // Структурa ELLIPSOIDPARAM описанa в mapcreat.h
 // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapGetRstEllipsoidParam(HMAP hMap, long int number,
ELLIPSOIDPARAM *ellipsoidparam);

 // Установить параметры эллипсоида растра
 // hMap    - идентификатор открытой основной векторной карты
 // number  - номер файла растра в цепочке.
 // ellipsoidparam - адрес структуры, содержащей параметры эллипсоида
 // Структурa ELLIPSOIDPARAM описанa в mapcreat.h
 // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapSetRstEllipsoidParam(HMAP hMap, long int number,
const ELLIPSOIDPARAM *ellipsoidparam);

 // Запросить коэффициенты трансформирования геодезических координат растра
 // hMap   - идентификатор открытой основной векторной карты
 // number - номер файла растра в цепочке
 // datumparam - адрес структуры, в которой будут размещены
 // коэффициенты трансформирования геодезических координат
 // Структурa DATUMPARAM описанa в mapcreat.h
 // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapGetRstDatumParam(HMAP hMap, long int number,
DATUMPARAM *datumparam);

 // Установить коэффициенты трансформирования геодезических координат растра
 // hMap    - идентификатор открытой основной векторной карты
 // number  - номер файла растра в цепочке.
 // datumparam - адрес структуры, содержащей коэффициенты трансформирования
 // геодезических координат
 // Структурa DATUMPARAM описанa в mapcreat.h
 // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapSetRstDatumParam(HMAP hMap, long int number,
const DATUMPARAM *datumparam);
[/CODE]
Property.Rsw/Podolsk.rsw – растр с установленными параметрами проекции и СК (тип карты – «Топографическая 42 года», проекция – «Равноугольная Гаусса-Крюгера», номер зоны – 7). Отсутствует лишь эллипсоид.
Для корректной работы функции  RswProjectionReformingEx в растр Property.Rsw/Podolsk.rsw необходимо установить значение эллипсоида – «Красовский 1940».
Работа с функцией RstRotating, Описание параметров функции.
 
[QUOTE]Артем пишет:
Если растр отрывается отдельной функцией, то для чего

NameRstIn - имя исходного растра;
NameRstOut - имя выходного растра; [/QUOTE]

[CODE]//========================================================================
//    Поворот растра вокруг точки NullPoint на угол Angle      
//
//    map        - карта,содержащая векторные данные;
//    RstNumber  - номер исходного растра в цепочке растров
//    NameRstIn  - имя исходного растра;
//    NameRstOut - имя выходного растра;
//    NullPoint  - координаты точки поворота в элементах растра;
//    Angle      - угол поворота (в радианах);
//    handle     - диалог визуального сопровождения процесса обработки.
//==========================================================­==============
_MAPIMP long int WINAPI RstRotating(HMAP map, long int RstNumber,
char * NameRstIn, char * NameRstOut,
DOUBLEPOINT NullPoint, double Angle,
HMESSAGE handle);

[/CODE]

Аргумент NameRstOut предназначен для передачи в функцию имени выходного растра, т.к. функция RstRotating создает новый растр с повернутым изображением. Имена исходного и выходного растров должны отличаться.
Идентификация исходного растра осуществляется аргументами RstNumber и NameRstIn.

Функция RstRotating также будет обрабатывать растр, который добавлен в документ карты (матрицы, растра, и т.д.).  Добавление растров в документ выполняется следующими функциями:
• _MAPIMP long int _MAPAPI mapOpenRstForMap(HMAP hMap, const char *rstname, long int mode); объявлена в rstapi.h.
• _MAPIMP long int _MAPAPI mapOpenRstForMapUn(HMAP hMap, const WCHAR *name, long int mode); объявлена в rstapi.h.

// Добавить данные к открытой карте (карту, растр, матрицу)
 // hMap -  идентификатор открытых данных
 // name - имя открываемого файла (SIT, MTW, MTQ, RSW, MPT)
 // mode - режим чтения/записи (GENERIC_READ, GENERIC_WRITE или 0)
 // Возвращает идентификатор типа данных (FILE_MAP - для пользовательской
 // карты, FILE_RSW - для растра, FILE_MTW - для матрицы, FILE_MTL - для
 // матрицы слоев, FILE_MTQ - для матрицы качеств), данные добавляются в
 // список последними, если данные уже были открыты, число открытых данных
 // (карт, растров, матриц) не меняется
 // transform - признак трансформирования пользовательской карты
 //             к ранее открытым данным (если проекции разные):
 //             0 - не трансформировать данные (преобразовывать "на лету"),
 //             1 - трансформировать данные при открытии и сохранить карту
 //                 в новой проекции,
 //            -1 - задать вопрос пользователю.
 // В серверной версии (-1) обрабатывается, как 0.
 // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapAppendData(HMAP hMap, const char *name,  long int mode = 0); объявлена в mapapi.h.
• _MAPIMP long int _MAPAPI mapAppendDataEx(HMAP hMap, const char *name,  long int mode = 0, long int transform = -1); объявлена в mapapi.h.

 // Добавить данные к открытой карте (карту, растр, матрицу)
 // hMap -  идентификатор открытых данных
 // name - имя открываемого файла (SIT, MTW, MTQ, RSW, MPT) в кодировке UNICODE
 // mode - режим чтения/записи (GENERIC_READ, GENERIC_WRITE или 0)
 // transform - признак трансформирования пользовательской карты
 //             к ранее открытым данным (если проекции разные):
 //             0 - не трансформировать данные (преобразовывать "на лету"),
 //             1 - трансформировать данные при открытии и сохранить карту
 //                 в новой проекции,
 //            -1 - задать вопрос пользователю.
 // В серверной версии (-1) обрабатывается, как 0.
 // password - пароль доступа к данным из которого формируется 256-битный код
 //            для шифрования данных (при утрате данные не восстанавливаются)
 // size     - длина пароля в байтах !!!
 // Передача пароля необходима, если при создании карты он был указан.
 // Если пароль не передан, а он был указан при создании,
 // то автоматически вызывается диалог scnGetMapPassword из mapscena.dll (gisdlgs.dll)
 // Если выдача сообщений запрещена (mapIsMessageEnable()), то диалог
 // не вызывается, а при отсутствии пароля происходит отказ открытия данных
 // Возвращает идентификатор типа данных (FILE_MAP - для пользовательской
 // карты, FILE_RSW - для растра, FILE_MTW - для матрицы, FILE_MTL - для
 // матрицы слоев, FILE_MTQ - для матрицы качеств), данные добавляются в
 // список последними, если данные уже были открыты, число открытых данных
 // (карт, растров, матриц) не меняется
 // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapAppendAnyData(HMAP hMap, const WCHAR *name, long int mode = 0, long int transform = -1); объявлена в mapapi.h.

• _MAPIMP long int _MAPAPI mapAppendDataUn(HMAP hMap, const WCHAR *name,  long int mode = 0); объявлена в mapapi.h.
• _MAPIMP long int _MAPAPI mapAppendAnyDataPro(HMAP hMap, const WCHAR *name,  long int mode = 0, long int transform = -1, const WCHAR *password = 0, long int size = 0); объявлена в mapapi.h.
Работа с функцией RstRotating, Описание параметров функции.
 
[QUOTE]Артем пишет:
А вот с поворотом полученного .rsw возникли вопросы.
Карты векторной у меня нет => map = 0,
RstNumber - ? или минимум 1 или вызвать mapGetRstNumberByName

RstRotating - можно пример(желательно когда map = 0) использования?[/QUOTE]
Функция RstRotating (RstPlaneRotating) предназначена для поворота изображения растра на фиксированный угол вокруг указанной точки на растре. Функции RstRotating и RstPlaneRotating отличаются друг от друга единицами измерения координат точки, относительно которой выполняется поворот. В первом случае это элементы растра, во втором - метры на местности в системе координат документа.
Функция RstRotating используется в ГИС Карте 2011 в следующих режимах:
• Привязка растра по двум точкам -> С масштабированием и поворотом
• Привязка растра по двум точкам -> Поворот без масштабирования
• Привязка растра по двум точкам -> Горизонтальное выравнивание
• Привязка растра по двум точкам -> Вертикальное выравнивание
• Поворот растровой карты
Для выполнения поворота растра достаточно открыть растр в отдельный документ без карты следующими функциями:
• _MAPIMP HMAP _MAPAPI mapOpenData(const char *name, long int mode = 0), объявлена в mapapi.h.
• _MAPIMP HMAP _MAPAPI mapOpenDataUn(const WCHAR * name, long int mode = 0), объявлена в mapapi.h.
• _MAPIMP HMAP _MAPAPI mapOpenDataEx(const char *name, long int mode, long int *error), объявлена в mapapi.h.
• _MAPIMP HMAP _MAPAPI mapOpenRst(const char *rstname, long int mode = 0), объявлена в rstapi.h.
• _MAPIMP HMAP _MAPAPI mapOpenRstUn(const WCHAR *rstname,long int mode), объявлена в rstapi.h.
На вход указанным выше функциям необходимо подать имя файла растра. Функции возвращают идентификатор документа HMAP, который в нашем случае содержит один растр. Полученный идентификатор документа HMAP передаем в вызываемые API-функции, предназначенные для обработки растра. Для вызова функций обработки растра потребуется так же номер растра в цепочке. Для получения номера растра в цепочке, как правильно подсказал KFF,  можно воспользоваться функциями, объявленными в rstapi.h:
• _MAPIMP long int _MAPAPI mapGetRstNumberByName(HMAP hMap, const char *name);
• _MAPIMP long int _MAPAPI mapGetRstNumberByNameUn(HMAP hMap, const WCHAR* name);
Закрытие документа выполняется функцией _MAPIMP void _MAPAPI mapCloseData(HMAP hMap).
Белые прозрачными?, Белые пикселы растра прозрачными
 
Отключение отображения одного или нескольких цветов  16 или 256-ти цветных растров выполняется в диалоге «Палитра растра».  Диалог «Палитра растра» запускается по пункту «Палитра» контекстного меню на закладке «Растры»  формы «Список данных электронной карты» (Вид –> Список растров –> Свойства -> Палитра).
рассчитанные размеры растра некорректны (равны нулю)
 
Попробуйте на обновленной версии http://public.gisinfo.ru/Panorama11/panorama11.11.1.zip. В ней были внесены изменения в задачу "Преобразование проекции растра".
windows 7. не найдена библиотека gisjpgcompr.dll
 
Здравствуйте!  
Проверил отображение растра, сжатого по алгоритму JPEG, в различных масштабах. Проблем не возникло.
Для теста использовал 64-разрядную операционную систему Windiws7, библиотеки и примеры приложений (c:\Program Files (x86)\Borland\CBuilder6\GisTool11\Example\Builder\Rastr\Rsttest.exe , c:\Program Files (x86)\Borland\CBuilder6\GisTool11\Example\Builder\Findobj\Findobj­.exe) из состава [URL=http://gisinfo.ru/download?id=73]Инструментарий разработчика ГИС-приложений GIS ToolKit (версия 11.10.2)[/URL].
Страницы: Пред. 1 ... 7 8 9 10 11 12 13 14 15 16 17 ... 29 След.



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

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