- package osm.jp.postgis;
-
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.PipedReader;
- import java.io.PipedWriter;
- import org.apache.commons.compress.archivers.ArchiveEntry;
- import org.apache.commons.compress.archivers.ArchiveOutputStream;
- import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
- import org.apache.commons.compress.utils.IOUtils;
-
- public class UnMapped {
- ToPostgis type;
- String dbname;
-
- @SuppressWarnings({"UseSpecificCatch", "CallToPrintStackTrace"})
- public static void main(String[] args) throws IOException {
- String dbname = "busstop";
- ByteArrayOutputStream outKmz = (new UnMapped(dbname)).createKmz(35.4341254D,139.408969D, 3.0D);
- try (ByteArrayInputStream in = new ByteArrayInputStream(outKmz.toByteArray())) {
- File kmzFile = new File("kmz.kmz");
- FileOutputStream o = new FileOutputStream(kmzFile);
- IOUtils.copy(in, o);
- }
- }
-
- public UnMapped(String dbname) {
- this.dbname = dbname;
- }
-
- @SuppressWarnings({"CallToPrintStackTrace", "UseSpecificCatch"})
- public ByteArrayOutputStream createKmz(double lat, double lon, double km) {
- try {
- final PipedReader read = new PipedReader();
- final PipedWriter write = new PipedWriter(read);
- final ByteArrayOutputStream outKml = new ByteArrayOutputStream();
- String title = "'"+ dbname +"' - UnMapped OpenSteetMap";
-
- Thread kml = new Thread(new Kml(write, dbname, title, lat,lon, km));
- Thread converter = new Thread(new PipeConverter(read, outKml));
-
- kml.start();
- converter.start();
- try {
- kml.join();
- converter.join();
- }
- catch(InterruptedException ex) {
- ex.printStackTrace();
- }
-
- //File kmzFile = new File(dbname +".kmz");
- //OutputStream outKmz = Files.newOutputStream(Paths.get(dbname +".kmz"));
- final ByteArrayOutputStream outKmz = new ByteArrayOutputStream();
- File kmlFile = new File(dbname +".kml");
- try {
- try (ArchiveOutputStream o = new ZipArchiveOutputStream(outKmz)) {
- ArchiveEntry entry = o.createArchiveEntry(kmlFile, kmlFile.getName());
- o.putArchiveEntry(entry);
- try (ByteArrayInputStream in = new ByteArrayInputStream(outKml.toByteArray())) {
- IOUtils.copy(in, o);
- }
- o.closeArchiveEntry();
- }
- }
- finally {
- outKml.flush();
- outKml.close();
- }
- return outKmz;
- }
- catch(Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- }