Ticket #4849: 4849.patch
File 4849.patch, 2.0 KB (added by , 11 years ago) |
---|
-
src/org/openstreetmap/josm/plugins/measurement/MeasurementLayer.java
142 142 MeasurementPlugin.measurementDialog.pathLengthLabel.setText(NavigatableComponent.getDistText(pathLength)); 143 143 } 144 144 } 145 145 146 /* 147 * Use an equal area sinusoidal projection to improve accuracy and so we can still use normal polygon area calculation 148 * http://stackoverflow.com/questions/4681737/how-to-calculate-the-area-of-a-polygon-on-the-earths-surface-using-python 149 */ 146 150 public static double calcX(LatLon p1){ 147 double lat1, lon1, lat2, lon2;148 double dlon, dlat;149 150 lat1 = p1.lat() * Math.PI / 180.0;151 lon1 = p1.lon() * Math.PI / 180.0;152 lat2 = lat1;153 lon2 = 0;154 151 155 dlon = lon2 - lon1; 156 dlat = lat2 - lat1; 157 158 double a = (Math.pow(Math.sin(dlat/2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(dlon/2), 2)); 159 double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 160 return 6367000 * c; 161 } 152 return p1.lat() * Math.PI * 6367000 / 180; 153 } 162 154 163 155 public static double calcY(LatLon p1){ 164 double lat1, lon1, lat2, lon2;165 double dlon, dlat;166 167 lat1 = p1.lat() * Math.PI / 180.0;168 lon1 = p1.lon() * Math.PI / 180.0;169 lat2 = 0;170 lon2 = lon1;171 156 172 dlon = lon2 - lon1; 173 dlat = lat2 - lat1; 174 175 double a = (Math.pow(Math.sin(dlat/2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(dlon/2), 2)); 176 double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 177 return 6367000 * c; 157 return p1.lon() * ( Math.PI * 6367000 / 180) * Math.cos(p1.lat() * Math.PI / 180); 178 158 } 179 159 180 160 public static double calcDistance(WayPoint p1, WayPoint p2){