Saya terbiasa melihat format lokasi sebagai garis lintang diikuti oleh garis bujur, tetapi menggunakan perpustakaan, saya yakin saya mengerti MySQL untuk menyimpannya sebagai POINT(LNG LAT)
, urutan terbalik. Apakah perpustakaan saya salah, atau ini format yang sebenarnya? Sepertinya saya tidak dapat menemukan detail ini di dokumentasi MySQL.
9
Jawaban:
Sintaks Konstruktor
Mencari referensi fungsi spasial, Anda akan melihat
Ini tidak sepenuhnya benar. Semua implementasi GIS harus dilakukan
(x,y)
untuk koordinat yang diproyeksikan(long,lat)
. Tetapi, pada sistem kordinat geodidik ada beberapa ketidaksepakatan tentang apa yang harus dilakukan. MySQL (dan SQL Server) melakukan(lat,long)
tetapi PostGIS mempertahankan di(long,lat)
mana-mana.Ini disentuh dalam spesifikasi Standar Implementasi OpenGIS® untuk informasi Geografis - Akses fitur sederhana - Bagian 2: opsi SQL ,
Perhatikan kata-kata di atas ditemukan kata demi kata dalam informasi Geografis - Representasi teks yang terkenal dari sistem referensi koordinat
Bahkan sejauh spesifikasi 1.1,
Yang mengatakan, tampaknya PostGIS dan Oracle dan banyak perpustakaan pihak ketiga mempertahankan
(x,y,[z])
untuk semua jenis poin. Ini melanggar spesifikasi untuk WKT, tetapi merupakan konvensi yang cukup umum. Misalnya GeoJSON juga melakukan ini,Dan, (lat, panjang) pemesanan secara eksplisit ditentukan oleh EPSG untuk SRSID 4326 ,.
Anda juga dapat mempertimbangkan untuk memeriksa blog Paul Ramsey (Kapten PostGIS) mengenai hal ini yang berjudul, "Mari Panggil Seluruh Hal Ini"
Kebaikan
Sebagai catatan khusus, MySQL membawa dua fungsi baru ke dalam campuran,
ST_Longitude()
ST_Latitude()
Fungsi-fungsi ini berdiri di samping
ST_X()
, danST_Y()
dan membutuhkan SRS geografis atau mereka mengeluarkan pengecualian dan kesalahan.Penyimpanan
Dari dokumen
Menyimpan didefinisikan di sini .
sumber
Cara mudah untuk memeriksa pesanan adalah melewati batas lintang:
Memberikan ERROR 3732 (22S03): Parameter fungsi st_srid berisi geometri dengan garis lintang 160.000000, yang berada di luar jangkauan. Itu harus dalam [-90.000000, 90.000000];
Berhati-hatilah bahwa pesanan dapat berubah tergantung pada fungsi yang Anda gunakan:
sumber