Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Delphi
На страницу 1, 2, 3, 4  След.
 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Пт 26 Янв 2007 21:59    Заголовок сообщения: Delphi Ответить с цитатой

Работаю в Delphi
Хочу спросить, есть ли компоненты для Делфи для написания прог в Ингео, или какие-нибудь функции
Где их можно взять, а также какая-нибудь документация?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Вт 30 Янв 2007 13:48    Заголовок сообщения: Создание точечных обектов Ответить с цитатой

Создал внешнеее приложение в Делфи
А какими методами допутим добавить точку?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



Зарегистрирован: 10.07.2005
Сообщения: 171
Откуда: ИНТЕГРО

СообщениеДобавлено: Вт 30 Янв 2007 14:26    Заголовок сообщения: Ответить с цитатой

С диаграммой объектов системы ИнГЕО можно ознакомиться в справочном файле «IngeoIntfs.chm», который находится в рабочем каталоге системы (по умолчанию: C:\Program Files\Integro\InGeo).
Если нужны какие-либо примеры реализации - спрашивайте, по мере возможности ответим...

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Вт 30 Янв 2007 16:20    Заголовок сообщения: Навигация по таблице Ответить с цитатой

Да, я ознакомился.
Как вставить, понял
Допустим, я получил значение из таблицы с нужным именем и из нужного поля.
Не совсем понятно, как переходить от записи к записи до последней
Есть ли такая возможность? Embarassed
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



Зарегистрирован: 10.07.2005
Сообщения: 171
Откуда: ИНТЕГРО

СообщениеДобавлено: Вт 30 Янв 2007 16:36    Заголовок сообщения: Ответить с цитатой

Функция GetRecCount(const aTableName: WideString): Longint - Возвращает количество записей в таблице.
GetDisplayText(const aTableName: WideString; const aFieldName: WideString; aRec: Longint): WideString - Возвращает значение поля таблицы в формате для показа пользователю
В цикле от 0 до GetRecCount(aTableName) - 1 перебираем записи.
Код:
for i := 0 to aSemData.GetRecCount(aTableName) - 1 do begin
  s := GetDisplayText(aTableName, aFieldName, i)
end;

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Ср 31 Янв 2007 09:39    Заголовок сообщения: Функции и свойства Ответить с цитатой

А к какому объекту относится ф-ия GetRecCount?
В файле помощи я ее не нашел Question
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



Зарегистрирован: 10.07.2005
Сообщения: 171
Откуда: ИНТЕГРО

СообщениеДобавлено: Ср 31 Янв 2007 10:40    Заголовок сообщения: Ответить с цитатой

Метод GetRecCount реализован в интерфейсе IIngeoSemData.
Пример:
Код:
function GetMapObjectRecCount(aMapObject: IIngeoMapObject; aTableName: String): Integer;
begin
  Result := aMapObject.SemData.GetRecCount(aTableName)
end;

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Вт 06 Фев 2007 11:44    Заголовок сообщения: продолжение Ответить с цитатой

Попробую сформулировать мысль.
Как я понимаю, чтобы получить ссылку на объект, необходимо получить его идентификатор. Получать ID выделенного объекта научился. Выделяю точку и получаю. Но как получить ID или всей таблицы или всех точек таблицы без выделения, не понятно.
Т. е получил информацию об одной выделенной точке и все
А как ор всех точках.
Свойство IDs относится к объекту IngeoSelection
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



Зарегистрирован: 10.07.2005
Сообщения: 171
Откуда: ИНТЕГРО

СообщениеДобавлено: Вт 06 Фев 2007 14:45    Заголовок сообщения: Ответить с цитатой

Получить список всех объектов заданного слоя:
IIngeoMapObjects.QueryByLayers
Получить список объектов по стилю:
IIngeoMapObjects.QueryByStyle
Получить список объектов по заданному контуру:
IIngeoMapObjects.QueryByContour
Получить список объектов по прямоугольнику:
IIngeoMapObjects.QueryByRect
Получить список объектов, удовлетворяющих условию по семантическим данным:
Допустим есть слой с высотными отметками, содержащий семантическую таблицу "Высотная отметка", в которой есть целочисленное поле "Высота". Задача - найти все объекты с высотой более 500 метров.
Пример, решающий эту задачу выглядит следующим образом:
Код:
var
  aSemTable: IIngeoSemTable;
  aRecords: IIngeoSemDbDataSet;
  anObjectId: String;
begin
  aSemTable := ActiveDb.SemTableFromId(...);
  aRecords := aSemTable.SemDbTable.SelectData('ID', 'Высота > 500', null);
  while not aRecords.EOF do begin
    anObjectId := aRecords['ID'];
    ...
    aRecords.MoveNext;
  end;
end;

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Ср 07 Фев 2007 11:29    Заголовок сообщения: Ответить с цитатой

в строке
anObjectId := aRecords['ID'];
дает ошибку
Выделяет внутри скобок 'ID'
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



Зарегистрирован: 10.07.2005
Сообщения: 171
Откуда: ИНТЕГРО

СообщениеДобавлено: Ср 07 Фев 2007 12:25    Заголовок сообщения: Ответить с цитатой

Попробуйте так:
anObjectId := aRecords[0].Value;

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Ср 07 Фев 2007 17:09    Заголовок сообщения: Ответить с цитатой

Не пропускает
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



Зарегистрирован: 10.07.2005
Сообщения: 171
Откуда: ИНТЕГРО

СообщениеДобавлено: Чт 15 Фев 2007 14:49    Заголовок сообщения: Ответить с цитатой

Ниже представлен рабочий пример реализации, заполняющий Memo идентификаторами объектов, у которых в таблице (aSemTableID) значение поля "Высота" больше 500:
Код:
procedure Test(aSemTableID: String);
var
  aSemTable: IIngeoSemTable;
  aRecords: IIngeoSemDbDataSet;
  anObjectId: String;
begin
  aSemTable := FIngeo.ActiveDb.SemTableFromID(aSemTableID);
  aRecords := aSemTable.SemDbTable.SelectData('ID', 'Высота>500', null);
  while not aRecords.EOF do begin
    anObjectId := aRecords.Fields['ID'].Value;
    Memo.Lines.Add(anObjectId);
    aRecords.MoveNext;
  end;
end;

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Ср 21 Фев 2007 14:00    Заголовок сообщения: Ответить с цитатой

Пытаюсь создать внешнее приложение.
Работаю в Дельфи 2006
Подключаю к проекту файлы М2AddOn и так далее. Потом AUtils и тд.
В файле AUtils не идентифицируются некоторые переменные.
Может быть из-за версии Делфи?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



Зарегистрирован: 10.07.2005
Сообщения: 171
Откуда: ИНТЕГРО

СообщениеДобавлено: Ср 21 Фев 2007 14:04    Заголовок сообщения: Ответить с цитатой

Поподробнее, пожалуйста.. Что значит "не идентифицируются"? И какие именно "некоторые переменные"?
_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Ср 21 Фев 2007 14:34    Заголовок сообщения: Ответить с цитатой

[Pascal Warning] AUtils.pas(404): W1000 Symbol 'AppendStr' is deprecated
[Pascal Warning] AUtils.pas(408): W1000 Symbol 'AppendStr' is deprecated
[Pascal Warning] AUtils.pas(409): W1000 Symbol 'AppendStr' is deprecated
[Pascal Error] AUtils.pas(998): E2003 Undeclared identifier: 'Unassigned'
[Pascal Error] AUtils.pas(1000): E2003 Undeclared identifier: 'Null'
[Pascal Error] AUtils.pas(1028): E2003 Undeclared identifier: 'VarArrayCreate'
[Pascal Error] AUtils.pas(1094): E2003 Undeclared identifier: 'VarType'
[Pascal Error] AUtils.pas(1137): E2003 Undeclared identifier: 'VarIsArray'
[Pascal Error] AUtils.pas(1141): E2003 Undeclared identifier: 'VarArrayDimCount'
[Pascal Error] AUtils.pas(1145): E2003 Undeclared identifier: 'VarArrayLowBound'
[Pascal Error] AUtils.pas(1146): E2003 Undeclared identifier: 'VarArrayHighBound'
[Pascal Warning] AUtils.pas(1209): W1002 Symbol 'Win32Check' is specific to a platform
[Pascal Warning] AUtils.pas(1219): W1002 Symbol 'Win32Check' is specific to a platform
[Pascal Warning] AUtils.pas(1228): W1002 Symbol 'Win32Check' is specific to a platform
[Pascal Fatal Error] AClasses.pas(636): F2063 Could not compile used unit 'AUtils'
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



Зарегистрирован: 10.07.2005
Сообщения: 171
Откуда: ИНТЕГРО

СообщениеДобавлено: Ср 21 Фев 2007 14:46    Заголовок сообщения: Ответить с цитатой

Добавьте в Uses-ах Variants;
Код:
uses Variants;

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Ср 21 Фев 2007 15:05    Заголовок сообщения: Ответить с цитатой

Спасибо, в данном случае помогло
Теперь в файле M2AddonnImp не найден файл DLLForm
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



Зарегистрирован: 10.07.2005
Сообщения: 171
Откуда: ИНТЕГРО

СообщениеДобавлено: Ср 21 Фев 2007 15:32    Заголовок сообщения: Ответить с цитатой

Для каких целей Вы хотите использовать AddonLib?
Не лучше ли использовать COM модель ИнГео?!
Примеры реализации модулей смотрите здесь

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Пн 26 Фев 2007 10:17    Заголовок сообщения: Возвращаясь к коду Ответить с цитатой

Хотел бы вернуться к Вашему примеру выборки Высоты больше 500.
Там вводится aSemTableID -это идентификатор глобальный или локальный?
Что-то прога ответила мне, что не нашла таблицу с таким ID
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



Зарегистрирован: 10.07.2005
Сообщения: 171
Откуда: ИНТЕГРО

СообщениеДобавлено: Пн 26 Фев 2007 10:46    Заголовок сообщения: Ответить с цитатой

Цитата:
Там вводится aSemTableID -это идентификатор глобальный или локальный?

aSemTableID - это локальный идентификатор.
Цитата:
Что-то прога ответила мне, что не нашла таблицу с таким ID

Скорее всего так оно и есть. Вы уверены, что передаете идентификатор таблицы?

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Пн 26 Фев 2007 11:46    Заголовок сообщения: Ответить с цитатой

Получилось
Строка anObjectId := aRecords.Fields['ID'].Value;
выглядит у меня anObjectId := aRecords.Fields['ID'].Fields.Item[0].Value;
Еще есть такой вопррос
Как программно добраться до координат точек перегиба полилинии?
IIngeoMapObject имеет координаты левой и правой границы.
А как найти координаты составляющих полилинию?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



Зарегистрирован: 10.07.2005
Сообщения: 171
Откуда: ИНТЕГРО

СообщениеДобавлено: Пн 26 Фев 2007 14:18    Заголовок сообщения: Ответить с цитатой

Пространственный объект карты состоит из набора фигур (Shapes). Каждая фигура в свою очередь имеет контур (Contour) и ссылается на один из стилей (Style), определенный в слое. Контур состоит из частей. Каждая часть контура определяется набором вершин и признаком замкнутости. В зависимости от количества вершин и признака замкнутости часть может относиться к одной из категорий:
А) одна вершина (признак замкнутости не учитывается) - точечная часть контура.
Б) более одной вершины, не замкнута - часть является ломаной линией.
В) более одной вершины, замкнута - часть является площадным многоугольником.
Для программного анализа контурной структуры объекта можно воспользоваться приведенным ниже примером:
Код:
procedure MapObjectInfo;
var
   i,j,k: Integer;
   aMapObjects: IIngeoMapObjects;
   aMapObject: IIngeoMapObject;
   aShape: IIngeoShape;
   aPart: IIngeoContourPart;
   aX, aY, aC: Double;
begin
   aMapObjects := FIngeo.ActiveDb.MapObjects;
   aMapObject := aMapObjects.GetObject('000100000408');
   for i := 0 to aMapObject.Shapes.Count - 1 do begin
      aShape := aMapObject.Shapes[i];
      // Информация о стиле отрисовки фигуры
      Memo.Lines.Add(Format('ShapeStyleName: %s',[aShape.Style.Name]));
      // Если фигура не определяет геометрию пространственного объекта,
      // то ее пропускаем
      if not aShape.DefineGeometry then
         Continue;
      for j := 0 to aShape.Contour.Count - 1 do begin
         aPart := aShape.Contour[j];
         // Общая информация о части контура
         Memo.Lines.Add(Format('  Part %d',[j]));
         if aPart.Closed then
            Memo.Lines.Add('  Эта часть контура замкнута.')
         else
            Memo.Lines.Add('  Эта часть контура разомкнута.');
         Memo.Lines.Add(Format('  Площадь: %g мм.', [aPart.Square]));
         Memo.Lines.Add(Format('  Периметр: %g мм.', [aPart.Perimeter]));
         for k := 0 to aPart.VertexCount - 1 do begin
            aPart.GetVertex(k, aX, aY, aC);
            // Информация о вершинах
            Memo.Lines.Add(Format('    Vertex %d: x = %g, y = %g, convexity = %g', [k, aX, aY, aC]))
         end;
      end;
   end;
end;

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



Зарегистрирован: 26.01.2007
Сообщения: 70
Откуда: Vladivostok-Kurgan

СообщениеДобавлено: Вт 27 Фев 2007 14:28    Заголовок сообщения: Ответить с цитатой

Спасибо
Все получилось.
Еще вопрос
Как записать данные в таблицу?
Попробовал метод SetValue.
Не получилось. Может быть потому, что в каждой таблице для каждой записи есть свой ID. А как я узнаю, какой ID присвоить новой записи?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



Зарегистрирован: 10.07.2005
Сообщения: 171
Откуда: ИНТЕГРО

СообщениеДобавлено: Вт 27 Фев 2007 15:31    Заголовок сообщения: Ответить с цитатой

Скорее всего Вы не завершили транзакцию (aMapObjects.UpdateChanges). ID не надо присваивать.
Пример обновления семантических данных пространственного объекта:
Код:
procedure UpdateMapObjectTable(aMapObjectId: String;
   aTableName: String; aFieldName: String; aValue: Variant);
var
   aMapObjects: IIngeoMapObjects;
   aMapObject: IIngeoMapObject;
begin
   aMapObjects := FIngeo.ActiveDb.MapObjects;
   aMapObject := aMapObjects.GetObject(aMapObjectId);
   aMapObject.SemData.SetValue(aTableName, aFieldName, aValue, 0);
   aMapObjects.UpdateChanges;
end;

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
На страницу 1, 2, 3, 4  След.
Страница 1 из 4

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB