gpt4 book ai didi

javascript - 如何使用 PHP/JavaScript 解析/处理我的服务器上的 KMZ 文件?

转载 作者:行者123 更新时间:2023-12-02 17:55:44 31 4
gpt4 key购买 nike

我一直在四处寻找,我能找到的都是与使用谷歌地图相关的答案。我想要做的就是获取存储在其中的信息,并将其“导入”到我的数据库中。

据我所知,KMZ 文件是 KML 的 zip 文件(如 xml)。

我想要处理的 KMZ 看起来像这样(在本地解压缩时):

包含以下信息的 KML 文件 (doc.kml):

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
<name>KmlFile</name>
<Placemark>
<description>
<![CDATA[<div style='border: 1px solid #aaa; font-size: 20px;'><span style='padding: 1em; display: inline-block;'><img src='files/tags_1470231.jpg' /></span></div>
<div style='background-color: #aaa; color: white; text-align: right; padding: 0.5em 0.5em 0 0;'>Posted: 2013/12/26</div>]]>
<![CDATA[<div style='border: 1px solid #aaa; font-size: 20px;'><span style='padding: 1em; display: inline-block;'>test
</span></div>
<div style='background-color: #aaa; color: white; text-align: right; padding: 0.5em 0.5em 0 0;'>Posted: 2013/12/26</div>]]>
<![CDATA[<div style='border: 1px solid #aaa; font-size: 20px;'><span style='padding: 1em; display: inline-block;'>cool pic</span></div>
<div style='background-color: #aaa; color: white; text-align: right; padding: 0.5em 0.5em 0 0;'>Posted: 2013/12/26</div>]]>
</description>
<visibility>0</visibility>
<Point>
<coordinates>135.753498,35.024914,0</coordinates>
</Point>
</Placemark>
<Placemark>
<description>
<![CDATA[<div style='border: 1px solid #aaa; font-size: 20px;'><span style='padding: 1em; display: inline-block;'><img src='files/tags_1470232.jpg' /></span></div>
<div style='background-color: #aaa; color: white; text-align: right; padding: 0.5em 0.5em 0 0;'>Posted: 2013/12/26</div>]]>
<![CDATA[<div style='border: 1px solid #aaa; font-size: 20px;'><span style='padding: 1em; display: inline-block;'>panda
</span></div>
<div style='background-color: #aaa; color: white; text-align: right; padding: 0.5em 0.5em 0 0;'>Posted: 2013/12/26</div>]]>
</description>
<visibility>0</visibility>
<Point>
<coordinates>135.753482,35.024868,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

还有一个名为“files”的文件夹,里面有图片。

理论上,我想我必须在服务器中解压缩此文件,读取 doc.kml 文件,解析它以获取每个元素的坐标和图片名称,然后处理此信息。

我遇到的问题是,我不确定如何解压缩此文件并在我的服务器中为使用该网站的每个用户处理它。

我应该在我的服务器中使用临时位置吗?如果多个用户同时执行,文件不会被覆盖吗?解压缩后如何引用每个图像?

我正在使用 PHP 网站,我计划显示每个图像的预览及其上传的 KMZ 文件的坐标。

任何帮助将不胜感激。

最佳答案

以下是一些将 KMZ 解压缩为 KML 的代码示例。这在 php 中很容易完成。这是两个 php 示例:

<?php
$data = file_get_contents("http://example.com/some_file.kmz"); // url of the KMZ file
file_put_contents("/tmp/kmz_temp",$data);
ob_start();
passthru('unzip -p /tmp/kmz_temp');
$xml_data = ob_get_clean();
header("Content-type: text/xml");
echo $xml_data;
?>

来自:http://dtbaker.net/web-development/how-to-convert-kmz-to-kml/这在 PHP 5.5.9 上运行良好,但我在 PHP 5.4.35 上发现了问题。我用以下代码解决了这个问题:

<?php
$zip = new ZipArchive;
$res = $zip->open('some_file.kmz');
if ($res === TRUE) {
$zip->extractTo('/DestinationFolder/');
$zip->close();
echo 'Success!';
} else {
echo 'errors';
}
?>

我从这篇文章中得到了这个:Unzip a file with php从那里您几乎可以像处理任何其他 XML 一样处理 KML。

希望有帮助!

关于javascript - 如何使用 PHP/JavaScript 解析/处理我的服务器上的 KMZ 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20971958/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com