Подскажите, возможно ли в ArcView ....?

0 голосов
спросил 08 Апр, 04 от Alina (640 баллов) в категории Программные продукты Esri

Начала изучать ArcView, но никак не могу понять : 

Можно ли в ArcView решить следующие задачи и если можно то как?

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

2. Можно ли на модели вентиляции изобразить стрелочками движение воздуха, т.е не просто изобразить, а показать как перемещается? Или при изменении значений в таблице, чтобы менялся цвет стрелок (например, если скорость = 4,2 м/с, то синим, если другая, то зелным... )

Действительно не знаю пока возможностей программы, новичекimage. Заранее спасибоimage

15 Ответы

0 голосов
ответил 12 Апр, 04 от Alina (640 баллов)

если есть две точки расстояние можно посчитать через ддлину линии, соединяющей их

myLine = Line.Make( 0@0, 1@0 )
Distance = myLine.returnlength

Попробывала, при запуске скрипта ничего не происходит. Как и где это должно отображаться?

Извиняюсь за глупый вопрос image

0 голосов
ответил 12 Апр, 04 от dios (5,300 баллов)
по порядку

myLine = Line.Make( точка1, точка2 )

это создает линию между 2 точками (0@0 - точка с координатами 0,0, соответственно забиваешь туда 2 объекта точка, между которыми надо измерить расстояние)


Distance = myLine.returnlength

объявляешь переменную Distance, равную длине линии.

а далее делаешь с ней, что нужно, хоть сообщение выводи.

msgbox.info(Distance.asstring,"");


0 голосов
ответил 16 Апр, 04 от Alina (640 баллов)

Попробовала скрипт.image

Запустила его, выдается табличка с рассчитаным расстоянием, только вот как этот скрипт привязать к двум точкам в темеimage

Ведь, я так поняла, этот скрипт считает расстояние не между какими-то точками конкретными, а просто при задании кооринат. 

0 голосов
ответил 19 Апр, 04 от dios (5,300 баллов)
так задавай ему точки из темы, он будет считать расстяние

0 голосов
ответил 19 Апр, 04 от S.E. (12,840 баллов)

Что-то типа такого:

theView = av.GetActiveDoc
thePrj = theView.GetProjection
for each t in theView.GetActiveThemes
  if (t.Is(FTheme).Not) then continue end
  theFTab = t.GetFTab
  if (theFTab.GetShapeClass.GetClassName <> "Point*".AsPattern) then
    continue
  end
  fldShape = theFTab.FindField("Shape")
  lPts = {}
  for each r in theFTab.GetSelection
    if (lPts.Count >= 2) then break end
    lPts.Add(theFTab.ReturnValue(fldShape, r).ReturnProjected(thePrj))
  end
  if (lPts.Count = 2) then


myLine = Line.Make(lPts.Get(1), lPts.Get(0))
Distance = myLine.returnlength
msgbox.info(Distance.asstring,"")

  end
end

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