| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Пт 26 Янв 2007 21:59    Заголовок сообщения: Delphi | 
				     | 
			 
			
				
  | 
			 
			
				Работаю в Delphi
 
Хочу спросить, есть ли компоненты для Делфи для написания прог в Ингео, или какие-нибудь функции
 
Где их можно взять, а также какая-нибудь документация? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Вт 30 Янв 2007 13:48    Заголовок сообщения: Создание точечных обектов | 
				     | 
			 
			
				
  | 
			 
			
				Создал внешнеее приложение в Делфи
 
А какими методами допутим добавить точку? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		
			
				 Добавлено: Вт 30 Янв 2007 14:26    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				С диаграммой объектов системы ИнГЕО можно ознакомиться в справочном файле «IngeoIntfs.chm», который находится в рабочем каталоге системы (по умолчанию: C:\Program Files\Integro\InGeo).
 
Если нужны какие-либо примеры реализации - спрашивайте, по мере возможности ответим... _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Вт 30 Янв 2007 16:20    Заголовок сообщения: Навигация по таблице | 
				     | 
			 
			
				
  | 
			 
			
				Да, я ознакомился.
 
Как вставить, понял
 
Допустим, я получил значение из таблицы с нужным именем и из нужного поля.
 
Не совсем понятно, как переходить от записи к записи до последней
 
Есть ли такая возможность?   | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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; | 	 
  _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Ср 31 Янв 2007 09:39    Заголовок сообщения: Функции и свойства | 
				     | 
			 
			
				
  | 
			 
			
				А к какому объекту относится ф-ия GetRecCount?
 
В файле помощи я ее не нашел   | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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; | 	 
  _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Вт 06 Фев 2007 11:44    Заголовок сообщения: продолжение | 
				     | 
			 
			
				
  | 
			 
			
				Попробую сформулировать мысль.
 
Как я понимаю, чтобы получить ссылку на объект, необходимо получить его идентификатор. Получать ID выделенного объекта научился. Выделяю точку и получаю. Но как получить ID или всей таблицы или всех точек таблицы без выделения, не понятно.
 
Т. е получил информацию об одной выделенной точке и все
 
А как ор всех точках.
 
Свойство IDs относится к объекту IngeoSelection | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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; | 	 
  _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Ср 07 Фев 2007 11:29    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				в строке 
 
anObjectId := aRecords['ID']; 
 
дает ошибку
 
Выделяет внутри скобок 'ID' | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		 | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Ср 07 Фев 2007 17:09    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				| Не пропускает | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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; | 	 
  _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Ср 21 Фев 2007 14:00    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Пытаюсь создать внешнее приложение.
 
Работаю в Дельфи 2006
 
Подключаю к проекту файлы М2AddOn и так далее. Потом AUtils и тд.
 
В файле AUtils не идентифицируются некоторые переменные.
 
Может быть из-за версии Делфи? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		 | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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' | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		 | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Ср 21 Фев 2007 15:05    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Спасибо, в данном случае помогло
 
Теперь в файле M2AddonnImp не найден файл DLLForm | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		 | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Пн 26 Фев 2007 10:17    Заголовок сообщения: Возвращаясь к коду | 
				     | 
			 
			
				
  | 
			 
			
				Хотел бы вернуться к Вашему примеру выборки Высоты больше 500.
 
Там вводится aSemTableID -это идентификатор глобальный или локальный?
 
Что-то прога ответила мне, что не нашла таблицу с таким ID | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		
			
				 Добавлено: Пн 26 Фев 2007 10:46    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Цитата: | 	 		  | Там вводится aSemTableID -это идентификатор глобальный или локальный? | 	  
 
aSemTableID - это локальный идентификатор.
 
 	  | Цитата: | 	 		  | Что-то прога ответила мне, что не нашла таблицу с таким ID | 	  
 
Скорее всего так оно и есть. Вы уверены, что передаете идентификатор таблицы? _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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 имеет координаты левой и правой границы.
 
А как найти координаты составляющих полилинию? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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;
 
 | 	 
  _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Вт 27 Фев 2007 14:28    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Спасибо
 
Все получилось.
 
Еще вопрос
 
Как записать данные в таблицу?
 
Попробовал метод SetValue.
 
Не получилось. Может быть потому, что в каждой таблице для каждой записи есть свой ID. А как я узнаю, какой ID присвоить новой записи? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		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; | 	 
  _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |