1 |
mojays |
2 |
package appl.parallel.test; |
2 |
|
|
|
3 |
|
|
import java.awt.Rectangle; |
4 |
|
|
import java.io.BufferedOutputStream; |
5 |
|
|
import java.io.File; |
6 |
|
|
import java.io.FileOutputStream; |
7 |
|
|
|
8 |
|
|
import junit.framework.Test; |
9 |
|
|
import junit.framework.TestCase; |
10 |
|
|
import junit.framework.TestSuite; |
11 |
|
|
import schmitzm.data.WritableGrid; |
12 |
|
|
import schmitzm.data.WritableGridArray; |
13 |
|
|
import schmitzm.data.WritableGridRaster; |
14 |
|
|
import schmitzm.geotools.io.GeoExportUtil; |
15 |
|
|
import schmitzm.geotools.io.GeoImportUtil; |
16 |
|
|
import appl.parallel.data.xulugridfile.XuluGridFile; |
17 |
|
|
import appl.parallel.spmd.split.WritableGridPartition; |
18 |
|
|
import appl.util.RasterMetaData; |
19 |
|
|
import appl.util.RasterUtil; |
20 |
alfonx |
60 |
import edu.bonn.xulu.plugin.io.grid.array.WritableGridArrayFactory_ArcInfoAsciiGrid; |
21 |
mojays |
2 |
|
22 |
|
|
/** |
23 |
|
|
* Generated code for the test suite <b>XuluGridTestCase</b> located at |
24 |
|
|
* <i>/Xulu-latest/javasrc/appl/test/XuluGridTestCase.testsuite</i>. |
25 |
|
|
* |
26 |
|
|
* Extensivly tests the XuluGridFile for errors |
27 |
|
|
*/ |
28 |
|
|
public class XuluGridTestCase extends TestCase { |
29 |
|
|
XuluGridFile gridFile; |
30 |
|
|
|
31 |
|
|
/** |
32 |
|
|
* Constructor for XuluGridTestCase. |
33 |
|
|
* @param name |
34 |
|
|
*/ |
35 |
|
|
public XuluGridTestCase(String name) { |
36 |
|
|
super(name); |
37 |
|
|
} |
38 |
|
|
|
39 |
|
|
/** |
40 |
|
|
* Returns the JUnit test suite that implements the <b>XuluGridTestCase</b> |
41 |
|
|
* definition. |
42 |
|
|
*/ |
43 |
|
|
public static Test suite() { |
44 |
|
|
TestSuite xuluGridTestCase = new TestSuite("XuluGridTestCase"); |
45 |
|
|
// xuluGridTestCase.setArbiter(DefaultTestArbiter.INSTANCE).setId( |
46 |
|
|
// "D14CC6AE1994BD92F864B0C0A54011DB"); |
47 |
|
|
// |
48 |
|
|
// xuluGridTestCase.addTest(new XuluGridTestCase("testReadingPartitialGrid") |
49 |
|
|
// .setId("D14CC6AE1994BD92132B3E60A54111DB").setTestInvocationId( |
50 |
|
|
// "D14CC6AE1994BD9269E4C820A54111DB")); |
51 |
|
|
// |
52 |
|
|
// xuluGridTestCase.addTest(new XuluGridTestCase("testMartin").setId( |
53 |
|
|
// "D14CC6AE1994BD92FC1EA54AA62111DB").setTestInvocationId( |
54 |
|
|
// "D14CC6AE1994BD9262B92000A62211DB")); |
55 |
|
|
return xuluGridTestCase; |
56 |
|
|
} |
57 |
|
|
|
58 |
|
|
/** |
59 |
|
|
* @see junit.framework.TestCase#setUp() |
60 |
|
|
*/ |
61 |
|
|
protected void setUp() throws Exception { |
62 |
|
|
} |
63 |
|
|
|
64 |
|
|
/** |
65 |
|
|
* @see junit.framework.TestCase#tearDown() |
66 |
|
|
*/ |
67 |
|
|
protected void tearDown() throws Exception { |
68 |
|
|
if (gridFile!=null) |
69 |
|
|
gridFile.close(); |
70 |
|
|
} |
71 |
|
|
|
72 |
|
|
/** |
73 |
|
|
* testReadingPartitial Grid |
74 |
|
|
* @throws Exception |
75 |
|
|
*/ |
76 |
|
|
public void testReadingPartitialGrid() |
77 |
|
|
throws Exception |
78 |
|
|
{ |
79 |
|
|
|
80 |
|
|
//base file: all assertions are checked against this grid |
81 |
|
|
WritableGridRaster baseGrid = GeoImportUtil.readGridRasterFromArcInfoASCII(new File("../Xulu-Data/minigrid.arc")); |
82 |
|
|
printSmall(baseGrid); |
83 |
|
|
GeoExportUtil.writeGridRasterToArcInfoASCII(baseGrid, new File("BaseGridExport_miniGrid_export1")); |
84 |
|
|
|
85 |
|
|
// write a XuluGridFile / check it against baseGrid |
86 |
|
|
File file = new File("XuluGridFile_miniGrid.xgrid"); |
87 |
|
|
XuluGridFile.writeToXuluGridFile(baseGrid,file); |
88 |
|
|
// fill the grid2 with any Data |
89 |
|
|
WritableGrid grid2 = GeoImportUtil.readGridRasterFromArcInfoASCII(new File("../Xulu-Data/SimpleGrid.arc")); |
90 |
|
|
assertFalse(RasterUtil.checkEqual(baseGrid,grid2,true)); |
91 |
|
|
XuluGridFile.readIntoGridFromXuluGridFile(grid2, file); |
92 |
|
|
assertTrue(RasterUtil.checkEqual(baseGrid,grid2,true)); |
93 |
|
|
|
94 |
|
|
//export und reimport an check it again (this caused some hard to trace errors in the past, even if it should not.) |
95 |
|
|
GeoExportUtil.writeGridRasterToArcInfoASCII((WritableGridRaster)grid2, new File("BaseGridExport_miniGrid_export2")); |
96 |
|
|
grid2 = GeoImportUtil.readGridRasterFromArcInfoASCII(new File("BaseGridExport_miniGrid_export2")); |
97 |
|
|
assertTrue(RasterUtil.checkEqual(baseGrid,grid2,true)); |
98 |
|
|
|
99 |
|
|
//initialize a new XuluGrid |
100 |
|
|
gridFile = new XuluGridFile(new File("XuluGridFile_miniGrid.xgrid"),"r"); |
101 |
|
|
RasterMetaData meta = gridFile.getMetaData(); |
102 |
|
|
//get the whole gridFile using the partition method and check it |
103 |
|
|
WritableGrid wholeGrid = gridFile.getPartitialGrid2D(new Rectangle(0, 0, meta.getWidth(), meta.getHeight())); |
104 |
|
|
assertTrue(RasterUtil.checkEqual(baseGrid,wholeGrid,true)); |
105 |
|
|
assertTrue(RasterUtil.checkEqual(grid2,wholeGrid,true)); |
106 |
|
|
//write all data from wholeGrid into grid2, then export grid2 |
107 |
|
|
for (int y = meta.getMinY(); y < meta.getHeight()- meta.getMinY(); y++) |
108 |
|
|
for (int x = meta.getMinX(); x < meta.getWidth() - meta.getMinY(); x++) |
109 |
|
|
grid2.setRasterSample(wholeGrid.getRasterSample(x,y),x,y); |
110 |
|
|
GeoExportUtil.writeGridRasterToArcInfoASCII(baseGrid, new File("XuluGrid2FromWholeGrid_test")); |
111 |
|
|
|
112 |
|
|
|
113 |
|
|
//new WritableGridArrayFactory_ArcInfoAsciiGrid().exportObject(wholeGrid, new BufferedOutputStream(new FileOutputStream("XuluGridTest_ARCINFO2"))); |
114 |
|
|
|
115 |
|
|
// for (y = 1; y < metadata.getheight(); y++) |
116 |
|
|
// for (x = 1; x < metadata.getwidth(); x++) { |
117 |
|
|
//get left half of the gridFile |
118 |
|
|
WritableGrid leftHalf = gridFile.getPartitialGrid2D(new Rectangle(0, 0, (meta.getWidth()/2), meta.getHeight())); |
119 |
|
|
new WritableGridArrayFactory_ArcInfoAsciiGrid().exportObject(leftHalf, new BufferedOutputStream(new FileOutputStream("LeftHalf_XULUGRID"))); |
120 |
|
|
|
121 |
|
|
//########################### no gridfile test ############################### |
122 |
|
|
XuluGridFile gridfile = new XuluGridFile(new File("XuluGridFile_miniGrid.xgrid"),"rw"); |
123 |
|
|
WritableGridPartition partition = gridfile.getPartitialGrid2D(new Rectangle(0,0,5,5)); |
124 |
|
|
printSmall(partition); |
125 |
|
|
partition = gridfile.getPartitialGrid2D(new Rectangle(0,0,4,4)); |
126 |
|
|
printSmall(partition); |
127 |
|
|
partition = gridfile.getPartitialGrid2D(new Rectangle(1,1,8,8)); |
128 |
|
|
printSmall(partition); |
129 |
|
|
partition = gridfile.getPartitialGrid2D(new Rectangle(5,5,5,5)); |
130 |
|
|
printSmall(partition); |
131 |
|
|
partition = gridfile.getPartitialGrid2D(new Rectangle(1,1,2,2)); |
132 |
|
|
printSmall(partition); |
133 |
|
|
|
134 |
|
|
} |
135 |
|
|
/** |
136 |
|
|
* prints only small grids |
137 |
|
|
* |
138 |
|
|
* @param grid |
139 |
|
|
*/ |
140 |
|
|
public void printSmall(WritableGrid grid){ |
141 |
|
|
if(grid.getWidth()<20 && grid.getHeight()<20) |
142 |
|
|
RasterUtil.printGrid(grid,5,1,"output"); |
143 |
|
|
} |
144 |
|
|
|
145 |
|
|
public void testMartin() |
146 |
|
|
throws Exception |
147 |
|
|
{ |
148 |
|
|
WritableGridRaster baseGrid = GeoImportUtil.readGridRasterFromArcInfoASCII(new File("../Xulu-Data/standard_clue_data/CLUE-Datensatz1/sc1gr0.23")); |
149 |
|
|
WritableGridArray testGrid = new WritableGridArray.Float(baseGrid.getMinX(),baseGrid.getMinY(),baseGrid.getWidth(),baseGrid.getHeight(),baseGrid.getX(),baseGrid.getY(),baseGrid.getRealWidth(),baseGrid.getRealHeight(),null,null); |
150 |
|
|
for (int y = baseGrid.getMinY(); y < baseGrid.getHeight()- baseGrid.getMinY(); y++) |
151 |
|
|
for (int x = baseGrid.getMinX(); x < baseGrid.getWidth() - baseGrid.getMinY(); x++) |
152 |
|
|
testGrid.setRasterSample(baseGrid.getRasterSample(x,y),x,y); |
153 |
|
|
GeoExportUtil.writeGridRasterToArcInfoASCII(baseGrid, new File("Test_baseGrid")); |
154 |
|
|
new WritableGridArrayFactory_ArcInfoAsciiGrid().exportObject(testGrid,new FileOutputStream("Test_testGrid2")); |
155 |
|
|
} |
156 |
|
|
} |