Connect to SDE 9

0 голосов
спросил 20 Сен, 05 от Jus (320 баллов) в категории Программные продукты Esri

Подскажите как мне правильно сделать Connect для SDE 9 и затем добавить слой в MapControl1: TMapControl; в DELPHI.

В C# connect делается так:


// openSDEWorkspace:  create and open the sde workspace based on the provided information
//
public IWorkspace openSDEWorkspace(string Server, string Instance, string User,
                                      string Password, string Database, string version)
{
  IWorkspace ws = null;

  IPropertySet pPropSet  = new PropertySetClass();
  IWorkspaceFactory pSdeFact = new SdeWorkspaceFactoryClass();

  pPropSet.SetProperty("SERVER", Server);
  pPropSet.SetProperty("INSTANCE", Instance);
  pPropSet.SetProperty("DATABASE", Database);
  pPropSet.SetProperty("USER", User);
  pPropSet.SetProperty("PASSWORD", Password);
  pPropSet.SetProperty("VERSION", version);

  ws = pSdeFact.Open(pPropSet, 0);
  return ws;
}

4 Ответы

0 голосов
ответил 20 Сен, 05 от Гость (210,080 баллов)

  

   pSdeFact:=CoSdeWorkspaceFactory.Create as IWorkspaceFactory;
   pPropSet:=coPropertySet.create as IPropertySet;
   pPropSet.SetProperty('SERVER','имя сервера');
   pPropSet.SetProperty('INSTANCE','esri_sde');
   pPropSet.SetProperty('USER','sde');
   pPropSet.SetProperty('PASSWORD','пароль');
   pPropSet.SetProperty('VERSION','sde.DEFAULT');
   pSdeFact.Open(pPropSet,0,pwork);
   pFeatureWorkspace:=pwork as IFeatureWorkspace;

   pFeatureWorkspace.OpenFeatureClass('имя слоя',pObjectClass);

 pLayer:=coFeatureLayer.create as IFeatureLayer;
 pLayer._Set_FeatureClass(pObjectclass);
 MapControl1.Map.AddLayer(pLayer as ILayer);

 

0 голосов
ответил 21 Сен, 05 от Jus (320 баллов)

Замечательно, спасибо - я приблизительно так и начинал делать, НО

и в моем коде и в вашем компилятор спотыкается на строке

     pSdeFact:=CoSdeWorkspaceFactory.Create as IWorkspaceFactory;

[Error] frmMain.pas(148): Undeclared identifier: 'CoSdeWorkspaceFactory'

Поиск в хелпе по слову CoSdeWorkspaceFactory ничего не находит, а по SdeWorkspaceFactory кое что находит:

     SdeWorkspaceFactory CoClass (esriDataSourcesGDB)

     ESRI SDE Workspace Factory.

     Product Availability

     Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.
 
 
модуля esriDataSourcesGDB_TLB почемуто нет?!
 
Попытался изменть на

     pSdeFact:=CoWorkspaceFactory.Create as IWorkspaceFactory;

Компилируется нормально, НО во время выполнения в этой же строке срабатывает исключение EOleSysError с сообщением 'Класс не зарегистрирован'

Подскажите в чем дело.
0 голосов
ответил 23 Сен, 05 от Гость (210,080 баллов)

Модуль esriDataSourcesGDB_TLB необходимо импортировать вручную!

Project\Import Type Lybrary

0 голосов
ответил 23 Сен, 05 от Jus (320 баллов)
Благодарю за помощь. Все ОК.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...