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

Обсуждение

 Delphi 6 + ObjectLand - трудности с разработкойDelphi 6 + ObjectLand - трудности с разработкой [ Alex Darkman ]
Среда, 7 ноября 2007, 15:26

Понимаю, что название темы слишком общее. Однако меня угораздило "вляпаться" в разработку проекта, связанного с ObjectLand'ом :) И чувствую, вопросов будет много.

Вопрос на данный момент такой. Использую Borland Delphi 6 и бесплатную версию ObjectLand 2.6.7. Очень нужно через COM-интерфейсы получить координаты точек всех геометрий, которые есть на карте. В справке откопал метод Feature::GetVertex и Feature::GetVertexes. GetVertex, по-хорошему, должен возвращать координаты через переданные параметры x и y. Однако, как я ни бился - возвращаются нули. Переменные x и y - типа Extended. C методом GetVertexes та же ботва - он возвращает массив нулей. Что делать?

P. S. Если нужен фрагмент моей программы, который вызывает эти методы - могу выложить.

 Delphi 6 + ObjectLand - трудности с разработкой [ Objectland Support ]
Четверг, 8 ноября 2007, 14:06

Вот работающий пример написанный на Дельфи 7:

var
objEngine: IGDBEngine;
objGDB: IGDBGeoDatabase;
objMap: IGDBMap;
objFeatureset: IGDBFeatureset;
objFeature: IGDBFeature;
strGDBPath: String;
arrVertexes: array of real;
outX, outY: OleVariant;
begin

// Создание ядра ObjectLand.
objEngine := CoGDBEngine.Create;

// Открытие ГБД с атрибутами "Монопольно", "Чтение/Запись", "Без файла изменений".
strGDBPath := 'C:\Documents and Settings\All Users\Application Data\ObjectLand\DEMO\City';
objGDB := objEngine.OpenGDB(strGDBPath,gdbOpenExclusive or gdbOpenReadWrite or gdbOpenNoChgFile,'','','');

// Получение карты
objMap := objGDB.Maps.Item ('Город Энск');

// Получение набора геометрий на основе слоя 'Земли'
objFeatureset := objMap.Layers.Item('Земли').OpenFeatureset(False);

// Получение текущей геометрии из набора
objFeature := objFeatureset.Feature;

// Получение одномерного массива координат геометрии
arrVertexes := objFeature.GetVertexes(1);

// Получение координат конкретной вершины
objFeature.GetVertex(1,1, outX, outY);

// Закрытие набора геометрий.
objFeatureset.Close;


// Закрытие ГБД.
objEngine.Close;

// Освобождение ядра ObjectLand.
objEngine := nil;

end;


 Delphi 6 + ObjectLand - трудности с разработкой [ Alex Darkman ]
Пятница, 9 ноября 2007, 13:52

Спасибо огромное. Проверил код - в Delphi 6 тоже работает. Похоже, что я неправильно пользовался объектной моделью - я объект GDBEngine создавал через процедуру CreateOLEObject, и работал с этим OLE-объектом, а нужно было импортировать библиотеку типов gdbengine.tlb.

 Delphi 6 + ObjectLand - трудности с разработкой [ ObjectLand Support ]
Пятница, 9 ноября 2007, 14:08

Советуем также использовать подготовленные нами демонстрационные примеры по использованию COM-интерфейсов ObjectLand и большое демонстрационное приложение, написанное с использованием COM.
См.стр. "O продукте + Для разработчика".

 Delphi 6 + ObjectLand - трудности с разработкой [ Зануда ]
Пятница, 30 ноября 2007, 19:47

Интересно, почему метод называется GetVertexes, а не GetVertices?

 Delphi 6 + ObjectLand - трудности с разработкой [ ObjectLand Support ]
Суббота, 1 декабря 2007, 18:53

Допустимы обе формы множественного числа слова "vertex". Как и для множественного числа слова "index"(indexes и indices). Мы выбрали более ясную форму для тех, кто не является носителем языка.

Ответить

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



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