Сделать первую запись в слое

0 голосов
спросил 15 Май, 06 от slavniy (360 баллов) в категории Программные продукты Esri
Добрый день! Может кто сталкивался с такой ситуацией?
Вызываю новый слой (записей в нем нет). По заданным координатам создаю полигон.  Когда хочу записать в слой - выдает ошибку  в подчеркнутых строках, т.е. не хочет создать новую запись.  Что сделано не правильно? Этого не происходит, если в слое есть хоть один полигон. 
------------------------------------

Set pWorkspaceFactory = New ShapefileWorkspaceFactory
Set pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(shpPath, 0)
  Set pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(shpStr)
Dim wEdit As IWorkspaceEdit
Set wEdit = pFeatureWorkspace
wEdit.StartEditing (True)
wEdit.StartEditOperation
Dim pGonColl As IPointCollection
Dim xyPoint() As IPoint
ReDim xyPoint(kk) As IPoint
Set xyPoint(0) = New esriGeometry.Point
xyPoint(0).PutCoords pRow.Value(pRow.Fields.FindField("X")), pRow.Value(pRow.Fields.FindField("Y"))
'
'---------------------------
Dim pFeature As IFeature

Dim pTopo As ITopologicalOperator
Dim kol, ii As Integer
Dim pPol As IPolygon
 
 
ii = 1
kol = 0
For i = 1 To (kk - 1)
  
  Set xyPoint(ii + kol) = New esriGeometry.Point
  xyPoint(ii + kol).PutCoords pRow.Value(pRow.Fields.FindField("X")), pRow.Value(pRow.Fields.FindField("Y"))
 -------------
        Set pPol = New Polygon
        Set pGonColl = pPol
            
        Set pFeature = pFeatureLayer.FeatureClass.CreateFeature
        Set pTopo = pPol
        pTopo.Simplify
        Set pFeature.Shape = pTopo
      
        pFeature.Value(pFeature.Fields.FindField("Id_1")) = "1"              pFeature.Value(pFeature.Fields.FindField("Id_2")) ="2"        pFeature.Store
        
           End If
 
wEdit.StopEditOperation
wEdit.StopEditing (True)
 
Заранее благодарю за помощь

1 Ответ

0 голосов
ответил 17 Май, 06 от bess (800 баллов)
Может так получится?
Вместо Set pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(shpStr)

Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass(shpStr)

и тогда не Set pFeature = pFeatureLayer.FeatureClass.CreateFeature, а

Set pFeature = pFeatureClass.CreateFeature

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