Ticket #3581: puwg.diff
File puwg.diff, 11.7 KB (added by , 15 years ago) |
---|
-
src/org/openstreetmap/josm/data/projection/Epsg2180.java
1 // License: GPL. Copyright 2007 by Immanuel Scholz and others 2 // 2009 by Łukasz Stelmach 3 package org.openstreetmap.josm.data.projection; 4 5 import java.text.DecimalFormat; 6 7 import static org.openstreetmap.josm.tools.I18n.tr; 8 9 import org.openstreetmap.josm.data.Bounds; 10 import org.openstreetmap.josm.data.coor.EastNorth; 11 import org.openstreetmap.josm.data.coor.LatLon; 12 13 /** 14 * PUWG 1992 is the official cordinate system in Poland. 15 * 16 * @author steelman 17 */ 18 public class Epsg2180 extends Puwg implements Projection { 19 20 final private double Epsg2180FalseEasting = 500000.0; /* y */ 21 final private double Epsg2180FalseNorthing = -5300000.0; /* x */ 22 final private double Epsg2180ScaleFactor = 0.9993; 23 final private double Epsg2180CentralMeridian = 19.0; 24 private static DecimalFormat decFormatter = new DecimalFormat("###0"); 25 26 @Override public String toString() { 27 return tr("PUWG 1992 (Poland)"); 28 } 29 30 public String toCode() { 31 return "EPSG:2180"; 32 } 33 34 public String getCacheDirectoryName() { 35 return "epsg2180"; 36 } 37 38 public Bounds getWorldBoundsLatLon() 39 { 40 return new Bounds( 41 new LatLon(49.00, 14.12), 42 new LatLon(54.84, 24.15)); 43 } 44 45 public double getPuwgCentralMeridianDeg() { return Epsg2180CentralMeridian; } 46 public double getPuwgCentralMeridian() { return Math.toRadians(Epsg2180CentralMeridian); } 47 public double getPuwgFalseEasting() { return Epsg2180FalseEasting; } 48 public double getPuwgFalseNorthing() { return Epsg2180FalseNorthing; } 49 public double getPuwgScaleFactor() { return Epsg2180ScaleFactor; } 50 51 public double getDefaultZoomInPPD() { 52 // This will set the scale bar to about 100 km 53 return 0.009; 54 } 55 56 public String eastToString(EastNorth p) { 57 return decFormatter.format(p.east()); 58 } 59 60 public String northToString(EastNorth p) { 61 return decFormatter.format(p.north()); 62 } 63 } -
src/org/openstreetmap/josm/data/projection/Projection.java
25 25 new Mercator(), 26 26 new LambertEST(), // Still needs proper default zoom 27 27 new Lambert(), // Still needs proper default zoom 28 new Epsg2176(), 29 new Epsg2177(), 30 new Epsg2178(), 31 new Epsg2179(), 32 new Epsg2180(), 28 33 new SwissGrid(), 29 34 new UTM(), 30 35 new UTM_20N_Guadeloupe_Ste_Anne(), -
src/org/openstreetmap/josm/data/projection/Epsg2176.java
1 // License: GPL. Copyright 2007 by Immanuel Scholz and others 2 // 2009 by Łukasz Stelmach 3 package org.openstreetmap.josm.data.projection; 4 5 import java.text.DecimalFormat; 6 7 import static org.openstreetmap.josm.tools.I18n.tr; 8 9 import org.openstreetmap.josm.data.Bounds; 10 import org.openstreetmap.josm.data.coor.EastNorth; 11 import org.openstreetmap.josm.data.coor.LatLon; 12 13 /** 14 * PUWG 2000 Zone 5 15 * 16 * @author steelman 17 */ 18 public class Epsg2176 extends Puwg2000 implements Projection { 19 final private int PuwgZone = 5; 20 21 public int getZone() { return PuwgZone; } 22 } -
src/org/openstreetmap/josm/data/projection/Epsg2177.java
1 // License: GPL. Copyright 2007 by Immanuel Scholz and others 2 // 2009 by Łukasz Stelmach 3 package org.openstreetmap.josm.data.projection; 4 5 import java.text.DecimalFormat; 6 7 import static org.openstreetmap.josm.tools.I18n.tr; 8 9 import org.openstreetmap.josm.data.Bounds; 10 import org.openstreetmap.josm.data.coor.EastNorth; 11 import org.openstreetmap.josm.data.coor.LatLon; 12 13 /** 14 * PUWG 2000 Zone 6 15 * 16 * @author steelman 17 */ 18 public class Epsg2177 extends Puwg2000 implements Projection { 19 final private int PuwgZone = 6; 20 21 public int getZone() { return PuwgZone; } 22 } -
src/org/openstreetmap/josm/data/projection/Epsg2178.java
1 // License: GPL. Copyright 2007 by Immanuel Scholz and others 2 // 2009 by Łukasz Stelmach 3 package org.openstreetmap.josm.data.projection; 4 5 import java.text.DecimalFormat; 6 7 import static org.openstreetmap.josm.tools.I18n.tr; 8 9 import org.openstreetmap.josm.data.Bounds; 10 import org.openstreetmap.josm.data.coor.EastNorth; 11 import org.openstreetmap.josm.data.coor.LatLon; 12 13 /** 14 * PUWG 2000 Zone 7 15 * 16 * @author steelman 17 */ 18 public class Epsg2178 extends Puwg2000 implements Projection { 19 final private int PuwgZone = 7; 20 21 public int getZone() { return PuwgZone; } 22 } -
src/org/openstreetmap/josm/data/projection/Epsg2179.java
1 // License: GPL. Copyright 2007 by Immanuel Scholz and others 2 // 2009 by Łukasz Stelmach 3 package org.openstreetmap.josm.data.projection; 4 5 import java.text.DecimalFormat; 6 7 import static org.openstreetmap.josm.tools.I18n.tr; 8 9 import org.openstreetmap.josm.data.Bounds; 10 import org.openstreetmap.josm.data.coor.EastNorth; 11 import org.openstreetmap.josm.data.coor.LatLon; 12 13 /** 14 * PUWG 2000 Zone 8 15 * 16 * @author steelman 17 */ 18 public class Epsg2179 extends Puwg2000 implements Projection { 19 final private int PuwgZone = 8; 20 21 public int getZone() { return PuwgZone; } 22 } -
src/org/openstreetmap/josm/data/projection/Puwg.java
1 // License: GPL. Copyright 2007 by Immanuel Scholz and others 2 // 2009 by Łukasz Stelmach 3 package org.openstreetmap.josm.data.projection; 4 5 import java.text.DecimalFormat; 6 7 import static org.openstreetmap.josm.tools.I18n.tr; 8 9 import org.openstreetmap.josm.data.Bounds; 10 import org.openstreetmap.josm.data.coor.EastNorth; 11 import org.openstreetmap.josm.data.coor.LatLon; 12 13 /** 14 * PUWG 1992 and 2000 are the official cordinate systems in Poland. 15 * They use the same math as UTM only with different constants. 16 * 17 * @author steelman 18 */ 19 public abstract class Puwg extends UTM implements Projection { 20 21 private static DecimalFormat decFormatter = new DecimalFormat("###0"); 22 23 public EastNorth latlon2eastNorth(LatLon p) { 24 double easting = getPuwgFalseEasting(); 25 double northing = getPuwgFalseNorthing(); 26 double scale = getPuwgScaleFactor(); 27 double center = getPuwgCentralMeridian(); /* in radians */ 28 EastNorth a = MapLatLonToXY(Math.toRadians(p.lat()), Math.toRadians(p.lon()), center); 29 return new EastNorth(a.east() * scale + easting, a.north() * scale + northing); 30 } 31 32 public LatLon eastNorth2latlon(EastNorth p) { 33 double easting = getPuwgFalseEasting(); 34 double northing = getPuwgFalseNorthing(); 35 double scale = getPuwgScaleFactor(); 36 double center = getPuwgCentralMeridian(); /* in radians */ 37 return MapXYToLatLon((p.east() - easting)/scale, (p.north() - northing)/scale, center); 38 } 39 40 @Override public abstract String toString(); 41 public abstract String toCode(); 42 public abstract String getCacheDirectoryName(); 43 public abstract Bounds getWorldBoundsLatLon(); 44 45 public abstract double getPuwgCentralMeridianDeg(); 46 public abstract double getPuwgCentralMeridian(); 47 public abstract double getPuwgFalseNorthing(); 48 public abstract double getPuwgFalseEasting(); 49 public abstract double getPuwgScaleFactor(); 50 51 public double getDefaultZoomInPPD() { 52 // This will set the scale bar to about 100 km 53 return 0.009; 54 } 55 56 public String eastToString(EastNorth p) { 57 return decFormatter.format(p.east()); 58 } 59 60 public String northToString(EastNorth p) { 61 return decFormatter.format(p.north()); 62 } 63 } -
src/org/openstreetmap/josm/data/projection/Puwg2000.java
1 // License: GPL. Copyright 2007 by Immanuel Scholz and others 2 // 2009 by Łukasz Stelmach 3 package org.openstreetmap.josm.data.projection; 4 5 import java.text.DecimalFormat; 6 7 import static org.openstreetmap.josm.tools.I18n.tr; 8 9 import org.openstreetmap.josm.data.Bounds; 10 import org.openstreetmap.josm.data.coor.EastNorth; 11 import org.openstreetmap.josm.data.coor.LatLon; 12 13 /** 14 * PUWG 2000 is the official cordinate system in Poland. 15 * 16 * @author steelman 17 */ 18 public abstract class Puwg2000 extends Puwg implements Projection { 19 20 final private double PuwgFalseEasting = 500000.0; 21 final private double PuwgFalseNorthing = 0; 22 final private double PuwgScaleFactor = 0.999923; 23 final private double[] Puwg2000CentralMeridian = {15.0, 18.0, 21.0, 24.0}; 24 final private String[] Puwg2000Code = { "EPSG:2176", "EPSG:2177", "EPSG:2178", "EPSG:2179"}; 25 final private String[] Puwg2000CDName = { "epsg2176", "epsg2177", "epsg2178", "epsg2179"}; 26 private static DecimalFormat decFormatter = new DecimalFormat("###0.00"); 27 28 @Override public String toString() { 29 return tr("PUWG 2000 Zone {0} (Poland)", Integer.toString(getZone())); 30 } 31 32 public String toCode() { 33 return Puwg2000Code[getZoneIndex()]; 34 } 35 36 public String getCacheDirectoryName() { 37 return Puwg2000CDName[getZoneIndex()]; 38 } 39 40 public Bounds getWorldBoundsLatLon() 41 { 42 return new Bounds( 43 new LatLon(49.00, (3 * getZone()) - 1.5), 44 new LatLon(54.84, (3 * getZone()) + 1.5)); 45 } 46 47 public double getPuwgCentralMeridianDeg() { return getZone() * 3.0; } 48 public double getPuwgCentralMeridian() { return Math.toRadians(getZone() * 3.0); } 49 public double getPuwgFalseNorthing() { return PuwgFalseNorthing;} 50 public double getPuwgFalseEasting() { return 1e6 * getZone() + PuwgFalseEasting; } 51 public double getPuwgScaleFactor() { return PuwgScaleFactor; } 52 public abstract int getZone(); 53 54 public int getZoneIndex() { return getZone() - 5; } 55 56 public double getDefaultZoomInPPD() { 57 // This will set the scale bar to about 100 km 58 return 0.009; 59 } 60 61 public String eastToString(EastNorth p) { 62 return Integer.toString(getZone()) + decFormatter.format(p.east()); 63 } 64 65 public String northToString(EastNorth p) { 66 return decFormatter.format(p.north()); 67 } 68 69 }