【发布时间】:2010-10-31 08:37:33
【问题描述】:
当我尝试打开 Google 地球和尝试将 KML 文件绘制到其中时,我遇到了冻结的问题。
打开谷歌地球:
有时当我尝试打开 Google 地球时,它会冻结,而:
正在加载 myplaces.kml,包括启用的叠加层
我假设这个问题是由以下事实引起的:如果我将保存到“我的位置”的 kmls 的总大小加起来,它们大约是 3MB。当我在我的伴奏中搜索“我的位置”时,该文件的大小只有不到 400kb。我假设这意味着 Google 地球以不同的格式存储它。
无论如何,我该怎么办?我真的更愿意将所有内容保留在 Google 地球的“我的位置”中,因为每个文件都需要永远加载,但如果我需要删除“我的位置”并重新开始,我想我必须这样做。此外,我不能关闭 Google 地球并在它变为非响应式时重新打开它,因为它仍然无法正常工作。有时,如果我在它关闭后让它静置一会儿而不碰它,它就会打开。知道发生了什么吗?
在 Google 地球中绘制 kmls:
我尝试加载到 Google 地球中的 kml 文件范围从包含 177 个点的文件大约 67kb 到包含 1172 个点的 454kb。我还必须绘制一个包含 2637 个点的 937kb 的 kml 文件。大多数情况下,要绘制要绘制的文件,我必须用记事本编辑 kml,删除除一个点之外的所有点,绘制该点,然后重新运行 Excel 宏以取回完整文件。然后我绘制它,这会导致此消息:
您确定要重新加载此文件,所有未保存的编辑都将丢失吗?
然后它通常在那个时候开始绘制就好了。如果我尝试在没有完成我刚才谈到的过程的情况下直接双击 kml 文件,Google 地球就会变得无响应。这是我的代码示例和它创建的部分 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>
【问题讨论】:
-
这与您的问题无关:您住在阿拉巴马州的欧佩莱卡?我有家人住在拉内特。小世界吧?至于大小差异(400KB 到 3MB),可能与它可能将其存储为 KMZ(压缩 KML)的事实有关。
-
如果所有 1,172 个点都有地址(并且没有点),那么启动延迟可能是 Google 地球执行地理定位查找并获取每个点的纬度/经度位置。尝试取消选中已保存地点的根文件夹以使这些地点不可见,然后重新启动 Google 地球。
标签: kml google-earth