есть координаты вершин -->полигон (как?)

0 голосов
спросил 28 Март, 05 от Гость (210,080 баллов) в категории Программные продукты Esri
Есть таблица: координаты вершин (точечная тема) полигонов и порядок их соединения. Каким способом можно их соединить что-бы получить полигоны (автоматом) в ArcView 3.1  или в MarInfo (Surfer)

7 Ответы

0 голосов
ответил 29 Март, 05 от Гость (210,080 баллов)

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

0 голосов
ответил 29 Март, 05 от S.E. (12,840 баллов)

Попробуй ГИС-Картограф поюзать.

http://www.dataplus.ru/Root/Scripts/Index.asp

0 голосов
ответил 29 Март, 05 от PAS (2,860 баллов)
Можно набросать скрипт при наличии образца таблицы
 
0 голосов
ответил 29 Март, 05 от Гость (210,080 баллов)

есть таблица такого вида:
_______________________
|  N_pp  |      X      |      Y        |
----------------------------------------------
|    1      | 49,4567 | 34,2387  |
----------------------------------------------
|    2      | 49,1777 | 34.8753  |
----------------------------------------------
|    3      | 49,3458 | 34,9766  |
----------------------------------------------
|    4      | 49,5622 | 34, 3891 |
----------------------------------------------
|    5      | 49,5441 | 34,2267  |
----------------------------------------------
|    1      | 49,3481 | 34,0966  |
----------------------------------------------
|    2      | 49,7812 | 34.8923  |
----------------------------------------------
|    3      | 49,4573 | 34,1108  |
----------------------------------------------
 ну и т.д. , где N_pp - номер по порядку соедининия вершин полигона, XY - координаты вершин полигона
Как видите первый полигон имеет пять вершин, второй - три. Всего в таблице полигонов больше сотни  с разным числом вершин (от четырех вершин и до 15-ти). Как построить (автоматом) все полигоны с таблицы. Скрипты пока не научился писать.

Заранее спасибо

0 голосов
ответил 30 Март, 05 от PAS (2,860 баллов)
Если создать из вашей таблицы текстовый файл такого содержания
 
    1       49.4567   34.2387
    2       49.1777   34.8753
    3       49.3458   34.9766 
    4       49.5622   34.3891
    5       49.5441   34.2267 
    
    1       49.3481   34.0966 
    2       49.7812   34.8923 
    3       49.4573   34.1108 
 
то запустив нижеприведенный скрипт, получите полигоны в активном виде. 
 
 
theFileName = FileDialog.Show ("*", "", "Выбор файла данных")
if (theFileName = nil) then return 0 end
lf = LineFile.Make(theFileName, #FILE_PERM_READ)
 
Massiv = {}
lPnt   = {}
NEXT   = FALSE
 
while (lf.IsAtEnd.NOT)
  buf = lf.ReadElt
  buf = buf.Trim
  if (buf.Trim="") then continue end
 
  s1 = buf.Extract(0).AsNumber
  s2 = buf.Extract(1).AsNumber
  s3 = buf.Extract(2).AsNumber
  pnt = Point.Make(s2, s3)
 
  if ((s1=1) AND (NEXT)) then
    Massiv.Add(lPnt.Clone)
    lPnt.Empty
    lPnt.Add(pnt)
  else
    lPnt.Add(pnt)
    NEXT = TRUE
  end
end
lf.Close
 
Massiv.Add(lPnt.Clone) ' последний полигон
 
' создание полигональной темы
theTab = FTab.MakeNew("pgn.shp".AsFileName, Polygon)
theFld = Field.Make("ID", #FIELD_DECIMAL, 5, 0)
theFld.SetVisible ( TRUE )
theTab.AddFields  ({theFld})
 
id=1
for each l in Massiv
'  MsgBox.ListAsString(l, "", "")
  pgn = Polygon.Make ({l})
  rec = theTab.AddRecord
  theTab.SetValue (theTab.FindField("Shape"), rec, pgn)
  theTab.SetValue (theTab.FindField("ID"),    rec, id)
  id=id+1
end
 
theTab.SetEditable(False)
 
theView  = av.GetActiveDoc
theTheme = FTheme.Make(theTab)
theView.AddTheme(theTheme)
theTheme.SetActive (TRUE)
theTheme.SetVisible(TRUE)
 
 
0 голосов
ответил 07 Апр, 05 от Iliya (1,120 баллов)
есть скрипт по переделке таких файлов в формат bna - и импорту в ArcView -пользуюсь - очь доволен.
Если интересно могу скрипт выслать
0 голосов
ответил 07 Апр, 05 от yumakaev (5,140 баллов)
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...