проецирование объекта Feature на экран

0 голосов
спросил 09 Март, 06 от Гость (210,080 баллов) в категории Программные продукты Esri
Надо взять объект из слоя и растянуть его на весь экран

я пробовал
        Set pEnvelope = pFeature.Shape.Envelopе
        ...
        MapControl.ClearLayers
        Set MapControl.SpatialReference = m_pMxDoc.FocusMap.SpatialReference
        For i = 0 To m_pMxDoc.FocusMap.LayerCount - 1
            MapControl.AddLayer
            m_pMxDoc.FocusMap.layer(m_pMxDoc.FocusMap.LayerCount - 1 - i)
        Next i
        MapControl.FullExtent = pEnvelope
        MapControl.Refresh

если система координат слоя совпадает с экранной системой координат, то нет никаких проблем, в противном случае происходит убегание слоев.

как я понимаю мне надо сконврертировать полученные координаты в экранные или есть какой-то другой способ решения этой проблемы

3 Ответы

0 голосов
ответил 09 Март, 06 от filippov70 (5,320 баллов)
Добрый день.

Наверное вы хотели сказать система координать фрейма данных, а не экрана

Попробывал изменить СК фрема на ВГС84 (слои СК42, вектор) - и данных не увидел. Выбираю фичу в режиме таблицы, "приблизить к выбранным объектам" и ничего, наверно это и есть убегание слоев. Они точно свалилиimage
Хотя недавно привязал растры в GCS_Krasovsky_1940 и прекрасно смотрел их в СК42 вместе с растрами в 42 годе.

хотя, наверное, я не понял суть вопроса, но...
когда мне нужно было показывать весь найденный полигон в центре экрана я использовал этот код:

тут я выбирал фичу со слоя - pFeat
.........

  Dim env As IEnvelope
  
   Set env = pFeat.Shape.Envelope
   env.Expand 2, 2, True ' тут заместо двоек другие цифры можно ставить чем                                     'болше цифра, тем меньше масштаб, мне с 2-ми                                                 'понравилось
  
  
   ThisDocument.ShowTOC
  
   Dim pLayer As ILayer
   Set pLayer = pFL
   pLayer.Visible = True
  
   pMxDoc.ActiveView.Extent = env
   pMxDoc.FocusMap.ClearSelection
   pMxDoc.FocusMap.SelectFeature pFL, pFeat
   pMxDoc.ActiveView.Refresh
   pMxDoc.UpdateContents
.....

0 голосов
ответил 09 Март, 06 от Гость (210,080 баллов)
наверное у меня проблема , в том что я не полностью передаю данные карты в mapcontrol,  вот узнать бы какие
если бы был метод типа pEnvelope.ConvertTo(текущая СК, нужная СК), то бы никаких проблем бы не было

0 голосов
ответил 09 Март, 06 от filippov70 (5,320 баллов)
Если есть хелп по ArcObjects читай про

IDisplayTransformation Interface

там есть методы
ToMapPoint
ToPoints
TransformCoords


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