java处理Arcgis导出的DEM栅格文件data.asc
1、关于栅格数据文件读者可用自己的作者在百度云网盘分享了一个dataDEM.aschttp://pan.baidu.com/s/1o61C7W2

2、【新建工程】



4、【解读文件头包含的信息】包括这个文竭惮蚕斗件的行数、列数 //////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////// public static GridFileHead ReadGridFileHead(String filePath){ GridFileHead gridUnit=new GridFileHead(); try{ DataInputStream in=new DataInputStream(new FileInputStream(filePath)); int fileSize=512; byte []btData=new byte[fileSize]; in.read(btData); String str=new String(btData); String splitTab="\t"; String []strData=str.split("\n"); int tabIndex=strData[0].indexOf(splitTab); if(tabIndex==-1){ splitTab=" "; } String []tempData=strData[0].split(splitTab); gridUnit.ncols=Integer.parseInt(tempData[tempData.length-1].trim()); tempData=strData[1].split(splitTab); gridUnit.nrows=Integer.parseInt(tempData[tempData.length-1].trim()); tempData=strData[2].split(splitTab); gridUnit.xllcorner=Double.parseDouble(tempData[tempData.length-1].trim()); tempData=strData[3].split(splitTab); gridUnit.yllcorner=Double.parseDouble(tempData[tempData.length-1].trim()); tempData=strData[4].split(splitTab); gridUnit.cellsize=Double.parseDouble(tempData[tempData.length-1].trim()); tempData=strData[5].split(splitTab); gridUnit.NODATA_value=Integer.parseInt(tempData[tempData.length-1].trim()); in.close(); } catch(IOException ex){ ex.printStackTrace(); } return gridUnit; }

6、【将运算或者其它处理完后的二维数组老揉孟阼写入到新的文件】 //////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////// public static void writeDoubleArray2DtoGridFile( String filePath, double[][]arrDouble2D, GridFileHead gridFileHead ){ try{ File hFileCreate = new File(filePath); hFileCreate.createNewFile(); RandomAccessFile hFileWrite = new RandomAccessFile(filePath,"rw"); //写文件头 String strHead="ncols "+gridFileHead.ncols+"\r\n"+ "nrows "+gridFileHead.nrows+"\r\n"+ "xllcorner "+gridFileHead.xllcorner+"\r\n"+ "yllcorner "+gridFileHead.yllcorner+"\r\n"+ "cellsize "+gridFileHead.cellsize+"\r\n"+ "NODATA_value "+gridFileHead.NODATA_value+"\r\n"; hFileWrite.write((strHead).getBytes()); //写数据内容 for(int i=0;i<arrDouble2D.length;i++){ String line=""; for (int j = 0; j < arrDouble2D[i].length; j++) { line+=arrDouble2D[i][j]+" "; } line+="\r\n"; hFileWrite.write((line).getBytes()); } hFileWrite.close(); } catch (IOException e) { e.printStackTrace(); } }

8、【导出为可运行的jar文件】

