Revision 38292

View differences:

tags/v2_0_0_Build_2047/libraries/libProjection/src-test/org/cresques/cts/AllTests.java
1
package org.cresques.cts;
2

  
3
import junit.framework.Test;
4
import junit.framework.TestSuite;
5

  
6
public class AllTests {
7

  
8
	public static Test suite() {
9
		TestSuite suite = new TestSuite("Test for org.cresques.cts");
10
		//$JUnit-BEGIN$
11

  
12
		//$JUnit-END$
13
		return suite;
14
	}
15

  
16
}
0 17

  
tags/v2_0_0_Build_2047/libraries/libProjection/config/org/cresques/resources/i18n/text_eu.properties
1
#Translations for language [eu]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Ados
4
Aplicar=Aplikatu
5
Block_Size_=
6
Cancelar=Utzi
7
Compression_=
8
datum=
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=
14
reference_system=
15
zone=
0 16

  
tags/v2_0_0_Build_2047/libraries/libProjection/config/org/cresques/resources/i18n/text_it.properties
1
#Translations for language [it]
2
#Tue Nov 07 12:30:01 CET 2006
3
Aceptar=Accetta
4
Aplicar=Applica
5
Block_Size_=Dimensioni blocco\:
6
Cancelar=Cancella
7
Compression_=Compressione
8
datum=Datum
9
Generate_Tfw_=Genera Tfw\:
10
Interleave_=Interlacciato\:
11
Photometric_=Fotometrica\:
12
Progressive_=Progressivo\:
13
projection=Proiezione
14
reference_system=Sistema di riferimento
15
zone=Fuso
0 16

  
tags/v2_0_0_Build_2047/libraries/libProjection/config/org/cresques/resources/i18n/text.properties
1
#Translations for language [es]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Aceptar
4
Aplicar=Aplicar
5
Block_Size_=Tama\u00f1o de bloque\:
6
Cancelar=Cancelar
7
Compression_=Compresi\u00f3n\:
8
datum=Datum
9
Generate_Tfw_=Generar Tfw\:
10
Interleave_=Entrelazado\:
11
Photometric_=Fotom\u00e9trica\:
12
Progressive_=Progresivo\:
13
projection=Proyecci\u00f3n
14
reference_system=Sistema de Referencia
15
zone=Huso
0 16

  
tags/v2_0_0_Build_2047/libraries/libProjection/config/org/cresques/resources/i18n/text_en.properties
1
#Translations for language [en]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Accept
4
Aplicar=Apply
5
Block_Size_=Block Size\:
6
Cancelar=Cancel
7
Compression_=Compression\:
8
datum=Datum
9
Generate_Tfw_=Generate Tfw\:
10
Interleave_=Interleave\:
11
Photometric_=Photometric\:
12
Progressive_=Progressive\:
13
projection=Projection
14
reference_system=Reference System
15
zone=Zone
0 16

  
tags/v2_0_0_Build_2047/libraries/libProjection/config/org/cresques/resources/i18n/text_gl.properties
1
#Translations for language [gl]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Aceptar
4
Aplicar=Aplicar
5
Block_Size_=
6
Cancelar=Cancelar
7
Compression_=
8
datum=
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=
14
reference_system=
15
zone=
0 16

  
tags/v2_0_0_Build_2047/libraries/libProjection/config/org/cresques/resources/i18n/text_ca.properties
1
#Translations for language [ca]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Acceptar
4
Aplicar=Aplicar
5
Block_Size_=
6
Cancelar=Cancel\u00b7lar
7
Compression_=
8
datum=
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=Projecci\u00f3
14
reference_system=Sistema de refer\u00e8ncia
15
zone=
0 16

  
tags/v2_0_0_Build_2047/libraries/libProjection/config/org/cresques/resources/i18n/text_pt.properties
1
#Translations for language [pt]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Aceitar
4
Aplicar=Aplicar
5
Block_Size_=
6
Cancelar=Cancelar
7
Compression_=
8
datum=
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=
14
reference_system=
15
zone=
0 16

  
tags/v2_0_0_Build_2047/libraries/libProjection/config/org/cresques/resources/i18n/text_cs.properties
1
#Translations for language [cs]
2
#Mon Nov 06 09:04:31 CET 2006
3
Aceptar=Budi\u017e
4
Aplicar=Pou\u017e\u00edt
5
Block_Size_=
6
Cancelar=Zru\u0161it
7
Compression_=
8
datum=Datum
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=Projekce
14
reference_system=Prostorov\u00fd referen\u010dn\u00ed syst\u00e9m
15
zone=Z\u00f3na
0 16

  
tags/v2_0_0_Build_2047/libraries/libProjection/config/org/cresques/resources/i18n/text_fr.properties
1
#Translations for language [fr]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Accepter
4
Aplicar=Appliquer
5
Block_Size_=
6
Cancelar=Annuler
7
Compression_=
8
datum=
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=
14
reference_system=
15
zone=
0 16

  
tags/v2_0_0_Build_2047/libraries/libProjection/config/org/cresques/resources/i18n/text_de.properties
1
#Translations for language [de]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=OK
4
Aplicar=Anwenden
5
Block_Size_=
6
Cancelar=Abbrechen
7
Compression_=
8
datum=
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=
14
reference_system=
15
zone=
0 16

  
tags/v2_0_0_Build_2047/libraries/libProjection/resources-test/log4j.xml
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3

  
4
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
5

  
6
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
7
		<layout class="org.apache.log4j.PatternLayout">
8
			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
9
		</layout>
10
	</appender>
11

  
12
	<category name="org.gvsig.tools">
13
		<priority value="DEBUG" />
14
	</category>
15
	<category name="org.cresques">
16
		<priority value="DEBUG" /> 
17
	</category>
18
	<category name="org.gvsig.fmap.crs">
19
		<priority value="DEBUG" /> 
20
	</category>
21

  
22
	<root>
23
		<priority value="INFO" />
24
		<appender-ref ref="CONSOLE" />
25
	</root>
26
</log4j:configuration>
tags/v2_0_0_Build_2047/libraries/libProjection/src/org/cresques/geo/cover/.cvsignore
1
*.dfPackage
2
*.wmf
0 3

  
tags/v2_0_0_Build_2047/libraries/libProjection/src/org/cresques/geo/package.html
1
<html>
2
	<body>Pixel: Clases base relacionadas con geometria.
3
</body>
4
</html>
0 5

  
tags/v2_0_0_Build_2047/libraries/libProjection/src/org/cresques/geo/Projected.java
1
/*
2
 * Cresques Mapping Suite. Graphic Library for constructing mapping applications.
3
 *
4
 * Copyright (C) 2004-5.
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., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
19
 *
20
 * For more information, contact:
21
 *
22
 * cresques@gmail.com
23
 */
24
package org.cresques.geo;
25

  
26
import org.cresques.cts.ICoordTrans;
27
import org.cresques.cts.IProjection;
28

  
29

  
30
/**
31
 * <p><code>Projected</code> should be implement by all objects that can be re-projected.</p>
32
 *
33
 * @author "Luis W. Sevilla" <sevilla_lui@gva.es>*
34
 */
35
public interface Projected {
36
	/**
37
	 * <p>Returns the current projection.<p>
38
	 * 
39
	 * @return current projection
40
	 * 
41
	 * @see #reProject(ICoordTrans)
42
	 */
43
    public IProjection getProjection();
44

  
45
    /**
46
     * <p>Changes projection of the graphical information of this object.</p>
47
     * 
48
     * @param ct transformation coordinates for obtaining the new projection
49
     * 
50
     * @see #getProjection()
51
     */
52
    public void reProject(ICoordTrans ct);
53
}
0 54

  
tags/v2_0_0_Build_2047/libraries/libProjection/src/org/cresques/geo/ViewPortData.java
1
/*
2
 * Cresques Mapping Suite. Graphic Library for constructing mapping applications.
3
 *
4
 * Copyright (C) 2004-5.
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., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
19
 *
20
 * For more information, contact:
21
 *
22
 * cresques@gmail.com
23
 */
24
package org.cresques.geo;
25

  
26
import java.awt.Dimension;
27
import java.awt.geom.AffineTransform;
28
import java.awt.geom.Point2D;
29
import java.text.DecimalFormat;
30

  
31
import org.cresques.cts.ICoordTrans;
32
import org.cresques.cts.IProjection;
33
import org.cresques.px.Extent;
34

  
35

  
36
/**
37
 * Datos de vista sobre las capas.
38
 *
39
 * Mantiene un conjunto de datos necesarios, que describen el modo de
40
 * ver las capas actual.
41
 *
42
 * cmartinez: Esta clase no deber?a formar parte de una API, pero
43
 * se deja hasta que se aborde el refactoring de libProjection.
44
 *
45
 * @author "Luis W. Sevilla" <sevilla_lui@gva.es>
46
 */
47
public class ViewPortData implements Projected {
48
    /**
49
     * Tipo de proyecci?n de la vista.
50
     */
51
    IProjection proj = null;
52

  
53
    /**
54
     * Sistema de coordenadas de la vista.
55
     */
56
    IProjection cs = null;
57

  
58
    /**
59
     * Amplitud de la vista, en coordenadas proyectadas.
60
     */
61
    Extent extent = null;
62

  
63
    /**
64
     * Tama?o de la vista, en coordenadas de dispositivo.
65
     */
66
    Dimension size = null;
67

  
68
    /**
69
     * Transformaci?n af?n usada en la vista actual.
70
     */
71
    public AffineTransform mat = null;
72

  
73
    /**
74
     * Resoluci?n (Puntos por pulgada) de la vista actual.
75
     * Se necesita para los c?lculos de escala geogr?fica.
76
     */
77
    int dpi = java.awt.Toolkit.getDefaultToolkit().getScreenResolution();
78

  
79
    public ViewPortData() {
80
    }
81

  
82
    public ViewPortData(IProjection proj, Extent extent, Dimension size) {
83
        this.proj = proj;
84
        this.extent = extent;
85
        this.size = size;
86
        mat = new AffineTransform();
87
        mat.scale(1.0, -1.0);
88
    }
89

  
90
    public IProjection getProjection() {
91
        return proj;
92
    }
93

  
94
    public void setProjection(IProjection proj) {
95
        this.proj = proj;
96
    }
97

  
98
    public void reProject(ICoordTrans rp) {
99
        // TODO metodo reProject pendiente de implementar
100
    }
101

  
102
    public void setCoordSys(IProjection cs) {
103
        this.cs = cs;
104
    }
105

  
106
    //public void setCoordTrans(ICoordTrans ct) { this.ct = ct; }
107
    public AffineTransform getMat() {
108
        return mat;
109
    }
110

  
111
    public void setMat(AffineTransform mat) {
112
        this.mat = mat;
113
    }
114

  
115
    public Object clone() {
116
        ViewPortData vp = new ViewPortData();
117

  
118
        if (mat != null) {
119
            vp.mat = new AffineTransform(mat);
120
        }
121

  
122
        if (extent != null) {
123
            vp.extent = new Extent(extent);
124
        }
125

  
126
        vp.proj = proj;
127
        vp.size = size;
128
        vp.dpi = dpi;
129

  
130
        return vp;
131
    }
132

  
133
    public double getWidth() {
134
        return size.width;
135
    }
136

  
137
    public double getHeight() {
138
        return size.height;
139
    }
140

  
141
    /**
142
     *
143
     */
144
    public Dimension getSize() {
145
        return size;
146
    }
147

  
148
    public void setSize(double w, double h) {
149
        setSize(new Dimension((int) w, (int) h));
150
    }
151

  
152
    public void setSize(Dimension sz) {
153
        size = sz;
154
        reExtent();
155
    }
156

  
157
    public Extent getExtent() {
158
        return extent;
159
    }
160

  
161
    public void setExtent(Dimension sz) {
162
        Point2D.Double pt0 = new Point2D.Double(0, 0);
163
        Point2D.Double ptSz = new Point2D.Double(sz.width, sz.height);
164

  
165
        try {
166
            mat.inverseTransform(pt0, pt0);
167
            mat.inverseTransform(ptSz, ptSz);
168
        } catch (Exception e) {
169
            e.printStackTrace();
170
        }
171

  
172
        extent = new Extent(pt0, ptSz);
173
    }
174

  
175
    public void reExtent() {
176
        setExtent(size);
177
    }
178

  
179
    public void setDPI(int dpi) {
180
        this.dpi = dpi;
181
    }
182

  
183
    public int getDPI() {
184
        return this.dpi;
185
    }
186

  
187
    /**
188
     * zoom a un marco.
189
     *
190
     * @param extent
191
     */
192
    public void zoom(Extent extent) {
193
        double[] scale = extent.getScale(getWidth(), getHeight());
194
        double escala = Math.min(scale[0], scale[1]);
195

  
196
        mat.setToIdentity();
197
        mat.scale(escala, -escala);
198
        mat.translate(-extent.minX(), -extent.maxY());
199
        this.extent = extent;
200
        reExtent();
201
    }
202

  
203
    /**
204
     * zoom centrado en un punto.
205
     *
206
     * @param zoom
207
     * @param pt
208
     */
209
    public void zoom(double zoom, Point2D pt) {
210
        zoom(zoom, zoom, pt);
211
    }
212

  
213
    public void zoom(double zx, double zy, Point2D pt) {
214
        centerAt(pt);
215
        mat.scale(zx, zy);
216
        centerAt(pt);
217
        reExtent();
218
    }
219

  
220
    /**
221
     * Zoom a una escala (geogr?fica);
222
     *
223
     * @param scale
224
     */
225
    public void zoomToGeoScale(double scale) {
226
        double actual = getGeoScale();
227
        double f = actual / scale;
228
        zoomToCenter(f);
229
    }
230

  
231
    /**
232
     * Zoom a una escala (geogr?fica);
233
     *
234
     * @param scale
235
     */
236
    public void zoomToCenter(double f) {
237
        Point2D.Double ptCenter = new Point2D.Double(getWidth() / 2.0,
238
                                                     getHeight() / 2.0);
239

  
240
        try {
241
            mat.inverseTransform(ptCenter, ptCenter);
242
        } catch (Exception e) {
243
            e.printStackTrace();
244
        }
245

  
246
        zoom(f, ptCenter);
247
    }
248

  
249
    /**
250
     * Centrar en un punto.
251
     *
252
     * @param pt
253
     */
254
    public void centerAt(Point2D pt) {
255
        Point2D.Double ptCenter = new Point2D.Double(getWidth() / 2.0,
256
                                                     getHeight() / 2.0);
257

  
258
        try {
259
            mat.inverseTransform(ptCenter, ptCenter);
260
            mat.translate(ptCenter.x - pt.getX(), ptCenter.y - pt.getY());
261
        } catch (Exception e) {
262
            e.printStackTrace();
263
        }
264

  
265
        reExtent();
266
    }
267

  
268
    /**
269
     * Desplaza la vista actual.
270
     *
271
     * @param pt
272
     */
273
    public void pan(Point2D ptIni, Point2D ptFin) {
274
        mat.translate(ptFin.getX() - ptIni.getX(), ptFin.getY() - ptIni.getY());
275
        reExtent();
276
    }
277

  
278
    public Point2D getCenter() {
279
        Point2D.Double ptCenter = new Point2D.Double(getWidth() / 2.0,
280
                                                     getHeight() / 2.0);
281

  
282
        try {
283
            mat.inverseTransform(ptCenter, ptCenter);
284
        } catch (Exception e) {
285
            e.printStackTrace();
286
        }
287

  
288
        return ptCenter;
289
    }
290

  
291
    /**
292
     * Escala Geogr?fica.
293
     *
294
     * @param dpi resolucion en puntos por pulgada
295
     */
296
    public double getGeoScale() {
297
        /* // TODO Actulizarlo para Geotools2
298
        double scale = 0.0;
299
        if (proj.getClass() == UtmZone.class) { // UTM;
300
                scale = (extent.maxX()-extent.minX())*        // metros
301
                        (dpi / 2.54 * 100.0)/                                // px / metro
302
                        getWidth();                                                        // pixels
303
        } else if (proj.getClass() == Geodetic.class) { // Geodetic
304
                scale = (extent.maxX()-extent.minX())*                // grados
305
                        // 1852.0 metros x minuto de meridiano
306
                        (dpi / 2.54 * 100.0 * 1852.0 * 60.0)/        // px / metro
307
                        getWidth();                                                                // pixels
308
        } else if (proj.getClass() == Mercator.class) { // Mercator
309
                Projection prj = Geodetic.getProjection((Ellipsoid) proj.getDatum());
310
                GeoPoint pt1 = (GeoPoint) prj.createPoint(1.0,0.0);
311
                GeoPoint pt2 = (GeoPoint) prj.createPoint(2.0,0.0);
312
                ProjPoint ppt1 = (ProjPoint) proj.createPoint(0.0, 0.0);
313
                ProjPoint ppt2 = (ProjPoint) proj.createPoint(0.0, 0.0);
314
                ((Mercator) proj).fromGeo(pt1, ppt1);
315
                ((Mercator) proj).fromGeo(pt2, ppt2);
316
                //scale = ppt2.getX()-ppt1.getX();
317
                scale =  ((extent.maxX()-extent.minX())/ (ppt2.getX()-ppt1.getX()) ) *
318
                //scale = ((extent.maxX()-extent.minX())/ getWidth());// *
319
                        (dpi / 2.54 * 100.0 * 1852.0 * 60.0) /
320
                        getWidth();
321
        } */
322
        return proj.getScale(extent.minX(), extent.maxX(), getWidth(), dpi);
323
    }
324

  
325
    public String getGeoScaleAsString(String fmt) {
326
        DecimalFormat format = new DecimalFormat(fmt);
327

  
328
        return "1:" + format.format(getGeoScale());
329
    }
330
}
0 331

  
tags/v2_0_0_Build_2047/libraries/libProjection/src/org/cresques/geo/.cvsignore
1
*.dfPackage
2
*.wmf
0 3

  
tags/v2_0_0_Build_2047/libraries/libProjection/src/org/cresques/CRSFactoryNotRegisteredException.java
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 {DiSiD Technologies}   {Create a base Locator implementation}
26
 */
27
package org.cresques;
28

  
29
import org.gvsig.tools.exception.BaseRuntimeException;
30

  
31
/**
32
 * Exception for errors related to the initialization of a Library.
33
 * 
34
 * @author <a href="mailto:cordin@disid.com">C?sar Ordi?ana</a>
35
 */
36
public class CRSFactoryNotRegisteredException extends BaseRuntimeException {
37

  
38
	private static final long serialVersionUID = 7354573543115812224L;
39

  
40
	private static final String KEY = "_CRSFactoryNotRegisteredException";
41

  
42
    private static final String MESSAGE = "An instance of ICRSFactory has not " +
43
    		"been registered in the CRSFactory";
44

  
45
    public CRSFactoryNotRegisteredException() {
46
        super(MESSAGE, KEY, serialVersionUID);
47
    }
48
}
tags/v2_0_0_Build_2047/libraries/libProjection/src/org/cresques/ui/cts/CSSelectionModel.java
1
/*
2
 * Cresques Mapping Suite. Graphic Library for constructing mapping applications.
3
 *
4
 * Copyright (C) 2004-5.
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., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
19
 *
20
 * For more information, contact:
21
 *
22
 * cresques@gmail.com
23
 */
24
package org.cresques.ui.cts;
25

  
26
import org.cresques.cts.IProjection;
27
import org.cresques.impl.cts.ProjectionPool;
28

  
29

  
30
/**
31
 * @author Luis W. Sevilla (sevilla_lui@gva.es)
32
 */
33
public class CSSelectionModel {
34
    public static int NONE = 0x01;
35
    public static int GEODETIC = 0x02;
36
    public static int TRANSVERSAL = 0x03;
37
    public String[] datumList = {
38
	    "WGS 84", "European 1950", "Datum 73",
39
	    "North American Datum 1927",
40
	    "North American Datum 1983",
41
	    "La Canoa",
42
	    "NTF (Paris)",
43
	    "ETRS 89",
44
	    "Moon (IAU 2000)",
45
	    "Mars (IAU 2000)",
46
	    "Campo_Inchauspe",
47
	    "RGF93"
48
    };
49
    /*private String[] projList = {
50
        "Geodesica",
51
        "(UTM) Universal Transversal Mercator",
52
        "Datum 73 / Modified Portuguese Grid",
53
        "WGS 84 / LCC Canada",
54
        "NAD83 / NRCan LCC Canada",
55
        "Lambert Etendu",
56
        "RGF93 / Lambert-93",
57
        "WGS 84 / Mercator",
58
        "Campo Inchauspe / Zonas 1-7"
59
    };*/
60
    private String[][] projList = {
61
        	{"Geodesica", "(UTM) Universal Transversal Mercator",
62
        		"LCC Canada", "Mercator"}, // WGS84
63
        	{"Geodesica", "(UTM) Universal Transversal Mercator"}, // ED50
64
        	{"Geodesica", "Modified Portuguese Grid"}, //Datum 73
65
        	{"Geodesica", "(UTM) Universal Transversal Mercator"}, // NAD27
66
        	{"Geodesica", "(UTM) Universal Transversal Mercator", "NRCan LCC Canada"}, // NAD83
67
        	{"Geodesica", "(UTM) Universal Transversal Mercator"}, // La Canoa
68
        	{"Geodesica", "Lambert Etendu"}, // NTF (Paris)
69
        	{"Geodesica", "(UTM) Universal Transversal Mercator"}, // ETRS89
70
        	{"Geodesica"}, // Moon
71
        	{"Geodesica"}, // Mars
72
        	{"Geodesica", "Zonas 1-7"}, // CampoInchauspe
73
        	{"Geodesica", "Lambert-93"} // RFG93
74
        };
75

  
76
    private int[][] projType = {
77
    	{GEODETIC, TRANSVERSAL, NONE, NONE},
78
    	{GEODETIC, TRANSVERSAL},
79
    	{GEODETIC, NONE},
80
    	{GEODETIC, TRANSVERSAL},
81
    	{GEODETIC, TRANSVERSAL, NONE},
82
    	{GEODETIC, TRANSVERSAL},
83
    	{GEODETIC, NONE},
84
    	{GEODETIC, TRANSVERSAL},
85
    	{GEODETIC},
86
    	{GEODETIC},
87
    	{GEODETIC, TRANSVERSAL},
88
    	{GEODETIC, NONE}
89
    };
90
    
91
    private int [][] zoneRange = {
92
    	{1,60},
93
    	{1,60},
94
    	{0,0},
95
    	{3,23},
96
    	{3,23},
97
    	{18,21},
98
    	{0,0},
99
    	{28,38},
100
    	{0,0},
101
    	{0,0},
102
    	{1,7},
103
    	{0,0}
104
    };
105
    private String[] zoneList = {  };
106
    private int selectedDatum = 0;
107
    private int selectedProj = 0;
108
    private int selectedZone = 0;
109

  
110
    /**
111
     *
112
     */
113
    public CSSelectionModel() {
114
        super();
115
        zoneList = new String[60];
116

  
117
        for (int i = 1; i <= 60; i++)
118
            zoneList[i - 1] = "Huso " + Integer.toString(i);
119
    }
120
    
121

  
122
    public String[] getDatumList() {
123
        return datumList;
124
    }
125

  
126
    public String[] getProjectionList() {
127
        return projList[getSelectedDatum()];
128
    }
129

  
130
    public String[] getZoneList() {
131
    	int [] r = zoneRange[getSelectedDatum()];
132
        return getZoneList(r[0],r[1]);
133
    }
134

  
135
    public String[] getZoneList(int from, int to) {
136
        zoneList = new String[to-from+1];
137

  
138
        for (int i = from; i <= to; i++)
139
        	zoneList[i - from] = "Huso " + Integer.toString(i);
140
        return zoneList;
141
    }
142
    public void setSelectedDatum(int opNr) {
143
        selectedDatum = opNr;
144
    }
145

  
146
    public void setSelectedDatum(Object item) {
147
        String[] list = datumList;
148

  
149
        for (int i = 0; i < list.length; i++)
150
            if (list[i].compareTo((String) item) == 0) {
151
                selectedDatum = i;
152
                break;
153
            }
154
    }
155

  
156
    public int getSelectedDatum() {
157
        return selectedDatum;
158
    }
159

  
160
    public void setSelectedProj(int opNr) {
161
        selectedProj = opNr;
162
    }
163

  
164
    public void setSelectedProj(Object item) {
165
        String[] list = projList[getSelectedDatum()];
166

  
167
        for (int i = 0; i < list.length; i++)
168
            if (list[i].compareTo((String) item) == 0) {
169
                selectedProj = i;
170
                break;
171
            }
172
    }
173

  
174
    public int getSelectedProj() {
175
        return selectedProj;
176
    }
177

  
178
    public int getSelectedProjType() {
179
        return projType[getSelectedDatum()][selectedProj];
180
    }
181

  
182
    public void setSelectedZone(int opNr) {
183
        selectedZone = opNr;
184
    }
185

  
186
    public void setSelectedZone(Object item) {
187
        String[] list = zoneList;
188

  
189
        for (int i = 0; i < list.length; i++)
190
            if (list[i].compareTo((String) item) == 0) {
191
                selectedZone = i;
192
                break;
193
            }
194
    }
195

  
196
    public int getSelectedZone() {
197
        return selectedZone;
198
    }
199

  
200
    public void setProjection(IProjection proj) {
201
    	if (proj!=null){
202
    		String key = proj.getAbrev();
203
    		// Para usos posteriores.
204
    		// String db = key.split(":")[0];
205
    		key = key.split(":")[1];
206

  
207
    		setSelectedProj(0);
208
    		setSelectedZone(-1);
209

  
210
    		if (key.endsWith("4326")) {
211
    			setSelectedDatum(0);
212
    		} else if (key.endsWith("4230")) {
213
    			setSelectedDatum(1);
214
    		} else if (key.endsWith("4274")) {
215
    			setSelectedDatum(2);
216
    		} else if (key.endsWith("4267")) {
217
    			setSelectedDatum(3);
218
    		} else if (key.endsWith("4269")) {
219
    			setSelectedDatum(4);
220
    		} else if (key.endsWith("4247")) {
221
    			setSelectedDatum(5);
222
    		} else if (key.endsWith("4807")) {
223
    			setSelectedDatum(6);
224
    		} else if (key.endsWith("4258")) {
225
    			setSelectedDatum(7);
226
    		} else if (key.endsWith("30100")) {
227
    			setSelectedDatum(8);
228
    		} else if (key.endsWith("49900")) {
229
    			setSelectedDatum(9);
230
    		} else if (key.endsWith("4221")) {
231
    			setSelectedDatum(10);
232
    		} else if (key.endsWith("4171")) {
233
    			setSelectedDatum(11);
234
    		} else if (key.startsWith("326")) {
235
    			setSelectedDatum(0);
236
    			setSelectedProj(1);
237
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(3)));            		
238
    		} else if (key.startsWith("230")) {
239
    			setSelectedDatum(1);
240
    			setSelectedProj(1);
241
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(3)));
242
    		} else if (key.startsWith("267")) {
243
    			setSelectedDatum(3);
244
    			setSelectedProj(1);
245
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(3)));
246
    		} else if (key.startsWith("269")) {
247
    			setSelectedDatum(4);
248
    			setSelectedProj(1);
249
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(3)));
250
    		} else if (key.startsWith("247")) {
251
    			setSelectedDatum(5);
252
    			setSelectedProj(1);
253
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(3)));
254
    		} else if (key.startsWith("258")) {
255
    			setSelectedDatum(7);
256
    			setSelectedProj(1);
257
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(3)));
258
    		} else if (key.startsWith("221")) {
259
    			setSelectedDatum(10);
260
    			setSelectedProj(1);
261
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(4)));
262
    		} else if (key.endsWith("27492")) { // Datum 73 / Modified Portuguese Grid
263
    			setSelectedDatum(2);
264
    			setSelectedProj(1);
265
    			setSelectedZone(-1);
266
    		} else if (key.endsWith("42101")) { // WGS 84 / LCC Canada
267
    			setSelectedDatum(0);
268
    			setSelectedProj(2);
269
    			setSelectedZone(-1);
270
    		} else if (key.endsWith("9804")) { // WGS 84 / Mercator
271
    			setSelectedDatum(0);
272
    			setSelectedProj(3);
273
    			setSelectedZone(-1);
274
    		} else if (key.endsWith("30100")) { // Moon
275
    			setSelectedDatum(8);
276
    			setSelectedProj(0);
277
    			setSelectedZone(-1);
278
    		} else if (key.endsWith("49900")) { // Mars
279
    			setSelectedDatum(9);
280
    			setSelectedProj(0);
281
    			setSelectedZone(-1);
282
    		} else if (key.endsWith("42304")) { // NAD83 /  / LCC Canada
283
    			setSelectedDatum(4);
284
    			setSelectedProj(2);
285
    			setSelectedZone(-1);
286
    		} else if (key.endsWith("27582")) { // NTFParis /  / Lambert Etendu
287
    			setSelectedDatum(6);
288
    			setSelectedProj(1);
289
    			setSelectedZone(-1);
290
    		} else if (key.equals("2154")) { // RGF93 /  / Lambert 93
291
    			setSelectedDatum(11);
292
    			setSelectedProj(1);
293
    			setSelectedZone(-1);         
294
    		} else  {
295
    			System.err.println("CAGADA EN EL PARSING DE LA PROYECCION: " + key);
296
    		}
297
    	} else {
298
    	    selectedDatum = 0;
299
    	    selectedProj = 0;
300
    	    selectedZone = 0;
301
    	}
302
    }
303

  
304
    public IProjection getProjection() {
305
        IProjection proj = null;
306
        String datum = "326";
307

  
308
        if (selectedDatum == 0) {
309
            datum = "326";
310
            if (selectedProj == 0)
311
                return new ProjectionPool().get("EPSG:4"+datum);
312
            else if (selectedProj == 1) {
313
                String zone = Integer.toString(selectedZone + 1);
314
                if (selectedZone < 9) zone = "0" + zone;
315
                return new ProjectionPool().get("EPSG:" + datum + zone);
316
            } else if (selectedProj == 2)
317
                return new ProjectionPool().get("EPSG:42101");
318
            else if (selectedProj == 3)
319
                return new ProjectionPool().get("EPSG:9804");
320
            
321
        } else if (selectedDatum == 1) {
322
            datum = "230";
323
            if (selectedProj == 0)
324
                return new ProjectionPool().get("EPSG:4"+datum);
325
            else if (selectedProj == 1) {
326
                String zone = Integer.toString(selectedZone + 1);
327
                if (selectedZone < 9) zone = "0" + zone;
328
                return new ProjectionPool().get("EPSG:" + datum + zone);
329
            } 
330
            
331
        } else if (selectedDatum == 2) { // Lisboa 73
332
            datum = "274";
333
            if (selectedProj == 0)
334
                return new ProjectionPool().get("EPSG:4"+datum);
335
            else if (selectedProj == 1)
336
                return new ProjectionPool().get("EPSG:"+datum+"92");
337
            
338
       } else if (selectedDatum == 3) {
339
            datum = "267";
340
            if (selectedProj == 0)
341
                return new ProjectionPool().get("EPSG:4"+datum);
342
            else if (selectedProj == 1) {
343
                String zone = Integer.toString(selectedZone + 3);
344
                if (selectedZone+3 <= 9) zone = "0" + zone;
345
                return new ProjectionPool().get("EPSG:" + datum + zone);
346
            }
347
            
348
        } else if (selectedDatum == 4) {
349
            datum = "269";
350
            if (selectedProj == 0)
351
                return new ProjectionPool().get("EPSG:4"+datum);
352
            else if (selectedProj == 1) {
353
                String zone = Integer.toString(selectedZone + 3);
354
                if (selectedZone+3 <= 9) zone = "0" + zone;
355
                return new ProjectionPool().get("EPSG:" + datum + zone);
356
            } else if (selectedProj == 2)
357
                return new ProjectionPool().get("EPSG:42304");
358
            
359
        } else if (selectedDatum == 5) {
360
            datum = "247";
361
            if (selectedProj == 0)
362
                return new ProjectionPool().get("EPSG:4"+datum);
363
            else if (selectedProj == 1) {
364
                String zone = Integer.toString(selectedZone + 18);
365
                return new ProjectionPool().get("EPSG:" + datum + zone);
366
            }
367
            
368
        } else if (selectedDatum == 6) {
369
            datum = "807";
370
            if (selectedProj == 0)
371
                return new ProjectionPool().get("EPSG:4"+datum);
372
            else if (selectedProj == 1)
373
            	return new ProjectionPool().get("EPSG:27582");
374
            
375
        } else if (selectedDatum == 7) {
376
            datum = "258";
377
            if (selectedProj == 0)
378
                return new ProjectionPool().get("EPSG:4"+datum);
379
            else if (selectedProj == 1) {
380
                String zone = Integer.toString(selectedZone + 28);
381
                return new ProjectionPool().get("EPSG:" + datum + zone);
382
            }
383
            
384
        } else if (selectedDatum == 8) {
385
            datum = "30100";
386
            return new ProjectionPool().get("IAU2000:" + datum);
387
            
388
        } else if (selectedDatum == 9) {
389
            datum = "49900";
390
            return new ProjectionPool().get("IAU2000:" + datum);
391
            
392
        } else if (selectedDatum == 10) {
393
            datum = "221";
394
            if (selectedProj == 0)
395
                return new ProjectionPool().get("EPSG:4"+datum);
396
            else if (selectedProj == 1) {
397
                String zone = Integer.toString(selectedZone + 1);
398
                return new ProjectionPool().get("EPSG:" + datum + "9"+ zone);
399
            } 
400
            
401
        } else if (selectedDatum == 11) {
402
        	if (selectedProj == 0)
403
                return new ProjectionPool().get("EPSG:4171");
404
            else if (selectedProj == 1)
405
                return new ProjectionPool().get("EPSG:2154");
406
        }
407

  
408
        if (selectedProj == 2) {
409
            return new ProjectionPool().get("EPSG:27492");
410
        } else if (selectedProj == 3) {
411
            return new ProjectionPool().get("EPSG:42101");
412
        } else if (selectedProj == 4) {
413
            return new ProjectionPool().get("EPSG:42304");
414
        } else if (selectedProj == 5) {
415
            return new ProjectionPool().get("EPSG:27582");
416
        } else if (selectedProj == 6) {
417
            return new ProjectionPool().get("EPSG:2154");
418
        } else if (selectedProj == 7) {
419
            return new ProjectionPool().get("EPSG:9804");
420
        } else if (selectedProj == 8) {
421
        	datum = "221";
422
      	   String zone = "9";
423
            //if (selectedDatum == 10) {
424
                 if (selectedZone < 1) {
425
                     zone += "1";
426
                 } else if (selectedZone > 7) {
427
                     zone += "7";
428
                 } else
429
                 	zone += (selectedZone+1)+"";
430
            // }
431
             return new ProjectionPool().get("EPSG:" + datum + zone);
432
         }
433

  
434

  
435
        if (selectedProj == 0) {
436
            return new ProjectionPool().get("EPSG:4" + datum);
437
        } else if (selectedProj == 1) {
438
            String Zone = Integer.toString(selectedZone + 1);
439

  
440
            if (selectedZone < 9) {
441
                Zone = "0" + Zone;
442
            }
443

  
444
            if ((selectedDatum == 2) || (selectedDatum == 3)) {
445
                if (selectedZone < 3) {
446
                    Zone = "03";
447
                }
448

  
449
                if (selectedZone > 23) {
450
                    Zone = "23";
451
                }
452
            }
453

  
454
            if (selectedDatum == 5) {
455
                if (selectedZone < 18) {
456
                    Zone = "18";
457
                }
458

  
459
                if (selectedZone > 22) {
460
                    Zone = "22";
461
                }
462
            }
463

  
464
            if (selectedDatum == 7) {
465
                if (selectedZone < 28) {
466
                    Zone = "28";
467
                }
468

  
469
                if (selectedZone > 38) {
470
                    Zone = "38";
471
                }
472
            }
473
            return new ProjectionPool().get("EPSG:" + datum + Zone);
474
        } 
475

  
476
        return proj;
477
    }
478
}
0 479

  
tags/v2_0_0_Build_2047/libraries/libProjection/src/org/cresques/ui/cts/package.html
1
<html>
2
	<body>Interfaces gr?ficas relacionadas con el manejo de proyecciones.
3
</body>
4
</html>
0 5

  
tags/v2_0_0_Build_2047/libraries/libProjection/src/org/cresques/ui/cts/CSSelectionDialogPanel.java
1
/*
2
 * Cresques Mapping Suite. Graphic Library for constructing mapping applications.
3
 *
4
 * Copyright (C) 2004-5.
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
 *
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff