從CSV

2013-01-10 43 views
2
創建谷歌地圖KML文件

我一直在研究日的一個問題...我是新來的KML,我想創建一個文件有如下因素的信息:從CSV

Email 
address 
postcode 
country 
telephone 
fax 
internet 
name 
image 
license 
Call number 
lat 
lng 

CSV文件保持。如果有工具,我會很高興。否則,如果我知道語法,我會手動編寫它。

我正在使用mac,所以窗戶KML創作者不會出現問題...我嘗試了很多工具,但沒有一個是我想要的。

我發現的最好的工具是http://batchgeo.com/de/,但沒有KML文件了。

[編輯]

是否有一個python腳本來解決這個問題的好辦法?我已經有一個.csv!

問候柯蒂斯

+0

你可以看看GDAL庫ogr2ogr。如果無法將csv轉換爲kml,則可以在將csv轉換爲shapefile之前(使用GIS等QuantumGIS或其他),然後將其轉換爲kml。 –

+0

或者你可以試試這個工具:http://kmltools.nobletech.com/csv2kml –

+0

我第一次tryed這個工具,但是現在我測試繞了幾次 – CTSchmidt

回答

3

對於閱讀的.csv文件,您可以使用csv模塊是這樣的:

reader = csv.reader(open("file.csv")) 
for row in reader: 
    for value in row: 
    ... 

你可能會遇到麻煩時,你的文件是UTF-8編碼,因爲csv不支持。但有一個wrapper這將照顧這一點。

你當然也可以簡單地逐行閱讀你的文件,並用逗號分割:values=line.split(',')

因爲kml格式不是很複雜,創建數據表示的最難的部分是決定它應該是什麼樣子。一個非常簡單的代碼插入來自CSV文件中讀取可能看起來像這樣的價值觀:

# read field labels from first line in file 
header = reader.next() 
# prepare static output 
templates = [(' <Placemark>\n <name>{}</name>\n', 'name'), 
     (' <description>\n <![CDATA[\n  <img src="{}"/>\n', 'image'), 
     ('  {}\n', 'address'), 
     ('  {}\n', 'postcode'), 
     ('  {}\n', 'country'), 
     ('  Tel: <span class="tel">{}</span>\n', 'telephone'), 
     ('  Mail: <span class="mail">{}</span>\n', 'Email'), 
     (' </description>\n <Point>\n <coordinates>{},', 'lat'), 
     ('{}</coordinates>\n </Point>\n </Placemark>\n', 'lng')] 
# lookup function for field values. leading and trailing whitespace will be removed 
value = lambda field, array: array[header.index(field)].lstrip().rstrip() 

# start output 
print '''<?xml version="1.0" encoding="UTF-8"?> 
<kml xmlns="http://www.opengis.net/kml/2.2"> 
<Document>''' 
# insert values into xml 
for row in reader: 
    for t, f in templates: 
     print t.format(value(f, row)), 

print ' </Document>\n</kml>' 
0

我相信BatchGEO支持谷歌地球選項卡上的KML:http://batchgeo.com/features/google-earth-kml/

如果你正在尋找具有對飛這個運行或重新創建時已經進行了更新的CSV我建議如下:

  1. 選擇任何語言,建立KML解析/生成庫(紅寶石,JAVA,C#[我真的很喜歡SharpKML對於.NET],PHP等)。
  2. 使用庫中創建您的KML對象,然後遍歷CSV文件與地標填充您的KML文檔對象(或其他)
  3. 導出KML爲,並根據需要

張貼在評論該腳本將也肯定有用,但我會使用現有的KML庫。

3

使用simplekml如果您已經導入您的CSV數據。

從它的介紹頁面:

import simplekml 
kml = simplekml.Kml() 
kml.newpoint(name="Kirstenbosch", coords=[(18.432314,-33.988862)]) 
kml.save("botanicalgarden.kml")