private <P extends Position> CompoundCoordinateReferenceSystem<P> decodeCompoundCrs() { String crsName = decodeName(); matchesElementSeparator(); SingleCoordinateReferenceSystem<?> head = (SingleCoordinateReferenceSystem<?>)decode(); matchesElementSeparator(); SingleCoordinateReferenceSystem<?> tail = (SingleCoordinateReferenceSystem<?>)decode(); CrsId cr = decodeOptionalAuthority(srid); return new CompoundCoordinateReferenceSystem<P>(cr, crsName, head, tail); }
private static void addDefinition(String line, CrsWktDecoder decoder) { String[] tokens = line.split(DELIM); if (!"EPSG".equals(tokens[0])) { LOGGER.debug(String.format("Non-EPSG CRS ignored: %s", tokens[2])); return; } Integer srid = Integer.valueOf(tokens[1]); try { CoordinateReferenceSystem crs = decoder.decode(tokens[2], srid); crsMap.put(CrsId.valueOf(srid), crs); } catch (WktDecodeException e) { LOGGER.warn(String.format("Can't parse srid %d (%s). \n%s", srid, tokens[2], e.getMessage())); } catch (RuntimeException e) { LOGGER.warn(String.format("Can't parse srid %d (%s) -- inconsistent coordinate system. \n%s", srid, tokens[2], e.getMessage())); } }
/** * Decodes a WKT representation of a <code>CoordinateReferenceSystem</code>. * * @param wkt the WKT string to decode * @return The <code>CoordinateReferenceSystem</code> that is encoded in the input WKT. */ public CoordinateReferenceSystem<? extends Position> decode(String wkt, int srid) { this.srid = srid; setTokenizer(new CrsWktTokenizer(wkt, getWktVariant())); nextToken(); return decode(); }