用c#从KML文件编程创建KMZ文件
本文关键字:文件 编程 KMZ 创建 KML | 更新日期: 2023-09-27 18:02:59
我在一个目录中生成了一些kml文件。
我想知道是否有一种方法可以在c#中以编程方式将它们全部分组到kmz文件中。与名称和描述显示在谷歌地球。
感谢并致以最诚挚的问候
private static void combineAllKMLFilesULHR(String dirPath)
{
string kmzPath = "outputULHR.kmz";
string appPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string rootKml = appPath + @"'" + dirPath + @"'doc.kml";
Console.WriteLine(appPath + @"'"+ dirPath);
String[] filepaths = Directory.GetFiles(appPath + @"'" + dirPath);
using (ZipArchive archive = ZipFile.Open(kmzPath, ZipArchiveMode.Create))
{
archive.CreateEntryFromFile( rootKml, "doc.kml");
foreach (String file in filepaths)
{
Console.WriteLine(file);
if(!file.Equals(rootKml))
archive.CreateEntryFromFile( file, Path.GetFileName(file) );
}
}
}
作为压缩文件,您可以使用ZipArchive类来生成它。
string kmzPath = "output.kmz";
string rootKml = "doc.kml";
string referencedKml = "someother.kml";
using (ZipArchive archive = ZipFile.Open(kmzPath, ZipArchiveMode.Create))
{
archive.CreateEntryFromFile(rootKml, "doc.kml");
archive.CreateEntryFromFile(referencedKml, "someother.kml");
}
只是记住将默认的KML命名为doc。Kml ,来自文档:
将默认的KML文件(doc。Kml,或者任何你想要的名字它)位于此文件夹的顶层。只包含一个.kml文件。(当Google Earth打开一个KMZ文件时,它会扫描文件,寻找此列表中的第一个.kml文件。它忽略所有后续的.kml存档中的文件(如果有的话)。如果归档文件包含多个.kml文件,您无法确定将首先找到哪个文件,因此您需要只包含一个)