任何人都不会知道什么是压缩到使用Java创建资料相关联的文件图像存储在他们吗?我试图使用标准Java压缩(和各种模式,BEST_COMPRESSION,DEFAULT_COMPRESSION,等等),但我压缩的文件和资料相关联的文件始终是出来略有不同的不负载在谷歌地球。它看起来像我的png图像,特别是(实际kml文件似乎压缩相同的方式)。

有没有人成功地创建了一个人资料相关联的档案链接到地方的图像(和获取存储在该文件目录)从外的谷歌地球?

感谢

杰夫

有帮助吗?

解决方案

关键的来了解这个的答案是从@弗雷泽,这是支持这一段,从KML开发的支持:

唯一支持的压缩,方法是拉链(PKZIP兼容的),所以 不gzip也不bzip会的工作。资料相关联的文件压缩这个 方法都是完全支持通过API。

资料相关联在谷歌地球API&KML压缩在一个Unix环境

Apache Commons已存档处理的库,它将方便于这样的: http://commons.apache.org/proper/commons-vfs/filesystems.html

其他提示

资料相关联是一个简单的拉链文件与KML文件和资产。例如, london_eye.kmz 资料相关联的文件包含:

   $ unzip -l london_eye.kmz 
    Archive:  london_eye.kmz
      Length     Date   Time    Name
     --------    ----   ----    ----
       451823  09-27-07 08:47   doc.kml
            0  09-26-07 07:39   files/
         1796  12-31-79 00:00   files/Blue_Tile.JPG
       186227  12-31-79 00:00   files/Legs.dae
         3960  12-31-79 00:00   files/Olive.JPG
      1662074  12-31-79 00:00   files/Wheel.dae
        65993  12-31-79 00:00   files/Wooden_Fence.jpg
         7598  12-31-79 00:00   files/a0.gif
         7596  12-31-79 00:00   files/a1.gif
         7556  12-31-79 00:00   files/a10.gif
         7569  12-31-79 00:00   files/a11.gif
         7615  12-31-79 00:00   files/a12.gif
         7587  12-31-79 00:00   files/a13.gif
         7565  12-31-79 00:00   files/a14.gif
         7603  12-31-79 00:00   files/a15.gif
         7599  12-31-79 00:00   files/a16.gif
         7581  12-31-79 00:00   files/a17.gif
         7606  12-31-79 00:00   files/a18.gif
         7613  12-31-79 00:00   files/a19.gif
         7607  12-31-79 00:00   files/a2.gif
         7592  12-31-79 00:00   files/a3.gif
         7615  12-31-79 00:00   files/a4.gif
         7618  12-31-79 00:00   files/a5.gif
         7618  12-31-79 00:00   files/a6.gif
         7578  12-31-79 00:00   files/a7.gif
         7609  12-31-79 00:00   files/a8.gif
         7603  12-31-79 00:00   files/a9.gif
        57185  12-31-79 00:00   files/capsule.dae
       310590  12-31-79 00:00   files/groundoverlay.jpg
       224927  12-31-79 00:00   files/mechanism.dae
       160728  12-31-79 00:00   files/shadowoverlay.jpg
        33044  12-31-79 00:00   files/shed.dae
     --------                   -------
      3310275                   32 files

你可以建立这与java.util.zip或者甚至与 jar 如果你想要的。

尽的图像去,他们不应该压缩,因为它们已经包含了压缩的数据。你没有得到任何重大的节省。

通过默认的 ZipOutputStream 类Java将创建一个兼容的资料相关联的文件,谷歌地球可以阅读。

ZipEntry 你可以指定 储存放气 压缩的方法,这两者都是兼容的谷歌地球。

  • 注意取拉链图书馆或API使用,必须确保指定邮编 2.0或"遗留"压缩的方法(即、储存和缩小的方法),除非这些都是默认的方法。放方法是所谓的超高速和储存被称为 没有 或'没有压缩'在 因的文件.
  • 最大或 增强的紧缩 方法往往显示,与短名称"Defl:X"还支持在谷歌地球。
  • 更先进的压缩方法(例如,bzip2,伊兹玛,等等。) 都 兼容与谷歌地球而这样的资料相关联的文件将被忽略,如果打开。

这是简单的代码段创建一个人资料相关联的文件。

  FileOutputStream fos = new FileOutputStream("example.kmz");
  ZipOutputStream zoS = new ZipOutputStream(fos);
  ZipEntry ze = new ZipEntry("doc.kml");
  zoS.putNextEntry(ze);
  PrintStream ps = new PrintStream(zoS);
  ps.println("<?xml version='1.0' encoding='UTF-8'?>");
  ps.println("<kml xmlns='http://www.opengis.net/kml/2.2'>");
  // write out contents of KML file ...
  ps.println("<Document>");
  ps.println("<Placemark>");
  // ...
  ps.println("</Placemark>");
  ps.println("</Document>");
  ps.println("</kml>");
  ps.flush();
  zoS.closeEntry(); // close KML entry
  // include and write other files (E.g. icons, overlays, other KML files, etc.)
  zoS.close();

当然,我有包人资料相关联的文件图像。据我所知唯一的压缩,方法是支持是拉链(PKZIP兼容的).什么图书馆在Java你们使用?

有一个图书馆处理KML在Java叫 JAK (API要素).

不幸的是,这似乎有一个错误: 问题1:保存人资料相关联的文件不起作用 -这样看起来就像你不是第一个问题生成一个人资料相关联的文件...

作为simsong说,人资料相关联只是压缩KML。有一件事我没有注意到的是,医生。kml需要第一条拉链文件,这可靠地工作。我不记得做什么特别的图像,(除了从投入的一切,但医生。kml子目录).我的资料相关联的文件产生的使用java.util.zip.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top