2012-08-23 4 views
0

이 블로그 [http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/sql-server-2008-proximity-search-withthth] 그리고 가이드가 된 모든 것을했는데, 기쁜 일이 잘 풀렸다. 내 테이블 정의가 아래에 언급되어 있고, 내가 수행하고있는 쿼리도 아래에 언급되어있다.SQL Server 2008 GeoGraphy를 사용하여 반경에서의 PostCode 검색

제가

사용 [에서 TestDb] ON

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

이동 https://www.ordnancesurvey.co.uk/opendatadownload/products.html에서 다운로드가 CodePointData 데이터를 사용하고 [PRIMARY] [PRIMARY] 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과 나의 결과를 확인하고이 사이트는 Radius의 1 마일이 우편 번호 IG1, IG2, IG3을 포함하고 있다고 말하고 있지만 위의 쿼리를 실행할 때 나의 결과는 E12, IG1, IG2, IG3, IG4, IG5, IG6. Radius에서 단지 몇 마일 만에 왜 이렇게 많은 코드를 게시하는지 알 수 없습니다.

도와주세요

답변

0

경전선 사이의 거리는 두 극점에 접근 할 때 제로가됩니다. 적도 (또는 다른 위치)에서의 경도 거리가 지구 전체에서 일정하도록 지구가 평면 (평면 투영)이라고 가정 할 가능성이 큽니다. 평평한 지구 가정은 거리 계산이 극에 더 크게 증가하게 만들 것입니다.