Friday, August 21, 2009

Multiple placemarks in Google Earth

In my current job I am producing a database of fossil occurrences from the North Atlantic deep sea record and one of the fields in the data base is latitude-longitude for each of the IODP holes included. For a while now I've been wanting to export this data to a KML file (Google Earth's HTML-like file format). At first I figured this would be easy. I created an SQL query in Access to get my data out as a comma-delimited file which I then import into R. All I need to do is create a table of unique lat-long occurrences (holes) and their names then format them in the KML-style. However, I came up against a bit of a snag.

The first part is easy. Just set the header of the file to:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">

The footer to:

</kml>

Then each hole is entered as a Placemark using the following syntax:

  <Placemark>
<name>Hole name</name>
<Point>
<coordinates>-122.0822035425683,37.42228990140251,0</coordinates>
</Point>
</Placemark>

Where the coordinates are longitude, latitude and altitude respectively.

Simple.

But once you import the whole file into Google Earth it only shows the first point (hole) and skips all the others. Google's own code site wasn't much use on this, and the few forum's I looked at seemed to be missing a proper answer to this problem. In the end I figured out that all that needs to be done is wrap the placemarks in a simple

<Document></Document>

tag.

Lesson learned, and shared.

(Image and original code below.)


<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark><name>110_671B</name><Point><coordinates>-58.73,15.52,-1622</coordinates></Point></Placemark>
<Placemark><name>110_672A</name><Point><coordinates>-58.6,15.5,-1581</coordinates></Point></Placemark>
<Placemark><name>110_673B</name><Point><coordinates>-58.64,15.53,-1875</coordinates></Point></Placemark>
<Placemark><name>110_674A</name><Point><coordinates>-58.9,15.5,-2003</coordinates></Point></Placemark>
<Placemark><name>110_676A</name><Point><coordinates>-58.7,15.53,-1494</coordinates></Point></Placemark>
<Placemark><name>149_897A</name><Point><coordinates>-12.47,40.83,-5320</coordinates></Point></Placemark>
<Placemark><name>149_899B</name><Point><coordinates>-12.26,40.77,-5291</coordinates></Point></Placemark>
<Placemark><name>149_900A</name><Point><coordinates>-11.6,40.68,-5037</coordinates></Point></Placemark>
<Placemark><name>149_901A</name><Point><coordinates>-11.05,40.67,-4719</coordinates></Point></Placemark>
<Placemark><name>152_914A</name><Point><coordinates>-39.72,63.46,-533</coordinates></Point></Placemark>
<Placemark><name>152_919A</name><Point><coordinates>-37.46,62.67,-2088</coordinates></Point></Placemark>
<Placemark><name>157_950A</name><Point><coordinates>-25.6,31.15,-5438</coordinates></Point></Placemark>
<Placemark><name>157_951A</name><Point><coordinates>-24.87,32.03,-5437</coordinates></Point></Placemark>
<Placemark><name>157_952A</name><Point><coordinates>-24.5,30.79,-5432</coordinates></Point></Placemark>
<Placemark><name>159_959A</name><Point><coordinates>-2.73,3.62,-2091</coordinates></Point></Placemark>
<Placemark><name>159_960A</name><Point><coordinates>-2.73,3.58,-2048</coordinates></Point></Placemark>
<Placemark><name>159_961A</name><Point><coordinates>-3.05,3.44,-3292</coordinates></Point></Placemark>
<Placemark><name>159_962B</name><Point><coordinates>-3.18,3.25,-4637</coordinates></Point></Placemark>
<Placemark><name>160_966F</name><Point><coordinates>32.7,33.79,-923</coordinates></Point></Placemark>
<Placemark><name>101_627B</name><Point><coordinates>-78.29,27.63,-1026</coordinates></Point></Placemark>
<Placemark><name>160_967E</name><Point><coordinates>32.72,34.06,-2553</coordinates></Point></Placemark>
<Placemark><name>160_969B</name><Point><coordinates>24.88,33.84,-2202</coordinates></Point></Placemark>
<Placemark><name>164_994C</name><Point><coordinates>-75.54,31.78,-2799</coordinates></Point></Placemark>
<Placemark><name>165_998A</name><Point><coordinates>-82.93,19.48,-3180</coordinates></Point></Placemark>
<Placemark><name>101_628A</name><Point><coordinates>-78.3,27.5,-964</coordinates></Point></Placemark>
<Placemark><name>105_646B</name><Point><coordinates>-48.36,58.2,-3106</coordinates></Point></Placemark>
<Placemark><name>101_635B</name><Point><coordinates>-77.3,25.4,-3081</coordinates></Point></Placemark>
<Placemark><name>103_637A</name><Point><coordinates>-12.9,42.1,-1243</coordinates></Point></Placemark>
<Placemark><name>101_626C</name><Point><coordinates>-79.54,25.6,-844</coordinates></Point></Placemark>
<Placemark><name>149_898A</name><Point><coordinates>-12.12,40.68,-5279</coordinates></Point></Placemark>
<Placemark><name>103_638B</name><Point><coordinates>-12.19,42.15,-1890</coordinates></Point></Placemark>
<Placemark><name>103_639A</name><Point><coordinates>-12.24,42.14,-1829</coordinates></Point></Placemark>
<Placemark><name>103_640A</name><Point><coordinates>-12.5,42,-1363</coordinates></Point></Placemark>
<Placemark><name>103_641A</name><Point><coordinates>-12.18,42.15,-1918</coordinates></Point></Placemark>
<Placemark><name>104_642B</name><Point><coordinates>2.92,67.22,-1283</coordinates></Point></Placemark>
<Placemark><name>104_643A</name><Point><coordinates>1,67.7,-2769</coordinates></Point></Placemark>
<Placemark><name>104_644A</name><Point><coordinates>4.57,66.67,-1215</coordinates></Point></Placemark>
<Placemark><name>107_651A</name><Point><coordinates>12.8,40.2,-2974</coordinates></Point></Placemark>
<Placemark><name>107_652A</name><Point><coordinates>12.1,40.4,-3094</coordinates></Point></Placemark>
<Placemark><name>107_653A</name><Point><coordinates>11.44,40.26,-2821</coordinates></Point></Placemark>
<Placemark><name>107_654A</name><Point><coordinates>10.7,40.6,-2209</coordinates></Point></Placemark>
<Placemark><name>107_655A</name><Point><coordinates>12.46,40.17,-3234</coordinates></Point></Placemark>
<Placemark><name>108_657A</name><Point><coordinates>-20.94,21.33,-2332</coordinates></Point></Placemark>
<Placemark><name>108_658A</name><Point><coordinates>-18.58,20.74,-2264</coordinates></Point></Placemark>
<Placemark><name>108_659B</name><Point><coordinates>-21.02,18.07,-3073</coordinates></Point></Placemark>
<Placemark><name>108_660A</name><Point><coordinates>-19.24,10.01,-2221</coordinates></Point></Placemark>
<Placemark><name>108_661A</name><Point><coordinates>-19.38,9.44,-2541</coordinates></Point></Placemark>
<Placemark><name>108_662A</name><Point><coordinates>-11.73,-1.39,-2740</coordinates></Point></Placemark>
<Placemark><name>108_663A</name><Point><coordinates>-11.87,-1.19,-2856</coordinates></Point></Placemark>
<Placemark><name>108_664B</name><Point><coordinates>-23.22,0.1,-2747</coordinates></Point></Placemark>
<Placemark><name>108_665A</name><Point><coordinates>-19.66,2.95,-1813</coordinates></Point></Placemark>
<Placemark><name>108_666A</name><Point><coordinates>-20.2,3.5,-2037</coordinates></Point></Placemark>
<Placemark><name>108_667A</name><Point><coordinates>-21.91,4.56,-3029</coordinates></Point></Placemark>
<Placemark><name>108_668A</name><Point><coordinates>-20.92,4.76,-2690</coordinates></Point></Placemark>
<Placemark><name>108_668B</name><Point><coordinates>-20.9,4.8,-2693</coordinates></Point></Placemark>
<Placemark><name>174A_1071A</name><Point><coordinates>-72.72,39.38,-88</coordinates></Point></Placemark>
<Placemark><name>174A_1072A</name><Point><coordinates>-72.69,39.36,-98</coordinates></Point></Placemark>
<Placemark><name>174A_1073A</name><Point><coordinates>-72.27,39.22,-639</coordinates></Point></Placemark>
<Placemark><name>1_1</name><Point><coordinates>-92.18,25.85,-2827</coordinates></Point></Placemark>
<Placemark><name>1_2</name><Point><coordinates>-92.05,23.04,-3572</coordinates></Point></Placemark>
<Placemark><name>1_3</name><Point><coordinates>-92.04,23.03,-3747</coordinates></Point></Placemark>
<Placemark><name>1_4</name><Point><coordinates>-73.79,24.47,-5319</coordinates></Point></Placemark>
<Placemark><name>1_5</name><Point><coordinates>-73.64,24.72,-5354</coordinates></Point></Placemark>
<Placemark><name>1_6A</name><Point><coordinates>-67.64,30.83,-5124</coordinates></Point></Placemark>
<Placemark><name>1_7</name><Point><coordinates>-68.29,30.13,-5182</coordinates></Point></Placemark>
<Placemark><name>4_25</name><Point><coordinates>-39.24,-0.51,-1916</coordinates></Point></Placemark>
<Placemark><name>4_26A</name><Point><coordinates>-44.04,10.89,-5169</coordinates></Point></Placemark>
<Placemark><name>4_27</name><Point><coordinates>-56.87,15.85,-5251</coordinates></Point></Placemark>
<Placemark><name>4_28</name><Point><coordinates>-65.62,20.58,-5251</coordinates></Point></Placemark>
<Placemark><name>105_647A</name><Point><coordinates>-45.26,53.33,-2695</coordinates></Point></Placemark>
<Placemark><name>11_100</name><Point><coordinates>-73.79,24.68,-5325</coordinates></Point></Placemark>
<Placemark><name>11_101A</name><Point><coordinates>-74.43,25.19,-4868</coordinates></Point></Placemark>
<Placemark><name>13_125</name><Point><coordinates>20.42,34.62,-2782</coordinates></Point></Placemark>
<Placemark><name>14_137</name><Point><coordinates>-27.06,25.92,-5361</coordinates></Point></Placemark>
<Placemark><name>14_141</name><Point><coordinates>-23.99,19.41,-4148</coordinates></Point></Placemark>
<Placemark><name>150_905A</name><Point><coordinates>-72.28,38.61,-2698</coordinates></Point></Placemark>
<Placemark><name>151_910A</name><Point><coordinates>6.59,80.26,-556</coordinates></Point></Placemark>
<Placemark><name>151_911A</name><Point><coordinates>8.22,80.47,-902</coordinates></Point></Placemark>
<Placemark><name>152_915A</name><Point><coordinates>-39.78,63.47,-533</coordinates></Point></Placemark>
<Placemark><name>152_918A</name><Point><coordinates>-38.63,63.09,-1869</coordinates></Point></Placemark>
<Placemark><name>38_338</name><Point><coordinates>5.38,67.78,-1297</coordinates></Point></Placemark>
<Placemark><name>39_354</name><Point><coordinates>-44.19,5.89,-4045</coordinates></Point></Placemark>
<Placemark><name>41_367</name><Point><coordinates>-20.04,12.48,-4748</coordinates></Point></Placemark>
<Placemark><name>41_370</name><Point><coordinates>-10.77,32.83,-4214</coordinates></Point></Placemark>
<Placemark><name>44_390A</name><Point><coordinates>-76.11,30.14,-2665</coordinates></Point></Placemark>
<Placemark><name>47_398D</name><Point><coordinates>-10.71,40.96,-3910</coordinates></Point></Placemark>
<Placemark><name>49_407</name><Point><coordinates>-30.57,63.93,-2472</coordinates></Point></Placemark>
<Placemark><name>49_408</name><Point><coordinates>-28.91,63.37,-1624</coordinates></Point></Placemark>
<Placemark><name>49_410</name><Point><coordinates>-29.47,45.5,-2975</coordinates></Point></Placemark>
<Placemark><name>76_534A</name><Point><coordinates>-75.38,28.34,-4971</coordinates></Point></Placemark>
<Placemark><name>77_537</name><Point><coordinates>-85.46,23.93,-3123</coordinates></Point></Placemark>
<Placemark><name>77_538A</name><Point><coordinates>-85.16,23.84,-2742</coordinates></Point></Placemark>
<Placemark><name>77_540</name><Point><coordinates>-84.37,23.82,-2926</coordinates></Point></Placemark>
<Placemark><name>79_545</name><Point><coordinates>-9.36,33.66,-3142</coordinates></Point></Placemark>
<Placemark><name>79_547A</name><Point><coordinates>-9.34,33.78,-3938</coordinates></Point></Placemark>
<Placemark><name>80_548</name><Point><coordinates>-12.16,48.91,-1251</coordinates></Point></Placemark>
<Placemark><name>80_549A</name><Point><coordinates>-13.09,49.08,-2513</coordinates></Point></Placemark>
<Placemark><name>82_558</name><Point><coordinates>-37.34,37.77,-3754</coordinates></Point></Placemark>
<Placemark><name>82_563</name><Point><coordinates>-43.76,33.64,-3786</coordinates></Point></Placemark>
<Placemark><name>93_603</name><Point><coordinates>-70.02,35.49,-4633</coordinates></Point></Placemark>
<Placemark><name>93_603C</name><Point><coordinates>-70.03,35.49,-4633</coordinates></Point></Placemark>
<Placemark><name>93_605</name><Point><coordinates>-72.6,38.74,-2194</coordinates></Point></Placemark>
<Placemark><name>94_606</name><Point><coordinates>-35.49,37.33,-3007</coordinates></Point></Placemark>
<Placemark><name>94_607</name><Point><coordinates>-32.95,41,-3427</coordinates></Point></Placemark>
<Placemark><name>94_608</name><Point><coordinates>-23.08,42.83,-3526</coordinates></Point></Placemark>
<Placemark><name>94_609</name><Point><coordinates>-24.23,49.87,-3884</coordinates></Point></Placemark>
<Placemark><name>94_610</name><Point><coordinates>-18.88,53.22,-2417</coordinates></Point></Placemark>
<Placemark><name>95_612</name><Point><coordinates>-72.77,38.82,-1386</coordinates></Point></Placemark>
<Placemark><name>210_1276A</name><Point><coordinates>-44.78,45.4,-4549</coordinates></Point></Placemark>
<Placemark><name>173_1067A</name><Point><coordinates>-11.59,40.68,-5021</coordinates></Point></Placemark>
<Placemark><name>2_8A</name><Point><coordinates>-67.55,35.38,-5184</coordinates></Point></Placemark>
<Placemark><name>2_9</name><Point><coordinates>-59.19,32.77,-4973</coordinates></Point></Placemark>
<Placemark><name>2_10</name><Point><coordinates>-52.21,32.86,-4712</coordinates></Point></Placemark>
<Placemark><name>2_11</name><Point><coordinates>-44.74,29.94,-3571</coordinates></Point></Placemark>
<Placemark><name>2_12C</name><Point><coordinates>-26,19.69,-4557</coordinates></Point></Placemark>
<Placemark><name>173_1068A</name><Point><coordinates>-11.61,40.68,-5044</coordinates></Point></Placemark>
<Placemark><name>3_13</name><Point><coordinates>-18.22,6.04,-4585</coordinates></Point></Placemark>
<Placemark><name>4_23</name><Point><coordinates>-31.04,-6.14,-5079</coordinates></Point></Placemark>
<Placemark><name>4_24</name><Point><coordinates>-30.89,-6.27,-5148</coordinates></Point></Placemark>
<Placemark><name>4_29</name><Point><coordinates>-69.32,14.78,-4247</coordinates></Point></Placemark>
<Placemark><name>4_30</name><Point><coordinates>-63.38,12.88,-1218</coordinates></Point></Placemark>
<Placemark><name>4_31</name><Point><coordinates>-72.02,14.94,-3369</coordinates></Point></Placemark>
<Placemark><name>173_1069A</name><Point><coordinates>-11.77,40.72,-5075</coordinates></Point></Placemark>
<Placemark><name>101_631A</name><Point><coordinates>-75.7,23.6,-1092</coordinates></Point></Placemark>
<Placemark><name>101_632A</name><Point><coordinates>-75.4,23.8,-1997</coordinates></Point></Placemark>
<Placemark><name>101_633A</name><Point><coordinates>-75.6,23.7,-1679</coordinates></Point></Placemark>
<Placemark><name>151_908A</name><Point><coordinates>1.36,78.38,-1274</coordinates></Point></Placemark>
<Placemark><name>151_909A</name><Point><coordinates>3.07,78.58,-2519</coordinates></Point></Placemark>
<Placemark><name>151_912A</name><Point><coordinates>5.45,79.95,-1037</coordinates></Point></Placemark>
<Placemark><name>151_913A</name><Point><coordinates>6.94,75.48,-3319</coordinates></Point></Placemark>
<Placemark><name>152_916A</name><Point><coordinates>-39.8,63.48,-514</coordinates></Point></Placemark>
<Placemark><name>154_925A</name><Point><coordinates>-43.48,4.2,-3042</coordinates></Point></Placemark>
<Placemark><name>154_929E</name><Point><coordinates>-43.74,5.97,-4356</coordinates></Point></Placemark>
<Placemark><name>157_953A</name><Point><coordinates>-15.14,28.65,-3578</coordinates></Point></Placemark>
<Placemark><name>157_954B</name><Point><coordinates>-15.53,28.43,-3485</coordinates></Point></Placemark>
</Document>
</kml>

9 comments:

Manabu "Mambo-Bob" Sakamoto said...

Awesome! We need more blog posts like this. You're probably not the only person with this kind of problem, so it'll benefit everyone. And in time, other people would post things like this as well, which would benefit you, ultimately.

Good job!

bbuubb said...

Good work man! much appreciated and very useful.

T. R. said...

THANK YOU ! this was driving me mad looking for a solution; and then I found your blog. Thanks again.

Malacoda said...

Glad you found it useful!

Anonymous said...

YES, thank you! Same sentiment here as expressed by T.R.. Phew! :)

Cool map project, btw!

Rossco said...

Great tip. So simple, surprised this wasn't in any of the examples.

Doug Smith said...

A million THANKS!

I've been through dozens of sites trying to figure out how to get more than one placemark to work in a single KML. This is the only place I've found an answer. (and it works fine)

GREATLY appreciated!

Frans said...

Thanks! This was just the bit of information I was looking for.

Frans said...

Thanks for publishing this vital bit of information!

About Me

My Photo
Currently I am founding member, president elect and entire membership of SWEMP (the Society of Wonky-Eyed Macroevolutionary Palaeobiologists). In my spare time I get paid to do research on very dead organisms and think about the really big questions in life, such as: What is the ultimate nature of reality? Why is there no room for free will in science? and What are the implications of having a wardrobe that consists entirely of hotpants?