Как снять точки рельефа...

0 голосов
спросил 03 Ноя, 09 от Temka13 (220 баллов) в категории Программные продукты Esri
Подскажите плиз как можно линией снять точки (координаты и высоту) с шейп файла рельефа???

11 Ответы

0 голосов
ответил 03 Ноя, 09 от Temka13 (220 баллов)
Забыл сказать.. у меня ArcGIS 9.3...

В итоге мне нужно получить график рельефа...)

0 голосов
ответил 03 Ноя, 09 от Afon1 (4,480 баллов)
в geofaq.ru было по моему
0 голосов
ответил 03 Ноя, 09 от medwed (900 баллов)
Если на выходе нужно получить шейп на выходе, то проблема. Лично я строю профиль в ArcView 3.2 с помощью Razrez Builder. В ArcGIS 9.3 штатного инструмента нет, а те бесплатные дополнения, что я встречал на входе требуют растр, а не шейп.
0 голосов
ответил 04 Ноя, 09 от Temka13 (220 баллов)
 А что за функция Razrez Builder? в ArcView 3.2 не нашел такой... (
0 голосов
ответил 05 Ноя, 09 от Afon1 (4,480 баллов)
у мя скрипт был под АркВЮ 3,2, найду скину
для снятия координат и Z значений точек пересечения линии с горизонтальями рельефа
когдато когда был у нас только ВЮ 3,2 мы с помощью этого скрипта профили и строили
интересно что до сих пор актуальна эта проблемка и не внесено в штатку ГИСа
0 голосов
ответил 05 Ноя, 09 от medwed (900 баллов)
white.medwed@gmail.com — мое мыло. Напишите - скину скрипт.

2Afon
интересно что до сих пор актуальна эта проблемка и не внесено в штатку ГИСа
Sad but true :(

В том виде, в котором эта функция требуется большинству пользователей, в ArcGIS нет :( Все имеющиеся плагины к ArcGIS для построения разрезов и профилей либо платные, либо работают с растрами.
0 голосов
ответил 05 Ноя, 09 от geologic (39,860 баллов)
Векторные трехмерные построения - это не ГИСовская сфера, поэтому удивляться тут нечему. Инструмент этот не единственный для трехмерки, и ГИС-разработки вряд ли двинутся в этом направлении... Но простой интерсект решит именно эту проблему ;) Не помню как его делать в AM 9x, чтобы атрибуты сохранялись, а для AV3x вот проверенный скриптик - не раз вместе с ним приходилось тальвеги трехмерить.

Статьи на тему "Как трехмерить векторы средствами ГИС" на geoFAQ нету, все недосуг. Однако сам принцип отработан и описан, могу поделиться черновым текстом.

Скрипт вот: по любой линии делает точки с атрибутами любых пересекаемых линий. Собрать точки в уже трехмерный профиль - понятное дело, EditTools. Тоолько для настоящего профиля этого мало, сами понимаете.

'---------------------------------------------------
' Name: view.polyint2pnt
'
' Title: Locate intersections points of polylines or polygon boundaries.
'
' Topics: Analysis
'
' Description: Calculates the location of intersections points of two
'               themes: polylines and/or polygon. Feature attributes for
'               both input feature themes are included in the new point
'               theme attrubute table.
'
' Requires: A ViewGUI Buttonbar button or Menu item
'
' Self: NIL
'
' Returns: NIL

'------ snag the themes -------
theTitle = "Polyline Intersections to Points"
theThemes = av.getActiveDoc.GetThemes

if (theThemes.Count < 2 ) then
Return NIL
end
theLineThemes = {}
for each thm in theThemes
if ((thm.GetFTab.FindField("shape").GetType = #FIELD_SHAPELINE) OR (thm.GetFTab.FindField("shape").GetType = #FIELD_SHAPEPOLY)) then
    theLineThemes.Add(thm)
end
end
if (theLineThemes.Count < 2 ) then
Return NIL
end
the2Themes = MsgBox.MultiList(theLineThemes,"Select two polyline themes:",theTitle)
if (the2Themes = NIL) then Return NIL end
if (the2Themes.Count <> 2 ) then
Return NIL
end
fTab0 = the2Themes.Get(0).GetFTab
shpFld0 = fTab0.FindField("shape")
    fList0 = {}
    for each f in fTab0.GetFields
      if (f.IsTypeShape.not) then
        fList0.Add(f.Clone)
      end
    end
    if (fTab0.GetSelection.Count > 0) then
      colToProc0 = fTab0.GetSelection
      nRecs0 = colToProc0.Count
    else
      colToProc0 = fTab0
      nRecs0 = colToProc0.GetNumRecords
    end
fTab1 = the2Themes.Get(1).GetFTab
shpFld1 = fTab1.FindField("shape")
    fList1 = {}
    for each f in fTab1.GetFields
      if (f.IsTypeShape.not) then
        fList1.Add(f.Clone)
      end
    end
    if (fTab1.GetSelection.Count > 0) then
      colToProc1 = fTab1.GetSelection
      nRecs1 = colToProc1.Count
    else
      colToProc1 = fTab1
      nRecs1 = colToProc1.GetNumRecords
    end
'------- create a new point theme with fields -------
fnDefault = FileName.Make("$HOME").MakeTmp("shape","shp")
fnOutput = FileDialog.Put( fnDefault,"*.shp","Output Shape File" )
if (fnOutput = nil) then exit end
fnOutput.SetExtension("shp")
outFTab = FTab.MakeNew( fnOutput, POINT )
idField = Field.Make("ID",#FIELD_DECIMAL,11,0)
outFTab.AddFields({idField})
outFTab.AddFields(fList0)
outFTab.AddFields(fList1)

'------- intersect the shapes -------
nCount = 0
theID = 1
av.ShowMsg("Intersecting Shapes")
for each rec0 in colToProc0
shp0 = fTab0.ReturnValue(shpFld0,rec0)
for each rec1 in colToProc1
    shp1 = fTab1.ReturnValue(shpFld1,rec1)
    theMultiPoint = MultiPoint.MakeEmpty
    theMultiPoint = shp0.PointIntersection (shp1)
    outShpFld = outFTab.FindField("Shape")
    if (theMultiPoint <> NIL) then
      thePoints = theMultiPoint.AsList
      for each pnt in thePoints
        newRec = outFTab.AddRecord
        outFTab.SetValue(outShpFld, newRec, pnt)
        outFTab.SetValue(outFTab.FindField("ID"), newRec, theID)
        theID = theID + 1
        for each f in 1 .. (fTab0.GetFields.Count-1)
          theValue = fTab0.ReturnValue(fTab0.GetFields.Get(f),rec0)
          outFTab.SetValue(outFTab.GetFields.Get(f+1),newRec,theValue)
        end
        for each f in 1 .. (fTab1.GetFields.Count-1)
          theValue = fTab1.ReturnValue(fTab1.GetFields.Get(f),rec1)
          outFTab.SetValue(outFTab.GetFields.Get(f+fTab0.GetFields.Count),newRec,theValue)
        end
      end
    end
end
nCount = nCount + 1
av.SetStatus((nCount / nRecs0) * 100)
end
av.ClearStatus
av.ClearMsg
    
if (MsgBox.YesNo("Add shapefile as theme to a view?",
theTitle, TRUE).Not) then
exit
end

'- add the new point theme to a view
lstViews = {}
for each d in av.GetProject.GetDocs
if (d.Is(View)) then
    lstViews.Add( d )
end
end
lstViews.Add("<New View>")

vweAddTo = MsgBox.ListAsString( lstViews,"Add Theme to:", theTitle )
if (vweAddTo <> nil) then
if (vweAddTo = "<New View>") then
    vweAddTo = View.Make
    vweAddTo.GetWin.Open
end
thmNew = FTheme.Make(outFTab)
vweAddTo.AddTheme( thmNew )
vweAddTo.GetWin.Activate
end
'-------------------------------------------------
0 голосов
ответил 06 Ноя, 09 от SV_P (9,350 баллов)
В принципе, если надо, могу положить на Arscripts Data+ расширение для тройки по построению разрезов. Оно конечно не супер, сделано еще года 3-4 назад по образу Морозовского Razrez билдера. Каждая скважина там в отдельной теме, чтобы легче было интервалы разносить и это создает кучу тем в Виде, но по крайней мере профили она строит. Причем на метровых и на градусных темах.
0 голосов
ответил 18 Ноя, 09 от kitrana (140 баллов)
privet ia geolog i znaiu program gis. no ne znaiu kak ispolzovac etot program na geologii.kak zdelac legko geologicheskie karti v spomosho gps kak vzac tochki i patom kak delac na gis? shto poluchic geologicheskuiu kartu. esli vi mojewe skazac i budu ochen blogodaren
0 голосов
ответил 28 Янв, 10 от robinzon_kruzo (1,640 баллов)
geolog shen shig xom ar gaq?
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...