私は探しているものが見つからないか、Googleのドキュメントを読んでいませんでした。私はそれを逃しました。ちょうど2点を提出し、開始と終了、そして中間点。 「www.somesite.com/api.php?start=43.12,12.23 & end = 44.12,12.23 & number_of_waypoints = 5」のようないくつかのAPIがありますか? ありがとうございます!2点間の座標を取得する方法
答えて
まず、地球が楕円体であると仮定して、地球の周りの2点を通過する最短線であるgeodesicsで作業する必要があります。 WGS84は、「緯度+経度」座標で最も広く使用される標準座標系です。これは地球が楕円であることを前提としています。
この問題を解決するには、まず方位角(北からの方位角)と2つの座標間の距離を求める必要があります。これを計算する方法は、逆測地問題を解決することです。
この距離がいったんメートルであるとすると、それはn
で割り切れます。ここで、n - 1
は、行間のウェイポイント数です。これにより、各ウェイポイント間に距離d
メートルが得られます。
ここで、この線に沿ってd
メートルの間隔でポイントをプロットする必要があります。これを行うには、直接測地問題を解決できます。これは与えられた方位角で所与の点から所定の距離を移動させた後の新たな座標の集合を与える。これを繰り返して、毎回新しいポイントを前のポイントからd
メートルに移動させることができます。これに留意すべき点の1つは、線内の異なる点からの線の終わりまでの方位角が変化するため、各段階の後に目的方位角を取得し、次の点の計算に使用する必要があることです。
直接測地問題と逆測地問題を解決するには、数式が必要です。その数式は複数あります。しかし、PHPアプリケーションでは、おそらく自分自身を実装しようとするのではなく、代わりにこれを行うためのライブラリを使用することをお勧めします。これを行うPHPの一般的なライブラリの1つはphpgeoです。ここで
が、これはphpgeoで実装されるかもしれない方法の例です:
<?php
use Location\Coordinate;
use Location\Distance\Vincenty;
use Location\Bearing\BearingEllipsoidal;
$numPoints = 5;
$coordsA = new Coordinate(50.0, 0.0);
$coordsB = new Coordinate(51.0, 1.0);
$bearingCalculator = new BearingEllipsoidal();
$distanceCalculator = new Vincenty();
// Inverse geodesic problem
// Calculate total length of line between coords
$totalDistance = $distanceCalculator->getDistance($coordsA, $coordsB);
$intervalDistance = $totalDistance/($numPoints + 1);
// Inverse geodesic problem
// Calculate angle to destination
$currentBearing = $bearingCalculator->calculateBearing($coordsA, $coordsB);
$currentCoords = $coordsA;
$points = [];
for ($i = 0; $i < $numPoints; $i++) {
// Direct geodesic problem
// Calculate new point along line
$currentCoords =
$bearingCalculator->calculateDestination($currentCoords,
$currentBearing,
$intervalDistance);
// Add these new coordinates to the list
array_push($points, $currentCoords);
// Inverse geodesic problem
// Recalculate angle to destination
$currentBearing =
$bearingCalculator->calculateBearing($currentCoords,
$coordsB);
}
// Print out the list of points
foreach ($points as $point) {
echo "{$point->getLat()}, {$point->getLng()}\n";
}
ありがとうございました!!!とにかく、私はこの行を最初に追加しなければなりません:require_once __DIR__。 "/vendor/autoload.php"; –
@LeonardoDaVinci聞いて嬉しいです。依存関係のインポートを扱う方法とプロジェクト間でオートローディングが異なることがあり、Composerを既に設定している可能性があるので、その部分を省略しました。 –
@LeonardoDaVinciまた、あなたがこの回答に満足している場合は、他の回答を待っていない限り、質問の受け入れられた回答としてマークすることができます。 –
- 1. 2点間の座標を取得
- 2. ピクチャボックス内の2点間でマウス座標を取得する方法
- 3. iOS:2つの座標間のルートパスを取得する方法
- 4. 2地理座標間の中間点
- 5. ピクセルシェーダの点の重心座標を取得する方法HLSL
- 6. mouseClickのx座標とy座標を取得する方法
- 7. 座標空間の起点
- 8. APPIUM、スワイプのx座標とy座標の取得方法
- 9. 角度と距離に基づいて座標系内の点の座標を取得する方法
- 10. 中間点サークルアルゴリズム座標
- 11. UIImageViewの座標の取得方法は?
- 12. androidのアドレス座標の取得方法
- 13. ボトムy座標の取得方法
- 14. 単語ベクトル座標の取得方法
- 15. オフラインで国別の座標を座標で取得する方法
- 16. イメージコントロールでビットマップイメージのx座標とy座標を取得する方法は?
- 17. Android - ビューのx座標とy座標をgridLayoutに取得する方法
- 18. カーソル座標とWPF要素の取得方法スクリーンに関する座標?
- 19. ビューの中間x座標とy座標を取得する方法xcode objective-c
- 20. モデル空間から、OpenGL ES 2.0の標準座標空間への座標を取る最も速い方法
- 21. Emgu CV SURF一致する点の座標を取得
- 22. 2つの2次元座標系間の座標変換
- 23. cocos2dで一定時間ベジェ曲線上の点の座標を取得する方法は?
- 24. sencha touch 2のマップ(Ext.map)の中心座標を取得する方法は?
- 25. 変換後に頂点座標を取得するOpenGL ES 1.0
- 26. 座標内の2行の間の交点
- 27. レイトレーシングのピクセル座標からuvw座標を取得する
- 28. 座標系の2点間の最短経路
- 29. Panel内のクリックイベントの座標を取得する方法は?
- 30. TextView内のClickableSpanの座標を取得する方法は?
は、なぜあなたは、外部APIを探していますか?あなたは図書館を利用できますか? (あなたがJSにいるなら、私はあなたにそれらをいくつか、JavaやC++でも与えることができます) –
"座標"と言うと、地図上の座標を意味しますか?もしそうなら、投影座標(東向き+北向き)または地理座標(緯度+経度)を意味しますか?また、どの言語でこれを使用したいと考えていますか? –
はい、地理的な座標とPHP –