| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Вт 27 Фев 2007 16:25    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Выдает "Не найден идентификатор объекта"
 
Не понятно почему?
 
Только что писал на отбор информации из таблицы, никаких претензий к идентификатору не было | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		 | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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]) | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		
			
				 Добавлено: Чт 01 Мар 2007 11:50    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Процедуру проверил - все работает без ошибок.
 
Вы берете идентификатор объекта из поля Edit2 	  | Код: | 	 		  | aMapObjectId := Edit2.Text; | 	  Может быть такое, что Вы вводите неправильный или некорректный идентификатор? _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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]) | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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, а также при этом сохраняется табуляция и множественные пробелы. _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Чт 01 Мар 2007 17:17    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Хорошо
 
А как мне получить идентификатор пространственного обьъекта семантической таблитцы. Ведь в моем случае пространственный объект есть линия, а записать данные я хочу в таблицу другого объекта | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		 | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Пт 02 Мар 2007 08:48    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Вроде решил проблему созданем нужной таблицы в слое объекта, который у меня выделяется вручную.
 
Но записалась в таблицу только последняя запись.
 
Попробовал 
 
 	  | Код: | 	 		  | aMapObject.SemData.AddRec(aTableName) | 	  
 
Тоже самое
 
Еще один вопрос
 
Я так понимаю можно добавить точки к объекту
 
 
Но что такое индекс вершины.
 
Откуда его брать | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		
			
				 Добавлено: Пт 02 Мар 2007 10:20    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Посмотрите, пожалуйста, файл "IngeoIntfs.chm". В нем описана объектная модель ИнГео и содержится полный справочник по программному интерфейсу ИнГео. 	  | Цитата: | 	 		  | А как мне получить идентификатор пространственного объекта семантической таблитцы. | 	  У семантической таблицы нет идентификатора пространственного объекта. Чтобы перенести информацию в таблицу другого объекта, необходимо иметь идентификатор объекта или сам объект. И у него, через метод SemData, работать с семантическими данными пространственного объекта. 	  | Цитата: | 	 		  | Но что такое индекс вершины. | 	  SetVertex - Устанавливает параметры вершины (команды) контура. Индекс вершины - номер вершины по порядку, начиная с 0. 	  | Цитата: | 	 		  | Я так понимаю можно добавить точки к объекту | 	  Интерфейс IIngeoContourPart содержит метод InsertVertex, который добавляет вершину (команду) в часть контура.
 
Параметры метода:
 
anIndex - Индекс вершины, перед которой будет вставлена новая вершина. Если значение данного параметра равно "-1", то вершина добавляется в конец части контура. 
 
aX - X координата вершины. 
 
aY - Y координата вершины. 
 
aConvexity - Кривизна ребра, проведенного из предыдущей вершины в добавляемую. Если часть контура замнута, то кривизна первой вершины применяется для замыкающего ребра. 	  | Цитата: | 	 		  | Но записалась в таблицу только последняя запись. | 	  Приведите более полный код. _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Пт 02 Мар 2007 15:58    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				| Не могу сообразить, как можно получить идентификатор объекта или сам объект, который нен выделен | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		 | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Пт 02 Мар 2007 16:53    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Допустим есть ось дороги
 
Пользователь ее выделяет
 
Далее нужно описать расчет разбиения точек через заданное расстояние и новые точки добавить в выделенную линию дороги или в отдельный слой, где создана таблица.
 
Еще от этих точек нужно расчитать точки отвода в обе стороны перпендикулярно направлению оси, допустим по заданным расстояниям в текстовом файле.
 
Эти точки тоже нанести, для отрисования отвода. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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' | 	 
  | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		
			
				 Добавлено: Вт 13 Мар 2007 17:19    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Примеры, приведенные на нашем сервере, предназначены для компиляции в среде Delphi 7. В данный момент ведутся работы по адаптации примеров для Delphi 2006. Адаптированная версия примеров будет доступна с 23 марта 2007г. _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия
  Последний раз редактировалось: RuslanG (Пн 19 Мар 2007 16:33), всего редактировалось 1 раз | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		andreichernov
 
 
  Зарегистрирован: 14.02.2005 Сообщения: 209 Откуда: Самара
  | 
		
			
				 Добавлено: Вт 13 Мар 2007 19:23    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Уважаемый gstof!
 
С интересом прочитал вашу переписку с работниками отдела технической поддержки фирмы "Интегро". 
 
Просите, что ввязываюсь не в свое дело, ибо я не работаю в Интегро, 
 
но мне кажется, Вам не хватает общих знаний в области геоинформационных систем, баз данных и программирования на языках высокого уровня, а также самостоятельности в изучении нового для Вас материала и внимательности при изучении документации.
 
Понимая Ваше стремление как можно быстрее решить поставленную задачу, советую пройти курсы программирования в ГИС "Ингео" в ЦСИ "Интегро" или воспользоваться готовыми решениями. По 
 
крайней мере для описываемых Вами задач - построение буферных зон с разными расстояниями до оси линейного объекта или расстановка точек (пикетов) и деление на отрезки в зависимости от расстояния, у нас в Самаре решения есть.
 
С уважением, Андрей Чернов. 
 
зам директора ОАО "Самара-Информспутник". | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		 | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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 | 	 
  | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		 | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		
			
				 Добавлено: Чт 05 Апр 2007 23:31    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | gstof писал(а): | 	 		  Допустим есть ось дороги
 
Пользователь ее выделяет
 
Далее нужно описать расчет разбиения точек через заданное расстояние и новые точки добавить в выделенную линию дороги или в отдельный слой, где создана таблица.
 
Еще от этих точек нужно расчитать точки отвода в обе стороны перпендикулярно направлению оси, допустим по заданным расстояниям в текстовом файле.
 
Эти точки тоже нанести, для отрисования отвода. | 	  
 
Возможно, Вам пригодятся исходники модуля "Распределение точечных объектов вдоль линии" [42,5Кб]. Документации к модулю нет. Вопросы будут - стучите в ICQ [214171365]. _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Сб 07 Апр 2007 10:38    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				В библиотеке AddonLib отсутствует файл TypInf.pas и InSysUtils.pas открывается какими-то шестнадцатиричными символами.
 
 	  | Код: | 	 		  | Возможно, Вам пригодятся исходники модуля "Распределение точечных объектов вдоль линии" [42,5Кб]. Документации к модулю нет. Вопросы будут - стучите в ICQ [214171365]. | 	 
  | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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 _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Ср 11 Апр 2007 17:35    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Нет, я открывал файл pas. Но и в этом варианте все работает.
 
Другая проблема.В модуле MainDialogs в строках 792 и793 объект IIngeoMapObjectsQuery не идентифицирует свойства ObjectID и MoveNext ? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		 | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Ср 11 Апр 2007 20:15    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Сделал
 
Без изменений | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |