Re: [問題] GIS 批次輸入Attributes Table

看板Geography作者 (?)時間13年前 (2011/03/08 22:47), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串5/7 (看更多)
※ 引述《MAGICXX (逢甲阿法)》之銘言: : 因為我這邊有上萬組的資料需要輸入點圖層 : 可是我現在遇到幾個問題 : 1. : 我輸入field name的時候只輸入"數字"就會無法進行idw的動作 : 請問一下 這是他軟體的限制嗎? : 還是說哪邊可以修改? : 2. : 因為我的資料量很龐大 要是一組一組的新增field的話 : 會花非常久的時間(更別提我之後還要再進行idw了..) : 請問有辦法可以直接打開excel檔進行批次處理嗎? : 就是把excel檔轉換成一個圖層 或者是把它直接加入我原本的點圖層裡面? : 因為我現在有大概12個點 : 需要每個field都輸入不同的資料(這field大概有幾萬筆..) : http://tinyurl.com/6ktrsu8 : 像這張圖 不過他會需要一直往右邊延伸(幾萬筆...囧) : 請問有比較快的方法嗎 囧 : 一個一個輸入 可能會死人Orz : 請大大們幫忙一下 謝謝 你的問題看來必須要用一點VBA才能解決 假設你的point.shp有5個點,各點欄位Name分別為A, B, C, D, and E 並新增一欄位value (float) 你的Excel試算表資料格式如下 date , A, B, C, D, E 1999010, 1, 1, 1, 1, 1 1999011, 2, 2, 2, 3, 4 1999012, 4, 1, 1, 2, 2 ..................... 以下為我半生不熟的VBA寫的code,裡面可能還有不少bug,原PO你可能要自己debug Private Sub batchIDW() '讀取excel Set myExcel = CreateObject("Excel.Application") With myExcel .Workbooks.Open "C:\test\data.xls" '要打開的 xls 檔案 Set rng = .ActiveSheet.UsedRange row_c = rng.Rows.Count '讀取row數量 '呼叫toolbox Dim GP As Object Set GP = CreateObject("esriGeoprocessing.GpDispatch.1") 'Set the toolbox GP.Toolbox = "C:\Program Files\ArcGIS\ArcToolBox\Toolboxes\ Data Management Tools.tbx" Dim ss as string ' 用來儲存calculate field的 VB code '開始迴圈 for i = 0 to row_c dim output as string '從excel欄位讀取第i行的數值 output = "C:\test\IDW" & .Worksheets("Sheet1").Range("A" & i) Value_A = .Worksheets("Sheet1").Range("B" & i) Value_B = .Worksheets("Sheet1").Range("C" & i) Value_C = .Worksheets("Sheet1").Range("D" & i) Value_D = .Worksheets("Sheet1").Range("E" & i) Value_E = .Worksheets("Sheet1").Range("F" & i) 寫calculate field的 VB code ss = "dim a as string" ss = ss & "\n if [name] = ""A"" then a = " & Value_A ss = ss & "\n elseif [name] = ""B"" then a = " & Value_B ss = ss & "\n elseif [name] = ""C"" then a = " & Value_C ss = ss & "\n elseif [name] = ""D"" then a = " & Value_D ss = ss & "\n elseif [name] = ""E"" then a = " & Value_E ss = ss & "\n end if" gp.calculateField "C:\test\point.shp", "value", "VB", ss '將此列數直寫入value欄位 GP.Toolbox = "C:\Program Files\ArcGIS\ArcToolBox\Toolboxes\Spatial Analyst Too ls.tbx" 'IDW內插 gp.idw "C:\test\point.shp", "value", output, 100 'idw內插 cell size = 100m next '結束迴圈 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.62.60 ※ 編輯: twmtman 來自: 111.243.62.60 (03/08 23:04)

03/09 11:20, , 1F
感謝!!可惜我沒有資工背景...我再請同學幫我看看!!
03/09 11:20, 1F

03/09 11:21, , 2F
多謝大大的強力支援!
03/09 11:21, 2F
文章代碼(AID): #1DTa6N1x (Geography)
討論串 (同標題文章)
文章代碼(AID): #1DTa6N1x (Geography)