хэлп срочно

0 голосов
спросил 08 Окт, 08 от Berty (580 баллов) в категории Программные продукты Esri
еще задачка :)
 
есть точечный слой (скважины)
вокруг каждой из них нужно отстроить квадратный полигон, со стороной 500х500м, при этом точка должна быть в центре полигона
 
далее, эти пересекащиеся полигоны надо сложить в один и высчитать его площадь
 
если по поводу второй задачи у меня еще есть идеи, то с первой я пока в тупике :(
 

16 Ответы

0 голосов
ответил 08 Окт, 08 от geologic (39,860 баллов)
Для того, чтобы посчитать такую площадь, не надо ее отстраивать, isn't it? Ну это вы наверное, знаете :)

Если все же картинку получить, то можно вполне воспользоваться поточечным методом. Иными словами, для каждой вашей точки нужно еще 4 пары координат, которые легко добываются по таблице штатным калькулятором, если помните Пифагора. Далее каждую четверку превращаете в полигон, это еще проще. Разумеется, СК должна быть прямоугольной - ну, по скважинам другой и не бывает :) Если мысль подойдет, подскажу и средства и шаги.

Наверно, можно и скрипт найти в коллекции... Но не уверен, что это будет быстрее.
    
0 голосов
ответил 08 Окт, 08 от Berty (580 баллов)
иес, ит из....а как? :)
 
Хм, я, вообще, надеялся обойтись без калькулятора :)
ок, допустим я все пересчитаю, получу дбф файл с четырьмя парами столбцов координат х-у...а потом? преобразовывать его в .gen  в текстовом редакторе (тоже дофига ручной работы),  затем в покрытие аркинфо, затем объединить все полигоны?  
 
0 голосов
ответил 08 Окт, 08 от Grigoriy (127,020 баллов)
Да, тяжелые времена, однако image

S_общая = (500м х 500м) * число_точек(скважин)= 250000 * число_точек(скважин) кв.м

Зачем для этого дбф, .gen, покрытие аркинфо?
можно в столбик посчитать image
0 голосов
ответил 08 Окт, 08 от Berty (580 баллов)
Времена действительно непростые :)
Вы условия внимательно читали?
Квадраты пересекаются.
0 голосов
ответил 08 Окт, 08 от Grigoriy (127,020 баллов)
Попробуйте:
http://arcscripts.esri.com/details.asp?dbid=10999
А с пересечением квадратов наверно справитесь.

См. также:
http://www.ian-ko.com/downloads/et/ET36.zip
http://www.ian-ko.com/et/main_features_of_edittools.htm

Convert Point theme to Polygon theme. The points can have an order attribute to define their sequence in the polygon
0 голосов
ответил 08 Окт, 08 от geologic (39,860 баллов)
Ну, калькулятор имеется в виду АркВьюшный - чем не автоматизация? Получив координаты точек, любым сборщиком по точкам можно построить полигоны. Например, EdiTools. Разумеется, точки должны быть прокодированы индексом полигона (ID скважины). То есть как начать и чем закончить, ясно - однако в середине есть закавыка. Колонок в таблице получается восемь штук, четыре пары XY - точнее, девять - еще ID. Для создания шейпа точек надо эти девять свернуть обратно в три колонки - ID, X,Y... Еще добавить Order - порядок точки в будущем полигоне, ну, это тривиально. Вопрос - как свернуть...

SQL-механизмом типа Access было б несложно всю эту кухню сделать за один запрос, прямо в ходе калькуляции, там есть SELECT 1 UNION SELECT 2, ну а чисто в AV придется поломать голову. Например, в четыре приема "Create Event Theme" создайте 4 файла точек - по одному для каждого угла - файл СЗ углов, СВ и так далее. Потом объедините (Merge) все точки-углы в один файл (прокодировав заранее колонку Order для СЗ = 1; для СВ = 2 и так далее). Останется на эти точки напустить ET (команда Convert Points 2 Polygon) и дело в шляпе.

Хлопотно кажется, но если у вас скважин сто тыщ, то даже вспотеть не успеете. Ну и метода универсальная - хоть треугольники генери, хоть ромбы, хоть профиля :) Впрочем, может еще найдется тулс чисто графический - вы ведь на это рассчитывали...
    
0 голосов
ответил 08 Окт, 08 от peter1 (7,760 баллов)
0 голосов
ответил 08 Окт, 08 от Berty (580 баллов)

   
странно
скрипт закачал в ЕХТ32, но через меню Екстеншион его не видно :(

ладно, моск кипит, завтра буду разбираться, всем спасибо :)
0 голосов
ответил 10 Окт, 08 от BigSerg (4,080 баллов)
Вот на вскидку
работает с первой попавшейся активной темой
создай в виде кнопку - повесь на нее
Vt = av.GetActiveDoc.GetActiveThemes.Get(0).GetFtab
pgn = Polygon.MakeNull
For each i in vt
pnt = Vt.ReturnValue(vt.GetFields.Get(0),i)
rct = Rect.Make((Pnt.GetX-250)@(pnt.GetY-250),500@500)
pgn = pgn.ReturnUnion(rct)
end
s = pgn.ReturnArea
s.setFormat("d.dd")
MsgBox.Report(s.asString,"Площадь квадратной буферизации темы"++Vt.GetName)
0 голосов
ответил 15 Окт, 08 от Berty (580 баллов)
Вот на вскидку
работает с первой попавшейся активной темой
создай в виде кнопку - повесь на нее
Vt = av.GetActiveDoc.GetActiveThemes.Get(0).GetFtab
pgn = Polygon.MakeNull
For each i in vt
pnt = Vt.ReturnValue(vt.GetFields.Get(0),i)
rct = Rect.Make((Pnt.GetX-250)@(pnt.GetY-250),500@500)
pgn = pgn.ReturnUnion(rct)
end
s = pgn.ReturnArea
s.setFormat("d.dd")
MsgBox.Report(s.asString,"Площадь квадратной буферизации темы"++Vt.GetName)

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





этот скрипт на сайте отсутствует :(
можете прислать его мне на почту?


скрипт Григория не видно через меню екстеншион (пробовал на разных компьютерах), я об этом уже писал...
если у Вас рабочая версия, пришлите на почту плиз!

to geologiс - Ваш способ пока не испытал :)

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