RegionsKML.java
package gov.usgs.earthquake.geoserve;
import java.util.Date;
import gov.usgs.earthquake.qdm.Point;
import gov.usgs.earthquake.qdm.Region;
import gov.usgs.earthquake.qdm.Regions;
import gov.usgs.util.XmlUtils;
/**
* Custom formatting for gov.usgs.earthquake.qdm.Regions.
*/
public class RegionsKML {
/**
* Output ANSS Authoritative Regions in KML format.
*
* @param regions ANSS Authoritative regions
* @return string of ANSS regions in KML format
*/
public String formatKML(final Regions regions) {
StringBuffer kml = new StringBuffer(String.join("\n", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>",
"<kml xmlns=\"http://www.opengis.net/kml/2.2\">", "<Document id=\"regions_xml\">",
" <name>ANSS Authoritative Regions</name>",
" <description>" + XmlUtils.formatDate(new Date()) + "</description>", " <open>1</open>",
" <Style id=\"RegionStyle\">", " <LabelStyle>", " <color>00000000</color>",
" <scale>0.000000</scale>", " </LabelStyle>", " <LineStyle>", " <color>ff0000ff</color>",
" <width>2.000000</width>", " </LineStyle>", " <PolyStyle>", " <color>00ffffff</color>",
" <outline>1</outline>", " </PolyStyle>", " </Style>", ""));
for (final Region region : regions.regions) {
kml.append("\n<Placemark id=\"region_").append(region.regionid).append("\">\n");
kml.append("<name>").append(region.regionid).append("</name>\n");
kml.append("<styleUrl>#RegionStyle</styleUrl>\n");
kml.append("<MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>\n");
for (final Point point : region.points) {
kml.append(" ").append(point.x).append(",").append(point.y).append("\n");
}
kml.append("</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry>\n");
kml.append("</Placemark>\n");
}
kml.append(String.join("\n", "", "</Document>", "</kml>", ""));
return kml.toString();
}
/**
* Download ANSS Authoritative Regions, and print to console in Regions KML
* format.
*
* @param args Console arguments
* @throws Exception if error occurs
*/
public static void main(final String[] args) throws Exception {
Regions regions = ANSSRegionsFactory.getFactory().getRegions();
String kml = new RegionsKML().formatKML(regions);
System.out.println(kml);
}
}