我关注了这个博客[http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/sql-server-2008-proximity-search-with-th]并做了所有指导的事情,我很高兴事情进展顺利,我的表定义如下所述,我正在执行的查询也在下面提到。
我正在使用可从https://www.ordnancesurvey.co.uk/opendatadownload/products.html
下载的CodePointData数据USE [TestDb] GO
/****** Object: Table [dbo].[PostCode] Script Date: 08/23/2012 05:32:05 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[PostCode]( [PostCode] [nvarchar](10) NOT NULL, [Coordinates] [geography] NOT NULL, [Coordinates1] [geography] NULL, CONSTRAINT [PK_PostCode] PRIMARY KEY CLUSTERED ( [PostCode] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY] )[主要]
GO SELECT distinct(left(h.postcode,4)) from postcode g join postcode h on g.postcode <> h.postcode and g.postcode ='IG1 4LF' and h.postcode <> 'IG1 4LF' Where g.coordinates.STDistance(h.coordinates)<=(1*1609.344) order by left(h.postcode,4)
当我运行上述查询时,它会提供许多不属于Radius的邮政编码。我正在使用另一个站点http://www.freemaptools.com/find-uk-postcodes-inside-radius.htm验证我的结果,并且该站点说1英里半径包含邮政编码IG1,IG2,IG3,但是当我运行上述查询时,我的结果是E12,IG1,IG2, IG3,IG4,IG5,IG6。我无法找出为什么它给我这么多或者只是在半径的Radius中发布代码。
请帮助
答案 0 :(得分:0)
当经线接近任一极点时,经线之间的距离变为零。您可能认为地球是平坦的(平面投影),因此赤道(或其他位置)的经度距离在整个地球上是恒定的。平地假设误差会导致距离计算在极点附近增加得太大。