| Ошибка 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);
но выскакивает эта ошибка. Помогите от неё избавится. |
|
| [ ObjectLand Support ]Четверг, 14 июня 2007, 11:23
Эта ошибка не имеет прямого отношения к выполняемой операции изменения размеров. Созданная Вами карта вполне корректна - базовая точка (0.0, 0.0), диапазон = 1.0, разбиение примет умалчиваемое значение = 1, глубина примет умалчиваемое значение = 1.
Но, операция изменения параметров требует, чтобы в момент выполнения не было активных слоев данной карты, т.к. изменение параметров приводит к изменению пространственного индекса для карты.
Скорее всего, Вы не закрыли FeatureSet методом Close и с точки зрения ObjectLand существует активный слой, содержащий объекты этого набора. |
|
| [ Олейник Олег ]Четверг, 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 |
|
| [ [ ObjectLand Support ] ]Четверг, 14 июня 2007, 17:55
Эта ошибка исправлена и в следующей версии ОЛ ваш код будет работать без ошибки. Сейчас Вы можете попробовать переоткрыть ГБД, перед тем как изменять параметры карты. Если по какой-либо причине Вас такой вариант не устраивает, то мы можем выслать Вам исправления на имейл. |
|
| [ Олейник Олег ]Пятница, 15 июня 2007, 09:13
Вариант с переоткрытием ГБД меня не устраивает по причине усложнения логики и увеличения времени работы программы, т.к. количество карт/слоев которые необходимо создавать заранее неизвестно и оно может быть довольно большим.
Вариант с обновлением версии, к сожалению, меня тоже не устраивает, т.к. программой будет пользоваться сторонняя организация, а они привязаны к той версии, которая используется вместе с ПК ЕГРЗ :( |
|
| [ ObjectLand Support ]Пятница, 15 июня 2007, 13:35
Исправления - это один файл, который нужно заменить в папке %ObjectLand%\BIN. Вы можете выполнить копирование этого файла при установке Вашей программы. Другого варианта нет. |
|
ОтветитьЗнаком «*» отмечены обязательные для заполнения поля. |