色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql 經緯度 存儲

夏志豪2年前11瀏覽0評論

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類型來確定每個位置之間的球面距離,并按距離排序,以便以升序方式顯示結果。