ArcGIS与*.dem
分享
*.dem在ArcGIS中打开
DEM是在日常应用中经常用到的数据,做填挖方分析、三维场景展示、影像图的正射校正、水文分析等等。由于项目或者工程我们需要买一些DEM,其中*.dem是最常见到的DEM的格式,*.dem有两种格式,NSDTF和USGS。
如果是USGS格式的DEM,就很好办了。通过ArcGIS可以直接读取。USGS-DEM(USGS是美国地质调查局(U.S.Geological Survey)的英文缩写,是一种公开格式的DEM数据格式标准,使用范围较广格式的。在ArcGIS中的ArcToolBox中的“转换工具”—“转到栅格”—-“DEM转到栅格”工具直接将USGS格式的DEM转为栅格DEM。
但我们购买的DEM很多都是NSDTF-DEM格式,NSDTF-DEM是中华人民共和国国家标准地球空间数据交换格式,是属于格网数据交换格式,一般的GIS软件都不支持这种格式。下面我们就看一下如何在ArcGIS中打开这个格式的DEM。
首先用记事本打开*.dem,来分析一下这个格式的头文件是如何表示的。
从上到下,看一下每一行数值或者代码都代表什么意思:
M:坐标单位,K表示公里,M表示米,D
表示以度为单位的经纬度,S表示以度分秒表示的经纬度。
0:方向角。
0:压缩方法。0表示不压缩,1表示游程编码。
36212435.000000:左上角原点X坐标
3243120.000000:左上角原点Y坐标
5:X方向的间距。
5:Y方向的间距。
962:行数
1252:列数
100:高程值的放大倍数
–在后面就具体的栅格值了,其中-99999表示该处为NODATA。
由于栅格单元数据值记录方式基本一样,主要是头文件信息不同。如ArcGIS GRID数据的文件头按如下方式记录相关信息:
ncols 962
nrows 1252
xllcorner 36212435
yllcorner 3243120
cellsize 5
NODATA_value -99999
如果我们将上面的NSDTF格式的头文件改为Grid的头文件格式,其中高程值不变,就完全可以在ArcGIS中查看这个*.dem。(最好将后缀名改为*.grd。改了头文件之后,该文件已经变成grid文件)。这样通过修改这个*dem的头文件就可以直接将它转换为grd文件。
要是有成千上百个NSDTF格式的DEM,可能就不能考虑去一个一个修改头文件了。需要我们通过程序的方式来修改或者已经利用GDAL开源库。
……………………………………………….
StreamWriterstreamWriter = newStreamWriter(outFullName, false);
streamWriter.WriteLine(“{0} {1} {2} {3} {4} {5} {6} “,
int(rows), int(cols), extent.UpperLeft.X, extent.UpperLeft.Y, cellsize , -99999);
for (int i = 0; i < rows; i++)
{
for (int j = 0; j <cols; j++)
{
streamWriter.Write(“{0}{1}”, cells.GetValue(j, rows-1-i), ((j + 1) % 10 == 0) ? ” “ : ” “);
}
streamWriter.WriteLine();
}
streamWriter.Close();
文章来源:http://blog.csdn.net/sydbc/article/details/17355793
DEM是在日常应用中经常用到的数据,做填挖方分析、三维场景展示、影像图的正射校正、水文分析等等。由于项目或者工程我们需要买一些DEM,其中*.dem是最常见到的DEM的格式,*.dem有两种格式,NSDTF和USGS。
如果是USGS格式的DEM,就很好办了。通过ArcGIS可以直接读取。USGS-DEM(USGS是美国地质调查局(U.S.Geological Survey)的英文缩写,是一种公开格式的DEM数据格式标准,使用范围较广格式的。在ArcGIS中的ArcToolBox中的“转换工具”—“转到栅格”—-“DEM转到栅格”工具直接将USGS格式的DEM转为栅格DEM。
但我们购买的DEM很多都是NSDTF-DEM格式,NSDTF-DEM是中华人民共和国国家标准地球空间数据交换格式,是属于格网数据交换格式,一般的GIS软件都不支持这种格式。下面我们就看一下如何在ArcGIS中打开这个格式的DEM。
首先用记事本打开*.dem,来分析一下这个格式的头文件是如何表示的。
从上到下,看一下每一行数值或者代码都代表什么意思:
M:坐标单位,K表示公里,M表示米,D
表示以度为单位的经纬度,S表示以度分秒表示的经纬度。
0:方向角。
0:压缩方法。0表示不压缩,1表示游程编码。
36212435.000000:左上角原点X坐标
3243120.000000:左上角原点Y坐标
5:X方向的间距。
5:Y方向的间距。
962:行数
1252:列数
100:高程值的放大倍数
–在后面就具体的栅格值了,其中-99999表示该处为NODATA。
由于栅格单元数据值记录方式基本一样,主要是头文件信息不同。如ArcGIS GRID数据的文件头按如下方式记录相关信息:
ncols 962
nrows 1252
xllcorner 36212435
yllcorner 3243120
cellsize 5
NODATA_value -99999
如果我们将上面的NSDTF格式的头文件改为Grid的头文件格式,其中高程值不变,就完全可以在ArcGIS中查看这个*.dem。(最好将后缀名改为*.grd。改了头文件之后,该文件已经变成grid文件)。这样通过修改这个*dem的头文件就可以直接将它转换为grd文件。
要是有成千上百个NSDTF格式的DEM,可能就不能考虑去一个一个修改头文件了。需要我们通过程序的方式来修改或者已经利用GDAL开源库。
……………………………………………….
StreamWriterstreamWriter = newStreamWriter(outFullName, false);
streamWriter.WriteLine(“{0} {1} {2} {3} {4} {5} {6} “,
int(rows), int(cols), extent.UpperLeft.X, extent.UpperLeft.Y, cellsize , -99999);
for (int i = 0; i < rows; i++)
{
for (int j = 0; j <cols; j++)
{
streamWriter.Write(“{0}{1}”, cells.GetValue(j, rows-1-i), ((j + 1) % 10 == 0) ? ” “ : ” “);
}
streamWriter.WriteLine();
}
streamWriter.Close();
文章来源:http://blog.csdn.net/sydbc/article/details/17355793
0 个评论
推荐内容
相关问题
- 如何优雅的使用ArcGIS知乎?
- 建设ArcGIS知乎平台的目和意义?
- ArcGIS知乎社区改进意见征集
- 【抽奖结果已出】ArcGIS知乎社区活动 之 你不知道的地理空间革命【转发分享有奖】【附奖品寄送照片】
- 苹果系统下可以使用arcgis 吗?
- arcgis版本兼容性
- 请问ArcGIS适合在局域网内用javaweb做二次开发吗?
- ArcGIS 知乎社区活动 之 2018拒绝boring,来,在线答题赢kindle【结果已出,速来领奖】
- ArcGIS 知乎社区活动 之 字幕组加鸡腿暨KBP字幕组招新【获奖名单公布与优秀作品展示】
- 请问大神们,怎么用ArcGIS做城镇间经济联系强度的图?
- 在Visual studio 2015 中使用 Arcgis API for JavaScript v3.16 如何实现代码智能提示?