Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libGeocoding / src-test / org / gvsig / geocoding / geomatches / TestCrossLineMatcher.java @ 22684

History | View | Annotate | Download (4.38 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22

    
23
/*
24
 * AUTHORS (In addition to CIT):
25
 * 2008 Prodevelop S.L  main development
26
 */
27

    
28
package org.gvsig.geocoding.geomatches;
29

    
30
import java.io.File;
31
import java.util.ArrayList;
32
import java.util.List;
33

    
34
import junit.framework.TestCase;
35

    
36
import org.apache.log4j.ConsoleAppender;
37
import org.apache.log4j.Logger;
38
import org.apache.log4j.PatternLayout;
39
import org.gvsig.data.DataManager;
40
import org.gvsig.data.DataStoreParameters;
41
import org.gvsig.data.ReadException;
42
import org.gvsig.data.datastores.vectorial.file.shp.SHPStore;
43
import org.gvsig.data.datastores.vectorial.file.shp.SHPStoreParameters;
44
import org.gvsig.data.vectorial.FeatureCollection;
45
import org.gvsig.fmap.geom.primitive.Point2D;
46
import org.gvsig.geocoding.geommatches.CrossLineMatcher;
47
import org.gvsig.geocoding.geommatches.GeomMatcher;
48
import org.gvsig.geocoding.geommatches.MatchesParams;
49

    
50
/**
51
 * 
52
 * @author <a href="mailto:jsanz@prodevelop.es"> Jorge Gaspar Sanz Salinas</a>
53
 * @author <a href="mailto:vsanjaime@prodevelop.es"> Vicente Sanjaime Calvet</a>
54
 * 
55
 */
56

    
57
public class TestCrossLineMatcher extends TestCase {
58

    
59
        private Logger log;
60

    
61
        private GeomMatcher geomatcher = null;
62

    
63
        private SHPStore store1 = null;
64

    
65
        private SHPStore store2 = null;
66

    
67
        @SuppressWarnings("unchecked")
68
        private List listFeatures = new ArrayList();
69

    
70
        public TestCrossLineMatcher() {
71
                super();
72
                log = Logger.getRootLogger();
73
                log.addAppender(new ConsoleAppender(
74
                                new PatternLayout("%-5p [%t]: %m%n")));
75
        }
76

    
77
        @SuppressWarnings("unchecked")
78
        public void setUp() {
79

    
80
                org.gvsig.data.datastores.vectorial.file.shp.Register.selfRegister();
81

    
82
                File fileCross1 = new File("./test-data/matches/cross.shp");
83
                assertTrue(fileCross1.exists());
84

    
85
                File fileCross2 = new File("./test-data/matches/cross1.shp");
86
                assertTrue(fileCross2.exists());
87

    
88
                geomatcher = new CrossLineMatcher();
89
                DataManager manager = DataManager.getManager();
90

    
91
                SHPStoreParameters shpParameters1 = (SHPStoreParameters) manager
92
                                .createDataStoreParameters(SHPStore.DATASTORE_NAME);
93
                shpParameters1.setFile(fileCross1);
94

    
95
                SHPStoreParameters shpParameters2 = (SHPStoreParameters) manager
96
                                .createDataStoreParameters(SHPStore.DATASTORE_NAME);
97
                shpParameters2.setFile(fileCross2);
98

    
99
                try {
100
                        store1 = (SHPStore) manager
101
                                        .createDataStore((DataStoreParameters) shpParameters1);
102
                        store1.open();
103
                        listFeatures.add((FeatureCollection) store1.getDataCollection());
104

    
105
                        store2 = (SHPStore) manager
106
                                        .createDataStore((DataStoreParameters) shpParameters2);
107
                        store2.open();
108
                        listFeatures.add((FeatureCollection) store2.getDataCollection());
109

    
110
                        store1.close();
111
                        store2.close();
112

    
113
                } catch (Exception e) {
114
                        e.printStackTrace();
115
                }
116

    
117
        }
118

    
119
        public void testCrossLineMatcher() throws ReadException {
120

    
121
                geomatcher.setFeatures(listFeatures);
122
                geomatcher.setGroupField(1);
123

    
124
                MatchesParams params = new MatchesParams();
125
                // params.setDistance(new Long(10));
126
                params.setRelativeDistance(new Integer(50));
127
                params.setOffset(new Double(10));
128
                geomatcher.setParams(params);
129
                Point2D[] places = (Point2D[]) geomatcher.match();
130

    
131
                // Validate
132

    
133
                assertEquals(725930.6875, places[0].getX());
134
                assertEquals(4371496.5, places[0].getY());
135

    
136
                assertEquals(725984.3125, places[1].getX());
137
                assertEquals(4371166.0, places[1].getY());
138

    
139
                for (int i = 0; i < places.length; i++) {
140
                        log.info("Point. X= " + places[i].getX() + " Y= "
141
                                        + places[i].getY());
142
                }
143
        }
144

    
145
        public void tearDown() {
146

    
147
        }
148

    
149
}