Google Earth を開こうとしたときと、KML ファイルをそこにプロットしようとしたときの両方で、Google Earth がフリーズするという問題があります。
Google Earth を開く:
Google Earth を開こうとすると、次のようなときにフリーズすることがあります。
有効なオーバーレイを含む myplaces.kml をロードしています
この問題は、「私の場所」に保存した kml の合計サイズを合計すると、約 3 MB のどこかにあるという事実によって引き起こされていると想定しています。コンプで「私の場所」を検索すると、そのファイルのサイズはわずか 400kb 未満です。これは、Google Earth が別の形式で保存していることを意味していると思います。
一体、どうすればいいのでしょうか?各ファイルの読み込みに時間がかかるため、すべてを Google Earth の「マイ プレイス」に保存したいのですが、「マイ プレイス」を削除して最初からやり直す必要がある場合は、そうしなければならないと思います。また、Google Earth が応答しなくなったときに、Google Earth を閉じて再度開くことはできません。まだ機能していないからです。閉じた後、しばらく触らずに放置すると、問題なく開くことがあります。
Google Earth での kml のプロット:
Google Earth に読み込もうとしている kml ファイルは、177 ポイントを含むファイルの約 67kb から、1172 ポイントを含む 454kb までの範囲です。また、2637 ポイントを含む 937kb の kml ファイルをプロットする必要がありました。ほとんどの場合、プロットするファイルを取得するには、メモ帳で kml を編集し、1 つを除くすべてのポイントを削除し、そのポイントをプロットしてから、Excel マクロを再実行して完全なファイルを取得する必要があります。次に、それをプロットすると、次のメッセージが表示されます。
このファイルを再読み込みしてもよろしいですか?保存されていない編集内容は失われますか?
その後、通常はその時点で問題なくプロットを開始します。先ほど説明したプロセスを実行せずに kml ファイルをダブルクリックしようとすると、Google Earth が応答しなくなります。これは、私のコードのサンプルと、それが作成する kml ファイルの一部のサンプルです。
これらの問題を解決するために何ができるかについて何か考えはありますか?
「テンプレート」を使用して kml のデータを入力するとうまくいくでしょうか?
ノート:
コンピュータで Windows XP を実行しています。私の上司は Vista Business を実行しており、通常、私よりもこの問題を抱えています。
コードが醜く、クリーンアップする必要があることは承知していますが、私の上司は、私がやっていることは本番環境では使用されないので気にしないで、ファイルを作成するよりも必要なファイルを取得することに集中するように言っています。コードがより読みやすくなります。醜さを和らげてください。
これは、必要なデータを取得するために変更するように渡されたコードであるため、他の方法と比較してどの程度効率的かはわかりません。
コード:
Sub Create_KML()
REM Builds KML from spread sheet
REM Open File For Random As #1 ' "c:\Users\mwilson\Desktop\Trash.txt
REM Open "c:\Users\mwilson\Desktop\Test Google\Trash.txt" For Output As #1
Open "C:\Documents and Settings\eecoop\Desktop\10 day avg rssi Google kml\MorrisAveOpelikaMIUS.kml" For Output As #1
i = 2
miuID = Range("A" & i).Text
RSSI = Range("C" & i).Text
ColID = Range("G" & i).Text
ColName = Range("F" & i).Text
Address = Range("M" & i).Text & ", Opelika, AL"
Print #1, "<?xml version=""1.0"" encoding=""utf-8""?>"
Print #1, "<kml xmlns=""http://www.opengis.net/kml/2.2"">"
Print #1, "<Document>"
While miuID <> ""
If RSSI >= -85 Then
DotColor = "Green.png"
ElseIf RSSI >= -95 Then
DotColor = "Yellow.png"
ElseIf RSSI >= -105 Then
DotColor = "Orange.png"
Else
DotColor = "Red.png"
End If
Print #1, " <Placemark>" '3
Print #1, " <name>"; RSSI; " / "; ColID; "</name>" '4
Print #1, " <description>"; miuID; " Owned by "; ColName; "</description>" '4
Print #1, " <Style>" '5
Print #1, " <IconStyle>" '6
Print #1, " <scale>.6</scale>" '7
Print #1, " <Icon>" '8
Print #1, " <href>"; DotColor; "</href>" '9
Print #1, " </Icon>" '10
Print #1, " </IconStyle>" '11
Print #1, " </Style>" '12
Print #1, " <address>"; Address; "</address>" '13
Print #1, " </Placemark>" '14
i = i + 1
miuID = Range("A" & i).Text
RSSI = Range("C" & i).Text
ColID = Range("G" & i).Text
ColName = Range("F" & i).Text
Address = Range("M" & i).Text & ", Opelika, AL"
Wend
Print #1, "</Document>"
Print #1, "</kml>" '15
Print #1, " "
Close #1
End Sub
KML:
<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark>
<name>-108 / 4</name>
<description>110001124 Owned by Morris Ave.</description>
<Style>
<IconStyle>
<scale>.6</scale>
<Icon>
<href>Red.png</href>
</Icon>
</IconStyle>
</Style>
<address>3501 BIRMINGHAM HWY, Opelika, AL</address>
</Placemark>
<Placemark>
<name>-95 / 4</name>
<description>110001146 Owned by Morris Ave.</description>
<Style>
<IconStyle>
<scale>.6</scale>
<Icon>
<href>Yellow.png</href>
</Icon>
</IconStyle>
</Style>
<address>2100 INDUSTRIAL BLVD, Opelika, AL</address>
</Placemark>