-1
私は、動的に計算し、MySQL/Mariadbテーブル(Geospatial拡張機能を使用)の各行に提供されたGPS座標のセットを動的に返す方法について、 。SQLクエリで距離を動的に計算する
私のクエリは次のとおりです。(私は、指定された座標のクエリを動的に生成する代わりに、プレースホルダとして任意のGPS座標を使用しています)。
SET @distance = 0;
select name, X(location), Y(location),
@distance = (((ACOS(SIN(17.4681194 * PI()/180)
* SIN(X(location) * PI()/180) + COS(17.4681194 * PI()/180)
* COS(X(location) * PI()/180) * COS((78.495423 - Y(location))
* PI()/180)) * 180/PI()) * 60 * 1.1515)
* 1.609)
as distance from Points
問題は、私の出力では、すべての距離が、私は慎重にポイントテーブルを播種したいので、私は、これらの値が間違っている知って0または1のどちらかであるということです。
SQLでこれをやっている理由は、Python(またはコードレベル)ではなく、ORDER BYとTOPを使用できるようにするためです。距離が正しく設定され、テーブルからの場所。次のように
私の出力は、次のとおりです。
+----------------+--------------------+-------------------+----------+
| name | X(location) | Y(location) | distance |
+----------------+--------------------+-------------------+----------+
| randomsr1 | 17.4901059 | 78.4819368 | 0 |
| randomsr2 | 17.4895687 | 78.4830526 | 0 |
| randomsr3 | 17.45602 | 78.448551 | 0 |
| randomsr4 | 17.4681194 | 78.495423 | 1 |
| randomsra | 17.515589 | 78.4749738 | 0 |
| randomsrb | 17.4041657 | 78.4930975 | 0 |
| randomsrc | 17.40658541008292 | 78.47815974049286 | 0 |
| randomsrd | 17.468381171457448 | 78.46161846857831 | 0 |
| randomsr6 | 17.4649552904376 | 78.45982138853833 | 0 |
| location5 | 17.515562 | 78.474973 | 0 |
+----------------+--------------------+-------------------+----------+
ニースの出力を。ありがとうございました。 – Strawberry
あなたは歓迎ですが、美化について言えば、それはすべてのMySQL/MariaDBです。 :) – kilokahn
私は質問が本当にシンプルなものであることを知っていますが、誰も私がdownvotedになった理由を教えてくれますか?私はMySQLの専門家ではありません。これは私の学習経験でした。 おそらく、私に伝えるメッセージは、「あなたの問題を抱えてから、SOに来る前に眠っていますか? – kilokahn