Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/utils/WKTUtils.java @ 507:45be952a3215
Solved some issues. Removed encoding problems while formatting coordinates (issue137) and use this format as subtitle in charts (issue136).
gnv-artifacts/trunk@590 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 21 Jan 2010 14:42:51 +0000 |
parents | 64e65daa65e9 |
children | 4e347624ee7c |
comparison
equal
deleted
inserted
replaced
506:d41c155db337 | 507:45be952a3215 |
---|---|
10 | 10 |
11 import de.intevation.gnv.geobackend.base.Result; | 11 import de.intevation.gnv.geobackend.base.Result; |
12 import de.intevation.gnv.geobackend.base.query.QueryExecutor; | 12 import de.intevation.gnv.geobackend.base.query.QueryExecutor; |
13 import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory; | 13 import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory; |
14 import de.intevation.gnv.geobackend.base.query.exception.QueryException; | 14 import de.intevation.gnv.geobackend.base.query.exception.QueryException; |
15 import de.intevation.gnv.artifacts.ressource.RessourceFactory; | |
15 | 16 |
16 import de.intevation.gnv.math.LinearFunction; | 17 import de.intevation.gnv.math.LinearFunction; |
17 | 18 |
19 import java.text.MessageFormat; | |
20 import java.text.NumberFormat; | |
18 import java.util.ArrayList; | 21 import java.util.ArrayList; |
19 import java.util.Collection; | 22 import java.util.Collection; |
20 import java.util.List; | 23 import java.util.List; |
24 import java.util.Locale; | |
21 | 25 |
22 import org.apache.commons.math.optimization.OptimizationException; | 26 import org.apache.commons.math.optimization.OptimizationException; |
23 import org.apache.commons.math.optimization.fitting.CurveFitter; | 27 import org.apache.commons.math.optimization.fitting.CurveFitter; |
24 import org.apache.commons.math.optimization.general.GaussNewtonOptimizer; | 28 import org.apache.commons.math.optimization.general.GaussNewtonOptimizer; |
25 import org.apache.commons.math.FunctionEvaluationException; | 29 import org.apache.commons.math.FunctionEvaluationException; |
35 | 39 |
36 public static final String I_NAME = "MEDIAN.MESHPOINT.IPOSITION"; | 40 public static final String I_NAME = "MEDIAN.MESHPOINT.IPOSITION"; |
37 public static final String J_NAME = "MEDIAN.MESHPOINT.JPOSITION"; | 41 public static final String J_NAME = "MEDIAN.MESHPOINT.JPOSITION"; |
38 | 42 |
39 public static final String TRUE_EXPRESSION = "FEATUREID=FEATUREID"; | 43 public static final String TRUE_EXPRESSION = "FEATUREID=FEATUREID"; |
44 | |
45 public static final String[] COORDINATE_OUT_FORMAT = { | |
46 "coordinate.template.northeast", | |
47 "coordinate.template.southeast", | |
48 "coordinate.template.northwest", | |
49 "coordinate.template.southwest" | |
50 }; | |
51 | |
52 public static final String DEFAULT_COORDINATE_TEMPLATE = | |
53 "{0}\u00b0N {1}'' {2}\u00b0E {3}''"; | |
40 | 54 |
41 public static boolean different(Result a, Result b, int [] indices) { | 55 public static boolean different(Result a, Result b, int [] indices) { |
42 for (int i = 0; i < indices.length; ++i) { | 56 for (int i = 0; i < indices.length; ++i) { |
43 String oa = a.getString(indices[i]); | 57 String oa = a.getString(indices[i]); |
44 String ob = b.getString(indices[i]); | 58 String ob = b.getString(indices[i]); |
336 catch (ClassCastException cce) { | 350 catch (ClassCastException cce) { |
337 log.error("cannot read WKT line string", cce); | 351 log.error("cannot read WKT line string", cce); |
338 } | 352 } |
339 return null; | 353 return null; |
340 } | 354 } |
355 | |
356 public static String toText(String wkt) { | |
357 return toText(Locale.getDefault(), wkt); | |
358 } | |
359 | |
360 public static String toText(Locale locale, String wkt) { | |
361 String formattedCoordinate = null; | |
362 try { | |
363 Point p = (Point)new WKTReader().read(wkt); | |
364 double lat = p.getY(); | |
365 double lon =p.getX(); | |
366 | |
367 int choice = 0; | |
368 | |
369 if (lat <0 ) { | |
370 choice += 1; | |
371 lat=-lat; | |
372 } | |
373 | |
374 if (lon <0 ) { | |
375 choice += 2; | |
376 lon=-lon; | |
377 } | |
378 | |
379 RessourceFactory factory = RessourceFactory.getInstance(); | |
380 String template = factory.getRessource( | |
381 locale, | |
382 COORDINATE_OUT_FORMAT[choice], | |
383 DEFAULT_COORDINATE_TEMPLATE | |
384 ); | |
385 | |
386 NumberFormat minFormatter = NumberFormat.getInstance(locale); | |
387 minFormatter.setMaximumFractionDigits(3); | |
388 minFormatter.setMinimumFractionDigits(3); | |
389 | |
390 String minLat = minFormatter.format(60.*(lat-((int)lat))); | |
391 String minLon = minFormatter.format(60.*(lon-((int)lon))); | |
392 | |
393 NumberFormat degFormatter = NumberFormat.getInstance(locale); | |
394 degFormatter.setMinimumIntegerDigits(2); | |
395 | |
396 String formLat = degFormatter.format((int)lat); | |
397 String formLon = degFormatter.format((int)lon); | |
398 | |
399 MessageFormat formatter = new MessageFormat(template); | |
400 | |
401 Object[] args = { | |
402 formLat, minLat, | |
403 formLon, minLon | |
404 }; | |
405 | |
406 return formatter.format(args); | |
407 | |
408 } | |
409 catch (ParseException e) { | |
410 log.warn(e,e); | |
411 } | |
412 | |
413 return null; | |
414 } | |
341 } | 415 } |