0

我关注了这个博客 [http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/sql-server-2008-proximity-search-with-th] 并按照指导做了一切,我很高兴一切顺利,下面提到了我的表定义,下面也提到了我正在执行的查询。

我正在使用可从https://www.ordnancesurvey.co.uk/opendatadownload/products.html下载的 CodePointData 数据

使用 [TestDb] 去

/****** 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)

开 [初级] ) 开 [初级]

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)

当我运行上述查询时,它提供了许多不属于该半径的邮政编码。我正在使用另一个站点http://www.freemaptools.com/find-uk-postcodes-inside-radius.htm验证我的结果,这个站点说 1 英里半径包含邮政编码 IG1、IG2、IG3,但是当我我正在运行上述查询,我​​的结果是 E12、IG1、IG2、IG3、IG4、IG5、IG6。我无法找出为什么它在半径一英里内给了我这么多或邮政编码。

请帮忙

4

1 回答 1

0

当它们接近任一极时,经线之间的距离变为零。您可能会假设地球是平的(平面投影),因此赤道(或其他位置)的经度距离在整个地球上是恒定的。平坦地球假设会出错,这会导致距离计算在靠近两极的地方增加得过大。

于 2013-03-23T23:53:18.580 回答