ПОМОГИТЕ РЕШИТЬ ПРОБЛЕМУ

0 голосов
спросил 04 Фев, 03 от Гость (210,080 баллов) в категории Программные продукты Esri
Есть две темы - одна точечная (30 000 обьектов с атрибут ) и другая полигональная (300 обьектов)

Полигонам соответсвуют (находятся в периметре полигонов) 3-4-..... точки

Можно ли сделать так чтобы на каждом полигоне осталось по одной точкой

ВАЖНО - точки в периметре каждого полигона с  идентичной атрибутикой

2 Ответы

0 голосов
ответил 05 Фев, 03 от Albert1 (10,780 баллов)
в точечной теме заводишь поле identif (текстовое), используешь нижеприведенный скрипт и в поле идентиф появляются единички - эти точки в полигонах будут уникальные - выбираешь их и копируешь в другую тему или просто грохаешьь  остальные....
Script.The.SetNumberFormat( "d.dddd")
av.GetProject.SetModified(true)
theView = av.GetActiveDoc
thethemes = theView.GetThemes
if (thethemes.IsEmpty) then
exit
end
fromtheme = MsgBox.ListAsString (theThemes,"Укажите полигональную тему","")
totheme = MsgBox.ListAsString (theThemes,"Укажите точечную тему","")
if ((fromtheme=NIL) or (totheme=NIL)) then
exit
end

fromFTab=fromTheme.GetFTab
toFTab=toTheme.GetFTab


' Инициализация полей
FromShp = fromFTab.FindField( "Shape" )

toShp = toFTab.FindField( "Shape" )
toX = toFTab.FindField( "identif" )

if (toFtab.StartEditingWithRecovery) then
   for each aRec in fromFTab 'здесь aRec - номер записи в таблице
       FromShpVal = fromFTab.ReturnValue( FromShp,aRec )
           for each aRec1 in toFTab
               toShpVal = toFTab.ReturnValue( toShp,aRec1 )
               if (fromshpVal.Contains(toshpVal)) then
                 toFTab.setvalue(toX, arec1, "1")
                 break
               end
            end
        end
    end

toFTab.StopEditingWithRecovery(TRUE)
theView.Invalidate
0 голосов
ответил 05 Фев, 03 от Гость (210,080 баллов)
Спасибо. Все нормально сработало
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...