Access & MapControl

0 голосов
спросил 16 Май, 03 от Гость (210,080 баллов) в категории Программные продукты Esri
Как перадать данные из таблицы Access в MapControl (ХУ события) в самом Accesse на его форме?

6 Ответы

0 голосов
ответил 16 Май, 03 от Andranic (2,620 баллов)

Нужно создать FeatureLayer с вашими данными (XY) и добавить его в MapControl (MapControl.AddLayer).

0 голосов
ответил 19 Май, 03 от Гость (210,080 баллов)
А именно как осушествить создание FeatureLayer?
0 голосов
ответил 19 Май, 03 от Andranic (2,620 баллов)

Советую посмотреть пример из ArcObjects (Samples->ArcMap->Tables->Add XY Event Layer), там как раз и показано как подключается таблица и создается XY слой событий.

0 голосов
ответил 23 Май, 03 от Гость (210,080 баллов)
Прошу прощения, меня интересует какким образом передать именно таблицу во FeatureLayer т.е. какой интерфейс выбрать: AccessWorkspaceFactory или OLEDBWorkspaceFactory
или это можно сделать другим способом. Буду признателен за фрагмент кода. Таблица и форма - в одном .mdb файле
0 голосов
ответил 23 Май, 03 от Гость (210,080 баллов)
Прошу прощения, меня интересует какким образом передать именно таблицу во FeatureLayer т.е. какой интерфейс выбрать: AccessWorkspaceFactory или OLEDBWorkspaceFactory
или это можно сделать другим способом. Буду признателен за фрагмент кода. Таблица и форма - в одном .mdb файле
ArcObject версии 8.1
0 голосов
ответил 29 Май, 03 от Andranic (2,620 баллов)

А так не получается ?

  Dim pMap As IMap
  Set pMap = MapControl1.Map
 
  Dim pWF As IWorkspaceFactory
  Dim pFWS As IFeatureWorkspace
  Dim pTable As ITable
 
  Set pWF = New AccessWorkspaceFactory
   
  Set pFWS = pWF.OpenFromFile("d:\db2.mdb", 0)
  Set pTable = pFWS.OpenTable("TableXY")
  Dim pDataSet As IDataset
  Dim pTableName As IName
  Set pDataSet = pTable
 
  Set pTableName = pDataSet.FullName
 
  ' Specify the X and Y fields
  Dim pXYEvent2FieldsProperties As IXYEvent2FieldsProperties
  Set pXYEvent2FieldsProperties = New XYEvent2FieldsProperties
  With pXYEvent2FieldsProperties
    .XFieldName = "X"
    .YFieldName = "Y"
    .ZFieldName = ""
  End With

  ' Specify the projection
  Dim pSpatialReferenceFactory As ISpatialReferenceFactory
  Dim pProjectedCoordinateSystem As IProjectedCoordinateSystem
  Set pSpatialReferenceFactory = New SpatialReferenceEnvironment
  Set pProjectedCoordinateSystem = _
    pSpatialReferenceFactory.CreateProjectedCoordinateSystem(esriSRProjCS_NAD1983UTM_11N)

  ' Create the XY name object and set it's properties
  Dim pXYEventSourceName As IXYEventSourceName
  Dim pXYName As IName
  Dim pXYEventSource As IXYEventSource
  Set pXYEventSourceName = New XYEventSourceName
  With pXYEventSourceName
    Set .EventProperties = pXYEvent2FieldsProperties
    Set .SpatialReference = pProjectedCoordinateSystem
    Set .EventTableName = pTableName
  End With
  Set pXYName = pXYEventSourceName
  Set pXYEventSource = pXYName.Open
 
  ' Create a new Map Layer
  Dim pFlayer As IFeatureLayer
  Set pFlayer = New FeatureLayer
  Set pFlayer.FeatureClass = pXYEventSource
  pFlayer.Name = "Sample XY Event layer"
 
  'Add the layer extension (this is done so that when you edit
  'the layer's Source properties and click the Set Data Source
  'button, the Add XY Events Dialog appears)
  Dim pLayerExt As ILayerExtensions
  Dim pRESPageExt As New XYDataSourcePageExtension
  Set pLayerExt = pFlayer
  pLayerExt.AddExtension pRESPageExt
 
  pMap.AddLayer pFlayer
  MapControl1.ActiveView.Refresh

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...