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

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

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

Страницы: Пред. 1 ... 239 240 241 242 243 244 245 246 247 248 249 ... 280 След.
не работает TMapCross
 
Попятаемся разобраться.
Получение выбранных объектов
 
функция get_ViewSelect возвращает не интерфейс, а некий handle параметров поиска, для того чтобы им можно было воспользоваться
при вызови ГИС-апи функций напрямую, не используя инфтрефейсы и com объекты.
Для поиска есть компонент MapFind, у которого есть свойтсво MapSelect, отвечающее за параметры поиска.
Пример поиска и выделения есть на C#, VB (\MapFind - входит в исталляцию).
[ Закрыто] Колличество объектов в TXF файле, Непонятности с подсчетом объектов
 
Чтобы разораться нужен ваш файл txf. Пришлите на panorama@flexuser.ru. В какой версии Панорама рабоатете?
Ошибки при загрузке TXF, Ошибки при загрузке некорректного файла TXF с использованием mapapi
 
По части сообщений посмотрим, а код возврата 0 означает ошибку.
Получение семантики объекта
 
Попытался повторить вашу ситуацию. Не получилось. Все работает.  Может что-то с картой. Если есть возможность, то пришлите на panorama@flexuser.ru. А чему равно значение семантики (каков должен быть результат)?
Преобразование координат из WGS-84 в СК-42, Преобразование координат из WGS-84 в СК-42
 
Есть группа функций по преобразованию координат (описание в mapapi.h или mapapi.inc)
// Преобразование из метров на местности (проекция карты)
// в геодезические координаты в радианах (общеземной эллипсоид WGS84)
// (поддерживается не для всех карт !)
// Наличие высоты повышает точность расчетов;
// функция mapPlaneToGeoWGS84() пытается
// определить высоту из матрицы
// Применение :
// if (mapIsGeoSupported())
//   {
//     B = Xmet; L = Ymet;
//     mapPlaneToGeoWGS84(hMap;B;L);
//   }
// hmap  - идентификатор открытых данных
// Bx;Ly - преобразуемые координаты
// на входе метры; на выходе - радианы
// H     - высота в точке (метры)
// При ошибке возвращает 0

function mapPlaneToGeoWGS84(Map:HMap; var Bx, Ly : double) : integer;

function mapGeoWGS84ToPlane42(Map:HMap; var Bx, Ly : double) : integer;
Перечисление всех объектов sxf, получение их координат, запись в новый sxf
 
На форуме неоднократно обсуждалась эта тема.
Рекомендую такой алгоритм с использованием GIS ToolKit:
1. загрузка sxf во внутренний формат (TMapConvert), пример в Convert
2. перебор всех объектов (TMapFind), преобразование координат (TMapPoint или АПИ)
3. выгрузка в sxf
Как установить ViewSelect по рамке?
 
Такая возможность есть.
Необходимо заполнить MapObj нужной метрикой (не обязательно прямоугольник)
Затем
 MapView.Selecting := false;
 MapView.ViewSelect.SelectSeekArea(-1, MapObj,0, 1, 2, 1, 1); // последняя 1 говорит о том, что результаты поиска будут использоваться при отображении

 MapView.Selecting := true;
Как обратиться к слоям дополнительной карты?!, Проблема доступа к слоям дополнительной карты
 
К моему сожалению большому, но так сложилось исторически, что в АПИ доступа к карте нумерация слоев идет с 0 и до Count-1, в GIS ToolKit
в классе TMApLayers с 1 и до Count, а в MapSites.SiteLayerName как в АПИ.
Поэтому в следующем выпуске GIS ToolKit MapSites.SiteLayerName уберем вообще, а вместо нее вы можете пользоваться
MapSites.MapLayers[i].LayerName.
Таким образом ваш текст как для основной карты так и для всех открытых вместе с ней должен выглядеть так

   // для ускорения работы с большими классификаторами рекомендую сразу определить номер карты по имени файла, а не выполнять поиск каждый раз
   siten := MapView.MapSites.FileNameSites[Node.Text].Number;

   // для основной карты siten = 0

   for i:=1 to MapView.MapSites[siten].SiteLayers.LayerCount do
   begin
     NodeParent:=TV_ListObj.Items.Add(nil,MapView.MapSites[siten].SiteLayers[i].LayerName);
     for j:=1 to MapView.MapSites[siten].SiteLayers[i].ObjCount do
     begin
       NodeNow:=TV_ListObj.Items.AddChild(NodeParent,MapView.MapSites[siten].SiteLayers[i].ObjName[j]);
     end;
   end;
Копирование объектов на другую пользовательскую карту, Копирование объектов на другую пользовательскую карту (если карты расположены в сети)
 
При копировании объектов карты на вторую карту в процессе поиска по первой нужно учитывать тот факт, что поиск следующего объекта ведется относительно текущего.
Т.е. прежде чем копировать найденный объект на другую карту, надо сделать его копию, а ее уже переность на другую карту.

Mapfind.First
начало цикла по найденным
MapObj1.ObjHandle := MapFind.MapObj.ObjHandle (копируем найденный) MapFind.MapObj не должно равняться MapObj1
MapObj1.SetSite := переносим на другую карту
MapObj1.Commit
MapFind.Next
конец цикла

Для того чтобы MapFind искал только отображаемые объекты - MapFind.MapSelect.GetViewSelect
Страницы: Пред. 1 ... 239 240 241 242 243 244 245 246 247 248 249 ... 280 След.



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

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