Googleマップから座標をKML形式でダウンロードしたのですが、<Style>やら</Icon>やら余計な文字がいっぱいで、どこを読めばよいのかわかりません。
しばらく眺めているうちに、これがxmlであることに気付きました。ならば、 xmlのmysqlへの登録 で使用した xpath の出番です。
KML形式のGPSデータは、ざっくり言えば以下のようなツリー形式となっているようです。
そこで次のシェルスクリプトで、測点名、経度、緯度を列挙したファイルに変換することが可能となりました。
#!/bin/bash infile=xxxx.kml #Folder[1]中のPlacemarkの総数をnpに代入する np=` cat $infile |\ xpath -e "//Folder[1]" 2>/dev/null |\ xpath -q -e "count((//Placemark))" 2>/dev/null ` declare -a name coord for (( i=1; i<=$np ;i++ )) do # 各Placemark中のname要素を取得する name[$i]=` cat $infile |\ xpath -e "//Folder[1]" 2>/dev/null |\ xpath -q -e "//Placemark[$i]" 2>/dev/null |\ xpath -q -e "//name/text()" 2>/dev/null` # 各Placemark中のPoint要素中のcoordinatesを取得する # sed を使って読みやすいように整形する coord[$i]=` cat $infile |\ xpath -e "//Folder[1]" 2>/dev/null |\ xpath -q -e "//Placemark[$i]" 2>/dev/null |\ xpath -q -e "//Point" 2>/dev/null |\ xpath -q -e "//coordinates/text()" 2>/dev/null |\ sed -e "s/ //g" |\ sed -e "s/,/ /g"` echo $i ${name[$i]} ${coord[$i]} done