【发布时间】:2017-01-28 10:25:58
【问题描述】:
我是使用 Geography 数据类型的新手,但我已经知道如何使用它从一个点获取邮政编码列表(在存储过程中,我只是将点作为 varchar 并提供给它“经度纬度”),太棒了。
但是,接下来我需要展示的是距该点大约几英里的距离。我看了几个答案,没有找到任何东西。
这是我的存储过程:
ALTER PROCEDURE [dbo].[GetZipCodesByDistance]
@point varchar(500),
@distance int
AS
BEGIN
SET NOCOUNT ON;
declare @geoPoint geography
set @geoPoint = geography::STGeomFromText('POINT (' + @point + ')', 4326)
.STBuffer(@distance / 0.0006213712)
SELECT zc.zip_id AS ZipId
,zc.zip_code AS ZipCodeId
,zc.zip_type AS ZipType
,zc.zip_city AS ZipCity
,zc.zip_utc AS ZipUtc
,zc.zip_dst AS ZipDst
,zc.zip_latitude AS ZipLatitude
,zc.zip_longitude AS ZipLongitude,
(Geo.MakeValid()).STDistance(@geoPoint)
FROM zip_code zc
WHERE zc.Geo.STIntersects(@geoPoint) = 1
所以,我的问题是......我如何让它从该点返回英里?我尝试添加列“(Geo.MakeValid()).STDistance(@geoPoint)”,但它返回全零。
感谢您的帮助!
AJ
【问题讨论】:
-
那么你的问题是什么?请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。
-
对不起,我没有明确表示,我已经编辑了我的帖子,以便在其中包含问题。谢谢!
标签: sql-server sql-server-2008 geocoding distance geo