CNSDTF-DEM转换USGS-DEM的Java代码实现
理论部分转载来源:https://blog.csdn.net/u013589768/article/details/80269078
代码实现:
package bjTransformData;
import java.io.*;
public class TransformTest {
public static void main(String[] args) throws IOException {
new TransformTest().transform();
}
public void transform() throws IOException {
File file = new File("C:\\Users\\huhu\\Desktop\\p");
File[] files = file.listFiles();
BufferedReader br = null;
BufferedWriter bw = null;
for (File file1 : files) {
System.out.println(file1.getPath());
//System.out.println(file1.getName());
try {
FileReader fr =new FileReader(file1.getPath());
br = new BufferedReader(fr);
USGS_DEM usgs_dem = new USGS_DEM();
String str = "";
String s = "";
// List<String> list = new ArrayList<>();
String[] sb;
while((str=br.readLine())!=null){
if(str.contains("X0")){
s=str.substring(4);
usgs_dem.setXllcorner(Double.parseDouble(s));
}
if (str.contains("Y0")){
s=str.substring(4);
usgs_dem.setYllcorner(Double.parseDouble(s));
}
if (str.contains("Row")){
s=str.substring(5);
usgs_dem.setNrows(Integer.parseInt(s));
}
if(str.contains("Col")){
s=str.substring(5);
usgs_dem.setNcols(Integer.parseInt(s));
}
if(str.contains("HZoom"))
{
s=str.substring(6);
usgs_dem.setHZoom(Integer.parseInt(s));
}
if(str.contains("Coordinate")){
break;
}
}
//输出文件
FileWriter fw = new FileWriter("C:\\Users\\huhu\\Desktop\\P1\\"+file1.getName());
bw = new BufferedWriter(fw);
bw.write("ncols:\t"+Integer.toString(+usgs_dem.getNcols()));
bw.write("\nnrows:\t"+Integer.toString(usgs_dem.getNrows()));
bw.write("\nxllcorner:\t"+Double.toString(usgs_dem.getXllcorner()));
bw.write("\nyllcorner:\t"+Double.toString(usgs_dem.getYllcorner()-usgs_dem.getNrows()*5));
bw.write("\ncellsize:\t5.00");
bw.write("\nNODATA_value:\t-9999\n");
while((str=br.readLine())!=null){
sb=str.split("");
for (String s1 : sb) {
bw.write(s1);
}
bw.write("\n");
}
} catch (IOException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
e.printStackTrace();
} finally {
if(br!=null){
br.close();
}
if(bw!=null) {
bw.close();
}
}
}
}
}
class USGS_DEM{
private Integer ncols;
private Integer nrows;
private Double xllcorner;
private Double yllcorner;
private Integer HZoom;
public USGS_DEM() {
}
public USGS_DEM(Integer ncols, Integer nrows, Double xllcorner, Double yllcorner, Integer HZoom) {
this.ncols = ncols;
this.nrows = nrows;
this.xllcorner = xllcorner;
this.yllcorner = yllcorner;
this.HZoom = HZoom;
}
public Integer getNcols() {
return ncols;
}
public void setNcols(Integer ncols) {
this.ncols = ncols;
}
public Integer getNrows() {
return nrows;
}
public void setNrows(Integer nrows) {
this.nrows = nrows;
}
public Double getXllcorner() {
return xllcorner;
}
public void setXllcorner(Double xllcorner) {
this.xllcorner = xllcorner;
}
public Double getYllcorner() {
return yllcorner;
}
public void setYllcorner(Double yllcorner) {
this.yllcorner = yllcorner;
}
public Integer getHZoom() {
return HZoom;
}
public void setHZoom(Integer HZoom) {
this.HZoom = HZoom;
}
}