gpt4 book ai didi

sql - 是否可以从经度/纬度获取城市?

转载 作者:行者123 更新时间:2023-12-04 20:38:20 25 4
gpt4 key购买 nike

我听说 SQL Server 现在支持地理之类的东西。是否可以从经度/纬度获取城市?我搜索了很多,还是找不到?

最佳答案

您需要加载一些包含城市位置的数据 - Geonames (您可能需要 cities15000.zip)或 Natural Earth (人口稠密的地方)可能是开始的好地方。

CREATE TABLE cities ( 
name VARCHAR(200) PRIMARY KEY,
location GEOGRAPHY,
);
CREATE SPATIAL INDEX idx_cities_location ON cities(location);

INSERT INTO cities (name, location) VALUES
('Auckland', geography::STGeomFromText('POINT(174.7833 -36.85)', 4326)),
('London', geography::STGeomFromText('POINT(-0.1062 51.5171)', 4326))
;
  • 注意所有坐标的顺序是(Longitude Latitude)
  • 空间索引让它变得更快。
  • 4326是基本经纬度的坐标系代码。

然后要找到离给定位置最近的城市,您需要这样的查询:

DECLARE @g geography = 'POINT(103.75 1.3667)';
SELECT TOP(1) name FROM cities
WHERE location.STDistance(@g) IS NOT NULL
ORDER BY location.STDistance(@g);

SQL Server 文档中的更多示例:

关于sql - 是否可以从经度/纬度获取城市?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13716889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com