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

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



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

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

Выдает "Не найден идентификатор объекта"
Не понятно почему?
Только что писал на отбор информации из таблицы, никаких претензий к идентификатору не было
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



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

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

Проверьте целостность базы (Сервис > Проверка целостности БД...).
Запостите на форуме проблемный код - возможно, мы найдем ошибку.

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



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

СообщениеДобавлено: Чт 01 Мар 2007 10:09    Заголовок сообщения: Ответить с цитатой

Проверил целостность базы, не помогло.
Код
Код:
procedure TfExample.btnGetIDClick(Sender: TObject);
var    theObjID, TableName, FieldName: WideString; obj:IIngeoMapObject;
 dx,dy,d,u,kr,s,x_dop,y_dop,int:Double;
  x:Array[0..1000] of double; y:Array[0..1000] of double;
   aShape: IIngeoShape;
   aPart: IIngeoContourPart;
   i,j,k,n:Integer;
//   Dat: IIngeoSemData;
   aMapObjects: IIngeoMapObjects;
   aMapObject: IIngeoMapObject;
aMapObjectId: String;
   aTableName: String; //aFieldName: String;
begin
int:=StrToFloat(Edit1.Text);
s:=0;
n:=1;
   if FInGEOApp.Selection.Count = 1 then
  begin
     theObjID := FInGEOApp.Selection.IDs[0];
     obj:=FInGeoApp.ActiveDb.MapObjects.GetObject(theObjID);
     for i := 0 to obj.Shapes.Count - 1 do
      begin
      aShape := GetShape(obj, i);
      // Если фигура не определяет геометрию пространственного объекта,
      // то ее пропускаем
      if not aShape.DefineGeometry then
         Continue;
            for j := 0 to aShape.Contour.Count - 1 do
            begin
            aPart := GetPart(aShape, j);
             for k := 0 to aPart.VertexCount - 1 do
              begin
              aPart.GetVertex(k,x[k],y[k],kr);
              ListBox1.Items.Add(intToStr(k)+' '+FloatToStrf(x[k],ffFixed,12,2)+' '+FloatToStrf(y[k],fffixed,12,2)+FloatTostr(kr));
              if k=0 then
                begin
                 x_dop:=x[k];
                 y_dop:=y[k];
                end;
              if k<>0 then
                begin
                dx:=x[k]-x[k-1];
                dy:=y[k]-y[k-1];
                d:=sqrt(sqr(dx)+sqr(dy));
                u:=RadToDeg(ArcSin(dx/d));
                if (dx<0) and (dy>0) then u:=180-u;
                if (dx<0) and (dy<0) then u:=180+u;
                if (dx>0) and (dy<0) then u:=270+u;
                ListBox1.Items.Add('line '+FloatToStr(d)+' ugol '+FloatToStr(u)+' s '+FloatToStr(s));
                s:=s+d;
                if s>int then
                  begin
                  x_dop:=x_dop-(int*sin(DegToRad(u)));
                  y_dop:=y_dop-(int*cos(DegToRad(u)));
                  s:=sqrt(sqr(x[k]-x_dop)+sqr(y[k]-y_dop));
                  ListBox1.Items.Add('Dop '+FloatToStrf(x_dop,ffFixed,12,2)+' '+FloatToStrf(y_dop,ffFixed,12,2));
                  aMapObjectId:=Edit2.Text;
                  aTableName:= Edit3.Text;
                  aMapObjects := FInGEOApp.ActiveDb.MapObjects;
                  aMapObject := aMapObjects.GetObject(aMapObjectId);
                  aMapObject.SemData.SetValue(aTableName,'X',x_dop,0);
                  aMapObject.SemData.SetValue(aTableName,'Y',y_dop,0);
                  aMapObjects.UpdateChanges;
                  end;
                end;
              end;
            end;
      end;
//     ShowMessage('Идентификатор выделенного объекта - ' + theObjID);
  end
  else
    ShowMessage('Выберите один объект.');
end;

---
Исправлено RuslanG (Обрамление кода в теги [Code])
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



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

СообщениеДобавлено: Чт 01 Мар 2007 11:50    Заголовок сообщения: Ответить с цитатой

Процедуру проверил - все работает без ошибок.
Вы берете идентификатор объекта из поля Edit2
Код:
aMapObjectId := Edit2.Text;
Может быть такое, что Вы вводите неправильный или некорректный идентификатор?
_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



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

СообщениеДобавлено: Чт 01 Мар 2007 14:16    Заголовок сообщения: Ответить с цитатой

Код:
procedure TfExample.Button1Click(Sender: TObject);
var   aSemTable: IIngeoSemTable;
  aRecords: IIngeoSemDbDataSet;
  anObjectId,id2,id3: String;
  TableName:WideString;
begin
  TableName:=Edit3.Text;
  aSemTable := FInGEOApp.ActiveDb.SemTableFromId(Edit2.Text);
  aRecords := aSemTable.SemDbTable.SelectData('*', '', null);
  while not aRecords.EOF do begin
    anObjectId := aRecords.Fields.Item[1].Value;
    id2:= aRecords.Fields.Item[2].Value;
    id3:= aRecords.Fields.Item[3].Value;
    ListBox1.Items.Add(anObjectId+' '+id2+' '+id3);
    aRecords.MoveNext;
  end;
end;

Код, который считывает данные из таблицы и записывает в ListBox работает без замечаний.
Так же ID берется из текстового поля
---
Исправлено RuslanG (Обрамление кода в теги [Code])
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



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

СообщениеДобавлено: Чт 01 Мар 2007 14:32    Заголовок сообщения: Ответить с цитатой

Код:
aSemTable := FInGEOApp.ActiveDb.SemTableFromId(Edit2.Text);
Получается, что в Edit2.Text хранится идентификатор семантической таблицы.
В процедуре btnGetIDClick Вы пытаетесь переменной aMapObjectId присвоить идентификатор семантической таблицы, когда надо присваивать идентификатор пространственного объекта.
В процедуре btnGetIDClick измените строку
Код:
aMapObjectId:=Edit2.Text;
на
Код:
aMapObjectId:=theObjID;

P.S.
Пожалуйста, обрамляйте программный код на форуме в теги [code], чтобы удобнее было читать и переносить в Delphi, а также при этом сохраняется табуляция и множественные пробелы.

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



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

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

Хорошо
А как мне получить идентификатор пространственного обьъекта семантической таблитцы. Ведь в моем случае пространственный объект есть линия, а записать данные я хочу в таблицу другого объекта
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



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

СообщениеДобавлено: Чт 01 Мар 2007 17:34    Заголовок сообщения: Ответить с цитатой

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



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

СообщениеДобавлено: Пт 02 Мар 2007 08:48    Заголовок сообщения: Ответить с цитатой

Вроде решил проблему созданем нужной таблицы в слое объекта, который у меня выделяется вручную.
Но записалась в таблицу только последняя запись.
Попробовал
Код:
aMapObject.SemData.AddRec(aTableName)

Тоже самое
Еще один вопрос
Я так понимаю можно добавить точки к объекту
Код:
SetVertex

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



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

СообщениеДобавлено: Пт 02 Мар 2007 10:20    Заголовок сообщения: Ответить с цитатой

Посмотрите, пожалуйста, файл "IngeoIntfs.chm". В нем описана объектная модель ИнГео и содержится полный справочник по программному интерфейсу ИнГео.
Цитата:
А как мне получить идентификатор пространственного объекта семантической таблитцы.
У семантической таблицы нет идентификатора пространственного объекта. Чтобы перенести информацию в таблицу другого объекта, необходимо иметь идентификатор объекта или сам объект. И у него, через метод SemData, работать с семантическими данными пространственного объекта.
Цитата:
Но что такое индекс вершины.
SetVertex - Устанавливает параметры вершины (команды) контура. Индекс вершины - номер вершины по порядку, начиная с 0.
Цитата:
Я так понимаю можно добавить точки к объекту
Интерфейс IIngeoContourPart содержит метод InsertVertex, который добавляет вершину (команду) в часть контура.
Параметры метода:
anIndex - Индекс вершины, перед которой будет вставлена новая вершина. Если значение данного параметра равно "-1", то вершина добавляется в конец части контура.
aX - X координата вершины.
aY - Y координата вершины.
aConvexity - Кривизна ребра, проведенного из предыдущей вершины в добавляемую. Если часть контура замнута, то кривизна первой вершины применяется для замыкающего ребра.
Цитата:
Но записалась в таблицу только последняя запись.
Приведите более полный код.
_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



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

СообщениеДобавлено: Пт 02 Мар 2007 15:58    Заголовок сообщения: Ответить с цитатой

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



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

СообщениеДобавлено: Пт 02 Мар 2007 16:02    Заголовок сообщения: Ответить с цитатой

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



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

СообщениеДобавлено: Пт 02 Мар 2007 16:53    Заголовок сообщения: Ответить с цитатой

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



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

СообщениеДобавлено: Пн 05 Мар 2007 20:20    Заголовок сообщения: Примеры Ответить с цитатой

Примеры, расположенные по http://integro.ru/dl/ingeo/examples
все компилируются с ошибкой
Код:
[Error] IngeoCreatorPanel_TLB.pas(30): Invalid compiler directive: 'WARN'
[Error] IngeoCreatorPanel_TLB.pas(32): Invalid compiler directive: 'VARPROPSETTER'
[Error] Ingeo_TLB.pas(30): Invalid compiler directive: 'WARN'
[Error] Ingeo_TLB.pas(32): Invalid compiler directive: 'VARPROPSETTER'
[Error] InScripting_TLB.pas(29): Invalid compiler directive: 'WARN'
[Error] InScripting_TLB.pas(31): Invalid compiler directive: 'VARPROPSETTER'
[Fatal Error] InScripting_TLB.pas(34): File not found: 'Variants.dcu'
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



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

СообщениеДобавлено: Вт 13 Мар 2007 17:19    Заголовок сообщения: Ответить с цитатой

Примеры, приведенные на нашем сервере, предназначены для компиляции в среде Delphi 7. В данный момент ведутся работы по адаптации примеров для Delphi 2006. Адаптированная версия примеров будет доступна с 23 марта 2007г.
_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия


Последний раз редактировалось: RuslanG (Пн 19 Мар 2007 16:33), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
andreichernov



Зарегистрирован: 14.02.2005
Сообщения: 209
Откуда: Самара

СообщениеДобавлено: Вт 13 Мар 2007 19:23    Заголовок сообщения: Ответить с цитатой

Уважаемый gstof!
С интересом прочитал вашу переписку с работниками отдела технической поддержки фирмы "Интегро".
Просите, что ввязываюсь не в свое дело, ибо я не работаю в Интегро,
но мне кажется, Вам не хватает общих знаний в области геоинформационных систем, баз данных и программирования на языках высокого уровня, а также самостоятельности в изучении нового для Вас материала и внимательности при изучении документации.
Понимая Ваше стремление как можно быстрее решить поставленную задачу, советую пройти курсы программирования в ГИС "Ингео" в ЦСИ "Интегро" или воспользоваться готовыми решениями. По
крайней мере для описываемых Вами задач - построение буферных зон с разными расстояниями до оси линейного объекта или расстановка точек (пикетов) и деление на отрезки в зависимости от расстояния, у нас в Самаре решения есть.
С уважением, Андрей Чернов.
зам директора ОАО "Самара-Информспутник".
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RuslanG



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

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

Модули, адаптированные для Delphi 2006, а также библиотека AddonLib, необходимая для компиляции модулей:
http://www.integro.ru/dl/ingeo/examples/BDS2006/index.htm

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



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

СообщениеДобавлено: Вт 03 Апр 2007 08:40    Заголовок сообщения: Ответить с цитатой

При компиляции Addolib.dpk в Delphi2006 возникает ошибка
Код:
[Pascal Fatal Error] AddonLib.dpk(30): E2202 Required package 'InComponents' not found
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



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

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

Спасибо!
Исправленная версия библиотеки AddonLib.

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



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

СообщениеДобавлено: Чт 05 Апр 2007 23:31    Заголовок сообщения: Ответить с цитатой

gstof писал(а):
Допустим есть ось дороги
Пользователь ее выделяет
Далее нужно описать расчет разбиения точек через заданное расстояние и новые точки добавить в выделенную линию дороги или в отдельный слой, где создана таблица.
Еще от этих точек нужно расчитать точки отвода в обе стороны перпендикулярно направлению оси, допустим по заданным расстояниям в текстовом файле.
Эти точки тоже нанести, для отрисования отвода.

Возможно, Вам пригодятся исходники модуля "Распределение точечных объектов вдоль линии" [42,5Кб]. Документации к модулю нет. Вопросы будут - стучите в ICQ [214171365].

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



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

СообщениеДобавлено: Сб 07 Апр 2007 10:38    Заголовок сообщения: Ответить с цитатой

В библиотеке AddonLib отсутствует файл TypInf.pas и InSysUtils.pas открывается какими-то шестнадцатиричными символами.
Код:
Возможно, Вам пригодятся исходники модуля "Распределение точечных объектов вдоль линии" [42,5Кб]. Документации к модулю нет. Вопросы будут - стучите в ICQ [214171365].
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



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

СообщениеДобавлено: Вс 08 Апр 2007 04:52    Заголовок сообщения: Ответить с цитатой

Файл TypInfo.pas можно найти по следующему пути:
c:\Program Files\Borland\BDS\4.0\source\Win32\rtl\common
Цитата:
InSysUtils.pas открывается какими-то шестнадцатиричными символами
Скорее всего Вы открывали файл InSysUtils.dcu
_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gstof



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

СообщениеДобавлено: Ср 11 Апр 2007 17:35    Заголовок сообщения: Ответить с цитатой

Нет, я открывал файл pas. Но и в этом варианте все работает.
Другая проблема.В модуле MainDialogs в строках 792 и793 объект IIngeoMapObjectsQuery не идентифицирует свойства ObjectID и MoveNext ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RuslanG



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

СообщениеДобавлено: Ср 11 Апр 2007 18:08    Заголовок сообщения: Ответить с цитатой

1. Зарегистрируйте заново библиотеки типов InGeo.exe /RegServer
2. Удалите в проекте файлы: Ingeo_TLB.* и InScripting_TLB.*
3. Скомпилируйте проект.

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



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

СообщениеДобавлено: Ср 11 Апр 2007 20:15    Заголовок сообщения: Ответить с цитатой

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

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


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