Официальный сайт геоинформационной системы (ГИС) ObjectLandОфициальный сайт геоинформационной системы (ГИС) ObjectLand
  
 
ПОИСК ПО САЙТУ:
yandex.ru
КАРТА САЙТА
 
главная / поддержка / форум
E-MAIL:ПАРОЛЬ: 
регистрация

Обсуждение

 Ошибка 2020 Активный слой картыОшибка 2020 Активный слой карты [ Олейник Олег ]
Четверг, 14 июня 2007, 11:01

Через COM интерфейс создается карта OL. К сожалению заранее пределы карты неизвестны. Поэтому сначала создаю карту след. образом
GDBMap := GDB.CreateMap(MapName, 0, 0, 1, 0, 0, gdbCoordLocal);
а затем после испорта хочу поменять пределы
GDBMap.ChangeParameters(R.A.X,R.A.Y,Max(R.B.X-R.A.X,R.B.Y-R.A.Y),0,0);
но выскакивает эта ошибка. Помогите от неё избавится.

 Ошибка 2020 Активный слой карты [ ObjectLand Support ]
Четверг, 14 июня 2007, 11:23

Эта ошибка не имеет прямого отношения к выполняемой операции изменения размеров. Созданная Вами карта вполне корректна - базовая точка (0.0, 0.0), диапазон = 1.0, разбиение примет умалчиваемое значение = 1, глубина примет умалчиваемое значение = 1.

Но, операция изменения параметров требует, чтобы в момент выполнения не было активных слоев данной карты, т.к. изменение параметров приводит к изменению пространственного индекса для карты.
Скорее всего, Вы не закрыли FeatureSet методом Close и с точки зрения ObjectLand существует активный слой, содержащий объекты этого набора.

 Ошибка 2020 Активный слой карты [ Олейник Олег ]
Четверг, 14 июня 2007, 12:29

У меня вместо закрытия было GDBFeatureSet := nil, но вызов GDBFeatureSet.Close ничего не изменил. Вот тестовый пример:

const gdbCoordLocal = 1
const gdbSpatialCategoryLine = 2
const strGDBPath = "test"

set objGDBEngine = CreateObject("GDBEngine.Application")

' Создать БД ObjectLand
set objGDB = objGDBEngine.CreateGDB(strGDBPath, Nothing)

' Создать карту
set objGDBMap = objGDB.CreateMap("Тестовая карта", 0, 0, 1, 0, 0, gdbCoordLocal)
objGDB.Maps.Append objGDBMap

' Создать слой
set objGDBLayer = objGDBMap.CreateLayer("Тестовый слой", 0, 0)
objGDBMap.Layers.Append objGDBLayer

' Открыть FeatureSet
set objGDBFeatureSet = objGDBLayer.OpenFeatureset

' Закрыть FeatureSet
objGDBFeatureSet.Close

set objFeatureSet = Nothing
set objGDBLayer = Nothing

' Изменить пределы карты
objGDBMap.ChangeParameters 0, 0, 100, 0, 0

objGDBEngine.Close

 Ошибка 2020 Активный слой карты [ [ ObjectLand Support ] ]
Четверг, 14 июня 2007, 17:55

Эта ошибка исправлена и в следующей версии ОЛ ваш код будет работать без ошибки. Сейчас Вы можете попробовать переоткрыть ГБД, перед тем как изменять параметры карты. Если по какой-либо причине Вас такой вариант не устраивает, то мы можем выслать Вам исправления на имейл.

 Ошибка 2020 Активный слой карты [ Олейник Олег ]
Пятница, 15 июня 2007, 09:13

Вариант с переоткрытием ГБД меня не устраивает по причине усложнения логики и увеличения времени работы программы, т.к. количество карт/слоев которые необходимо создавать заранее неизвестно и оно может быть довольно большим.
Вариант с обновлением версии, к сожалению, меня тоже не устраивает, т.к. программой будет пользоваться сторонняя организация, а они привязаны к той версии, которая используется вместе с ПК ЕГРЗ :(

 Ошибка 2020 Активный слой карты [ ObjectLand Support ]
Пятница, 15 июня 2007, 13:35

Исправления - это один файл, который нужно заменить в папке %ObjectLand%\BIN. Вы можете выполнить копирование этого файла при установке Вашей программы. Другого варианта нет.

Ответить

Знаком «*» отмечены обязательные для заполнения поля.
Ваше имя:  *
Адрес электронной почты:  
Тема:  *
Сообщение:
 *
Подтверждение:
(не требуется для зарегистрированных пользователей)
 *
 



Copyright © 1999–2025 ГИС ObjectLand
ГИС ObjectLand ® ООО «Радом-АйТи»
Информация о лицензировании
главная | о продукте | скачать | купить | поддержка | новости