Revision 46045
tags/org.gvsig.desktop-2.0.342/org.gvsig.desktop.compat.cdc/org.gvsig.projection/org.gvsig.projection.cresques/org.gvsig.projection.cresques.impl/src/main/java/org/cresques/impl/CresquesCtsLibrary.java | ||
---|---|---|
1 |
/** |
|
2 |
* gvSIG. Desktop Geographic Information System. |
|
3 |
* |
|
4 |
* Copyright (C) 2007-2013 gvSIG Association. |
|
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 3 |
|
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 |
* For any additional information, do not hesitate to contact us |
|
22 |
* at info AT gvsig.com, or visit our website www.gvsig.com. |
|
23 |
*/ |
|
24 |
package org.cresques.impl; |
|
25 |
|
|
26 |
import org.cresques.ProjectionLibrary; |
|
27 |
import org.cresques.impl.cts.ProjectionPool; |
|
28 |
|
|
29 |
import org.gvsig.fmap.crs.CRSFactory; |
|
30 |
import org.gvsig.tools.library.AbstractLibrary; |
|
31 |
import org.gvsig.tools.library.LibraryException; |
|
32 |
|
|
33 |
public class CresquesCtsLibrary extends AbstractLibrary { |
|
34 |
|
|
35 |
public void doRegistration() { |
|
36 |
registerAsImplementationOf(ProjectionLibrary.class,1); |
|
37 |
} |
|
38 |
|
|
39 |
protected void doInitialize() throws LibraryException { |
|
40 |
CRSFactory.registerCRSFactory( new ProjectionPool()); |
|
41 |
} |
|
42 |
|
|
43 |
protected void doPostInitialize() throws LibraryException { |
|
44 |
// Nothing to do |
|
45 |
} |
|
46 |
} |
|
0 | 47 |
tags/org.gvsig.desktop-2.0.342/org.gvsig.desktop.compat.cdc/org.gvsig.projection/org.gvsig.projection.cresques/org.gvsig.projection.cresques.impl/src/main/java/org/cresques/impl/cts/wkt/WKT.java | ||
---|---|---|
1 |
/** |
|
2 |
* gvSIG. Desktop Geographic Information System. |
|
3 |
* |
|
4 |
* Copyright (C) 2007-2013 gvSIG Association. |
|
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 3 |
|
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 |
* For any additional information, do not hesitate to contact us |
|
22 |
* at info AT gvsig.com, or visit our website www.gvsig.com. |
|
23 |
*/ |
|
24 |
package org.cresques.impl.cts.wkt; |
|
25 |
|
|
26 |
import java.util.ArrayList; |
|
27 |
|
|
28 |
/** |
|
29 |
* Generates a WKT from CRS parameters. |
|
30 |
* as, for example in |
|
31 |
* "GEOGCS[\"ETRS89\","+ |
|
32 |
"DATUM[\"European_Terrestrial_Reference_System_1989\","+ |
|
33 |
"SPHEROID[\"GRS 1980\",6378137,298.257222101,"+ |
|
34 |
"AUTHORITY[\"EPSG\",\"7019\"]],"+ |
|
35 |
"AUTHORITY[\"EPSG\",\"6258\"]," + |
|
36 |
"TOWGS84[0,0,0,0,0,0,0]],"+ |
|
37 |
"PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"+ |
|
38 |
"UNIT[\"degree\",0.01745329251994328, AUTHORITY[\"EPSG\",\"9122\"]],"+ |
|
39 |
"AUTHORITY[\"EPSG\",\"4258\"]]"; |
|
40 |
|
|
41 |
* @author Luis W. Sevilla <sevilla_lui@gva.es> |
|
42 |
* |
|
43 |
*/ |
|
44 |
public abstract class WKT { |
|
45 |
|
|
46 |
static class Authority { |
|
47 |
String name; |
|
48 |
String code; |
|
49 |
public Authority(String n, String c) { |
|
50 |
name = n; |
|
51 |
code = c; |
|
52 |
} |
|
53 |
public String toWKT() { |
|
54 |
return "AUTHORITY[\""+name+"\",\""+code+"\"]"; |
|
55 |
} |
|
56 |
} |
|
57 |
|
|
58 |
static class Parameter { |
|
59 |
protected String name; |
|
60 |
private String value; |
|
61 |
protected Authority authority; // optional |
|
62 |
|
|
63 |
public Parameter(String n) { |
|
64 |
name = n; |
|
65 |
} |
|
66 |
|
|
67 |
public Parameter(String n, String v) { |
|
68 |
name = n; |
|
69 |
value = v; |
|
70 |
} |
|
71 |
public Parameter(String n, Authority a) { |
|
72 |
name = n; |
|
73 |
authority = a; |
|
74 |
} |
|
75 |
|
|
76 |
public String toWKT() { |
|
77 |
String txt = "PARAMETER[\""+name+"\","+value; |
|
78 |
if (authority != null) |
|
79 |
txt += ","+authority.toWKT(); |
|
80 |
return txt + "]"; |
|
81 |
} |
|
82 |
} |
|
83 |
|
|
84 |
static class Spheroid { |
|
85 |
String name; |
|
86 |
double semiMajor; |
|
87 |
double inverseFlattening; |
|
88 |
Authority authority = null; // optional |
|
89 |
|
|
90 |
public Spheroid(String n, double s, double f) { |
|
91 |
name = n; |
|
92 |
semiMajor = s; |
|
93 |
inverseFlattening = f; |
|
94 |
} |
|
95 |
public Spheroid(String n, double s, double f, Authority a) { |
|
96 |
name = n; |
|
97 |
semiMajor = s; |
|
98 |
inverseFlattening = f; |
|
99 |
authority = a; |
|
100 |
} |
|
101 |
public String toWKT() { |
|
102 |
String txt = "SPHEROID[\""+name+"\","+ |
|
103 |
semiMajor+","+inverseFlattening; |
|
104 |
if (authority != null) |
|
105 |
txt += ","+authority.toWKT(); |
|
106 |
return txt + "]"; |
|
107 |
} |
|
108 |
} |
|
109 |
|
|
110 |
static class ToWGS84 { |
|
111 |
double dx = 0; |
|
112 |
double dy = 0; |
|
113 |
double dz = 0; |
|
114 |
double ex = 0; |
|
115 |
double ey = 0; |
|
116 |
double ez = 0; |
|
117 |
double ppm = 0; |
|
118 |
public ToWGS84() { |
|
119 |
} |
|
120 |
public ToWGS84(double dx, double dy, double dz, double ex, double ey, double ez, double ppm) { |
|
121 |
this.dx = dx; |
|
122 |
this.dy = dy; |
|
123 |
this.dz = dz; |
|
124 |
this.ex = ex; |
|
125 |
this.ey = ey; |
|
126 |
this.ez = ez; |
|
127 |
this.ppm = ppm; |
|
128 |
} |
|
129 |
public String toWKT() { |
|
130 |
return "TOWGS84["+dx+","+dy+","+dz+","+ex+","+ey+","+ez+","+ppm+"]"; |
|
131 |
} |
|
132 |
} |
|
133 |
|
|
134 |
static class Datum { |
|
135 |
String name; |
|
136 |
Spheroid spheroid; |
|
137 |
ToWGS84 towgs84 = new ToWGS84(); // optional |
|
138 |
Authority authority; // optional |
|
139 |
public Datum(String n, Spheroid s) { |
|
140 |
init (n, s, new ToWGS84(), null); |
|
141 |
} |
|
142 |
public Datum(String n, Spheroid s, ToWGS84 t) { |
|
143 |
init (n, s, t, null); |
|
144 |
} |
|
145 |
public Datum(String n, Spheroid s, Authority a) { |
|
146 |
init (n, s, new ToWGS84(), a); |
|
147 |
} |
|
148 |
public Datum(String n, Spheroid s, ToWGS84 t, Authority a) { |
|
149 |
init (n, s, t, a); |
|
150 |
} |
|
151 |
private void init(String n, Spheroid s, |
|
152 |
ToWGS84 t, Authority a) { |
|
153 |
name = n; |
|
154 |
spheroid = s; |
|
155 |
towgs84 = t; |
|
156 |
authority = a; |
|
157 |
} |
|
158 |
public String toWKT() { |
|
159 |
String txt = "DATUM[\""+name+"\","+spheroid.toWKT(); |
|
160 |
if (towgs84 != null) |
|
161 |
txt += ","+towgs84.toWKT(); |
|
162 |
if (authority != null) |
|
163 |
txt += ","+authority.toWKT(); |
|
164 |
return txt+"]"; |
|
165 |
} |
|
166 |
} |
|
167 |
|
|
168 |
static class PrimeM { |
|
169 |
String name; |
|
170 |
double longitude; |
|
171 |
Authority authority = null; // optional |
|
172 |
|
|
173 |
public PrimeM(String n, double l) { |
|
174 |
name = n; |
|
175 |
longitude = l; |
|
176 |
} |
|
177 |
|
|
178 |
public PrimeM(String n, double l, Authority a) { |
|
179 |
name = n; |
|
180 |
longitude = l; |
|
181 |
authority = a; |
|
182 |
} |
|
183 |
|
|
184 |
public String toWKT() { |
|
185 |
String txt = "PRIMEM[\""+name+"\","+longitude; |
|
186 |
if (authority != null) |
|
187 |
txt += ","+authority.toWKT(); |
|
188 |
return txt + "]"; |
|
189 |
} |
|
190 |
} |
|
191 |
|
|
192 |
static class Unit { |
|
193 |
String name; |
|
194 |
double conversionFactor; |
|
195 |
Authority authority; // optional |
|
196 |
|
|
197 |
public Unit(String n, double l) { |
|
198 |
name = n; |
|
199 |
conversionFactor = l; |
|
200 |
} |
|
201 |
|
|
202 |
public Unit(String n, double l, Authority a) { |
|
203 |
name = n; |
|
204 |
conversionFactor = l; |
|
205 |
authority = a; |
|
206 |
} |
|
207 |
|
|
208 |
public String toWKT() { |
|
209 |
String txt = "UNIT[\""+name+"\","+conversionFactor; |
|
210 |
if (authority != null) |
|
211 |
txt += ","+authority.toWKT(); |
|
212 |
return txt + "]"; |
|
213 |
} |
|
214 |
} |
|
215 |
|
|
216 |
static class Orientation { |
|
217 |
public final static int NORTH = 0; |
|
218 |
public final static int SOUTH = 1; |
|
219 |
public final static int EAST = 2; |
|
220 |
public final static int WEST = 3; |
|
221 |
public final static int UP = 4; |
|
222 |
public final static int DOWN = 5; |
|
223 |
public final static int OTHER = 6; |
|
224 |
protected final String [] txt = { |
|
225 |
"NORTH","SOUTH","EAST","WEST","UP","DOWN","OTHER" |
|
226 |
}; |
|
227 |
protected int to = -1; |
|
228 |
|
|
229 |
public Orientation(int to) { |
|
230 |
this.to = to; |
|
231 |
} |
|
232 |
} |
|
233 |
|
|
234 |
static class Axis extends Orientation { |
|
235 |
String name; |
|
236 |
|
|
237 |
public Axis(String name, int to) { |
|
238 |
super(to); |
|
239 |
this.name = name; |
|
240 |
} |
|
241 |
|
|
242 |
public String toWKT() { |
|
243 |
return "AXIS[\""+name+"\","+txt[to]+ "]"; |
|
244 |
} |
|
245 |
} |
|
246 |
|
|
247 |
static class TwinAxes { |
|
248 |
Axis axe1; |
|
249 |
Axis axe2; |
|
250 |
|
|
251 |
public TwinAxes(Axis a1, Axis a2) { |
|
252 |
axe1 = a1; |
|
253 |
axe2 = a2; |
|
254 |
} |
|
255 |
|
|
256 |
public String toWKT() { |
|
257 |
return axe1.toWKT()+","+axe2.toWKT(); |
|
258 |
} |
|
259 |
|
|
260 |
} |
|
261 |
|
|
262 |
static class GeogCS extends WKT { |
|
263 |
String name; |
|
264 |
Datum datum; |
|
265 |
PrimeM primeMeridian; |
|
266 |
Unit unit; |
|
267 |
TwinAxes axes = null; // optional |
|
268 |
Authority authority = null; // optional |
|
269 |
|
|
270 |
public GeogCS(String n, Datum d, PrimeM p, Unit u) { |
|
271 |
init(n, d, p, u, null, null); |
|
272 |
} |
|
273 |
|
|
274 |
public GeogCS(String n, Datum d, PrimeM p, Unit u, |
|
275 |
Authority a) { |
|
276 |
init(n, d, p, u, null, a); |
|
277 |
} |
|
278 |
|
|
279 |
public GeogCS(String n, Datum d, PrimeM p, Unit u, |
|
280 |
TwinAxes t) { |
|
281 |
init(n, d, p, u, t, null); |
|
282 |
} |
|
283 |
|
|
284 |
public GeogCS(String n, Datum d, PrimeM p, Unit u, |
|
285 |
TwinAxes t, Authority a) { |
|
286 |
init(n, d, p, u, t, a); |
|
287 |
} |
|
288 |
|
|
289 |
private void init(String n, Datum d, PrimeM p, Unit u, |
|
290 |
TwinAxes t, Authority a) { |
|
291 |
name = n; |
|
292 |
datum = d; |
|
293 |
primeMeridian = p; |
|
294 |
unit = u; |
|
295 |
axes = t; |
|
296 |
authority = a; |
|
297 |
} |
|
298 |
|
|
299 |
public String toWKT() { |
|
300 |
String txt = "GEOGCS[\""+name+"\","+datum.toWKT()+ |
|
301 |
","+primeMeridian.toWKT()+","+unit.toWKT(); |
|
302 |
if (axes != null) |
|
303 |
txt += ","+axes.toWKT(); |
|
304 |
if (authority != null) |
|
305 |
txt += ","+authority.toWKT(); |
|
306 |
return txt+"]"; |
|
307 |
} |
|
308 |
} |
|
309 |
|
|
310 |
static class Projection extends Parameter { |
|
311 |
public Projection(String n) { |
|
312 |
super(n); |
|
313 |
} |
|
314 |
|
|
315 |
public Projection(String n, Authority a) { |
|
316 |
super(n,a); |
|
317 |
} |
|
318 |
|
|
319 |
public String toWKT() { |
|
320 |
String txt = "PROJECTION[\""+name+"\""; |
|
321 |
if (authority != null) |
|
322 |
txt += ","+authority.toWKT(); |
|
323 |
return txt + "]"; |
|
324 |
} |
|
325 |
} |
|
326 |
|
|
327 |
static class ProjCS extends Parameter { |
|
328 |
GeogCS geogcs; |
|
329 |
Projection proj; |
|
330 |
ArrayList params = new ArrayList(); |
|
331 |
Unit unit; |
|
332 |
TwinAxes axes = null; // optional |
|
333 |
|
|
334 |
public ProjCS(String n, GeogCS cs, Projection prj, Unit u ) { |
|
335 |
super(n); |
|
336 |
Parameter [] p = {}; |
|
337 |
init(n, cs, prj, p, u, null); |
|
338 |
} |
|
339 |
|
|
340 |
public ProjCS(String n, GeogCS cs, Projection prj, |
|
341 |
Parameter [] p, Unit u ) { |
|
342 |
super(n); |
|
343 |
init(n, cs, prj, p, u, null); |
|
344 |
} |
|
345 |
|
|
346 |
public ProjCS(String n, GeogCS cs, Projection prj, |
|
347 |
Unit u, TwinAxes t, Authority a ) { |
|
348 |
super(n, a); |
|
349 |
Parameter [] p = {}; |
|
350 |
init(n, cs, prj, p, u, t); |
|
351 |
} |
|
352 |
|
|
353 |
public ProjCS(String n, GeogCS cs, Projection prj, |
|
354 |
Parameter [] p, Unit u, TwinAxes t, Authority a ) { |
|
355 |
super(n, a); |
|
356 |
init(n, cs, prj, p, u, t); |
|
357 |
} |
|
358 |
|
|
359 |
private void init(String n, GeogCS cs, Projection prj, |
|
360 |
Parameter [] p, Unit u, TwinAxes t) { |
|
361 |
geogcs = cs; |
|
362 |
proj = prj; |
|
363 |
for (int i=0; i<p.length; i++) |
|
364 |
params.add(p[i]); |
|
365 |
unit = u; |
|
366 |
axes = t; |
|
367 |
} |
|
368 |
|
|
369 |
public void add(Parameter p) { |
|
370 |
params.add(p); |
|
371 |
} |
|
372 |
|
|
373 |
public String toWKT() { |
|
374 |
String txt = "PROJCS[\""+name+"\","+geogcs.toWKT()+ |
|
375 |
","+proj.toWKT(); |
|
376 |
for (int i=0; i<params.size();i++) |
|
377 |
txt += ","+((Parameter)params.get(i)).toWKT(); |
|
378 |
txt += ","+unit.toWKT(); |
|
379 |
if (axes != null) |
|
380 |
txt += ","+axes.toWKT(); |
|
381 |
if (authority != null) |
|
382 |
txt += ","+authority.toWKT(); |
|
383 |
return txt+"]"; |
|
384 |
} |
|
385 |
} |
|
386 |
|
|
387 |
abstract public String toWKT(); |
|
388 |
} |
|
0 | 389 |
tags/org.gvsig.desktop-2.0.342/org.gvsig.desktop.compat.cdc/org.gvsig.projection/org.gvsig.projection.cresques/org.gvsig.projection.cresques.impl/src/main/java/org/cresques/impl/cts/ProjectionPool.java | ||
---|---|---|
1 |
/** |
|
2 |
* gvSIG. Desktop Geographic Information System. |
|
3 |
* |
|
4 |
* Copyright (C) 2007-2013 gvSIG Association. |
|
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 3 |
|
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 |
* For any additional information, do not hesitate to contact us |
|
22 |
* at info AT gvsig.com, or visit our website www.gvsig.com. |
|
23 |
*/ |
|
24 |
package org.cresques.impl.cts; |
|
25 |
|
|
26 |
import java.util.ArrayList; |
|
27 |
import java.util.Iterator; |
|
28 |
import java.util.Map; |
|
29 |
import java.util.TreeMap; |
|
30 |
|
|
31 |
import org.cresques.cts.ICRSFactory; |
|
32 |
import org.cresques.cts.IProjection; |
|
33 |
import org.cresques.impl.cts.gt2.CSDatum; |
|
34 |
import org.cresques.impl.cts.gt2.CSGaussPt; |
|
35 |
import org.cresques.impl.cts.gt2.CSLambertCC; |
|
36 |
import org.cresques.impl.cts.gt2.CSMercator; |
|
37 |
import org.cresques.impl.cts.gt2.CSUTM; |
|
38 |
import org.cresques.impl.cts.gt2.CoordSys; |
|
39 |
|
|
40 |
|
|
41 |
/** |
|
42 |
* Pool de proyeccions (cs+datum) conocidas. |
|
43 |
* @author "Luis W. Sevilla" <sevilla_lui@gva.es> |
|
44 |
*/ |
|
45 |
public class ProjectionPool implements ICRSFactory { |
|
46 |
static TreeMap data = null; |
|
47 |
|
|
48 |
static { |
|
49 |
CoordSys cs = null; |
|
50 |
data = new TreeMap(); |
|
51 |
|
|
52 |
cs = (new CSUTM(CSDatum.wgs84, 30)).toGeo(); |
|
53 |
cs.setAbrev("EPSG:4326"); // WGS84 (World Geodesic Datum) |
|
54 |
data.put(cs.getAbrev(), cs); |
|
55 |
data.put("CRS:84", cs); // CRS:84 = EPSG:4326 |
|
56 |
|
|
57 |
cs = (new CSUTM(CSDatum.ed50, 30)).toGeo(); |
|
58 |
cs.setAbrev("EPSG:4230"); // Datum Europeu Internacional ED50 |
|
59 |
data.put(cs.getAbrev(), cs); |
|
60 |
|
|
61 |
cs = (new CSUTM(CSDatum.d73, 30)).toGeo(); |
|
62 |
cs.setAbrev("EPSG:4274"); // Datum 73 de Lisboa |
|
63 |
data.put(cs.getAbrev(), cs); |
|
64 |
|
|
65 |
cs = (new CSUTM(CSDatum.nad27, 30)).toGeo(); |
|
66 |
cs.setAbrev("EPSG:4267"); // NAD 27 |
|
67 |
data.put(cs.getAbrev(), cs); |
|
68 |
|
|
69 |
cs = (new CSUTM(CSDatum.nad83, 30)).toGeo(); |
|
70 |
cs.setAbrev("EPSG:4269"); // NAD 83 |
|
71 |
data.put(cs.getAbrev(), cs); |
|
72 |
|
|
73 |
cs = (new CSUTM(CSDatum.lomaQuintana, 30)).toGeo(); |
|
74 |
cs.setAbrev("EPSG:4288"); // PSAD 56 'Loma Quintana' |
|
75 |
data.put(cs.getAbrev(), cs); |
|
76 |
|
|
77 |
cs = (new CSUTM(CSDatum.laCanoa, 30)).toGeo(); |
|
78 |
cs.setAbrev("EPSG:4247"); // PSAD 56 'Loma Quintana' |
|
79 |
data.put(cs.getAbrev(), cs); |
|
80 |
|
|
81 |
cs = (new CSUTM(CSDatum.ntfParis, 30)).toGeo(); |
|
82 |
cs.setAbrev("EPSG:4807"); // NTF Paris |
|
83 |
data.put(cs.getAbrev(), cs); |
|
84 |
|
|
85 |
cs = (new CSUTM(CSDatum.etrs89, 30)).toGeo(); |
|
86 |
cs.setAbrev("EPSG:4258"); // ETRS 89 |
|
87 |
data.put(cs.getAbrev(), cs); |
|
88 |
for (int i = 1; i <= 60; i++) { |
|
89 |
String huso = Integer.toString(i); |
|
90 |
|
|
91 |
if (i < 10) { |
|
92 |
huso = "0" + huso; |
|
93 |
} |
|
94 |
|
|
95 |
cs = new CSUTM(CSDatum.wgs84, i); |
|
96 |
cs.setAbrev("EPSG:326" + huso); |
|
97 |
data.put(cs.getAbrev(), cs); |
|
98 |
|
|
99 |
cs = new CSUTM(CSDatum.ed50, i); |
|
100 |
cs.setAbrev("EPSG:230" + huso); |
|
101 |
data.put(cs.getAbrev(), cs); |
|
102 |
if (i>2 && i<=23) { |
|
103 |
cs = new CSUTM(CSDatum.nad27, i); |
|
104 |
cs.setAbrev("EPSG:267" + huso); |
|
105 |
data.put(cs.getAbrev(), cs); |
|
106 |
|
|
107 |
cs = new CSUTM(CSDatum.nad83, i); |
|
108 |
cs.setAbrev("EPSG:269" + huso); |
|
109 |
data.put(cs.getAbrev(), cs); |
|
110 |
} |
|
111 |
if (i>27 && i<39) { |
|
112 |
cs = new CSUTM(CSDatum.etrs89, i); |
|
113 |
cs.setAbrev("EPSG:258" + huso); |
|
114 |
data.put(cs.getAbrev(), cs); |
|
115 |
} |
|
116 |
} |
|
117 |
|
|
118 |
cs = CSGaussPt.hgd73; |
|
119 |
cs.setAbrev("EPSG:27492"); // Projec??o Gauss do Datum 73 de Lisboa (no EPSG found) |
|
120 |
data.put(cs.getAbrev(), cs); |
|
121 |
|
|
122 |
cs = new CSUTM(CSDatum.d73, 29); |
|
123 |
cs.setAbrev("EPSG:27429"); // Projec??o Gauss do Datum 73 de Lisboa (no EPSG found) |
|
124 |
data.put(cs.getAbrev(), cs); |
|
125 |
|
|
126 |
for (int i = 18; i <= 21; i++) { |
|
127 |
String huso = Integer.toString(i); |
|
128 |
|
|
129 |
if (i < 10) { |
|
130 |
huso = "0" + huso; |
|
131 |
} |
|
132 |
|
|
133 |
cs = new CSUTM(CSDatum.laCanoa, i); |
|
134 |
cs.setAbrev("EPSG:247" + huso); |
|
135 |
data.put(cs.getAbrev(), cs); |
|
136 |
} |
|
137 |
|
|
138 |
for (int i = 16; i <= 22; i++) { |
|
139 |
String huso = Integer.toString(i); |
|
140 |
// Psad56 Ecuador |
|
141 |
cs = new CSUTM(CSDatum.lomaQuintana, i); |
|
142 |
cs.setAbrev("EPSG:288" + huso); |
|
143 |
data.put(cs.getAbrev(), cs); |
|
144 |
cs = new CSUTM(CSDatum.lomaQuintana, i, "S"); |
|
145 |
cs.setAbrev("EPSG:288" + (i+60) ); |
|
146 |
data.put(cs.getAbrev(), cs); |
|
147 |
} |
|
148 |
|
|
149 |
// cs = new CSLambertCC(CSDatum.nad27, -105D, 49D, 49D, 77D, 0, 0); |
|
150 |
// cs.setAbrev("LCCCan"); |
|
151 |
// data.put(cs.getAbrev(), cs); |
|
152 |
/* Para el server WMS de canad?: |
|
153 |
* EPSG:42101 |
|
154 |
* EPSG:42304 |
|
155 |
* EPSG:4269 |
|
156 |
*/ |
|
157 |
/* |
|
158 |
* 42101,PROJCS["WGS 84 / LCC Canada", |
|
159 |
* GEOGCS["WGS 84",DATUM["WGS_1984", |
|
160 |
* SPHEROID["WGS_1984",6378137,298.257223563]], |
|
161 |
* PRIMEM["Greenwich",0],UNIT["Decimal_Degree",0.0174532925199433]], |
|
162 |
* |
|
163 |
* PROJECTION["Lambert_Conformal_Conic_2SP"], |
|
164 |
* PARAMETER["central_meridian",-95.0], |
|
165 |
* PARAMETER["latitude_of_origin",0], |
|
166 |
* PARAMETER["standard_parallel_1",49.0], |
|
167 |
* PARAMETER["standard_parallel_2",77.0], |
|
168 |
* PARAMETER["false_easting",0.0], |
|
169 |
* PARAMETER["false_northing",-8000000.0], |
|
170 |
* UNIT["Meter",1],AUTHORITY["EPSG","42101"]] |
|
171 |
*/ |
|
172 |
cs = new CSLambertCC(CSDatum.wgs84, -95, 0, 49, 77, 0, -8000000.0); |
|
173 |
cs.setAbrev("EPSG:42101"); |
|
174 |
data.put(cs.getAbrev(), cs); |
|
175 |
|
|
176 |
/* 42304,PROJCS["NAD83 / NRCan LCC Canada", |
|
177 |
* GEOGCS["NAD83",DATUM["North_American_Datum_1983", |
|
178 |
* SPHEROID["GRS_1980",6378137,298.257222101]], |
|
179 |
* PRIMEM["Greenwich",0], |
|
180 |
* UNIT["Decimal_Degree",0.0174532925199433]], |
|
181 |
* |
|
182 |
* PROJECTION["Lambert_Conformal_Conic_2SP"], |
|
183 |
* PARAMETER["central_meridian",-95.0], |
|
184 |
* PARAMETER["latitude_of_origin",49.0], |
|
185 |
* PARAMETER["standard_parallel_1",49.0], |
|
186 |
* PARAMETER["standard_parallel_2",77.0], |
|
187 |
* PARAMETER["false_easting",0.0], |
|
188 |
* PARAMETER["false_northing",0.0], |
|
189 |
* UNIT["Meter",1],AUTHORITY["EPSG","42304"]] |
|
190 |
*/ |
|
191 |
cs = new CSLambertCC(CSDatum.nad83, -95, 49, 49, 77, 0, 0); |
|
192 |
cs.setAbrev("EPSG:42304"); |
|
193 |
data.put(cs.getAbrev(), cs); |
|
194 |
|
|
195 |
/* |
|
196 |
* EPSG:26915 - NAD83 / UTM zone 15N |
|
197 |
* EPSG:31466 - Gau?-Kr?ger band 2 |
|
198 |
* EPSG:31467 - Gau?-Kr?ger band 3 |
|
199 |
* EPSG:4314 - DHDN |
|
200 |
*/ |
|
201 |
/* |
|
202 |
* 27572=PROJCS["NTF (Paris) / Lambert zone II", |
|
203 |
GEOGCS["NTF (Paris)", |
|
204 |
DATUM["Nouvelle_Triangulation_Francaise_Paris", |
|
205 |
SPHEROID["Clarke 1880 (IGN)",6378249.2,293.4660212936269, |
|
206 |
AUTHORITY["EPSG","7011"]], |
|
207 |
TOWGS84[-168,-60,320,0,0,0,0], |
|
208 |
AUTHORITY["EPSG","6807"]], |
|
209 |
PRIMEM["Paris",2.33722917,AUTHORITY["EPSG","8903"]], |
|
210 |
UNIT["grad",0.01570796326794897,AUTHORITY["EPSG","9105"]], |
|
211 |
AUTHORITY["EPSG","4807"]], |
|
212 |
PROJECTION["Lambert_Conformal_Conic_1SP"], |
|
213 |
PARAMETER["latitude_of_origin",52], |
|
214 |
PARAMETER["central_meridian",0], |
|
215 |
PARAMETER["scale_factor",0.99987742], |
|
216 |
PARAMETER["false_easting",600000], |
|
217 |
PARAMETER["false_northing",2200000], |
|
218 |
UNIT["metre",1,AUTHORITY["EPSG","9001"]], |
|
219 |
AUTHORITY["EPSG","27572"]] |
|
220 |
*/ |
|
221 |
|
|
222 |
cs = new CSLambertCC(CSDatum.ntfParis, 0, 46.79999999999995, 0.99987742, 600000, 2200000); |
|
223 |
cs.setAbrev("EPSG:27572"); |
|
224 |
data.put(cs.getAbrev(), cs); |
|
225 |
|
|
226 |
cs = new CSLambertCC(CSDatum.ntfParis, 0, 52, 0.99987742, 600000, 2200000); |
|
227 |
cs.setAbrev("EPSG:27582"); |
|
228 |
data.put(cs.getAbrev(), cs); |
|
229 |
/* |
|
230 |
* # RGF93 |
|
231 |
* <4171> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> |
|
232 |
* # RGF93 / Lambert-93 |
|
233 |
*/ |
|
234 |
cs = (new CSUTM(CSDatum.rgf93, 30)).toGeo(); |
|
235 |
cs.setAbrev("EPSG:4171"); // NTF Paris |
|
236 |
data.put(cs.getAbrev(), cs); |
|
237 |
/* |
|
238 |
* <2154> +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 |
|
239 |
* +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 |
|
240 |
* +units=m +no_defs <> |
|
241 |
*/ |
|
242 |
cs = new CSLambertCC(CSDatum.rgf93, 3.0, 46.5, 49.0, 44.0, 700000.0, 6600000.0); |
|
243 |
cs.setAbrev("EPSG:2154"); |
|
244 |
data.put(cs.getAbrev(), cs); |
|
245 |
|
|
246 |
cs = new CSMercator(CSDatum.wgs84); |
|
247 |
cs.setAbrev("EPSG:54004"); |
|
248 |
data.put(cs.getAbrev(), cs); |
|
249 |
cs.setAbrev("EPSG:9804"); |
|
250 |
data.put(cs.getAbrev(), cs); |
|
251 |
|
|
252 |
// Lo que faltaba: ?planetas! |
|
253 |
cs = (new CSUTM(CSDatum.moon, 30)).toGeo(); |
|
254 |
cs.setAbrev("IAU2000:30100"); // Moon |
|
255 |
data.put(cs.getAbrev(), cs); |
|
256 |
|
|
257 |
cs = (new CSUTM(CSDatum.mars, 30)).toGeo(); |
|
258 |
cs.setAbrev("IAU2000:49900"); // Mars |
|
259 |
data.put(cs.getAbrev(), cs); |
|
260 |
|
|
261 |
/* |
|
262 |
* CRSs argentinos. |
|
263 |
* coordenadas geograficas |
|
264 |
PosGAr 4172 |
|
265 |
PosGAr98 4190 |
|
266 |
|
|
267 |
coordenadas proyectadas |
|
268 |
POSGAR 94/Argentina 1 22191 |
|
269 |
POSGAR 94/Argentina 2 22192 |
|
270 |
POSGAR 94/Argentina 3 22193 |
|
271 |
POSGAR 94/Argentina 4 22194 |
|
272 |
POSGAR 94/Argentina 5 22195 |
|
273 |
POSGAR 94/Argentina 6 22196 |
|
274 |
POSGAR 94/Argentina 7 22197 |
|
275 |
|
|
276 |
POSGAR 98/Argentina 1 22181 |
|
277 |
POSGAR 98/Argentina 2 22182 |
|
278 |
POSGAR 98/Argentina 3 22183 |
|
279 |
POSGAR 98/Argentina 4 22184 |
|
280 |
POSGAR 98/Argentina 5 22185 |
|
281 |
POSGAR 98/Argentina 6 22186 |
|
282 |
POSGAR 98/Argentina 7 22187 |
|
283 |
|
|
284 |
4221 GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] |
|
285 |
|
|
286 |
22191 EPSG 22191 PROJCS["Argentina_Zone_1",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-72],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]] +proj=tmerc +lat_0=-90 +lon_0=-72 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=intl +units=m |
|
287 |
22192 EPSG 22192 PROJCS["Argentina_Zone_2",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]] +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +units=m |
|
288 |
22193 EPSG 22193 PROJCS["Argentina_Zone_3",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",3500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-66],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]] +proj=tmerc +lat_0=-90 +lon_0=-66 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=intl +units=m |
|
289 |
22194 EPSG 22194 PROJCS["Argentina_Zone_4",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",4500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]] +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=intl +units=m |
|
290 |
22195 EPSG 22195 PROJCS["Argentina_Zone_5",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",5500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-60],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]] +proj=tmerc +lat_0=-90 +lon_0=-60 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=intl +units=m |
|
291 |
22196 EPSG 22196 PROJCS["Argentina_Zone_6",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",6500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]] +proj=tmerc +lat_0=-90 +lon_0=-57 +k=1.000000 +x_0=6500000 +y_0=0 +ellps=intl +units=m |
|
292 |
22197 EPSG 22197 PROJCS["Argentina_Zone_7",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",7500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-54],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]] +proj=tmerc +lat_0=-90 +lon_0=-54 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=intl +units=m |
|
293 |
|
|
294 |
*/ |
|
295 |
cs = new CoordSys(CSDatum.posgar); |
|
296 |
cs.setAbrev("EPSG:4172"); // Posgar |
|
297 |
data.put(cs.getAbrev(), cs); |
|
298 |
|
|
299 |
cs = new CoordSys( |
|
300 |
"GEOGCS[\"GCS_Campo_Inchauspe\"," + |
|
301 |
"DATUM[\"D_Campo_Inchauspe\"," + |
|
302 |
"SPHEROID[\"International_1924\",6378388,297],"+ |
|
303 |
"TOWGS84[0,0,0,0,0,0,0]]," + |
|
304 |
"PRIMEM[\"Greenwich\",0]," + |
|
305 |
"UNIT[\"Degree\",0.017453292519943295]]"); |
|
306 |
cs.setAbrev("EPSG:4221"); // Campo Inchauspe |
|
307 |
data.put(cs.getAbrev(), cs); |
|
308 |
|
|
309 |
for (int i=1; i<=7; i++) { |
|
310 |
cs = new CoordSys( |
|
311 |
"PROJCS[\"Argentina_Zone_"+i+"\"," + |
|
312 |
"GEOGCS[\"GCS_Campo_Inchauspe\"," + |
|
313 |
"DATUM[\"D_Campo_Inchauspe\"," + |
|
314 |
"SPHEROID[\"International_1924\",6378388,297],"+ |
|
315 |
"TOWGS84[0,0,0,0,0,0,0]]," + |
|
316 |
"PRIMEM[\"Greenwich\",0]," + |
|
317 |
"UNIT[\"Degree\",0.017453292519943295]]," + |
|
318 |
"PROJECTION[\"Transverse_Mercator\"]," + |
|
319 |
"PARAMETER[\"False_Easting\",1500000]," + |
|
320 |
"PARAMETER[\"False_Northing\",0]," + |
|
321 |
"PARAMETER[\"Central_Meridian\","+(-75+3*i)+"]," + |
|
322 |
"PARAMETER[\"Scale_Factor\",1]," + |
|
323 |
"PARAMETER[\"Latitude_Of_Origin\",-90]," + |
|
324 |
"UNIT[\"Meter\",1]]"); |
|
325 |
cs.setAbrev("EPSG:2219"+i); // Posgar |
|
326 |
data.put(cs.getAbrev(), cs); |
|
327 |
} |
|
328 |
|
|
329 |
/* |
|
330 |
* pendiente de a?adir: |
|
331 |
* |
|
332 |
* EPSG 3003: Montemario / Italy Zone 1 - Pendiente de a?adir |
|
333 |
* EPSG 4149: CH1903 - Pendiente de a?adir |
|
334 |
* Ecuador: |
|
335 |
* PSAD56, Geo, UTM 16/17S,16/17N |
|
336 |
*/ |
|
337 |
} |
|
338 |
|
|
339 |
/** |
|
340 |
* Mete una nueva proyeccion en la Pool. |
|
341 |
* @param name abreviatura de la proyecccion (i.e. EPSG:23030) |
|
342 |
* @param proj Proyeccion |
|
343 |
*/ |
|
344 |
public static void add(String name, IProjection proj) { |
|
345 |
data.put(name, proj); |
|
346 |
} |
|
347 |
|
|
348 |
/** |
|
349 |
* Devuelve una proyeccion a partir de una cadena. |
|
350 |
* @param name abreviatura de la proyecccion (i.e. EPSG:23030) |
|
351 |
* @return Proyeccion si existe |
|
352 |
*/ |
|
353 |
public IProjection get(String name) { |
|
354 |
IProjection proj = null; |
|
355 |
|
|
356 |
if (ProjectionPool.data.containsKey(name)) { |
|
357 |
proj = (IProjection) ProjectionPool.data.get(name); |
|
358 |
} else { |
|
359 |
// Consultation to remote EPSG database |
|
360 |
// if (right) |
|
361 |
// buil new IProjection from GML |
|
362 |
// else |
|
363 |
System.err.println("ProjectionPool: Key '" + name + "' not set."); |
|
364 |
} |
|
365 |
|
|
366 |
return proj; |
|
367 |
} |
|
368 |
|
|
369 |
public static Iterator iterator() { |
|
370 |
ArrayList projs = new ArrayList(); |
|
371 |
|
|
372 |
Iterator iter = data.entrySet().iterator(); |
|
373 |
|
|
374 |
while (iter.hasNext()) { |
|
375 |
projs.add(((Map.Entry) iter.next()).getValue()); |
|
376 |
} |
|
377 |
|
|
378 |
return projs.iterator(); |
|
379 |
} |
|
380 |
|
|
381 |
public boolean doesRigurousTransformations() { |
|
382 |
return false; |
|
383 |
} |
|
384 |
|
|
385 |
/* (non-Javadoc) |
|
386 |
* @see org.cresques.cts.ICRSFactory#get(java.lang.String, java.lang.String) |
|
387 |
*/ |
|
388 |
@Override |
|
389 |
public IProjection get(String format, String value) { |
|
390 |
// TODO Auto-generated method stub |
|
391 |
return null; |
|
392 |
} |
|
393 |
} |
|
0 | 394 |
tags/org.gvsig.desktop-2.0.342/org.gvsig.desktop.compat.cdc/org.gvsig.projection/org.gvsig.projection.cresques/org.gvsig.projection.cresques.impl/src/main/java/org/cresques/impl/cts/gt2/CSUTM.java | ||
---|---|---|
1 |
/** |
|
2 |
* gvSIG. Desktop Geographic Information System. |
|
3 |
* |
|
4 |
* Copyright (C) 2007-2013 gvSIG Association. |
|
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 3 |
|
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 |
* For any additional information, do not hesitate to contact us |
|
22 |
* at info AT gvsig.com, or visit our website www.gvsig.com. |
|
23 |
*/ |
|
24 |
package org.cresques.impl.cts.gt2; |
|
25 |
|
|
26 |
import org.cresques.cts.UTM; |
|
27 |
import org.geotools.cs.AxisInfo; |
|
28 |
import org.geotools.cs.Projection; |
|
29 |
import org.geotools.units.Unit; |
|
30 |
import org.gvsig.fmap.crs.CRSFactory; |
|
31 |
import org.opengis.referencing.FactoryException; |
|
32 |
|
|
33 |
|
|
34 |
/** |
|
35 |
* @author "Luis W. Sevilla" <sevilla_lui@gva.es> |
|
36 |
*/ |
|
37 |
public class CSUTM extends CoordSys implements UTM { |
|
38 |
public CSUTM(CSDatum datum, int zone) { |
|
39 |
super(datum); |
|
40 |
init(datum, zone, "N"); |
|
41 |
} |
|
42 |
|
|
43 |
public CSUTM(CSDatum datum, int zone, String ns) { |
|
44 |
super(datum); |
|
45 |
init(datum, zone, ns); |
|
46 |
} |
|
47 |
|
|
48 |
public void init(CSDatum datum, int zone, String ns) { |
|
49 |
Unit linearUnit = Unit.METRE; |
|
50 |
|
|
51 |
javax.media.jai.ParameterList params = csFactory.createProjectionParameterList("Transverse_Mercator"); |
|
52 |
params.setParameter("semi_major", |
|
53 |
datum.getDatum().getEllipsoid().getSemiMajorAxis()); |
|
54 |
params.setParameter("semi_minor", |
|
55 |
datum.getDatum().getEllipsoid().getSemiMinorAxis()); |
|
56 |
params.setParameter("central_meridian", (double) ((zone * 6) - 183)); |
|
57 |
params.setParameter("latitude_of_origin", 0.0); |
|
58 |
params.setParameter("scale_factor", 0.9996); |
|
59 |
params.setParameter("false_easting", 500000.0); |
|
60 |
if (ns.toUpperCase().compareTo("S") == 0) |
|
61 |
params.setParameter("false_northing", 10000000.0); |
|
62 |
else |
|
63 |
params.setParameter("false_northing", 0.0); |
|
64 |
|
|
65 |
try { |
|
66 |
Projection projection = csFactory.createProjection("UTM" + zone, |
|
67 |
"Transverse_Mercator", |
|
68 |
params); |
|
69 |
projCS = csFactory.createProjectedCoordinateSystem(projection.getName() |
|
70 |
.toString(), |
|
71 |
geogCS, |
|
72 |
projection, |
|
73 |
linearUnit, |
|
74 |
AxisInfo.X, |
|
75 |
AxisInfo.Y); |
|
76 |
} catch (FactoryException e) { |
|
77 |
// TODO Bloque catch generado autom?ticamente |
|
78 |
e.printStackTrace(); |
|
79 |
} |
|
80 |
} |
|
81 |
|
|
82 |
public double getScale(double minX, double maxX, double w, double dpi) { |
|
83 |
double scale = super.getScale(minX, maxX, w, dpi); |
|
84 |
|
|
85 |
if (projCS != null) { // Es geogr?fico; calcula la escala. |
|
86 |
scale = ((maxX - minX) * // metros |
|
87 |
(dpi / 2.54 * 100.0)) / // px / metro |
|
88 |
w; // pixels |
|
89 |
} |
|
90 |
|
|
91 |
return scale; |
|
92 |
} |
|
93 |
|
|
94 |
public String toString() { |
|
95 |
return projCS.toString(); |
|
96 |
} |
|
97 |
|
|
98 |
public Object clone() throws CloneNotSupportedException { |
|
99 |
return CRSFactory.getCRS( this.getFullCode() ); |
|
100 |
} |
|
101 |
|
|
102 |
} |
|
0 | 103 |
tags/org.gvsig.desktop-2.0.342/org.gvsig.desktop.compat.cdc/org.gvsig.projection/org.gvsig.projection.cresques/org.gvsig.projection.cresques.impl/src/main/java/org/cresques/impl/cts/gt2/CSGaussPt.java | ||
---|---|---|
1 |
/** |
|
2 |
* gvSIG. Desktop Geographic Information System. |
|
3 |
* |
|
4 |
* Copyright (C) 2007-2013 gvSIG Association. |
|
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 3 |
|
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 |
* For any additional information, do not hesitate to contact us |
|
22 |
* at info AT gvsig.com, or visit our website www.gvsig.com. |
|
23 |
*/ |
|
24 |
package org.cresques.impl.cts.gt2; |
|
25 |
|
|
26 |
import org.geotools.cs.AxisInfo; |
|
27 |
import org.geotools.cs.GeographicCoordinateSystem; |
|
28 |
import org.geotools.cs.Projection; |
|
29 |
|
|
30 |
import org.geotools.measure.Angle; |
|
31 |
|
|
32 |
import org.geotools.units.Unit; |
|
33 |
|
|
34 |
import org.opengis.referencing.FactoryException; |
|
35 |
|
|
36 |
|
|
37 |
/** |
|
38 |
* @author "Luis W. Sevilla" <sevilla_lui@gva.es> |
|
39 |
* |
|
40 |
*/ |
|
41 |
public class CSGaussPt extends CoordSys { |
|
42 |
public static CSGaussPt hgd73 = new CSGaussPt(CSDatum.d73); |
|
43 |
|
|
44 |
public CSGaussPt(CSDatum datum) { |
|
45 |
super(datum); |
|
46 |
geogCS = new GeographicCoordinateSystem(datum.getName(null), |
|
47 |
datum.getDatum()); |
|
48 |
|
|
49 |
Unit linearUnit = Unit.METRE; |
|
50 |
|
|
51 |
javax.media.jai.ParameterList params = csFactory.createProjectionParameterList("Oblique_Stereographic"); |
|
52 |
params.setParameter("semi_major", |
|
53 |
datum.getDatum().getEllipsoid().getSemiMajorAxis()); |
|
54 |
params.setParameter("semi_minor", |
|
55 |
datum.getDatum().getEllipsoid().getSemiMinorAxis()); |
|
56 |
params.setParameter("central_meridian", |
|
57 |
(new Angle("8?07'54.862\"W")).degrees()); |
|
58 |
|
|
59 |
//params.setParameter("longitude_of_origin", (new Angle("8?07'54.862\"")).degrees()); |
|
60 |
params.setParameter("latitude_of_origin", |
|
61 |
(new Angle("39?40'N")).degrees()); |
|
62 |
params.setParameter("scale_factor", 1.0); |
|
63 |
params.setParameter("false_easting", 0D); //180598D); |
|
64 |
params.setParameter("false_northing", 0D); //-86990D); |
|
65 |
|
|
66 |
try { |
|
67 |
Projection projection = csFactory.createProjection("GAUSS", |
|
68 |
"Oblique_Stereographic", |
|
69 |
params); |
|
70 |
projCS = csFactory.createProjectedCoordinateSystem(projection.getName() |
|
71 |
.toString(), |
|
72 |
geogCS, |
|
73 |
projection, |
|
74 |
linearUnit, |
|
75 |
AxisInfo.X, |
|
76 |
AxisInfo.Y); |
|
77 |
} catch (FactoryException e) { |
|
78 |
// TODO Bloque catch generado autom?ticamente |
|
79 |
e.printStackTrace(); |
|
80 |
} |
|
81 |
} |
|
82 |
|
|
83 |
public String toString() { |
|
84 |
return projCS.toString(); |
|
85 |
} |
|
86 |
} |
|
0 | 87 |
tags/org.gvsig.desktop-2.0.342/org.gvsig.desktop.compat.cdc/org.gvsig.projection/org.gvsig.projection.cresques/org.gvsig.projection.cresques.impl/src/main/java/org/cresques/impl/cts/gt2/CoordTrans.java | ||
---|---|---|
1 |
/** |
|
2 |
* gvSIG. Desktop Geographic Information System. |
|
3 |
* |
|
4 |
* Copyright (C) 2007-2013 gvSIG Association. |
|
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 3 |
|
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 |
* For any additional information, do not hesitate to contact us |
|
22 |
* at info AT gvsig.com, or visit our website www.gvsig.com. |
|
23 |
*/ |
|
24 |
package org.cresques.impl.cts.gt2; |
|
25 |
|
|
26 |
import java.awt.geom.Point2D; |
|
27 |
import java.awt.geom.Rectangle2D; |
|
28 |
|
|
29 |
import org.cresques.cts.ICoordTrans; |
|
30 |
import org.cresques.cts.IProjection; |
|
31 |
import org.geotools.ct.CannotCreateTransformException; |
|
32 |
import org.geotools.ct.CoordinateTransformation; |
|
33 |
import org.geotools.ct.CoordinateTransformationFactory; |
|
34 |
import org.geotools.ct.MathTransform; |
|
35 |
import org.geotools.pt.CoordinatePoint; |
|
36 |
import org.opengis.referencing.operation.TransformException; |
|
37 |
|
|
38 |
|
|
39 |
//import org.geotools.pt.MismatchedDimensionException; |
|
40 |
|
|
41 |
/** |
|
42 |
* Transforma coordenadas entre dos sistemas |
|
43 |
* @see org.creques.cts.CoordSys |
|
44 |
* @author "Luis W. Sevilla" <sevilla_lui@gva.es> |
|
45 |
*/ |
|
46 |
class CoordTrans implements ICoordTrans { |
|
47 |
private CoordinateTransformationFactory trFactory = CoordinateTransformationFactory.getDefault(); |
|
48 |
private CoordinateTransformation tr = null; |
|
49 |
private MathTransform mt = null; |
|
50 |
private MathTransform mt2 = null; |
|
51 |
private MathTransform mt3 = null; |
|
52 |
private MathTransform mtDatum = null; |
|
53 |
private CoordSys from = null; |
|
54 |
private CoordSys to = null; |
|
55 |
|
|
56 |
private ICoordTrans invertedCT = null; |
|
57 |
|
|
58 |
public CoordTrans(CoordSys from, CoordSys to) { |
|
59 |
this.from = from; |
|
60 |
this.to = to; |
|
61 |
|
|
62 |
// Si los dos CoordSys son proyectados, entonces hay |
|
63 |
// que hacer dos transformaciones (pasar por geogr?ficas) |
|
64 |
// Si hay cambio de datum son 3 las transformaciones |
|
65 |
try { |
|
66 |
if (from.getDatum() != to.getDatum()) { |
|
67 |
tr = trFactory.createFromCoordinateSystems(from.toGeo().getCS(), |
|
68 |
to.toGeo().getCS()); |
|
69 |
mtDatum = tr.getMathTransform(); |
|
70 |
} |
|
71 |
|
|
72 |
if ((from.projCS != null) && (to.projCS != null)) { |
|
73 |
CoordSys geogcs = from.toGeo(); |
|
74 |
tr = trFactory.createFromCoordinateSystems(from.getCS(), |
|
75 |
geogcs.getCS()); |
|
76 |
mt = tr.getMathTransform(); |
|
77 |
|
|
78 |
if (mtDatum != null) { |
|
79 |
mt2 = mtDatum; |
|
80 |
} |
|
81 |
|
|
82 |
geogcs = to.toGeo(); |
|
83 |
tr = trFactory.createFromCoordinateSystems(geogcs.getCS(), |
|
84 |
to.getCS()); |
|
85 |
|
|
86 |
if (mt2 == null) { |
|
87 |
mt2 = tr.getMathTransform(); |
|
88 |
} else { |
|
89 |
mt3 = tr.getMathTransform(); |
|
90 |
} |
|
91 |
} else { |
|
92 |
if (from.projCS == null) { |
|
93 |
mt = mtDatum; |
|
94 |
} |
|
95 |
|
|
96 |
tr = trFactory.createFromCoordinateSystems(from.getCS(), |
|
97 |
to.getCS()); |
|
98 |
|
|
99 |
if (mt == null) { |
|
100 |
mt = tr.getMathTransform(); |
|
101 |
|
|
102 |
if (mtDatum != null) { |
|
103 |
mt2 = mtDatum; |
|
104 |
} |
|
105 |
} else { |
|
106 |
mt2 = tr.getMathTransform(); |
|
107 |
} |
|
108 |
} |
|
109 |
} catch (CannotCreateTransformException e) { |
|
110 |
// TODO Bloque catch generado autom?ticamente |
|
111 |
e.printStackTrace(); |
|
112 |
} |
|
113 |
} |
|
114 |
|
|
115 |
public IProjection getPOrig() { |
|
116 |
return from; |
|
117 |
} |
|
118 |
|
|
119 |
public IProjection getPDest() { |
|
120 |
return to; |
|
121 |
} |
|
122 |
|
|
123 |
public ICoordTrans getInverted() { |
|
124 |
if (invertedCT == null) |
|
125 |
invertedCT = new CoordTrans(to, from); |
|
126 |
return invertedCT; |
|
127 |
} |
|
128 |
|
|
129 |
public Point2D convert(Point2D ptOrig, Point2D ptDest) { |
|
130 |
CoordinatePoint pt1 = new CoordinatePoint(ptOrig); |
|
131 |
CoordinatePoint pt2 = new CoordinatePoint(0D, 0D); |
|
132 |
ptDest = null; |
|
133 |
|
|
134 |
try { |
|
135 |
mt.transform(pt1, pt2); |
|
136 |
ptDest = pt2.toPoint2D(); |
|
137 |
|
|
138 |
if (mt2 != null) { |
|
139 |
mt2.transform(pt2, pt1); |
|
140 |
ptDest = pt1.toPoint2D(); |
|
141 |
|
|
142 |
if (mt3 != null) { |
|
143 |
mt3.transform(pt1, pt2); |
|
144 |
ptDest = pt2.toPoint2D(); |
|
145 |
} |
|
146 |
} |
|
147 |
|
|
148 |
/*} catch (MismatchedDimensionException e) { |
|
149 |
// TODO Bloque catch generado autom?ticamente |
|
150 |
e.printStackTrace(); |
|
151 |
*/ |
|
152 |
} catch (TransformException e) { |
|
153 |
// TODO Bloque catch generado autom?ticamente |
|
154 |
e.printStackTrace(); |
|
155 |
} |
|
156 |
|
|
157 |
return ptDest; |
|
158 |
} |
|
159 |
|
|
160 |
public String toString() { |
|
161 |
return tr.toString(); |
|
162 |
} |
|
163 |
|
|
164 |
/* (non-Javadoc) |
|
165 |
* @see org.cresques.cts.ICoordTrans#convert(java.awt.geom.Rectangle2D) |
|
166 |
*/ |
|
167 |
public Rectangle2D convert(Rectangle2D rect) { |
|
168 |
|
|
169 |
Point2D pt1 = new Point2D.Double(rect.getMinX(), rect.getMinY()); |
|
170 |
Point2D pt2 = new Point2D.Double(rect.getMaxX(), rect.getMaxY()); |
|
171 |
Point2D pt3 = new Point2D.Double(rect.getMinX(), rect.getMaxY()); |
|
172 |
Point2D pt4 = new Point2D.Double(rect.getMaxX(), rect.getMinY()); |
|
173 |
|
|
174 |
convert(pt1, pt1); |
|
175 |
convert(pt2, pt2); |
|
176 |
convert(pt3, pt3); |
|
177 |
convert(pt4, pt4); |
|
178 |
|
|
179 |
double min_x = Math.min( |
|
180 |
Math.min(pt1.getX(), pt2.getX()), |
|
181 |
Math.min(pt3.getX(), pt4.getX())); |
|
182 |
double min_y = Math.min( |
|
183 |
Math.min(pt1.getY(), pt2.getY()), |
|
184 |
Math.min(pt3.getY(), pt4.getY())); |
|
185 |
double max_x = Math.max( |
|
186 |
Math.max(pt1.getX(), pt2.getX()), |
|
187 |
Math.max(pt3.getX(), pt4.getX())); |
|
188 |
double max_y = Math.max( |
|
189 |
Math.max(pt1.getY(), pt2.getY()), |
|
190 |
Math.max(pt3.getY(), pt4.getY())); |
|
191 |
|
|
192 |
return new Rectangle2D.Double( |
|
193 |
min_x, min_y, max_x - min_x, max_y - min_y); |
|
194 |
|
|
195 |
} |
|
196 |
} |
|
0 | 197 |
tags/org.gvsig.desktop-2.0.342/org.gvsig.desktop.compat.cdc/org.gvsig.projection/org.gvsig.projection.cresques/org.gvsig.projection.cresques.impl/src/main/java/org/cresques/impl/cts/gt2/CSDatum.java | ||
---|---|---|
1 |
/** |
|
2 |
* gvSIG. Desktop Geographic Information System. |
|
3 |
* |
|
4 |
* Copyright (C) 2007-2013 gvSIG Association. |
|
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 3 |
|
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 |
* For any additional information, do not hesitate to contact us |
|
22 |
* at info AT gvsig.com, or visit our website www.gvsig.com. |
|
23 |
*/ |
|
24 |
package org.cresques.impl.cts.gt2; |
|
25 |
|
|
26 |
import java.util.Locale; |
|
27 |
|
|
28 |
import org.cresques.cts.IDatum; |
|
29 |
import org.geotools.cs.CoordinateSystemFactory; |
|
30 |
import org.geotools.cs.GeographicCoordinateSystem; |
|
31 |
import org.geotools.cs.HorizontalDatum; |
|
32 |
import org.opengis.referencing.FactoryException; |
|
33 |
|
|
34 |
|
|
35 |
/** |
|
36 |
* Datum (y Ellipsoid) de GeoTools2. |
|
37 |
* |
|
38 |
* @author "Luis W. Sevilla" <sevilla_lui@gva.es> |
|
39 |
*/ |
|
40 |
public class CSDatum implements IDatum { |
|
41 |
private static String line1 = "DATUM[\"WGS_1984\"," + |
|
42 |
"SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]]," + |
|
43 |
"TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6326\"]]"; |
|
44 |
private static String line2 = "DATUM[\"European_Datum_1950\"," + |
|
45 |
"SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]," + |
|
46 |
"TOWGS84[-84,-107,-120,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]]"; |
|
47 |
private static String line3 = "DATUM[\"Nouvelle_Triangulation_Francaise\"," + |
|
48 |
"SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.466021293627, AUTHORITY[\"EPSG\",\"7011\"]]," + |
|
49 |
"TOWGS84[-168,-60,320,0,0,0,0],AUTHORITY[\"EPSG\",\"6275\"]]"; |
|
50 |
private static String line4 = "DATUM[\"Datum 73\"," + |
|
51 |
"SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]," + |
|
52 |
"TOWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"4274\"]]"; |
|
53 |
private static String line5 = "DATUM[\"North_American_Datum_1927\"," + |
|
54 |
"SPHEROID[\"Clarke 1866\",6378206.4,294.978698213901,AUTHORITY[\"EPSG\",\"7008\"]]," + |
|
55 |
"TOWGS84[-3,142,183,0,0,0,0],AUTHORITY[\"EPSG\",\"6267\"]]"; |
|
56 |
private static String line6 = "DATUM[\"North_American_Datum_1983\"," + |
|
57 |
"SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]," + |
|
58 |
"TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]]"; |
|
59 |
|
|
60 |
/* |
|
61 |
* INSERT INTO epsg_coordinatereferencesystem VALUES ( |
|
62 |
* 4288, 'Loma Quintana', 1313, 'geographic 2D', 6422, 6288, |
|
63 |
* Null, Null, Null, Null, 'Geodetic survey.', |
|
64 |
* 'Superseded by La Canoa (code 4247).', '', |
|
65 |
* 'EPSG', '2004/01/06', '2003.37', 1, 0 ); |
|
66 |
* |
|
67 |
* DX (m) = -270.933 |
|
68 |
DY (m) = 115.599 |
|
69 |
DZ (m) = -360.226 |
|
70 |
|
|
71 |
EX (") = -5.266 |
|
72 |
EY (") = -1.238 |
|
73 |
EZ (") = 2.381 |
|
74 |
FE (ppm) = -5.109 |
|
75 |
*/ |
|
76 |
private static String line7 = "DATUM[\"Loma Quintana\"," + |
|
77 |
"SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]," + |
|
78 |
"TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6288\"]]"; |
|
79 |
|
|
80 |
/* |
|
81 |
# La Canoa |
|
82 |
<4247> +proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 |
|
83 |
no_defs <> |
|
84 |
# PSAD56 |
|
85 |
<4248> +proj=longlat +ellps=intl +towgs84=-288,175,-376,0,0,0,0 no_defs <> |
|
86 |
*/ |
|
87 |
private static String line8 = "DATUM[\"La Canoa\"," + |
|
88 |
"SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]," + |
|
89 |
"TOWGS84[-270.933,115.599,-360.226,-5.266,-1.238,2.381,-5.109],AUTHORITY[\"EPSG\",\"6288\"]]"; |
|
90 |
private static String line9 = "GEOGCS[\"NTF (Paris)\","+ |
|
91 |
"DATUM[\"Nouvelle_Triangulation_Francaise_Paris\"," + |
|
92 |
"SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]]," + |
|
93 |
"TOWGS84[-168,-60,320,0,0,0,0],AUTHORITY[\"EPSG\",\"8903\"]]"+ |
|
94 |
",PRIMEM[\"Paris\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]]," + |
|
95 |
"UNIT[\"grad\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]]," + |
|
96 |
"AXIS[\"Lat\",NORTH],AXIS[\"Long\",EAST]," + |
|
97 |
"AUTHORITY[\"EPSG\",\"4807\"]]"; |
|
98 |
|
|
99 |
private static String line10 = "GEOGCS[\"RGF93\"," + |
|
100 |
"DATUM[\"Reseau Geodesique Francais 1993\"," + |
|
101 |
"SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]," + |
|
102 |
"TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],"+ |
|
103 |
"PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]]," + |
|
104 |
"UNIT[\"DMSH\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]]," + |
|
105 |
"AXIS[\"Lat\",NORTH],AXIS[\"Long\",EAST]," + |
|
106 |
"AUTHORITY[\"EPSG\",\"4171\"]]"; |
|
107 |
private static String line11 = "GEOGCS[\"ETRS89\","+ |
|
108 |
"DATUM[\"European_Terrestrial_Reference_System_1989\","+ |
|
109 |
"SPHEROID[\"GRS 1980\",6378137,298.257222101,"+ |
|
110 |
"AUTHORITY[\"EPSG\",\"7019\"]],"+ |
|
111 |
"AUTHORITY[\"EPSG\",\"6258\"]],"+ |
|
112 |
"PRIMEM[\"Greenwich\",0,"+ |
|
113 |
"AUTHORITY[\"EPSG\",\"8901\"]],"+ |
|
114 |
"UNIT[\"degree\",0.01745329251994328,"+ |
|
115 |
"AUTHORITY[\"EPSG\",\"9122\"]],"+ |
|
116 |
"AUTHORITY[\"EPSG\",\"4258\"]]"; |
|
117 |
//," + |
|
118 |
//"TOWGS84[0,0,0,0,0,0,0] |
|
119 |
private static String line12 = |
|
120 |
"GEOGCS[\"Mars 2000\","+ |
|
121 |
"DATUM[\"D_Mars_2000\","+ |
|
122 |
"SPHEROID[\"Mars_2000_IAU_IAG\",3396190.0, 169.89444722361179],"+ |
|
123 |
"TOWGS84[0,0,0,0,0,0,0]],"+ |
|
124 |
"PRIMEM[\"Greenwich\",0],"+ |
|
125 |
"UNIT[\"Decimal_Degree\",0.0174532925199433]]"; |
|
126 |
|
|
127 |
public final static CSDatum wgs84 = new CSDatum(line1); |
|
128 |
public final static CSDatum ed50 = new CSDatum(line2); |
|
129 |
public final static CSDatum ntf = new CSDatum(line3); |
|
130 |
public final static CSDatum d73 = new CSDatum(line4); |
|
131 |
public final static CSDatum nad27 = new CSDatum(line5); |
|
132 |
public final static CSDatum nad83 = new CSDatum(line6); |
|
133 |
public final static CSDatum lomaQuintana = new CSDatum(line7); |
|
134 |
public final static CSDatum laCanoa = new CSDatum(line8); |
|
135 |
public static CSDatum etrs89 = null; |
|
136 |
public static CSDatum ntfParis = null; |
|
137 |
public static CSDatum posgar = null; |
|
138 |
public static CSDatum rgf93 = null; |
|
139 |
public static CSDatum mars = null; |
|
140 |
public static CSDatum moon = null; |
|
141 |
private String sGeo1 = "GEOGCS[\"WGS 84\","; |
|
142 |
private String sGeo2 = |
|
143 |
",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]]," + |
|
144 |
"UNIT[\"DMSH\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]]," + |
|
145 |
"AXIS[\"Lat\",NORTH],AXIS[\"Long\",EAST]," + |
|
146 |
"AUTHORITY[\"EPSG\",\"4326\"]]"; |
|
147 |
private HorizontalDatum datum = null; |
|
148 |
static { |
|
149 |
try { |
|
150 |
ntfParis = new CSDatum().fromWKT(line9); |
|
151 |
rgf93 = new CSDatum().fromWKT(line10); |
|
152 |
etrs89 = new CSDatum().fromWKT(line11); |
|
153 |
posgar = new CSDatum().fromWKT( |
|
154 |
"GEOGCS[\"POSGAR\","+ |
|
155 |
"DATUM[\"POSGAR\"," + |
|
156 |
"SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]," + |
|
157 |
"TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]]"+ |
|
158 |
",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]]," + |
|
159 |
"UNIT[\"DMSH\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]]," + |
|
160 |
"AXIS[\"Lat\",NORTH],AXIS[\"Long\",EAST]," + |
|
161 |
"AUTHORITY[\"EPSG\",\"4172\"]]"); |
|
162 |
mars = new CSDatum().fromWKT(line12); |
|
163 |
moon = new CSDatum().fromWKT( |
|
164 |
"GEOGCS[\"Moon 2000\"," + |
|
165 |
"DATUM[\"D_Moon_2000\"," + |
|
166 |
"SPHEROID[\"Moon_2000_IAU_IAG\",1737400.0, 0.0]," + |
|
167 |
"TOWGS84[0,0,0,0,0,0,0]],"+ |
|
168 |
"PRIMEM[\"Greenwich\",0]," + |
|
169 |
"UNIT[\"Decimal_Degree\",0.0174532925199433]]"); |
|
170 |
} catch (FactoryException e) { |
|
171 |
// TODO Auto-generated catch block |
|
172 |
e.printStackTrace(); |
|
173 |
} |
|
174 |
} |
|
175 |
|
|
176 |
public CSDatum() { |
|
177 |
} |
|
178 |
|
|
179 |
public CSDatum(HorizontalDatum datum) { |
|
180 |
this.datum = datum; |
|
181 |
} |
|
182 |
|
|
183 |
public CSDatum(String sDatum) { |
|
184 |
try { |
|
185 |
fromWKT(sGeo1 + sDatum + sGeo2); |
|
186 |
} catch (FactoryException e) { |
|
187 |
// TODO Bloque catch generado autom?ticamente |
|
188 |
e.printStackTrace(); |
|
189 |
} |
|
190 |
} |
|
191 |
|
|
192 |
public CSDatum fromWKT(String s) throws FactoryException { |
|
193 |
datum = ((GeographicCoordinateSystem) CoordinateSystemFactory.getDefault() |
|
194 |
.createFromWKT(s)).getHorizontalDatum(); |
|
195 |
return this; |
|
196 |
} |
|
197 |
|
|
198 |
public String getName(Locale loc) { |
|
199 |
return datum.getName().toString(); |
|
200 |
} |
|
201 |
|
|
202 |
HorizontalDatum getDatum() { |
|
203 |
return datum; |
|
204 |
} |
|
205 |
|
|
206 |
public double getESemiMajorAxis() { |
|
207 |
return datum.getEllipsoid().getSemiMajorAxis(); |
|
208 |
} |
|
209 |
|
|
210 |
public double getEIFlattening() { |
|
211 |
return datum.getEllipsoid().getInverseFlattening(); |
|
212 |
} |
|
213 |
|
|
214 |
public String toString() { |
|
215 |
return datum.toString(); |
|
216 |
} |
|
217 |
} |
|
0 | 218 |
Also available in: Unified diff