Определение скриптом выбранного полигона

Arcview GIS 3.x, Arcinfo Workstation, Mapobjects
Ответить
Elliv
Новоприбывший
Сообщения: 7
Зарегистрирован: 08 янв 2011, 18:05
Репутация: 0

Определение скриптом выбранного полигона

Сообщение Elliv » 18 авг 2011, 22:18

Не нашлось подобной темы. Как определить программно в Avenue, какой полигон выбран? Есть ли какое-то взаимодействие на уровне кода с выделением полигона (когда он подсвечивается желтым), или необходимо сочинять отдельный код? Пытаюсь
Вернуть координаты щелчка мышью, вернее, вернуть точку, где был щелчок. и проверить. не содержит ли эту точку какой-либо из полигонов темы. Но пока не пашет даже так, для пробы:

Код: Выделить всё

theView = av.GetProject.FindDoc ("View1")
theGList = theView.GetGraphics
myTheme = theView.FindTheme ("Theme2.shp")
myFTab = myTheme.GetFTab
myField = myFTab.FindField ("Shape")
N = myFTab.GetNumRecords
index=0
aDisplay = av.GetActiveDoc.GetDisplay

twoFTab = FTab.MakeNew("C:\Lin1.shp".AsFileName, Line)
twoTheme = FTheme.Make(twoFTab)
twoField = twoFTab.FindField ("Shape")
fields = List.Make
fields.Add(Field.Make("IDS", #FIELD_SHORT, 4, 0))
twoFTab.AddFields(fields)

R = twoFTab.GetNumRecords
j=0
  M = N-1  
  aPoint = aDisplay.ReturnUserPoint
  aPrj = theView.GetProjection
  if (aPrj.IsNull.Not) then aPoint = aPoint.ReturnUnprojected(aPrj) end
  
      while (index < M)
        Shape1 = myFTab.ReturnValue(myField,index)
        if (Shape1.Contains(aPoint))
        then 
        msgbox.info("Входит","")
        end
 
        index = index+1 
        end
Последний раз редактировалось Elliv 19 авг 2011, 11:37, всего редактировалось 3 раза.
Gugoruwo sitte kudasai!

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Определение скриптом выбранного полигона

Сообщение Максим Дубинин » 19 авг 2011, 01:18

есть, надо сделать getselection и посмотреть какие биты установлены в возвращаемом BitMap-e, это и будут rec-и выбранных записей

PS: пожалуйста, используйте кнопку Code для кода
пристегивайтесь, турбулентность прямо по курсу

Elliv
Новоприбывший
Сообщения: 7
Зарегистрирован: 08 янв 2011, 18:05
Репутация: 0

Re: Определение скриптом выбранного полигона

Сообщение Elliv » 19 авг 2011, 12:27

Загуглил exmplы getselection, нашел такую штуку
for each rec in ft.GetSelection
Я правильно понимаю - что это перебор всех выбранных записей?

Проверил - ага.
Gugoruwo sitte kudasai!

Elliv
Новоприбывший
Сообщения: 7
Зарегистрирован: 08 янв 2011, 18:05
Репутация: 0

Re: Определение скриптом выбранного полигона

Сообщение Elliv » 19 авг 2011, 22:12

А еще такой трабл:

Код: Выделить всё

        razmer = MsgBox.Input("Vvedite velichinu uchastka","","")
      
        for each rec in myFTab.GetSelection
        Shape1 = myFTab.ReturnValue(myField,rec)
        myPoint1 = Shape1.ReturnCenter
        myPoint2 = Point.Make((myPoint1.GetX-0.1),(myPoint1.GetY-0.1))
        
        aRect = Rect.Make(myPoint1,myPoint2)
        aGPoint = GraphicShape.Make (aRect) 
        theGList.Add(aGPoint)     
        end
Дает следующий результат:
Изображение

Единицы измерения карты - децимал дигриз. Единицы дистанс - unknown. В чем тут проблема?
Gugoruwo sitte kudasai!

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Определение скриптом выбранного полигона

Сообщение Максим Дубинин » 19 авг 2011, 22:52

прямоугольники не такие как надо? а какие надо?
пристегивайтесь, турбулентность прямо по курсу

Elliv
Новоприбывший
Сообщения: 7
Зарегистрирован: 08 янв 2011, 18:05
Репутация: 0

Re: Определение скриптом выбранного полигона

Сообщение Elliv » 19 авг 2011, 22:55

Ну, по коду если смотреть - то должны быть квадраты 0.1 х 0.1.

Причем меняю плюсы на минусы и наоборот - а рисует все равно в одну и ту же сторону, только размеры изменяются хаотично. Что за язык вообще такой чокнутый Оо

Хотя, размеры не совсем хаотичные, даже после перезапуска рисует точно такие же неправильные ректы.
Gugoruwo sitte kudasai!

Евгений_ZX
Новоприбывший
Сообщения: 9
Зарегистрирован: 21 мар 2009, 23:45
Репутация: 1

Re: Определение скриптом выбранного полигона

Сообщение Евгений_ZX » 17 дек 2011, 14:23

из справки: Rect.Make (anOrigin, aSize)
Создает прямоугольник aRect, начинающийся в точке anOrigin с размером aSize. anOrigin - точка начала построения прямоугольника. aSize - точка, X и Y значения которой представляют ширину и высоту прямоугольника.

соответственно исключите из расчета вашего Mypoint2 все значения Mypoint1 содержащего центроиды "плавающих" объектов и размеры прямоугольников сразу перестанут "плавать" )))

Голяков Евгений
ФГУП "ВИМС" vims-geo.ru

Ответить

Вернуться в «Arcview GIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя