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

如何使用PHP/JavaScript在我的服务器上解析/处理KMZ文件?,javascript,php,kml,kmz,Javascript,Php,Kml,Kmz,我一直在四处寻找,我能找到的都是与使用谷歌地图有关的答案。我想做的是获取存储在其中的信息,将其“导入”到我的数据库中 据我所知,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.open

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

据我所知,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>

KmlFile
发布日期:2013/12/26]>
测试
发布日期:2013/12/26]>
酷照片
发布日期:2013/12/26]>
0
135.753498,35.024914,0
发布日期:2013/12/26]>
熊猫
发布日期:2013/12/26]>
0
135.753482,35.024868,0
还有一个名为“文件”的文件夹,里面有图片

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

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

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

我使用的是一个PHP站点,我计划为上传的KMZ文件显示每个图像及其坐标的预览


非常感谢您的帮助。

使用PHP解压缩zip文件:

<> P>为了确保用户不要上传到上面,请考虑使用时间戳,使用<代码> TestNAMEL()/Cux>函数(),为每个用户提供单独的文件夹,或者使用自动增加的数据库列来跟踪上传。任何方法都可以为每次上载获得唯一的文件名,这样它们就不会重复


希望这将为您指明正确的方向。

使用PHP解压缩zip文件:

<> P>为了确保用户不要上传到上面,请考虑使用时间戳,使用<代码> TestNAMEL()/Cux>函数(),为每个用户提供单独的文件夹,或者使用自动增加的数据库列来跟踪上传。任何方法都可以为每次上载获得唯一的文件名,这样它们就不会重复


希望这将为您指明正确的方向。

使用PHP解压缩zip文件:

<> P>为了确保用户不要上传到上面,请考虑使用时间戳,使用<代码> TestNAMEL()/Cux>函数(),为每个用户提供单独的文件夹,或者使用自动增加的数据库列来跟踪上传。任何方法都可以为每次上载获得唯一的文件名,这样它们就不会重复


希望这将为您指明正确的方向。

使用PHP解压缩zip文件:

<> P>为了确保用户不要上传到上面,请考虑使用时间戳,使用<代码> TestNAMEL()/Cux>函数(),为每个用户提供单独的文件夹,或者使用自动增加的数据库列来跟踪上传。任何方法都可以为每次上载获得唯一的文件名,这样它们就不会重复


希望这将为您指明正确的方向。

下面是一些将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;
?> 

发件人: 这在PHP5.5.9上运行良好,但我在PHP5.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';
}
?>

我从这篇文章中得到: 从那里,您几乎可以像处理任何其他XML一样处理KML


希望有帮助

下面是一些将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;
?> 

发件人: 这在PHP5.5.9上运行良好,但我在PHP5.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';
}
?>

我从这篇文章中得到: 从那里,您几乎可以像处理任何其他XML一样处理KML


希望有帮助

下面是一些将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;
?> 

发件人: 这在PHP5.5.9上运行良好,但我在PHP5.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';
}
?>

我从这篇文章中得到: 从那里,您几乎可以像处理任何其他XML一样处理KML


希望有帮助

下面是一些将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;
?> 

发件人: 这在PHP5.5.9上运行良好,但我在PHP5.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';
}
?>

我从这篇文章中得到: 从那里,您几乎可以像处理任何其他XML一样处理KML


希望有帮助

感谢您的回复,是否可以在客户端执行此操作?比如在浏览器内存中解压,获取对kml的引用和zip文件中的图像?感谢您的回复,是否可以在客户端执行此操作?比如在浏览器内存中解压,获取对kml的引用和zip文件中的图像?感谢您的回复,是否可以在客户端执行此操作?比如在浏览器内存中解压,获取对kml的引用和zip文件中的图像?感谢您的回复,是否可以在客户端执行此操作?比如在浏览器内存中解压并获取对kml的引用和zip文件中的图像?是的,第二个代码段对于kmz到kml的转换非常有用。是的,第二个代码段对于kmz-t非常有用