都市間の距離を求める機能


9

私はGoogleドキュメントを使用していて、次の形式のスプレッドシートを作成したいと考えています。

ポイントAポイントBマイレージ
ロサンゼルスマイアミ292100
パロアルトサンフランシスコ90

スプレッドシートでMileageは、が自動的に計算されます。「カラスが飛ぶように」ではなく、「距離駆動」を探しています。

これを実行できるGoogleスプレッドシートの関数はありますか?


距離が増加するにつれて、「走行距離」と「カラス飛行」の差はそれに応じて減少します。いずれにせよ、それらはおそらく数パーセント以上違いはないでしょう。

1
それはかなり大胆な主張のようです、カウボーイ。ポートランドからアトランタへの運転は飛行機とほぼ同じ距離だと言っているのですか?私はそうは思いません。
Landon Kuhn

1
@pnutsは同意しました。4歳のコメントを守るつもりはありません:)
Landon Kuhn

Rosarch、4年間不在の後でWebアプリケーションに再度アクセスし、質問に対して受け取った素晴らしい答えをすべて確認してみませんか?
Jacob Jan Tuinstra、2015

回答:


9

次の小さなコードで、2点間の距離を取得できます。

コード

function getDirection(city1, city2, unit) {
  var directions = Maps.newDirectionFinder()
    .setOrigin(city1).setDestination(city2)
    .setMode(Maps.DirectionFinder.Mode.DRIVING)
    .getDirections();
  var d = directions.routes[0].legs[0].distance.text;

  var distance, value = d.split(" ")[0].replace(",", ""), text = d.split(" ")[1];
  if(text == unit) {
    distance = value;
  } else if(text == "km" && unit == "mi") {
    distance = value / 1.6;
  } else {
    distance = value * 1.6;
  }
  return Math.round(distance);
}

説明しました

Maps APIには、Google Appsスクリプトの上にビルドは、第一の方向(取得するルート[0]の間)の起源目的地を。戻り値はコンマから取り除かれ、整数として解析されます。

スクリーンショット

ここに画像の説明を入力してください

注意

返される距離は、キロメートルまたはマイルのいずれかです。「カラスが飛ぶように」の計算も追加しました(マイル単位)。

スプレッドシートの[ツール]> [スクリプトエディター]スクリプトを追加します。スクリプトエディタのバグボタンを押すと、外出中です!!

私はあなたのためにサンプルファイルを作成しました:走行距離を取得します

参考文献


1
サンプルドキュメントの数式が一貫して機能していないようです。誰かがそれを機能させるために編集してくれませんか?私はスクリプトについては何も知りません(コピーと貼り付け以上のことです)。私が探しているのは、郵便番号間の走行距離だけです。ありがとうございました!
メリッサ

3

Googleスプレッドシート:

=importXML("http://mapquestapi.com/directions/v1/route?  
  key=YOUR_KEY_HERE&outFormat=xml&from=" & A2 & "&to=" 
  & B2,"//response/route/distance")

どこA2の起源であるとB2目的地です。

mapquestからAPIキーを取得し、値YOUR_KEY_HEREをそれで置き換える必要があります。


1
APIキーはどのように取得しますか?
Jacob Jan Tuinstra 2013

1
@JacobJanTuinstra developer.mapquest.com
ニール

ニール、あなたの生きている!! それを共有してくれてありがとう。
Jacob Jan Tuinstra 2013

+1どうやらエレガントなソリューションですが、MapQuestは少しお粗末です。提供されたキーを使用しようとすると、「このキーはこのサービスでは認証されていません。キーがない場合は、developer.mapquest.comに登録することで無料のキーを取得できます。」というエラーが発生しました
Nick Bolton

1

これは私にとってうまくいくものです:

=importXML("http://maps.googleapis.com/maps/api/distancematrix/xml?&origins="& <point.A> & "&destinations=" & <point.B>; "//distance/value")

これは間で駆動距離が得られる<point.A><point.B>(もちろん、Googleマップ、による)メートル。


これは素晴らしい!飛ぶ距離はどうですか?
ダスティンカークランド

0

これを行うためのExcel関数、または拡張機能が組み込まれているとは思いません。

このSource Forgeページを確認してください。http//zips.sourceforge.net/

  • 郵便番号を緯度/経度に変換するためのCSVデータセットを提供します(おそらく中心点)
  • 2つの緯度/経度座標間の「カラスハエ」距離を計算するExcelコードを提供します。(Java、PHP、Pythonの同等のコードが含まれています。

Excel関数は

=IF(SIN(Lat1) * SIN(Lat2) + COS(Lat1) * COS(Lat2) * COS(Long1 - Long2) > 1,
  RadiusofEarth * ACOS(1), RadiusofEarth *
  ACOS(SIN(Lat1) * SIN(Lat2) + COS(Lat1) * COS(Lat2) * COS(Long1-Long2)))

このページでは、角度はラジアンでなければならず、Excelには度からラジアンへの変換関数があることに注意してください。

=RADIAN(degrees)

他の誰かがより正確な答えを持っている場合を除き、これはあまり多くの作業なしであなたが望むものを得るはずです。


はい、しかし、「カラスが飛ぶように」ではなく、距離によってはどうですか?

1
Mapquest、Google Earth、Streets&Trips(またはMapPoint)で行われているように、これはかなり難しく、すべての道路の知識が必要になります。これらのアプリのいずれかに適切なAPIがあるかどうかはわかりません。

...一方、かなり限られた数の都市の大まかな準備が整った概算を探している場合は、運転地図と地図帳でかなり一般的な運転距離表を探すことができます。Excelでそのスタイルのデータを複製し、場所のペアについてそれを取得するためのルックアップを構築することは、Excelでは確かに実現可能です。それが上訴された場合は、返信してください。その機能を改善することができます。

1
OPはGoogleスプレッドシートを使用します。
Jacob Jan Tuinstra 2013

+1は興味深い式のためですが、これを使用することはおそらく非現実的だと思います。
Nick Bolton


-1

Google Developers は、 Googleスプレッドシートのマップ関連機能用の非常に堅牢なスクリプト提供しています。これは、私が使用して非常に楽しんだものです。完全な説明もウェブページにあります。


1
「詳細な手順」の要点をいくつか要約していただけますか?回答は独立していて、外部ソースに依存しないようにする必要があります(Googleサイトが消える可能性は低いと思います)。ありがとう!
jonsca

-2

これを行う方法を正確に説明するAPIに精通していませんが、Google Maps APIを使用することで可能になると思います

もちろん、GoogleマップはAPIを介してある地点から別の地点への道順を提供できます。複雑になりますが、APIを介してスプレッドシートから場所をルーティングし、運転ルートを取得することができます。これにより、都市間の運転距離がわかります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.