Ignore:
Timestamp:
2018-04-07T20:42:34+02:00 (23 months ago)
Author:
Don-vip
Message:

see #16129 - projections rework for new ESRI file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/projection/Projections.java

    r13599 r13602  
    315315        List<ProjectionDefinition> result = new ArrayList<>();
    316316        Pattern epsgPattern = Pattern.compile("<(\\d+)>(.*)<>");
     317        String coor = "(-?\\d+\\.\\d+)";
     318        Pattern areaPattern = Pattern.compile("# area: \\(lat: "+coor+", "+coor+"\\) - \\(lon: "+coor+", "+coor+"\\).*");
    317319        StringBuilder sb = new StringBuilder();
     320        String bounds = null;
    318321        String line;
    319322        while ((line = r.readLine()) != null) {
    320323            line = line.trim();
    321             if (!line.isEmpty()) {
     324            if (!line.isEmpty() && !line.startsWith("##")) {
    322325                if (!line.startsWith("#")) {
    323326                    Matcher m = epsgPattern.matcher(line);
     
    325328                        String code = "EPSG:" + m.group(1);
    326329                        String definition = m.group(2).trim();
     330                        if (!definition.contains("+bounds=") && bounds != null) {
     331                            definition += bounds;
     332                        }
    327333                        result.add(new ProjectionDefinition(code, sb.toString(), definition));
    328334                    } else {
     
    330336                    }
    331337                    sb.setLength(0);
    332                 } else if (!line.startsWith("# area: ")) {
     338                    bounds = null;
     339                } else if (line.startsWith("# area: ")) {
     340                    Matcher m = areaPattern.matcher(line);
     341                    if (m.matches()) {
     342                        bounds = " +bounds=" + String.join(",", m.group(3), m.group(1), m.group(4), m.group(2));
     343                    }
     344                } else {
     345                    String s = line.substring(1).trim();
    333346                    if (sb.length() == 0) {
    334                         sb.append(line.substring(1).trim());
     347                        sb.append(s);
    335348                    } else {
    336                         sb.append('(').append(line.substring(1).trim()).append(')');
     349                        sb.append('(').append(s).append(')');
    337350                    }
    338351                }
Note: See TracChangeset for help on using the changeset viewer.