私は1つの場所(緯度と経度)を持っていて、次の場所(緯度と経度)を見つけたいと思います。南)から私の場所(緯度と経度)。あなたは私とアルゴリズムや機能を教えてくれますか?場所を見つける私の場所から180度(南)に1キロメートル
1
A
答えて
0
JavaでRosetta code実装でスタート:
public static double haversine(double lat1, double lat2) {
double dLat = Math.toRadians(lat2 - lat1);
return R * dLat;
}
(あるべき:
public static double haversine(double lat1, double lon1, double lat2, double lon2) {
double dLat = Math.toRadians(lat2 - lat1);
double dLon = Math.toRadians(lon2 - lon1);
lat1 = Math.toRadians(lat1);
lat2 = Math.toRadians(lat2);
double a = Math.pow(Math.sin(dLat/2),2) + Math.pow(Math.sin(dLon/2),2) * Math.cos(lat1) * Math.cos(lat2);
double c = 2 * Math.asin(Math.sqrt(a));
return R * c;
}
あなたはdLon == 0
があるためlon1 == lon2
は、このコードの非常に多くは、右のドロップアウトすることがわかっている場合おなじみのlength = Radius * angle in radians
式)
したがって、R = 6372.8
とyo単にあなたの現在の緯度から1.0/6372.8
を引く(と慎重180 - 1.0/6372.8
未満緯度のポイントを処理するために覚えている)、つまり
dLat = 1.0/6372.8;
:ウル所望の結果が、dLat
の値を思い付くのは簡単です、1
です。簡単な解決策のために
0
はSimpleLatLngライブラリを見て、そのtravel()方法があります:
/**
* <p>
* Calculate the end point of traveling along a great-circle path from a
* given starting point with a given intitial bearing for a known distance.
* </p>
*
* @param start
* the starting point.
* @param initialBearing
* the initial bearing.
* @param distance
* the distance to travel.
* @param unit
* the unit in which distance is measured.
* @return the end point.
*/
public static LatLng travel(LatLng start, double initialBearing, double distance,
LengthUnit unit) {
double bR = Math.toRadians(initialBearing);
double lat1R = Math.toRadians(start.getLatitude());
double lon1R = Math.toRadians(start.getLongitude());
double dR = distance/LatLngConfig.getEarthRadius(unit);
double a = Math.sin(dR) * Math.cos(lat1R);
double lat2 = Math.asin(Math.sin(lat1R) * Math.cos(dR) + a * Math.cos(bR));
double lon2 = lon1R
+ Math.atan2(Math.sin(bR) * a, Math.cos(dR) - Math.sin(lat1R) * Math.sin(lat2));
return new LatLng(Math.toDegrees(lat2), Math.toDegrees(lon2));
}
あなたはちょうどそれを出発点、方向、距離と単位を与え、あなたが計算された位置を取得します。このメソッドはライブラリによって宣言されたいくつかのクラスを使用するため、完全なライブラリを取得する必要があります。他にも便利な計算方法があります。
Apache 2.0 Licenseでご利用いただけます。
0
北の都合で移動しているため、経度を使用しないように計算が簡単になります。 See
1キロは0.0088339度に等しい。
したがって、北半球では、位置の緯度から0.0088339を引いて、経度をそのまま残します。南半球の場合は0.0088339を追加してください。
関連する問題
- 1. 特定の場所の最も近い場所からドライバーを見つける
- 2. locahostを見つける場所:ポートの場所
- 3. angular2のsystemjs.config.jsを見つける場所
- 4. joomlaのコンテンツソースファイルを見つける場所
- 5. Android GPSの場所を見つける
- 6. リストの場所を見つける、
- 7. ユーザーの場所を見つける
- 8. ElasticSeachのデータを見つける場所
- 9. デバイスの場所を見つける
- 10. Revit:Navisworksエクスポートアドインを見つける場所
- 11. "IDashboardAuthorizationFilter"インターフェイス(Hangfire)を見つける場所
- 12. appengine endpoints.shスクリプトを見つける場所
- 13. JSR 223 TCKを見つける場所
- 14. Xamarin:System.Drawing.Drawing2Dを見つける場所
- 15. openjdkでソースを見つける場所
- 16. テレグラムキーを見つける場所
- 17. JBOSS:jboss.xmlを見つける場所
- 18. テスト時に例外からメッセージテンプレートを見つける場所
- 19. Facebook上の場所から人を見つける
- 20. 場所IDのリストの現在の場所から近くにあるものを見つける
- 21. 現在の場所からオートコンプリートの結果が得られた場所の距離を見つけるIOS
- 22. 指定された緯度経度の場所から特定の距離内のすべての緯度経度の場所を見つけるアルゴリズム
- 23. 私のGPS座標から近くの場所を見つける方法は?
- 24. 1つの場所ID
- 25. 私は緯度と経度から現在の場所の名前を見つけたいiOSの
- 26. 場所に位置する境界を見つけるか?
- 27. 緯度と経度で最寄りの場所を見つける
- 28. postgresqlの緯度と経度で最も近い場所を見つける
- 29. Firebaseのソースコードが見つかる場所
- 30. 私のJavaインストールの場所が見つからない
どの座標系であなたの現在の位置を知っていますか? –
[Haversine formula](https://en.wikipedia.org/wiki/Haversine_formula)を使用して、2点間の距離を計算することができます。より良い方法が必要な場合は、バイナリ検索を使用してそのポイントを見つけることができます。 –
@Andy Turner:Haversine式から新しい関数を作るのは難しいです。どうか私を助けてくれますか? –