Mat*_*ias 14 sql sql-server-2014
我是一个sql初学者,知道如何在经度和纬度坐标中获取我的用户位置.我的目标是最终能够从myTable中选择距离小于2km的所有行.然而,在我实现这一目标的过程中,有些事情让我困惑,所以我会尝试列出我无法理解的内容.
我如何使用经度和纬度在地理列中存储位置?(因为它应该只是一个地理点而不是两个权利?不是一个经度而一个是纬度?)
现在我已经获得了地理点,我如何选择特定距离内的所有行(在我的情况下为2km)?
我已经看到了一些类似的问题,但是解决它们的预先理解的数量超出了我的sql知识,因为我是一个绝对的初学者,这可以轻松完成,任何人都知道如何?
ugh*_*hai 17
我怎样才能利用这个长篇大论来存储地理栏目中的位置?(因为它应该只是一个地理点而不是两个权利?不是一个地方,一个是妓女,一个是妓女?)
您可以使用geography::STPointFromText/ geography::Point以地理数据类型存储经度和纬度.
SELECT geography::STPointFromText('POINT(' + CAST([Longitude] AS VARCHAR(20)) + ' ' + CAST([Latitude] AS VARCHAR(20)) + ')', 4326)
Run Code Online (Sandbox Code Playgroud)
要么
SELECT geography::Point(Latitude, Longitude , 4326)
Run Code Online (Sandbox Code Playgroud)
参考链接:
现在我已经获得了地理点,我如何选择特定距离内的所有行(在我的情况下为2km)?
你可以STDistance像这样使用.
DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::STGeomFromText('POINT(-122.35900 47.65129)', 4326);
SET @h = geography::STGeomFromText('POINT(-122.34720 47.65100)', 4326);
SELECT @g.STDistance(@h);
Run Code Online (Sandbox Code Playgroud)
参考链接:
sqlserver 2008中使用Geography数据类型的两点之间的距离?
插入查询
DECLARE @GeoTable TABLE
(
id int identity(1,1),
location geography
)
--Using geography::STGeomFromText
INSERT INTO @GeoTable
SELECT geography::STGeomFromText('POINT(-122.35900 47.65129)', 4326)
--Using geography::Point
INSERT INTO @GeoTable
SELECT geography::Point(47.65100,-122.34720, 4326);
Run Code Online (Sandbox Code Playgroud)
获取距离查询
DECLARE @DistanceFromPoint geography
SET @DistanceFromPoint = geography::STGeomFromText('POINT(-122.34150 47.65234)', 4326);
SELECT id,location.Lat Lat,location.Long Long,location.STDistance(@DistanceFromPoint) Distance
FROM @GeoTable;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22637 次 |
| 最近记录: |