сместить полигон программно

0 голосов
спросил 11 Дек, 08 от AndreyL (5,420 баллов) в категории Программные продукты Esri

Пытаюсь переместить вертексы полигона

 Sub Hyperlink(pLink, pLayer)
 
  Dim pFLayer As IFeatureLayer
  Dim pFeatureClass As IFeatureClass
  Set pFLayer = pLayer
  Set pFeatureClass = pFLayer.FeatureClass
  Dim pQFilt As IQueryFilter
  Set pQFilt = New QueryFilter
 
  FieldIndex = pFeatureClass.FindField("Shape")
 
  Dim pFeature As IFeature, pGeometry As IGeometry, pPointCollection As IPointCollection
  Dim pPoint As IPoint, nPoint As IPoint
  For i = 1 To pFeatureClass.FeatureCount(pQFilt)
   Set pFeature = pFeatureClass.GetFeature(i)
   Set pGeometry = pFeature.Value(FieldIndex)
   Set pPointCollection = pGeometry
   For j = 1 To pPointCollection.PointCount - 1
    Set pPoint = pPointCollection.Point(j)
    X = pPointCollection.Point(j).X
    pPoint.X = pPoint.X + 10000
    pPoint.Y = pPoint.Y + 10000
    pPointCollection.UpdatePoint j, pPoint
    X = pPointCollection.Point(j).X - X
    MsgBox X
   Next j
  Next i

End Sub

MsgBox показывает 10000, а полигон не смещается.

2 Ответы

0 голосов
ответил 11 Дек, 08 от Mitrich (13,680 баллов)
кода под рукой нет, но раз Вам нужно сдвинуть все вертексы, то может сразу сдвинуть весь полигон, воспользовавшись ITransform2D.move
сначала выбрать полигоны
Dim pFeatCur As IFeatureCursor
Set pFeatCursor = pFeatureClass.Update(pQueryFilter, False)
set pFeature=  pFeatCursor.next
do while not pFeature is nothing
... move...
pFeature.store
set pFeature=  pFeatCursor.next
loop

0 голосов
ответил 11 Дек, 08 от AndreyL (5,420 баллов)

Идея в том, чтобы изменить форму полигона.

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