return columnNameMap;
}
public File publishKML() throws FileNotFoundException {
File outputFile = new File(ServletContextParameterMap.getParameterValue(ContextParameter.USER_DIRECTORY_PATH) + "KML/" + worksheet.getTitle() + ".kml");
final Kml kml = KmlFactory.createKml();
final Folder folder = kml.createAndSetFolder()
.withName(worksheet.getTitle()).withOpen(true);
Style style = folder.createAndAddStyle().withId("karma");
if(randomCounter++%2 == 0)
style.createAndSetIconStyle().withScale(1.399999976158142).withIcon(new Icon().withHref("http://maps.google.com/mapfiles/ms/icons/blue-pushpin.png"));
else
style.createAndSetIconStyle().withScale(1.399999976158142).withIcon(new Icon().withHref("http://maps.google.com/mapfiles/ms/icons/red-pushpin.png"));
for (edu.isi.karma.geospatial.Point point : points) {
folder.createAndAddPlacemark()
.withDescription(point.getHTMLDescription())
.withVisibility(true)
.withStyleUrl("karma")
.createAndSetPoint()
.withAltitudeMode(AltitudeMode.CLAMP_TO_GROUND)
.addToCoordinates(
point.getLongitude() + "," + point.getLatitude());
}
for (edu.isi.karma.geospatial.LineString line : lines) {
folder.createAndAddPlacemark()
.withDescription(line.getHTMLDescription())
.withVisibility(true).createAndSetLineString()
.withAltitudeMode(AltitudeMode.CLAMP_TO_GROUND)
.setCoordinates(line.getCoordinatesList());
}
int n=0;
for (Polygon polygon: polygons) {
FeatureTable featureTable = polygonTable.get(n);
Placemark placemark = folder.createAndAddPlacemark()
.withDescription(featureTable.getHTMLDescription())
.withVisibility(true);
final de.micromata.opengis.kml.v_2_2_0.Polygon kmlPolygon = new de.micromata.opengis.kml.v_2_2_0.Polygon();
placemark.setGeometry(kmlPolygon);
kmlPolygon.setExtrude(true);
kmlPolygon.setAltitudeMode(AltitudeMode.CLAMP_TO_GROUND);
final Boundary outerboundary = new Boundary();
kmlPolygon.setOuterBoundaryIs(outerboundary);
final LinearRing outerlinearring = new LinearRing();
outerboundary.setLinearRing(outerlinearring);
List<Coordinate> outercoord = new ArrayList<Coordinate>();
outerlinearring.setCoordinates(outercoord);
for (int i=0;i<polygon.getExteriorRing().getNumPoints();i++) {
outercoord.add(new Coordinate(polygon.getExteriorRing().getPointN(i).getX(),polygon.getExteriorRing().getPointN(i).getY()));
}
int numOfInnerBoundaries = polygon.getNumInteriorRing();
for(int i=0;i<numOfInnerBoundaries;i++)
{
final Boundary innerboundary = new Boundary();
kmlPolygon.getInnerBoundaryIs().add(innerboundary);
final LinearRing innerlinearring = new LinearRing();
innerboundary.setLinearRing(innerlinearring);
List<Coordinate> innercoord = new ArrayList<Coordinate>();
innerlinearring.setCoordinates(innercoord);
int numOfPoints = polygon.getInteriorRingN(i).getNumPoints();
for(int j=0;j<numOfPoints;j++)
innercoord.add(new Coordinate(polygon.getInteriorRingN(i).getPointN(j).getX(),polygon.getInteriorRingN(i).getPointN(j).getY()));
}
}
kml.marshal(outputFile);
logger.info("KML file published. Location:"
+ outputFile.getAbsolutePath());
return outputFile;
}