2016-08-17 5 views
1

ディレクトリに生成しているkmlファイルがあります。KMLファイルからKMZファイルを作成するC#でプログラム的に作成

C#ですべてをプログラムでkmzファイルにグループ化する方法があるのだろうかと思います。 Google Earthに名前と説明が表示されます。

おかげで、よろしく、

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)); 
     } 
    } 
} 

答えて

1

はzipアーカイブKMZファイルなので、あなたはそれを生成する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"); 
} 

だけdocumentationから、 doc.kml として、デフォルトのkmlに名前を付けることを忘れないでください:

入れデフォルトのKMLファイル(doc.kml、またはあなたが にそれを与えるために好きな名前を)をこのフォルダ内の最上位に配置します。 1つの.kmlファイルのみを含めます。 (Google EarthがKMZファイルを開くと、このリストの最初の.kmlファイルである を探してスキャンします。アーカイブ内の後続のすべての.kml ファイルを無視します。アーカイブに複数の.kml ファイル、あなたは一つだけを含めるように を必要とするので1は、最初に発見されることを確認することはできません。)アルベルト

+0

感謝。 kmzファイルが作成されている間は、doc.kmlファイルの内容しか表示されません。また、私がアーカイブしたい多くのkmlファイルを持っている場合、これは動作します。私は使用している方法でオリジナルの投稿を更新しました。 – nader

関連する問題