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

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

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

Страницы: Пред. 1 ... 392 393 394 395 396 397 398 399 400 401 402 ... 412 След.
Навигационные карты, Классификатор
 
Это приложение разрабатывалось по заказу Роскартографии не нами. По идее порядок обеспечения этим приложением должна определять Роскартография.
Космолнавигационные карты
 
Название Космонавигационная карта придумано нами для конкретной карты с уникальной проекцией. Карта была разработана для применения на станции МИР в 1993 году по заказу РКК Энергия. Условное название карты - Глобус (Globus). При отображении карты ее можно было вращать влево и вправо без ограничений. Эта карта не может быть создана еще раз и в этом нет необходимости. Тип карты Космонавигационная оставлен для совместимости со старыми данными. Те же самые задачи можно решать на проекции Меркатора и т.п.
изменить базовый масштаб пользовательской карты
 
Сейчас есть только один способ изменить паспортные данные карты - создать новую карту и скопировать на нее объекты.
Предполагается, что необходимости динамически что-либо менять в паспорте нет.
Проекция и система координат меняются автоматически при открытии карты с другими данными.

Масштаб пользовательской карты влияет на размер знаков. Размер заданный в классификаторе будет таковым на экране только в базовом масштабе карты. Поэтому масштаб карт планируется в информационной системе, как и классификатор, на этапе проектирования системы. По крайней мере так задумано.
Подскажите пожалуйста почему не получается выбрать объекты функцией mapSelectLocal
 
Выполнил эту же программу под ГИС Карта 2008. Запуск из меню Задачи\Запуск приложений в виде задачи mapexam.dll.
Центром области выбрал точечный объект и расширил область поиска.
Найдено два площадных объекта.
Текст программы ниже.


/****** MAPEXAM.CPP ************ Belenkov O.V.   ****** 21/12/08 ***
*                                                                  *
*              Copyright © PANORAMA Group 1991-2008              *
*                      All Rights Reserved                         *
*                                                                  *
********************************************************************
*                                                                  *
*                  FOR WINDOWS95 & WINDOWS NT                      *
*                                                                  *
********************************************************************
*                                                                  *
*       ПРИМЕР ТЕСТОВОЙ ПРОГРАММЫ,ЗАПУСКАЕМОЙ ИЗ "ПАНОРАМЫ"        *
*                                                                  *
*******************************************************************/

// Эта программа демонстрирует способ разработки задач
// конвертирования, сбора статистики, анализа данных,
// построения матриц, подготовки отчетов и т.п.

// Подобная программа может быть подготовлена в Borland C++,
// Builder C++, Visual C++, Delphi и других средах программирования

// Для отладки такой программы ее необходимо оттранслировать
// "под debugger" и переименовать в "MAPEXAM.DLL"
// Эта DLL будет доступна для отладки сразу после запуска
// системы "ПАНОРАМА"

// Подробнее о написании приложения смотрите MAPAPI.DOC

#include "mapapi.h"   // В Delphi ппрототипы функций описываются отдельно
#include "logapi.h"

// --------------------------------------------------------------
//  Обязательная подпрограмма
// --------------------------------------------------------------
extern "C"
{
long int _export WINAPI GetInterfaceVersion()
{
//  return MAPACCESSVERSION;   // Для программ,использующих классы
                              // библиотеки MAPACCES.DLL

   return 0;                  // Если используется только "MAPAPI"
                              // интерфейс
}
}


// typedef struct TASKPARM      // ПАРАМЕТРЫ ПРИКЛАДНОЙ ЗАДАЧИ
// {
//   long int    Language;        // Код языка диалогов (1 - ENGLISH,
//                                // 2 - RUSSIAN, ...)
//   HINSTANCE   Resource;        // Модуль ресурсов для Panorama.exe
//   const char* HelpName;        // Полное имя файла ".hlp" для Panorama.exe
//   const char* IniName;         // Полное имя файла ".ini" для Panorama.exe
//   const char* PathShell;       // Каталог приложения (exe,dll,...)
//   const char* ApplicationName; // Имя приложения ("Panorama")
//   HWND        Handle;          // Идентификатор главного окна приложения
// }
//   TASKPARM;


int CallApplication(HMAP hmap, HWND handle);

// --------------------------------------------------------------
//  Точка входа в задачу
// --------------------------------------------------------------
extern "C"
{
long int _export WINAPI CallMapFunctionEx(long int hmap, TASKPARMEX * parm)
{
 if ((hmap == 0) || (parm == 0)) return 0;

 return CallApplication((HMAP)hmap, parm->Handle);
}
}


// --------------------------------------------------------------
//  Собственно задача
// --------------------------------------------------------------

int CallApplication(HMAP hMap, HWND handle)
{
 ::MessageBox(0, "Начнем проверку !", "Тест mapWhatObjectBySelect на Подольске", MB_OK);

 HSELECT hselect = mapCreateMapSelectContext( hMap );

 mapSelectLocal(hselect,-1,0); /* выключение всех объектов */
 mapSelectLocal(hselect,1,1); /* включение только площадных */

 //создание объекта для поиска
 HOBJ info2 = mapCreateObject( hMap, 1, 0x7FFC7FFC, 0 );

 // задание поиска в первой точки (прокалывание карты на поиск объектов)
 DFRAME MAPDFRAME;

 // Расширим область поиска, чтоб больше лишнего захватить
 // Координаты объекта 16799922 (точечный) на карте Подольск
 MAPDFRAME.X1 = 6153486.571 - 300;
 MAPDFRAME.Y1 = 7435548.520 - 300;
 MAPDFRAME.X2 = 6153486.571 + 300;
 MAPDFRAME.Y2 = 7435548.520 + 300;

 int count = 0;
 int flagend = 0;

     do
     {
        if( count == 0 )
        {
           // поиск первого объекта в прямоугольной области
           flagend = mapWhatObjectBySelect( hMap, info2, &MAPDFRAME, hselect, WO_FIRST, PP_PLANE );
        }
        else
        {
           // поиск последующих обьектов в прямоугольной области
           flagend = mapWhatObjectBySelect( hMap, info2, &MAPDFRAME, hselect, WO_NEXT, PP_PLANE );
        }

        count = count + 1;

        if( flagend != 0 )
        {
           int kod_info2 = mapObjectExcode( info2 );
           int kod_local = mapObjectLocal( info2 );

           char message[300];
           char local[80];

           switch(kod_local)
           {
             case LOCAL_SQUARE :
                                  strcpy(local, "ПЛОЩАДНОЙ");
                                  break;
             case LOCAL_LINE :
                                  strcpy(local, "ЛИНЕЙНЫЙ");
                                  break;
             case LOCAL_POINT :
                                  strcpy(local, "ТОЧЕЧНЫЙ");
                                  break;
             default:
                                  strcpy(local, "ВСЕ РАВНО НЕ ТО!");
                                  break;
           }
           sprintf(message, "Найден объект, код = %i, локализация = %s", kod_info2, local);
           ::MessageBox(0, message, "Тест mapWhatObjectBySelect на Подольске", MB_OK);
        }
        else
        {
           ::MessageBox(0, "Нет тут ничего !", "Тест mapWhatObjectBySelect на Подольске", MB_OK);
        }
     }
     while( flagend != 0 );


 //Удаление контекста выбора слоев
 mapClearSelectContext( hselect );

 //Удаление объектов поиска
 mapFreeObject( info2 );

 return 0;
}
Подскажите пожалуйста почему не получается выбрать объекты функцией mapSelectLocal
 
Хорошо бы пример текста. Сама функция достаточно простая, должна работать.
загрузка карты
 
Вы можете обратиться по одному из адресов, указанных на нашем сайте:
http://www.gisinfo.ru/spread/make.htm

В частности, в региональные предприятия Роскартографии, которые изготавливают
карты в зонах своей ответственности.
Не находит файл .iml, (MessageBox при вызове функции mapOpenSiteForMap)
 
[QUOTE]Physicist пишет:
При этом в директории   путь_к_классификатору   файл   название_классификатора .iml    присутствует.

(на всякий случай присутствует так же его копия с расширением .IML)
[/QUOTE]

Файл IML - это динамическая библиотека, реализующая сложные алгоритмы отображения условных знаков на карте, а не данные.
Под Windows - DLL, под Linux - SO.
То есть, скопировать карту, классификатор и IML из Windows в Linux не получится.
Если это работает под Windows, значит под Linux не будет.
Для Linux библиотека IML должна быть перетранслирована.
Поэтому мы включаем библиотеки IML в состав дистрибутива программного обеспечения.
mapsyst.h и поддержка UNICODE
 
Спасибо за сообщение. Файл поправим.
Использование MspAtlas
 
Если вес карты в одной проекции и системе координат, то все будет работать именно так.
Одновременно открываете пользовательские карты поверх любых других карт разного масштаба и переключаете их.
Если карты имеют разные проекции (например, коническая равноугольная, система 42 года и т.д.), то для пользовательской карты при переходе к другой карте автоматически будет выполнено преобразование проекции. Пересчитывать карту туда-сюда можно, но это дополнительное время.
ГИС Панорама (версия 9.15, AltLinux 4.0)
 
Будет заказ - сделаем.
Страницы: Пред. 1 ... 392 393 394 395 396 397 398 399 400 401 402 ... 412 След.



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

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