[Java] 오픈소스 KML 문서 생성 라이브러리 – kmlwriter v0.1

공간 서버 단에서 kml 문서를 생성해 주는 기능을 개발하면서 Point, Polyline, Polygon 요소에 대한 kml 문서를 생성해 주는 Java 라이브러리를 만들어 사용했는데요. 이에 대해 공개합니다. 단순히 좌표에 대한 형상 정보만을 생성해 주는 라이브러리이고 style과 같은 내용은 아직 지원하지 않습니다. 이 라이브러리의 클래스 구조도는 다음과 같습니다.

이 라이브러리를 이용해 Point에 대한 kml 문서를 생성해 주는 코드의 예는 다음과 같습니다.

import java.util.LinkedList;

import geoservice.kmlwriter.Coordinate;
import geoservice.kmlwriter.Document;
import geoservice.kmlwriter.IGeometry;
import geoservice.kmlwriter.LineString;
import geoservice.kmlwriter.LinearRing;
import geoservice.kmlwriter.Placemark;
import geoservice.kmlwriter.Point;
import geoservice.kmlwriter.Polygon;

public class MainEntry {

    private static String testPointPlaceMarkKML() {
        Document kmlDoc = new Document();

        Coordinate coord = new Coordinate(128, 38); //(경도, 위도)
        IGeometry geom = new Point(coord);
        Placemark placemark = new Placemark(geom, "My Point Placemark");
        kmlDoc.addPlacemark(placemark);

        String kml = kmlDoc.build();
		
        return kml;
    }

    ....

Polyline에 대한 kml 문서를 생성해 주는 코드는 아래와 같습니다.

import java.util.LinkedList;

import geoservice.kmlwriter.Coordinate;
import geoservice.kmlwriter.Document;
import geoservice.kmlwriter.IGeometry;
import geoservice.kmlwriter.LineString;
import geoservice.kmlwriter.LinearRing;
import geoservice.kmlwriter.Placemark;
import geoservice.kmlwriter.Point;
import geoservice.kmlwriter.Polygon;

public class MainEntry {

    private static String testPolylinePlaceMarkKML() {
        Document kmlDoc = new Document();
		
        LinkedList<Coordinate> coords = new LinkedList<Coordinate>();
        coords.add(new Coordinate(128, 38));
        coords.add(new Coordinate(129, 38));
        coords.add(new Coordinate(129, 39));

        IGeometry kmlGeom = new LineString(coords);
        Placemark placemark = new Placemark(kmlGeom, "My Polyline Placemark");
        kmlDoc.addPlacemark(placemark);
		
        String kml = kmlDoc.build();
		
        return kml;
    }

    ....

Polygon에 대한 kml 문서를 생성해 주는 코드입니다.

import java.util.LinkedList;

import geoservice.kmlwriter.Coordinate;
import geoservice.kmlwriter.Document;
import geoservice.kmlwriter.IGeometry;
import geoservice.kmlwriter.LineString;
import geoservice.kmlwriter.LinearRing;
import geoservice.kmlwriter.Placemark;
import geoservice.kmlwriter.Point;
import geoservice.kmlwriter.Polygon;

public class MainEntry {
	
    private static String testPolygonPlaceMarkKML() {
        Document kmlDoc = new Document();
        LinkedList<LinearRing> rings = new LinkedList<LinearRing>();

        LinkedList<Coordinate> outer_coords = new LinkedList<Coordinate>();
        outer_coords.add(new Coordinate(128, 38));
        outer_coords.add(new Coordinate(129, 38));
        outer_coords.add(new Coordinate(129, 39));
        outer_coords.add(new Coordinate(128, 39));
        outer_coords.add(new Coordinate(128, 38));

        LinkedList<Coordinate> inner_coords = new LinkedList<Coordinate>();
        inner_coords.add(new Coordinate(128.25, 38.25));
        inner_coords.add(new Coordinate(128.75, 38.25));
        inner_coords.add(new Coordinate(128.75, 38.75));
        inner_coords.add(new Coordinate(128.25, 38.75));
        inner_coords.add(new Coordinate(128.25, 38.25));

        rings.add(new LinearRing(outer_coords, true));
        rings.add(new LinearRing(inner_coords, false));

        IGeometry kmlGeom = new Polygon(rings);
        Placemark placemark = new Placemark(kmlGeom, "My Polygon Placemark");
        kmlDoc.addPlacemark(placemark);

        String kml = kmlDoc.build();

        return kml;
    }

    ....

폴리곤의 외부와 내부에 대한 부분은 35번과 36번처럼 LinearRing 클래스의 생성자의 두번째 인자에서 지정할 수 있습니다. 위의 Polygon에 대한 kml 생성 예제 코드를 통해 생성된 kml 문서를 구글어스에서 살펴보면 아래 화면에 같습니다.

이 라이브러리의 소스코드는 아래의 링크를 통해 다운로드 받을 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다