4

KML ファイルを常に書き込み/更新するプログラムがあり、このファイルを指すネットワーク リンクがあります。負荷が高い状態で、プログラムが KML ファイルに書き込みを行っているときにネットワーク リンクが KML ファイルにアクセスしようとすると、Google Earth はそのネットワーク リンクが壊れていると見なして、そのネットワーク リンクのそれ以降の自動更新を停止します。この時点で、自動更新を再開するには、Google Earth の [場所] ペインでネットワーク リンクを右クリックし、[更新] をクリックする必要があります。

私の質問は、「ファイルが検出されませんでした」というエラーが発生した後でも、Google Earth にネットワーク リンクからの読み込みを継続させる方法はありますか? タスクを簡単に自動化できると思われる場合、ネットワーク リンクを再びアクティブにするために手動で更新を行うのは非常に面倒です。

KML ファイルへの書き込みにかかる時間を最小限に抑えるために、プログラム側で数え切れないほどの最適化を行いましたが、実質的な限界に達したため、Google Earth 内からこのネットワーク リンクの問題を修正する方法を見つけなければなりません。

返信、コメント、またはディスカッションは大歓迎です!

4

2 に答える 2

2

少し前に同様の問題がありました。google-earth kml 開発者フォーラムを検索すると、次のようなネットワーク リンク アプローチへのネットワーク リンクの使用を推奨する人が数人いました。

更新中の kml ファイルにリンクする KML ファイル 1:

<Document>
<NetworkLink>
<Link> my_URL_to_the_updating_kml
<refreshMode>onInterval</refreshMode>
<refreshInterval>my_Inteval</refreshInterval>
</Link>
<name>My_Name</name>
<visibility>1</visibility>
</NetworkLink>
</Document>

上記のネットワーク リンク ファイルにリンクする KML ファイル 2:

<Document>
<NetworkLink>
<Link>
my_URL_to_the_first_network_link_file
<refreshMode>onInterval</refreshMode>
<refreshInterval>3600</refreshInterval>
</Link>
<name>My_Name</name>
<visibility>1</visibility>
</NetworkLink>
</Document>
于 2013-06-26T20:38:08.127 に答える
0

サーバー上のファイルに書き込む場合、簡単なトリックは一時ファイルに書き込むことです。次に、次のようにターゲットファイルと交換します。

  1. 一時ファイルtemp.kmlを書き込む
  2. target.kmlを削除します
  3. temp.kmltarget.kmlの名前を変更します

ファイルの名前変更はほぼ瞬時に行われるため、GoogleEarthクライアントがスワップアウトされているファイルを取得する可能性はほとんどありません。サーバーのOSによっては、シンボリックリンクを使用して1回の操作でファイル参照を変更することもできます。

更新:ファイルを書き込んでいるときに、共有変数にファイル名を設定し、現在のファイルへのストリームを開く「サーブレット」を介してそのファイルを提供できます。networklinkは、静的KMLファイルではなくサーブレットを指すことができます。

于 2013-03-03T14:20:16.877 に答える