MySQL是一個廣泛使用的關系型數據庫管理系統,可用于存儲各種數據類型,包括地理位置數據。 這里將介紹如何使用MySQL存儲經緯度信息。
存儲經緯度需要將其轉化為一種數據類型,通常是float。位于Equator附近的位置的緯度可以轉化為-90和90之間的數字。經度位于本初子午線和國際日期變更線之間,并可以用-180和180之間的數字表示。
CREATE TABLE `locations` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `latitude` float(10,6) NOT NULL, `longitude` float(10,6) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
上述代碼創建了一個名為"locations"的表,該表包含了存儲位置信息所需的所有列。 "id"列為自動遞增的唯一標識符, "name"列存儲位置名稱, "latitude"和"longitude"列存儲該位置的緯度和經度。
一旦表被創建,可以使用INSERT語句在表中添加地理位置。
INSERT INTO `locations` (`name`, `latitude`, `longitude`) VALUES ('Shanghai', 31.231705, 121.472702), ('Beijing', 39.904200, 116.407396), ('New York', 40.712776, -74.005974);
以上代碼向"locations"表添加了三個位置,分別是上海、北京和紐約。使用SELECT語句可以從表中檢索地理位置。
SELECT `name`, `latitude`, `longitude` FROM `locations`;
最后,為了實現地理定位搜索,可以使用MySQL的空間數據類型和函數。Spatial類型可以保存一組坐標,可以支持空間索引和空間查詢。
例如,下面的查詢可返回距離紐約10公里范圍內的所有位置。
SELECT `name`, `latitude`, `longitude`, ST_Distance_Sphere(Point(`longitude`, `latitude`), Point(-74.005974, 40.712776)) / 1000 as `distance (km)` FROM `locations` HAVING `distance (km)`< 10 ORDER BY `distance (km)`;
以上代碼使用ST_Distance_Sphere函數和Point類型來確定每個位置之間的球面距離,并按距離排序,以便以升序方式顯示結果。
上一篇css超過寬度自動截取
下一篇樣式表qss和css