资料相关联的压缩谷歌地球图像与java
-
22-07-2019 - |
题
任何人都不会知道什么是压缩到使用Java创建资料相关联的文件图像存储在他们吗?我试图使用标准Java压缩(和各种模式,BEST_COMPRESSION,DEFAULT_COMPRESSION,等等),但我压缩的文件和资料相关联的文件始终是出来略有不同的不负载在谷歌地球。它看起来像我的png图像,特别是(实际kml文件似乎压缩相同的方式)。
有没有人成功地创建了一个人资料相关联的档案链接到地方的图像(和获取存储在该文件目录)从外的谷歌地球?
感谢
杰夫
解决方案
关键的来了解这个的答案是从@弗雷泽,这是支持这一段,从KML开发的支持:
唯一支持的压缩,方法是拉链(PKZIP兼容的),所以 不gzip也不bzip会的工作。资料相关联的文件压缩这个 方法都是完全支持通过API。
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.