source: josm/trunk/src/org/openstreetmap/josm/data/projection/GaussKrueger.java@ 5266

Last change on this file since 5266 was 5235, checked in by bastiK, 12 years ago

no rounding for projection bounds, to avoid 42 being dispayed as 41.99999999999

  • Property svn:eol-style set to native
File size: 2.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.projection;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import org.openstreetmap.josm.data.Bounds;
7import org.openstreetmap.josm.data.coor.LatLon;
8import org.openstreetmap.josm.data.projection.datum.NTV2Datum;
9import org.openstreetmap.josm.data.projection.datum.NTV2GridShiftFileWrapper;
10import org.openstreetmap.josm.data.projection.proj.ProjParameters;
11import org.openstreetmap.josm.data.projection.proj.TransverseMercator;
12
13public class GaussKrueger extends AbstractProjection {
14
15 public static final int DEFAULT_ZONE = 2;
16 private final int zone;
17
18 private static Bounds[] bounds = {
19 new Bounds(new LatLon(-5, 3.5), new LatLon(85, 8.5), false),
20 new Bounds(new LatLon(-5, 6.5), new LatLon(85, 11.5), false),
21 new Bounds(new LatLon(-5, 9.5), new LatLon(85, 14.5), false),
22 new Bounds(new LatLon(-5, 12.5), new LatLon(85, 17.5), false),
23 };
24
25 public GaussKrueger() {
26 this(DEFAULT_ZONE);
27 }
28
29 public GaussKrueger(int zone) {
30 if (zone < 2 || zone > 5)
31 throw new IllegalArgumentException();
32 this.zone = zone;
33 ellps = Ellipsoid.Bessel1841;
34 datum = new NTV2Datum("BETA2007", null, ellps, NTV2GridShiftFileWrapper.BETA2007);
35 ////less acurrate datum (errors up to 3m):
36 //datum = new SevenParameterDatum(
37 // tr("Deutsches Hauptdreiecksnetz"), null, ellps,
38 // 598.1, 73.7, 418.2, 0.202, 0.045, -2.455, 6.70);
39 proj = new TransverseMercator();
40 try {
41 proj.initialize(new ProjParameters() {{ ellps = GaussKrueger.this.ellps; }});
42 } catch (ProjectionConfigurationException e) {
43 throw new RuntimeException(e);
44 }
45 x_0 = 1000000 * zone + 500000;
46 lon_0 = 3 * zone;
47 }
48
49 @Override
50 public String toString() {
51 return tr("Gau\u00DF-Kr\u00FCger Zone {0}", zone);
52 }
53
54 @Override
55 public Integer getEpsgCode() {
56 return 31464 + zone;
57 }
58
59 @Override
60 public String getCacheDirectoryName() {
61 return "gausskrueger"+zone;
62 }
63
64 @Override
65 public Bounds getWorldBoundsLatLon() {
66 return bounds[zone-2];
67 }
68
69}
Note: See TracBrowser for help on using the repository browser.