Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.geometry / org.gvsig.fmap.geometry.jts / src / test / java / org / gvsig / fmap / geom / jts / TestForceSubtype.java @ 47432

History | View | Annotate | Download (17.2 KB)

1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.fmap.geom.jts;
7

    
8
import org.gvsig.fmap.geom.Geometry;
9
import org.gvsig.fmap.geom.GeometryLocator;
10
import org.gvsig.fmap.geom.GeometryManager;
11
import org.gvsig.fmap.geom.jts.operation.towkb.OGCWKBEncoder;
12
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
13

    
14
/**
15
 *
16
 * @author fdiaz
17
 */
18
public class TestForceSubtype  extends AbstractLibraryAutoInitTestCase {
19

    
20
    private static class Data {
21
    
22
        public String wkt;
23
        public String wkt2D;
24
        public String wkt2DM;
25
        public String wkt3D;
26
        public String wkt3DM;
27
//        public int byteOrder;
28
        public boolean skip;
29
        
30
        public Data(String wkt, String wkt2D, String wkt2DM, String wkt3D, String wkt3DM, boolean skip) {
31
            this.wkt = wkt;
32
            this.wkt2D = wkt2D;
33
            this.wkt2DM = wkt2DM;
34
            this.wkt3D = wkt3D;
35
            this.wkt3DM = wkt3DM;
36
//            this.byteOrder = byteOrder;
37
            this.skip = skip;
38
        }
39
        
40
    }
41
    
42
    @Override
43
    protected void doSetUp() throws Exception {
44
    }
45
    
46
    public String bytearray(byte[] data) {
47
        StringBuilder builder = new StringBuilder();
48
        builder.append("0x");
49
        for (byte abyte : data) {
50
            int v = abyte & 0xff;
51
            builder.append(String.format("%02x", v));
52
        }
53
        return builder.toString();
54
    }
55
    
56
    public void test1() throws Exception {
57
        GeometryManager manager = GeometryLocator.getGeometryManager();
58
        Data[] allData = new Data[] {
59
            new Data(
60
                "POINT (30 10)",
61
                "POINT (30 10)",
62
                "POINT M (30 10 0)",
63
                "POINT Z (30 10 0)",
64
                "POINT ZM (30 10 0 0)",
65
                false
66
            ),
67
            new Data(
68
                "LINESTRING (30 10, 10 30, 40 40)",
69
                "LINESTRING (30 10, 10 30, 40 40)",
70
                "LINESTRING M (30 10 0, 10 30 0, 40 40 0)",
71
                "LINESTRING Z (30 10 0, 10 30 0, 40 40 0)",
72
                "LINESTRING ZM (30 10 0 0, 10 30 0 0, 40 40 0 0)",
73
                false
74
            ),
75
            new Data(
76
                "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))",
77
                "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))",
78
                "POLYGON M ((30 10 0, 40 40 0, 20 40 0, 10 20 0, 30 10 0))",
79
                "POLYGON Z ((30 10 0, 40 40 0, 20 40 0, 10 20 0, 30 10 0))",
80
                "POLYGON ZM ((30 10 0 0, 40 40 0 0, 20 40 0 0, 10 20 0 0, 30 10 0 0))",
81
                false
82
            ),
83
            new Data(
84
                "POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30))",
85
                "POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30))",
86
                "POLYGON M ((35 10 0, 45 45 0, 15 40 0, 10 20 0, 35 10 0),(20 30 0, 35 35 0, 30 20 0, 20 30 0))",
87
                "POLYGON Z ((35 10 0, 45 45 0, 15 40 0, 10 20 0, 35 10 0),(20 30 0, 35 35 0, 30 20 0, 20 30 0))",
88
                "POLYGON ZM ((35 10 0 0, 45 45 0 0, 15 40 0 0, 10 20 0 0, 35 10 0 0),(20 30 0 0, 35 35 0 0, 30 20 0 0, 20 30 0 0))",
89
                false
90
            ),
91
            new Data(
92
                "MULTIPOINT ((10 40), (40 30), (20 20), (30 10))",
93
                "MULTIPOINT ((10 40), (40 30), (20 20), (30 10))",
94
                "MULTIPOINT M ((10 40 0), (40 30 0), (20 20 0), (30 10 0))",
95
                "MULTIPOINT Z ((10 40 0), (40 30 0), (20 20 0), (30 10 0))",
96
                "MULTIPOINT ZM ((10 40 0 0), (40 30 0 0), (20 20 0 0), (30 10 0 0))",
97
                false
98
            ),
99
            new Data(
100
                "MULTIPOINT (10 40, 40 30, 20 20, 30 10)",
101
                "MULTIPOINT (10 40, 40 30, 20 20, 30 10)",
102
                "MULTIPOINT M (10 40 0, 40 30 0, 20 20 0, 30 10 0)",
103
                "MULTIPOINT Z (10 40 0, 40 30 0, 20 20 0, 30 10 0)",
104
                "MULTIPOINT ZM (10 40 0 0, 40 30 0 0, 20 20 0 0, 30 10 0 0)",
105
                false
106
            ),
107
            new Data(
108
                "MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))",
109
                "MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))",
110
                "MULTILINESTRING M ((10 10 0, 20 20 0, 10 40 0),(40 40 0, 30 30 0, 40 20 0, 30 10 0))",
111
                "MULTILINESTRING Z ((10 10 0, 20 20 0, 10 40 0),(40 40 0, 30 30 0, 40 20 0, 30 10 0))",
112
                "MULTILINESTRING ZM ((10 10 0 0, 20 20 0 0, 10 40 0 0),(40 40 0 0, 30 30 0 0, 40 20 0 0, 30 10 0 0))",
113
                false
114
            ),
115
            new Data(
116
                "MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))",
117
                "MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))",
118
                "MULTIPOLYGON M (((30 20 0, 45 40 0, 10 40 0, 30 20 0)),((15 5 0, 40 10 0, 10 20 0, 5 10 0, 15 5 0)))",
119
                "MULTIPOLYGON Z (((30 20 0, 45 40 0, 10 40 0, 30 20 0)),((15 5 0, 40 10 0, 10 20 0, 5 10 0, 15 5 0)))",
120
                "MULTIPOLYGON ZM (((30 20 0 0, 45 40 0 0, 10 40 0 0, 30 20 0 0)),((15 5 0 0, 40 10 0 0, 10 20 0 0, 5 10 0 0, 15 5 0 0)))",
121
                false
122
            ),
123
            new Data(
124
                "MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 10 30, 10 10, 30 5, 45 20, 20 35),(30 20, 20 15, 20 25, 30 20)))",
125
                "MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 10 30, 10 10, 30 5, 45 20, 20 35),(30 20, 20 15, 20 25, 30 20)))",
126
                "MULTIPOLYGON M (((40 40 0, 20 45 0, 45 30 0, 40 40 0)),((20 35 0, 10 30 0, 10 10 0, 30 5 0, 45 20 0, 20 35 0),(30 20 0, 20 15 0, 20 25 0, 30 20 0)))",
127
                "MULTIPOLYGON Z(((40 40 0, 20 45 0, 45 30 0, 40 40 0)),((20 35 0, 10 30 0, 10 10 0, 30 5 0, 45 20 0, 20 35 0),(30 20 0, 20 15 0, 20 25 0, 30 20 0)))",
128
                "MULTIPOLYGON ZM(((40 40 0 0, 20 45 0 0, 45 30 0 0, 40 40 0 0)),((20 35 0 0, 10 30 0 0, 10 10 0 0, 30 5 0 0, 45 20 0 0, 20 35 0 0),(30 20 0 0, 20 15 0 0, 20 25 0 0, 30 20 0 0)))",
129
                false
130
            ),
131
            new Data(
132
                "POLYGON ((710847.97223687172 4368973.1207255824, 720362.03232662566 4368973.1207255824, 720362.03232662566 4373121.8750170888, 710847.97223687172 4373121.8750170888, 710847.97223687172 4368973.1207255824))",
133
                "POLYGON ((710847.97223687172 4368973.1207255824, 720362.03232662566 4368973.1207255824, 720362.03232662566 4373121.8750170888, 710847.97223687172 4373121.8750170888, 710847.97223687172 4368973.1207255824))",
134
                "POLYGON M ((710847.97223687172 4368973.1207255824 0.0, 720362.03232662566 4368973.1207255824 0.0, 720362.03232662566 4373121.8750170888 0.0, 710847.97223687172 4373121.8750170888 0.0, 710847.97223687172 4368973.1207255824 0.0))",
135
                "POLYGON Z ((710847.97223687172 4368973.1207255824 0.0, 720362.03232662566 4368973.1207255824 0.0, 720362.03232662566 4373121.8750170888 0.0, 710847.97223687172 4373121.8750170888 0.0, 710847.97223687172 4368973.1207255824 0.0))",
136
                "POLYGON ZM ((710847.97223687172 4368973.1207255824 0.0 0.0, 720362.03232662566 4368973.1207255824 0.0 0.0, 720362.03232662566 4373121.8750170888 0.0 0.0, 710847.97223687172 4373121.8750170888 0.0 0.0, 710847.97223687172 4368973.1207255824 0.0 0.0))",
137
                false
138
            ),        
139
        
140
            new Data(
141
                "POINT Z (30 10 20)",
142
                "POINT (30 10)",
143
                "POINT M (30 10 0)",
144
                "POINT Z (30 10 20)",
145
                "POINT ZM (30 10 20 0)",
146
                false
147
            ),
148

    
149
            new Data(
150
                "POINT M (30 10 30)",
151
                "POINT (30 10)",
152
                "POINT M (30 10 30)",
153
                "POINT Z (30 10 0)",
154
                "POINT ZM (30 10 0 30)",
155
                false
156
            ),
157

    
158
            new Data(
159
                "POINT ZM (30 10 20 30)",
160
                "POINT (30 10)",
161
                "POINT M (30 10 30)",
162
                "POINT Z (30 10 20)",
163
                "POINT ZM (30 10 20 30)",
164
                false
165
            ),
166
            
167
            new Data(
168
                "POLYGON Z ((30 10 10, 40 40 10, 20 40 10, 10 20 10, 30 10 10))",
169
                "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))",
170
                "POLYGON M ((30 10 0, 40 40 0, 20 40 0, 10 20 0, 30 10 0))",
171
                "POLYGON Z ((30 10 10, 40 40 10, 20 40 10, 10 20 10, 30 10 10))",
172
                "POLYGON ZM ((30 10 10 0, 40 40 10 0, 20 40 10 0, 10 20 10 0, 30 10 10 0))",
173
                false
174
            ),
175

    
176
            new Data(
177
                "POLYGON M ((30 10 100, 40 40 200, 20 40 300, 10 20 400, 30 10 100))",
178
                "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))",
179
                "POLYGON M ((30 10 100, 40 40 200, 20 40 300, 10 20 400, 30 10 100))",
180
                "POLYGON Z ((30 10 0, 40 40 0, 20 40 0, 10 20 0, 30 10 0))",
181
                "POLYGON ZM ((30 10 0 100, 40 40 0 200, 20 40 0 300, 10 20 0 400, 30 10 0 100))",
182
                false
183
            ),
184

    
185
            new Data(
186
                "POLYGON ZM ((30 10 10 100, 40 40 10 200, 20 40 10 300, 10 20 10 400, 30 10 10 100))",
187
                "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))",
188
                "POLYGON M ((30 10 100, 40 40 200, 20 40 300, 10 20 400, 30 10 100))",
189
                "POLYGON Z ((30 10 10, 40 40 10, 20 40 10, 10 20 10, 30 10 10))",
190
                "POLYGON ZM ((30 10 10 100, 40 40 10 200, 20 40 10 300, 10 20 10 400, 30 10 10 100))",
191
                false
192
            ),
193

    
194
            new Data(
195
                "MULTIPOINT Z ((10 40 10), (40 30 10), (20 20 10), (30 10 10))",
196
                "MULTIPOINT ((10 40), (40 30), (20 20), (30 10))",
197
                "MULTIPOINT M ((10 40 0), (40 30 0), (20 20 0), (30 10 0))",
198
                "MULTIPOINT Z ((10 40 10), (40 30 10), (20 20 10), (30 10 10))",
199
                "MULTIPOINT ZM ((10 40 10 0), (40 30 10 0), (20 20 10 0), (30 10 10 0))",
200
                false
201
            ),
202

    
203
            new Data(
204
                "MULTIPOINT M ((10 40 100), (40 30 200), (20 20 300), (30 10 400))",
205
                "MULTIPOINT ((10 40), (40 30), (20 20), (30 10))",
206
                "MULTIPOINT M ((10 40 100), (40 30 200), (20 20 300), (30 10 400))",
207
                "MULTIPOINT Z ((10 40 0), (40 30 0), (20 20 0), (30 10 0))",
208
                "MULTIPOINT ZM ((10 40 0 100), (40 30 0 200), (20 20 0 300), (30 10 0 400))",
209
                false
210
            ),
211

    
212
            new Data(
213
                "MULTIPOINT ZM ((10 40 10 100), (40 30 10 200), (20 20 10 300), (30 10 10 400))",
214
                "MULTIPOINT ((10 40), (40 30), (20 20), (30 10))",
215
                "MULTIPOINT M ((10 40 100), (40 30 200), (20 20 300), (30 10 400))",
216
                "MULTIPOINT Z ((10 40 10), (40 30 10), (20 20 10), (30 10 10))",
217
                "MULTIPOINT ZM ((10 40 10 100), (40 30 10 200), (20 20 10 300), (30 10 10 400))",
218
                false
219
            ),
220
            
221
            new Data(
222
                "MULTIPOINT Z (10 40 10, 40 30 10, 20 20 10, 30 10 10)",
223
                "MULTIPOINT (10 40, 40 30, 20 20, 30 10)",
224
                "MULTIPOINT M (10 40 0, 40 30 0, 20 20 0, 30 10 0)",
225
                "MULTIPOINT Z (10 40 10, 40 30 10, 20 20 10, 30 10 10)",
226
                "MULTIPOINT ZM (10 40 10 0, 40 30 10 0, 20 20 10 0, 30 10 10 0)",
227
                false
228
            ),
229

    
230
            new Data(
231
                "MULTIPOINT M (10 40 100, 40 30 200, 20 20 300, 30 10 400)",
232
                "MULTIPOINT (10 40, 40 30, 20 20, 30 10)",
233
                "MULTIPOINT M (10 40 100, 40 30 200, 20 20 300, 30 10 400)",
234
                "MULTIPOINT Z (10 40 0, 40 30 0, 20 20 0, 30 10 0)",
235
                "MULTIPOINT ZM (10 40 0 100, 40 30 0 200, 20 20 0 300, 30 10 0 400)",
236
                false
237
            ),
238

    
239
            new Data(
240
                "MULTIPOINT ZM (10 40 10 100, 40 30 10 200, 20 20 10 300, 30 10 10 400)",
241
                "MULTIPOINT (10 40, 40 30, 20 20, 30 10)",
242
                "MULTIPOINT M (10 40 100, 40 30 200, 20 20 300, 30 10 400)",
243
                "MULTIPOINT Z (10 40 10, 40 30 10, 20 20 10, 30 10 10)",
244
                "MULTIPOINT ZM (10 40 10 100, 40 30 10 200, 20 20 10 300, 30 10 10 400)",
245
                false
246
            ),
247
            
248
            new Data(
249
                "MULTIPOLYGON Z (((30 20 10, 45 40 10, 10 40 10, 30 20 10)),((15 5 10, 40 10 10, 10 20 10, 5 10 10, 15 5 10)))",
250
                "MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))",
251
                "MULTIPOLYGON M (((30 20 0, 45 40 0, 10 40 0, 30 20 0)),((15 5 0, 40 10 0, 10 20 0, 5 10 0, 15 5 0)))",
252
                "MULTIPOLYGON Z (((30 20 10, 45 40 10, 10 40 10, 30 20 10)),((15 5 10, 40 10 10, 10 20 10, 5 10 10, 15 5 10)))",
253
                "MULTIPOLYGON ZM (((30 20 10 0, 45 40 10 0, 10 40 10 0, 30 20 10 0)),((15 5 10 0, 40 10 10 0, 10 20 10 0, 5 10 10 0, 15 5 10 0)))",
254
                false
255
            ),
256
            
257
            new Data(
258
                "MULTIPOLYGON M (((30 20 100, 45 40 200, 10 40 300, 30 20 100)),((15 5 20, 40 10 500, 10 20 600, 5 10 700, 15 5 20)))",
259
                "MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))",
260
                "MULTIPOLYGON M (((30 20 100, 45 40 200, 10 40 300, 30 20 100)),((15 5 20, 40 10 500, 10 20 600, 5 10 700, 15 5 20)))",
261
                "MULTIPOLYGON Z (((30 20 0, 45 40 0, 10 40 0, 30 20 0)),((15 5 0, 40 10 0, 10 20 0, 5 10 0, 15 5 0)))",
262
                "MULTIPOLYGON ZM (((30 20 0 100, 45 40 0 200, 10 40 0 300, 30 20 0 100)),((15 5 0 20, 40 10 0 500, 10 20 0 600, 5 10 0 700, 15 5 0 20)))",
263
                false
264
            ),
265
            
266
            new Data(
267
                "MULTIPOLYGON ZM (((30 20 10 100, 45 40 10 200, 10 40 10 300, 30 20 10 100)),((15 5 10 500, 40 10 10 600, 10 20 10 700, 5 10 10 800, 15 5 10 500)))",
268
                "MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))",
269
                "MULTIPOLYGON M (((30 20 100, 45 40 200, 10 40 300, 30 20 100)),((15 5 500, 40 10 600, 10 20 700, 5 10 800, 15 5 500)))",
270
                "MULTIPOLYGON Z (((30 20 10, 45 40 10, 10 40 10, 30 20 10)),((15 5 10, 40 10 10, 10 20 10, 5 10 10, 15 5 10)))",
271
                "MULTIPOLYGON ZM (((30 20 10 100, 45 40 10 200, 10 40 10 300, 30 20 10 100)),((15 5 10 500, 40 10 10 600, 10 20 10 700, 5 10 10 800, 15 5 10 500)))",
272
                false
273
            ),
274

    
275
            new Data(
276
                "LINESTRING M (30 10 100, 10 30 200, 40 40 300)",
277
                "LINESTRING (30 10, 10 30, 40 40)",
278
                "LINESTRING M (30 10 100, 10 30 200, 40 40 300)",
279
                "LINESTRING Z (30 10 0, 10 30 0, 40 40 0)",
280
                "LINESTRING ZM (30 10 0 100, 10 30 0 200, 40 40 0 300)",
281
                false
282
            ),
283
            
284
            new Data(
285
                "LINESTRING ZM (30 10 20 100, 10 30 20 200, 40 40 20 300)",
286
                "LINESTRING (30 10, 10 30, 40 40)",
287
                "LINESTRING M (30 10 100, 10 30 200, 40 40 300)",
288
                "LINESTRING Z (30 10 20, 10 30 20, 40 40 20)",
289
                "LINESTRING ZM (30 10 20 100, 10 30 20 200, 40 40 20 300)",
290
                false
291
            ),
292
            
293
            new Data(
294
                "MULTILINESTRING M ((10 10 100, 20 20 200, 10 40 300),(40 40 400, 30 30 500, 40 20  600, 30 10 700))",
295
                "MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))",
296
                "MULTILINESTRING M ((10 10 100, 20 20 200, 10 40 300),(40 40 400, 30 30 500, 40 20  600, 30 10 700))",
297
                "MULTILINESTRING Z ((10 10 0, 20 20 0, 10 40 0),(40 40 0, 30 30 0, 40 20 0, 30 10 0))",
298
                "MULTILINESTRING ZM ((10 10 0 100, 20 20 0 200, 10 40 0 300),(40 40 0 400, 30 30 0 500, 40 20 0 600, 30 10 0 700))",
299
                false
300
            ),
301
            
302
            new Data(
303
                "MULTILINESTRING ZM ((10 10 20  100, 20 20 20 200, 10 40 20 300),(40 40 20 400, 30 30 20 500, 40 20 20 600, 30 10 20 700))",
304
                "MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))",
305
                "MULTILINESTRING M ((10 10 100, 20 20 200, 10 40 300),(40 40 400, 30 30 500, 40 20 600, 30 10 700))",
306
                "MULTILINESTRING Z ((10 10 20, 20 20 20, 10 40 20),(40 40 20, 30 30 20, 40 20 20, 30 10 20))",
307
                "MULTILINESTRING ZM ((10 10 20 100, 20 20 20 200, 10 40 20 300),(40 40 20 400, 30 30 20 500, 40 20 20 600, 30 10 20 700))",
308
                false
309
            ),
310
            
311

    
312
        };
313
    
314
        System.out.println("# Test:: test1");
315
        for (Data data : allData) {            
316
            if( data.skip ) {
317
                continue;
318
            }
319
            System.out.println("# WKT:: " + data.wkt);
320
            Geometry geom = manager.createFrom(data.wkt);
321
            Geometry geom2D = manager.createFrom(data.wkt2D);
322
            Geometry geom2DM = manager.createFrom(data.wkt2DM);
323
            Geometry geom3D = manager.createFrom(data.wkt3D);
324
            Geometry geom3DM = manager.createFrom(data.wkt3DM);
325
            assertEquals(geom2D, geom.forceSubtype(Geometry.SUBTYPES.GEOM2D));
326
            assertEquals(geom2DM, geom.forceSubtype(Geometry.SUBTYPES.GEOM2DM));
327
            assertEquals(geom3D, geom.forceSubtype(Geometry.SUBTYPES.GEOM3D));
328
            assertEquals(geom3DM, geom.forceSubtype(Geometry.SUBTYPES.GEOM3DM));
329
        }
330
    }
331
}