作者twmtman (?)
看板Geography
标题Re: [问题] GIS 批次输入Attributes Table
时间Tue Mar 8 22:47:48 2011
※ 引述《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)
1F:推 MAGICXX:感谢!!可惜我没有资工背景...我再请同学帮我看看!! 03/09 11:20
2F:→ MAGICXX:多谢大大的强力支援! 03/09 11:21