Загрузка координат в ArcView 3.3

0 голосов
спросил 08 Сен, 11 от Virpul (380 баллов) в категории Программные продукты Esri
У меня есть координаты объектов, около сотни координат на объекте, можно ли загрузить эти координаты скопом, хотябы создавая один объект, а то мучатся создавать полигон и потом редактировать его создавая новые 50 точек как то долгова-то))

4 Ответы

0 голосов
ответил 08 Сен, 11 от peter1 (7,760 баллов)
грузите таблицей txt или dbf, потом строите точки по координатам, потом точки в линии, а линии полигоны. в таблице должен быть индентификатор полигонов и порядок точек для каждого полигона не нарушен. стандартными средствами этого не сделать, для этого в сети есть скрипты- http://arcscripts.esri.com/
0 голосов
ответил 08 Сен, 11 от Virpul (380 баллов)
ааа а перевода сайта нету))
если можете дайте ссылку на нужные скрипты
и пожалуйста по подробнее с загрузкой если есть txt файлик с координатами, заранее благодарен.
0 голосов
ответил 08 Сен, 11 от Lord (3,920 баллов)
Эта штука вводит объекты в любые темы.
Но только в одну, включенную на редактирование.
Текстовый файл следующих структур
числоХ числоУ   
текст числоХ числоУ
текст числоХ числоУ числоН
координаты геодезические
Разделители: пробел, точка с запятой, табуляция
десятичная точка: точка или запятая
Повесить данный скрипт на кнопку в виде
При вводе можно задать смещение

'bbbbbb.InputCoord Ввод объекта по координатам из текстового файла
' При нажатии клавиши CONTROL запрос на наименование объекта не выдается;
'                     объектам присваивается имя файла. Если перед координатами обекта записана
'                     строка вида @O<имя>, то имя заносится в поле Name_Obj "наименование объекта"
'                     Обязательно присутствие символов "@" и "O" - латинская прописная буква.
'                     символы, следуюшие за @O воспинимаются как имя, начальные и конечные пробелы отсекаются.
If (System.IsControlKeyDown) Then NoName=false else Noname=true end
Adoc=av.GetActiveDoc
if (Adoc.Is(View).not) then exit end
tm=Adoc.GetEditableTheme
if (tm=nil) then
MsgBox.Error("Нет принимающей темы, включенной на редактирование!","Ошибка записи")
exit
end
ftm=tm.GetFTab
tk=ftm.GetShapeClass.GetClassName
if (tk="Polygon") then tc=3
elseif
   ((tk="PolyLine") or (tk="Line")) then tc=2
elseif
   ((tk="MultiPoint") or (tk="Point")) then tc=1
else tr=0
end
i=0
theFiles=FileDialog.ReturnFiles({"*"}, {"Любые файлы (*.*)"},"Файлы с координатами",0)
if (theFiles.Count=0) then exit end
Shft=MsgBox.MultiInput("Задайте смещение координат","Ввод координат из файлов",
                   {" dX_Geo - Вертикальное смещение",
                    "dY_Geo - Горизонтальное смещение"},{"0","0"})
if (Shft.IsEmpty) then exit end ' Нажата кнопка "Cancel"
Xnew=Shft.Get(0).Substitute(",",".").AsNumber
Ynew=Shft.Get(1).Substitute(",",".").AsNumber

' Установка полей принимающей темы

sd=ftm.FindFIeld("ID")
if (sd = Nil) then
fld=Field.Make("ID",#FIELD_FLOAT,8,0)
fld.SetAlias("Номер") ftm.AddFields({fld})
sd=ftm.FindFIeld("ID")
end
si=ftm.FindFIeld("IDENT")
if (si = Nil) then
fld=Field.Make("IDENT",#FIELD_CHAR,20,0)
fld.SetAlias("Объект") ftm.AddFields({fld})
si=ftm.FindFIeld("IDENT")
end
so=ftm.FindFIeld("Name_Obj")
if (so = Nil) then
fld=Field.Make("Name_Obj",#FIELD_CHAR,32,0)
fld.SetAlias("Имя объекта") ftm.AddFields({fld})
so=ftm.FindFIeld("Name_Obj")
end
if (tc=1)then
fL1=ftm.FindField("ID_pnt")
if (fL1=nil) then
    fL1=Field.Make("ID_PNT",#FIELD_CHAR,6,0)
    ftm.AddFields({fL1})
    fL1.SetAlias("№_т.")
end
fL2=ftm.FindField("Y_pnt")
if (fL2=nil) then
    fL2=Field.Make("Y_PNT",#FIELD_FLOAT,14,3)
    ftm.AddFields({fL2})
    fL2.SetAlias("X_Geo_Vert")
end
fL3=ftm.FindField("X_pnt")
if (fL3=nil) then
    fL3=Field.Make("X_PNT",#FIELD_FLOAT,14,3)
    ftm.AddFields({fL3})
    fL3.SetAlias("Y_Geo_Gorz")
end
fL4=ftm.FindField("H_pnt")
if (fL4=nil) then
    fL4=Field.Make("H_PNT",#FIELD_FLOAT,10,3)
    ftm.AddFields({fL4})
    fL4.SetAlias("H_Geo")
end
end
sh=ftm.FindField("Shape")

for each theFile in theFiles
NewFile=TRUE H_point=False New_Obj=False Obj_name="" ii=0
kftm = ftm.GetNumRecords + 1
fft=LineFile.Make(TheFile,#FILE_PERM_READ)
FnFl=fft.GetFileName.GetBaseName.AsString

lin = List.Make
if (tc=1) then idents=List.Make spnt=List.Make zpnt=List.Make end
FirstPoint=true More=False Poly={}

while (fft.isAtEnd.not)
    NewFile=FALSE lpnt=fft.ReadElt
    if (lpnt.Contains("@O")) then
      if ((New_obj) and ((Poly.Count>0) or (Lin.Count>0))) then ' Много объектов в файле
        nam=FnFl ' имя источника
        if (tc=1) then
          ii=0
          if (Noname) then
            nam=MsgBox.Input("Имя или код источника координат",
                             "Новые точечные объекты",FnFl)
          end
          for each pt in lin
            nr=ftm.AddRecord
            ftm.SetValue(sh,nr,Point.Make(lin.Get(ii).GetX,Lin.Get(ii).GetY))
            ftm.SetValue(fL1,nr,idents.Get(ii).AsString)
            ftm.SetValue(fL2,nr,spnt.Get(ii).GetY)
            ftm.SetValue(fL3,nr,spnt.Get(ii).GetX)
            if (H_point) then
              ftm.SetValue(fL4,nr,zpnt.Get(ii))
            end
            ftm.SetValue(sd,nr,kftm+ii)
            ftm.SetValue(si,nr,nam.AsString)
            ftm.SetValue(so,nr,Obj_Name.AsString)
            ii=ii+1
          end
        else
          if (More.Not) then Poly.Add(lin.AsList) end
          if (tc=3) then
              NewObject=Polygon.Make(Poly) aa="Полигона № "
            else
              NewObject=PolyLine.Make(Poly) aa="Линии № "
   
0 голосов
ответил 09 Сен, 11 от Leo_SS (6,820 баллов)
Уважаемый Virpul скачайте "Пакет специализированных модулей для ArcView". В нем есть модуль "GeoTop" и "LeoHelp" которые помогут Вам решить эти задачи.   
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...