MySQLでPOINTを設定するときの正しい順序は何ですか?
SOの質問の答えでさえ、これに関して異なります。 緯度/経度のテキスト列を「ポイント」タイプの列に移動する
それは...ですか
POINT(lat lon)
また
POINT(lon lat)
私が見る限り、POINTがパラメータxとyをとるので、それは最初のバージョン(lat lon)であるはずですが、明確な証拠を見つけることができませんでした。
MySQLでPOINTを設定するときの正しい順序は何ですか?
SOの質問の答えでさえ、これに関して異なります。 緯度/経度のテキスト列を「ポイント」タイプの列に移動する
それは...ですか
POINT(lat lon)
また
POINT(lon lat)
私が見る限り、POINTがパラメータxとyをとるので、それは最初のバージョン(lat lon)であるはずですが、明確な証拠を見つけることができませんでした。
ここで見ることができるようにhttps://stackoverflow.com/a/5757054/1393681 順序は(lon lat)です。
lonは基本的にy軸であり、地球を見るとxを緯度としていますが、lonはx軸に沿って移動し、latはy軸に沿って移動しているため、 (lon lat)を使用する理由だと思います。
それにもかかわらず、アプリケーションで一貫性を保つ場合は、世界がデータベース内で反転するかどうかは問題ではありません;-)
私のようlat lon
です。これは、mysqlシェルから確認できます。
mysql> SELECT ST_ASTEXT(coords), ST_LONGITUDE(coords), ST_LATITUDE(coords) FROM table;
+----------------------------+-----------------------+----------------------+
| ST_ASTEXT(coords) | ST_LONGITUDE(coords) | ST_LATITUDE(coords) |
+----------------------------+-----------------------+----------------------+
| POINT(33.520571 -18.20072) | -18.20072 | 33.520571 |
+----------------------------+-----------------------+----------------------+
注:使用されるSRID4326。
参照:https ://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html#function_st-latitude
技術的には問題ではありません。ポイントのx座標とy座標に保存しています。あなたはそれらを書くのと同じ方法でそれらを読む必要があります。
「適切な方法」に関心がある場合は、GoogleMapsAPIが以下を使用して座標を作成するという事実のみを参照できます。
var location = new google.maps.LatLng(lat, lng);
学校では、「緯度とログイン」についても学びますが、その逆ではありません。
それでも、技術的には、どちらの方法で保存するかは実際には問題になりません。それらを読み返すときは、必ず同じ規則を使用してください。