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] 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)

オン [プライマリ] ) オン [プライマリ]

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 になります。なぜこれが私にこれほど多くのことを与えているのか、半径のわずか数マイルでコードを投稿しているのかを知ることができません。

助けてください

4

1 に答える 1

0

経線がいずれかの極に近づくと、経線間の距離はゼロになります。赤道 (または他の場所) での経度距離が地球全体で一定であるように、地球は平らである (平面投影) と想定している可能性があります。地球が平らであると仮定すると、極に近づくほど距離の計算が大きくなりすぎるというエラーが発生します。

于 2013-03-23T23:53:18.580 に答える