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

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

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

Страницы: Пред. 1 ... 17 18 19 20 21 22 23 24 25 26 27 ... 327 След.
Комплекс подготовки документов аэронавигационной информации, Обсуждение проблем, возникающих при использовании комплекса
 
К СЧАСТЬЮ МНЕ УДАЛОСЬ ПОДКЛЮЧИТЬСЯ К САЙТУ. ПРАВДА ЧАСТЬ ФУНКЦИЙ ОГРАНИЧЕНА ))
----
[quote]Таким образом, я понимаю, что нет возможности вручную составить программу, например, в делфи,чтобы она переводила данные из сборников ОВД в txt формат для дальнейшего импорта?[/quote]
Что такое сборники ОВД и в каком они виде?
Комплекс подготовки документов аэронавигационной информации, Обсуждение проблем, возникающих при использовании комплекса
 
[QUOTE]Елена Кузнецова пишет:
Карты РФ создать можете, но привязка по базе данных [/QUOTE]
Мало того. Регион используется не только в фильтрах, а и в качестве записи для формированиия корректной гос.границы.
При выводе информации с такой БД, в которой под видом региона UK будут набиты объекты региона UR на карту ничего наносится не будет по причине ограничения по метрике
Ещё один нюанс, сегменты "далее по госгранице" в зонах будут строится по границе региона UK

Сергей, все эти тонкости с регионом уже "проверили"... можно работать только с UK
Диалог выбора объекта (новый)
 
Елена, только что скачал версию ГИС Карты с сайта
Вот картина
[IMG]http://delphi-gis.ucoz.ua/Images/ForForum/2016/img001.png[/IMG]

Складывается такое впечатление, что ядро работает с картами SIT и SIT[B]X[/B] по разному. :|
Не справляюсь с задачей, ищу оперативную помощь
 
[QUOTE]Николай Беспалов пишет:
ПО разворачивается на системах без окон (Linux серверный например)[/QUOTE]
Николай, в таком случае почему Вы не используете ПО для Линукс и не задаёте вопросы в соответствующей ветке форума http://gisweb.ru/forum/forum7/ ?
Тут как раз все работают с окошками и сообщениями, там с сигналами и "контейнерами"  :)
Некорректный перевод координат на большой карте
 
Ваша карта не поддерживает систему координат WGS84
Не справляюсь с задачей, ищу оперативную помощь
 
Высказывайтесь оба в uuof@mail.ru
Несколько вопросов по работе с объектами
 
[QUOTE]Владимир Бершов пишет:
Я не использую функции с приставкой Site,[/QUOTE]
а зря, не смотря не то, что функция mapCreateObject появилась раньше - она является ЧАСТНЫМ случаем функции mapCreateSiteObject
[QUOTE]и что использовать в качестве параметра hSite[/QUOTE]
Если Вы работаете с одной картой то её использование следующее
HOBJ hobj = mapCreateSiteObject(mvMap->MapHandle, [B]mvMap->MapHandle[/B], KM_IDDOUBLE2, 0);
Зато, если вам прийдётся изменять код для работы с подключенной картой, вы заменяете

HOBJ hobj = mapCreateSiteObject(mvMap->MapHandle, [B]mvMap->MapHandle[/B], KM_IDDOUBLE2, 0); на
HOBJ hobj = mapCreateSiteObject(mvMap->MapHandle, xxx-SiteHandle, KM_IDDOUBLE2, 0);

[QUOTE]Перемещение объекта/точки объекта надо делать с помощью mapUpdatePointPlane? Аналогичной функции, принимающей географические координаты, нет? Как быть если объект из двух и более точек (отрезок, например)?[/QUOTE]
mapUpdatePointPlane
обратная
mapXPlane mapYPlane


[QUOTE]Я могу просто хранить массив hobj-тов? [/QUOTE]
для чего плодить для каждого объекта контейнер?

[QUOTE]Или мне надо запоминать не hobj'ы, а ключи, возвращаемые для каждого закоммиченного hobj функцией mapObjectKey(hobj) ? И потом чтобы получить доступ к объекту, надо вызвать mapSeek, получать опять hobj [/QUOTE]

Демонстрирую:
пусть имеется функция создания объекта на карте, которой могу воспользоваться энное число раз

[CODE]
int CreateNewObject(double x, double y, COLORREF color)
{
 HOBJ hobj = mapCreateObject(mvMap->MapHandle, KM_IDDOUBLE2, 0);
 mapRegisterDrawObject(hobj, 0, OL_MARK);
 Maptype::TIMGCIRCLE parm;
 memset((void*) &parm, 0, sizeof(parm));
 parm.Thick = 1200;
 parm.Radius = 4000;
 parm.Color  = color;
 mapAppendDraw(hobj, Maptype::IMG_CIRCLE, (char *)&parm);
 mapAppendPointPlane(hobj, x, y);
 mapCommitObject(hobj);
 int key = mapObjectKey(hobj);
 mapFreeObject(hobj);
 mvMap->GetCenter(position, PP_PLANE);
 mvMap->Repaint();
 return key;
}
[/CODE]

в форме установлен указатель на массив ключей, пусть вот так
private:  
  int * keylist; // список с ключами
  int count;     // число ключей

// добавление нового ключа в список
[CODE]void TForm1::AddKey(int key)
{
 int * buff = 0;
 GetMem(buff, sizeof(int)*(count+1));
 if (count != 0)
   memcpy(keylist, buff, sizeof(int)*count));
 *(buff+count) = key;
 count++;
 delete [] keylist;
 GetMem(keylist, sizeof(int)*count);
 memcpy(buff, keylist, sizeof(int)*count));
 delete [] buff;
}[/CODE]

пусть вызывающая функция выглядит так:
[CODE]void TForm1::OnButtonClick(TSender * Sender)
{
 int key = CreateNewObject(1000, 2000, clRed);
 AddKey(key);

 key = CreateNewObject(1000, 2200, clYellow);
 AddKey(key);

 key = CreateNewObject(1000, 2200, clGreen);
 AddKey(key);
}
[/CODE]

тогда код удаления будет выглядеть вот так

[CODE]void TForm1::OnDestroy(TSender * Sender)
{
 HOBJ hobj = mapCreateObject(mvMap->MapHandle, KM_IDDOUBLE2, 0);
 for (int i=0; i<count;i++)
 if (mapSeekSiteObject(mvMap->MapHandle,mvMap->MapHandle, hobj,*(keylist+i)) != 0)
   mapDeleteObject(hobj);
 mapFreeObject(hobj);

 delete[] keylist;
 count=0;
}
[/CODE]
Несколько вопросов по работе с объектами
 
[QUOTE]1. Надо чтобы объекты не сохранялись вместе с картой при выходе из программы[/QUOTE]
После mapCommitObject(hobj); запоминайте ключ создаваемого объекта предварительно "взяв" его функцией mapObjectKey(hobj);
Ключи храните в динамическом массиве. На выходе, в деструкторе программы , проходите по всему массиву , находите объект функцией mapSeekSiteObject() и удаляете mapDeleteObject
Более сложный путь. В каждый графический объект который подлежит удалению добавьте "метку", например какое то слово "$deleted$" в одну из текстовых семантик. По выходу, ищите все объекты у которых есть это слово через mapSelectSemantic и скопом удаляете;
[QUOTE]2.[/QUOTE]
mapFreeObject удаляет "контейнер" для объектов кары в вашей программе. "Контейнер" жрёт память и если его не удалять, в вашей программе может случиться ошибка "out of memory".  Функция mapDeleteOjeсt  удаляет объект карты, которых хранится в момент вызова функции в "контейнере". Контейнер удаляется в самом конце, после выполнения всех операций.
Схема
HOBJ obj = mapCreateSiteObject(...) - создание объекта(с точки зрения программирования)-контейнера для объекта карты
obj - пустой контейнер в который можно "загрузить" единственный объект любой на карте) и выполнять любые действия включая удаление с карты

mapFreeObject(hobj) - удаление контейнера объекта карты. После этой функции нельзя делать какие то операции или действия с объектом на карте.

[QUOTE]3. Как обращаться к ранее созданным объектам, по hobj каждого[/QUOTE]
В принципе механизм описан в п.2
Каждый объект карты обладает 1. уникальным ключом в пределах карты 2. видом 3. локализацией. Каждый объект на карте можно "загрузить в контейнер" (найти) функцией mapSeekSiteObject используя его уникальный ключ. Ключ присваивается новому объекту после выполнения записи на карту функцией mapCommitObject. Все ранее созданные объекты карты уже имею свой уникальный ключ. "Загрузку объектов карты в контейнер" можно выполнять любыми функциями поиска с префиксом mapSeek... задавая нужные условия. Все операции над найденным объектом могут фиксироваться на карте mapCommitObject

[QUOTE]4. Как полностью удалить объект? [/QUOTE]
думаю, что по информации п.2 и п.3 всё понятно. Создаёте контейнер, загружаете объект который нужно удалить функциями поиска mapSeek...., выполняете физическое удаление с карты каждого найденного mapDeleteOjeсt в цикле, освобождаете контейнер.

например, нужно удалить все объекты карты с ключами от 200 до 250
[CODE]HOBJ obj = mapCreateSiteObject(hMap, hSite); // создали "контейнер"

for (int i=200;i<=250;i++)
if (mapSeekSiteObject(hMap, hSite, i)!=0) // конвейером, в цикле, закидываем  в него все объекты карты с номерами 200..250
 mapDeleteObject(hobj); // удаляем объект карты (контейнер опустошается для для следующего объекта)

mapFreeObject(hobj); // удаляем сам контейнер
[/CODE]

[QUOTE]5. Как делать выделение прямоугольной области? [/QUOTE]
Тут описывать целую портянку, вам проще посмотреть пример findobject входящий в комплект GTK
Изменено: KFF - 25.01.2016 10:38:33
Диалог выбора объекта (новый)
 
Здравствуйте господа разработчики !
Вопрос, как в новом диалоге скопировать или изменить метрику точечного объекта?
Разные координаты
 
[QUOTE]Ольга Лазутова пишет:
Заниматься приведением в соответствие должен не тот, кто покупает ее.[/QUOTE]
Начнём с того что в отрасли в которой мы оба с Вами работаем нет вообще такого слова СК-42 или ПЗ-90 или СК-95. Эти слова порождены теми, кто не рождён летать  :D и их ветка называется "Геодезия и Кадастр"

Второе, Вы как разработчик ПО должны поставить жёсткие условия в соответствии с документами ИКАО, в частности Doc 8697 в котором чёрным по белому написано что вся картография авиации исключительно в WGS84
(если РФ собирается летать по всему миру и использовать глобальные навигационные системы)

Третье, если Ваши разработки касаются гос.авиации и подчиняются внутренним законам - создавайте карту в Вашей внутренней системе координат (вроде СК-95, если не ошибаюсь) которая базируется на мировом эллипсоиде с коефициентами трансформации под каждую Вашу зону. Поймите, СК-42 динозавр который должен был быть похоронен ещё лет так 10-15 назад, но в связи с бюрократией в наших странах она ещё живёт и процветает  :D (включая в ядре)
Страницы: Пред. 1 ... 17 18 19 20 21 22 23 24 25 26 27 ... 327 След.



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

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