Excelで緯度・経度データの補完方法

このQ&Aのポイント
  • Excelで不連続な緯度・経度データを1秒間隔のデータに補完する方法について教えてください。
  • VBAやマクロを使わずに簡単に緯度・経度データを補完する方法を教えてください。
  • 緯度・経度データを時刻と共に1秒間隔のデータに揃える方法について教えてください。
回答を見る
  • ベストアンサー

Excel 時刻に対する緯度・経度データ補完

緯度・経度のデータを不連続(数秒間隔)に測定しました。 この緯度・経度のデータを1秒間隔のデータとするような、データ処理をしたいと思っております。 以下現状のデータ例となります。 hh/mm/ss     緯度(標準書式)     経度(標準書式) 14:51:33       34-17-24.1          138-40-24.0 14:51:34         X               X 14:51:35         X               X 14:51:37       35-17-52.3          139-43-46.5 見づらいですが、Xの部分が補完したいデータとなります。 当方、VBAやマクロを使いこなす知識ありませんので、簡単な方法がありますと大変助かります。 どなたか詳しい方、宜しくお願い致します。      

  • 04088
  • お礼率83% (5/6)

質問者が選んだベストアンサー

  • ベストアンサー
  • basic_gg
  • ベストアンサー率50% (14/28)
回答No.6

No.2:basic_gg です。 計算式を書いたてまえ、数式を書かないわけには…。 ・初期設定 C2:D11のセルの書式設定は、[h]-mm-ss.0 に設定してあるとします。 A1="__",B1="hh/mm/ss",C1="緯度(標準書式)",D1="経度(標準書式)" A2="01",B2=14:51:33,C2=34-17-24.1,D2=138-40-24.0 A3="02",B3=14:51:34、 A4="03",B4=14:51:35、 A5="04"、A6="05"、A7="06"、A8="07"、A9="08"、A10="09"、 A11="10",B11=14:51:37,C11=35-17-52.3,D11=139-43-46.5 ・C=(3*17+4*10)/(3+4)の式を作れば C3=IF(B3="","",((B3-B$2)*C$11+(B$11-B3)*C$2)/(B$11-B$2)) D3=IF(B3="","",((B3-B$2)*D$11+(B$11-B3)*D$2)/(B$11-B$2)) ・変化する三角形に変化しない長方形を足すという考えなら C3=IF(B3="","",((C$11-C$2)/(B$11-B$2)*(B3-B$2)+C$2)) D3=IF(B3="","",((D$11-D$2)/(B$11-B$2)*(B3-B$2)+D$2)) 上記式をオートフィル

04088
質問者

お礼

No.2の回答も合わせ、ご回答ありがとうございます。 データ補間という考え方でなくても、単純な比例配分だというご指摘が目からウロコだったため、BAとさせて頂きます。 ありがとうございました。

その他の回答 (5)

noname#204879
noname#204879
回答No.5

添付図参照 B3: =TEXT(SUBSTITUTE(B$2,"-",":")+(SUBSTITUTE(B$5,"-",":")-SUBSTITUTE(B$2,"-",":"))*($A3-$A$2)/($A$5-$A$2),"[h]-mm-ss.0")

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

準備: A列からC列に記入します なお,A列の36秒が無いので追加します 1.緯度経度をエクセルで計算できるデータに簡単に修正する方法 B:C列を列選択 Ctrl+Hで置換のダイアログを出し - を : に全て置換します B:C列を列選択 セルの書式設定の表示形式のユーザー定義で [h]-mm-ss.0 と設定します 2.データを簡単に補間させる方法 B1:C5を選択, ホームタブ右端(エクセル2003以前を使っているときは編集メニュー)のフィル▼から「連続データの作成」を開始, 「データ予測」にチェックしてOKします。 実施結果: 14:51:33 34-17-24.1 138-40-24.0 14:51:34 34-32-31.1 138-56-14.6 14:51:35 34-47-38.2 139-12-05.3 14:51:36 35-02-45.2 139-27-55.9 14:51:37 35-17-52.3 139-43-46.5 #参考 FORECAST関数で計算させたり,上述の作業を新しいマクロの記録でマクロに録ったのを手直しして使っても,勿論できます。

04088
質問者

お礼

ご回答ありがとうございました。 データ予測という機能を知らなかったです。。 お蔭様でフィル機能を上手く使うことができました。

回答No.3

似非補間の全て! D~F列:緯度を因数分解(データのあるところ) G~I列:経度を因数分解(データのあるところ) J列:緯度を秒換算 K列:経度を秒換算 これより、補間部分、 B3: =INT(J3/3600)&"-"&MOD(INT(J3/60),60)&"-"&ROUND(MOD(J3,60),1) C3: =INT(K3/3600)&"-"&MOD(INT(K3/60),60)&"-"&ROUND(MOD(K3,60),1) J3: =J$2+(J$5-J$2)*($A3-$A$2)/($A$5-$A$2) K3: =K$2+(K$5-K$2)*($A3-$A$2)/($A$5-$A$2) 4行目はコピー これより、測定値部分、 D2: =MID($B2,1,FIND("-",$B2,1)-1) E2: =MID($B2,LEN($D2)+2,FIND("-",MID($B2,LEN($D2)+2,LEN($B2)))-1) F2: =MID($B2,LEN($D2)+LEN($E2)+3,LEN($B2)) G2: =MID($C2,1,FIND("-",$C2,1)-1) H2: =MID($C2,LEN($G2)+2,FIND("-",MID($C2,LEN($G2)+2,LEN($C2)))-1) I2: =MID($C2,LEN($G2)+LEN($H2)+3,LEN($C2)) J2: =D2*3600+E2*60+F2 K2: =G2*3600+H2*60+I2 5行目はコピー

04088
質問者

お礼

ご回答ありがとうございます。 度、分、秒に分解してしまえば単純な問題になるという点が 大変に参考になりました。 実際にも、その様な処理行い、作業完了することが出来ました。

  • basic_gg
  • ベストアンサー率50% (14/28)
回答No.2

(数値をよく眺めましょう) A地点の高さ10,B地点の高さ17 A地点とB地点の間にC地点を作る。 A地点とC地点間の距離3,C地点とB地点間の距離4とし、 C地点の高さCを比例で求めるとすれば、 C=(3*17+4*10)/(3+4)=13

04088
質問者

お礼

Ans.#6も合わせ、ご回答ありがとうございました。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

緯度(標準書式)と経度(標準書式)を以下の式で数値(度単位)に直して、 B1セルに緯度(標準書式)があるとして、 =LEFT(B1,FIND("-",B1)-1)+MID(B1,FIND("-",B1)+1,(FIND("-",B1,FIND("-",B1)+1)-FIND("-",B1)-1))/60+MID(B1,FIND("-",B1,FIND("-",B1)+1)+1,100)/3600 1秒間隔のデータだとすると、14:51:36がないのですが、有るとして、 グラフから自動で近似式を作ってはいかがでしょう。(何次式の近似式のするのかは選択できます)

04088
質問者

お礼

早々のご回答ありがとうございました。 力不足で補間の式を求めるには至りませんでしたが、 補間法についていろいろ勉強する機会となりました。

関連するQ&A

  • 緯度経度数値データをそのままシリアル値に変換したい

    悩んでいます。どなたか教えてください。 住所から緯度経度を検索してエクセルに入力しました。 このデータを基に基準点からの距離を測定したいのですが、 エクセルの書式設定でシリアル値"[h]:mm:ss.000"を設定して 手入力すると正常に入力できるのですが、すでに入力されている 緯度・経度の書式を変換すると正常に表示されません。 例) 緯度 "35.6587039"と入力されているセルの書式を”[h]:mm:ss.000"に変換すると 855:48:32.017と表示され、データは1900/2/4 15:48:32になります。 これをシリアル値に変換して35:65:87.039としたいのですがどのような計算をしたら いいのでしょうか? よろしくお願いします。

  • GPSの緯度、経度が計測機器で異なる

    ・自分の現在地を他者に知らせるのに、GPSの緯度と経度を測定し相手に知らせる為にスマホにGPSのアプリをインストールしました。 ・そのアプリで現在地の情報を取り込み、同時にナビ(ミニゴリラ)でもGPS情報を取り込んだ所、緯度、経度ともにスマホのアプリとナビでデーターが僅かに異なっております。 ・度、分までは同じですが、秒がどちらも異なります。スマホで取り込んだデーターをナビに入力すると直線で、200m程ずれています。ナビの緯度よりスマホの緯度は12秒プラスで、経度は逆にスマホが11秒マイナスです。 何が考えられますか、よろしくお願いいたします。

  • ExcelVBAでi緯度と経度から距離を測りたい

    お世話になっております。ExcelVBAを使って2か所の 緯度と経度から距離を測定したいのですが上手くいきません。 データ(緯度と経度)が入っているセルはデータ型で小数点7ケタまで入っています。 これをVBAを使用し数値データからシリアル値に変換し計算をしたいのです。 緯度と経度から距離を求める式はヒュベニの計算式を使用しています。 公式は距離=sqrt((M*dP)*(M*dP)+(N*cos(P)*dR)*(N*cos(P)*dR))です。 P=2点の平均緯度 radians((緯度01+緯度02))*24 dP=2点の緯度差 (緯度01-緯度02)*24 dR=2点の経度差 (経度01-経度02)*24 M=子午線曲率半径 6334834/sqrt((1-0.006674*sin(P)*sin(P))^3) N=卯酉線曲率半径 6377397/sqrt(1-0.006674*sin(P)*sin(P)) 作成した関数は Function kyori(X1,Y1,X2,Y2) Dim Latit01 As Double Dim Longi01 As Double Dim Latit02 As Double Dim Longi01 As Double Dim LatitXX1 As Date Dim LongiYY1 As Date Dim LatitXX2 As Date Dim LongiYY2 As Date Dim D As Double Dim P As Double Dim dP As Double Dim dR As Double Dim M As Double Dim N As Double '値の代入 Latit01 = X1 Latit02 = X2 Longi01 = Y1 Longi02 = Y2 'シリアル値に変換 LatitXX1 = format((Latit01 /24), "[h]:mm:ss.000") LongiYY1 = format((Longi01 /24), "[h]:mm:ss.000") LatitXX2 = format((Latit02 /24), "[h]:mm:ss.000") LongiYY2 = format((Longi02 /24), "[h]:mm:ss.000") P = (Application.WorksheetFunction.Radians((LatitXX1 + LatitXX2) / 2)) * 24 dP = (LatitXX1 - LatitXX2) * 24 dR = (LongiYY1 - LongiYY2) *24 M = 6334834 / Application.WorksheetFunction.sqrt((1-0.006674 * Sin(P) * Sin(P))^3) N = 6377397 / Application.WorksheetFunction.sqrt((1-0.006674 * Sin(P) * Sin(P)) kyori = Application.WorksheetFunction.sqrt((M*dP*Application.WorksheetFunction.Pi()/180)*(M*dP*Application.WorksheetFunction.Pi()/180)+(N*sos(P)*dR*Application.WorksheetFunction.Pi()/180)*(N*cos(P)*dR*Application.WorksheetFunction.Pi/180)) これを実行するとシリアル値に変換するときに止まってしまいます。 エラーは出ず、Excekのセルには#VALUEと返されます。 どなたか教えてください。

  • これらの整数を緯度・経度に変換する方法を教えてください

    実は趣味で海図を作っています。 最近イーグル社のGPS付の魚探(フィッシュエリート480)を入手して海図にしたい海域の緯度・経度・水深データを本体に装着したSDカードに記録して自宅のパソコンで処理しています。処理するに当たってはロランス社(イーグル社の親会社)のフリーソフトウェアーの「ソナービュアー」を使っています。SDカードに落とした海域のデータをCSV形式でパソコンに落とすことはできたのですが経度が8桁、緯度が7桁の整数で表示されてしまい通常の緯度経度表示になりません。 どなたか通常の緯度経度表示に変換する方法をご存知ありませんか? ちなみにソナービュアーのソフトウェアーは次の場所から入手可能です。 http://www.eaglesonar.com/Downloads/SonarViewer/default.htm 実際に表示される数値は… Position-X 15437611 Position-Y 4168885 この位置の経度は東経139度08分41.8秒      緯度は北緯35度08分23.6秒です。 これらの不可解な数値を変換する法則がわかれば海図つくりが本当に楽になるのですが… どなたかお助けを…

  • GoogleMapsから緯度経度をPHPに渡したい

    GoogleMapsAPIを利用して、自サイトにマーキング可能な地図を表示させたいと思っています。 具体的には・・・ 目的の位置を表示させて「登録」ボタンを押すと、moveendで取得した緯度経度のデータをフォーム(PHP)に渡し、そのフォームからコメントを添えてDBに格納する。 といった具合です。 GoogleMapsAPIはJavaScriptでの記述なので、JavaScriptで取得した緯度経度データをどのようにPHPフォームに渡せばいいのかがわかりません。 当方、PHPは若干わかりますが、JavaScriptについては全くわかりません。 以下のソースで緯度経度を取得するところまではできたのですが・・・。 GEvent.addListener(map, 'moveend', function() { var cnt = map.getCenter(); document.getElementById("cnt_x").innerHTML = cnt.lng(); document.getElementById("cnt_y").innerHTML = cnt.lat(); }); }); これから、どのようにすればPHPのフォームに渡せるのでしょうか? よろしくお願いします。

  • EXCELでミリ秒を計算する方法

    ミリ秒単位まで入力された時刻表記のセルがあります。 このセルの値をミリ秒に換算する方法を教えてください。 【セル書式】hh:mm:ss.000 ※hhは00固定 【例】 値は、「00:01:02.123」 これを、1*60000+2*1000+123=62123(ミリ秒) というように算出したいのです。 計算式は、「mm*60000+ss*10000+000(ミリ秒部分)」です。 VBAはやったことがないので、出来れば、関数等で出来る 方法をお願いします。

  • EXCELで整数の列のみ抜き取る方法

    x軸に波長、y軸に光強度のデータを測定したのですが、測定の間隔を1nm刻み、0.5nm刻みの2種類のデータとしてしまいました。これを1nm刻みでそろえたいのでオートフィルタでそろえようと思いましたが、項目ありませんでした。整数のみ抜き取るマクロやVBAは何かありますか?よろしくお願いします。

  • GPSデータの取り込み間違い

    GPSデータをハイパーターミナルで取り込んだら「41x度・7ェ分・8b秒・140x度・6ェ分・9b秒」のように出てしまいました。測地系はTokyo Datamです。 どうも数字だけを見ると緯度で約-41分、経度で約-36分ずれているようです。 元のデータを正しい値に変換することはできるでしょうか教えてください。

  • VBA:日付をシリアル値にできるの関数教えてください。

    VBAにより、あるセルに"yyyy / mm / dd hh:mm:ss"のフォーマットで日付を記入しました。それを手動で書式を標準にすると例えばシリアル値38148.4768981481になります。これをVBA上でできる関数を知りたいです。つまり、日付をシリアル値にできるVBAの関数を教えて頂きたいです。宜しくお願いいたします。

  • 時間単位の変換for Excel

    2:59:00(hh:mm:ss)を2:59(mm:ss)に変換する関数や方法をご教授頂いてもよろしいでしょうか? 2分59秒と入力していたつもりが2時間59秒00秒になっていました、、、 書式の変更や、値に変換などしてますがプロセスが導けていません。。。 何卒よろしくお願いします。

専門家に質問してみよう