最近遇到DEM数据格式转换的问题。问题缘由要把一批DEM数据通过ArcSDE入库,但是手上已有的数据的格式是TXT(记录点的X,Y,Z)和DXF,这两种格式却都不能直接导入。上网找了一些方法,自己也动手做了试验,把两种可行的方法总结如下:
1. TXT——(Access)数据库表——(ArcMap)shp——(3D Analyst)TIN——(ArcToolbox)Raster
(1)用Access导入TXT文件,转换为数据库表,相应的字段给予对应的字段名称(如:X,Y,Z);
(2) ArcMap—>Tools菜单—>Add XY Data对话框,选择转换后的数据库表,为X和Y 选择对应的字段名称,必要时定义投影信息。新文件绘制完毕,在文件名上右键单击,选择Data—>Export Data,输出点shp文件;
(3) 加载3D Analyst工具条,3D Analyst—>Create/Modify TIN—>Create TIN From Features,选择上一步生成的shp文件,并制定高程值对应的字段名,生成TIN;
(4) ArcToolbox—>3D Analyst Tools—>Conversion—>From TIN—>TIN to Raster,生成GRID格式的Raster数据集。
现在可以通过ArcSDE导入数据库了。呵呵,这是从网上找到的方法,行的通,但是我们有几百个数据,这样一个个的转换工作量着实不小。第二个方法是自己摸索出来的。
2. TXT——(VirtuZo).grd——(ArcToolbox)Raster
(1)通过VirtuZo软件,把TXT文件转换为后缀名为.grd的文件,其实按理.grd文件是ArcInfo Grid交换格式文件。这里要注意的是这个文件的头文件格式如下:
ncols 数据列数
nrows 数据行数
xllcorner 数据左上角的X值
yllcorner 数据左上角的Y值
cellsize 数据分辨率
NODATA_value 无值数据标志(一般-99999)
通过VirtuZo转出来的文件可能头文件有点出入,需要按照这个格式进行调整,幸好它是明码文件,呵呵;
(2)通过批量改名,把grd的后缀改为txt或asc,这是因为转换的源文件它只认这两个后缀的文件;
(3)ArcToolbox—>Conversion Tools—>To Raster—>ASCII to Raster,生成GRID格式的Raster数据集。
这个方法其实也还是一个个文件转换的,只不过步骤少一点。但是这个方法还有几个要注意的地方:a.不同的DEM的分辨率可能不同,用VirtuZo转换的时候要根据实际数据设置参数;b.头文件格式调整,上面提到的;c.转换成的.grd文件高程值是用整数值存储高程的,如果想保留数据的精度,需要在转换中设置高程缩放参数,然后生成DEM之后,需要用DEM代数运算除去缩放的参数,还原原始的高程值,这个过程我用Model Builder搭了一个简单的模型,简化一点步骤,嘿嘿。
以上只是我的摸索,希望不是误导,亦欢迎讨论和纠错