1

我一直在尝试验证 WGS84 点是否在 SQL Server 2012 的几何字段内。

场景是这样的,我在 SQL Server 2012 数据库(邮政编码和所有内容)中对地理区域进行了政治划分,并进行了验证。

然后,我还在 WGS84 系统中找到了一些基础设施,其中包含提供商提交的邮政编码,我想验证这些点。

我需要验证每个点 (WGS84) 是否属于与它一起提交的邮政编码。

我不知道从哪里开始。

谢谢您的帮助!。

奥马尔

4

2 回答 2

2

为了让您的生活更轻松,您需要首先更改表 1 以包含一个地理列,该列将保存转换后的几何数据。您可以按如下方式进行转换:

UPDATE [Table1] SET [NewGeographyColumn] = GEOGRAPHY::STGeomFromWKB([GeometryColumn].STAsBinary(), 4326);

现在您有了一个与您的 Table2 点匹配的 SRID 的 Geography 列,请确保您在这个新列上创建一个 SpatialIndex。

然后,您可以运行空间查询以确保您收到的数据是正确的:

DECLARE @receivedLatitude DOUBLE = 0;
DECLARE @receivedLongitude DOUBLE = 0;
DECLARE @receivedPostalCodeName VARCHAR(10) = 'Postcode';

DECLARE @receivedPoint GEOGRAPHY = GEOGRAPHY::Point(@receivedLatitude, @receivedLongitude, 4326);

SELECT * FROM [Table1] WHERE [NewGeographyColumn].STIntersects(@receivedPoint) AND [PostalCodeName] = @receivedPostalCodeName;

或者至少有一些类似的东西来验证......

希望能帮助到你。

于 2014-05-21T16:02:17.770 回答
0

例如,您可以为此使用必应地图 REST 服务。

对于每一点,您将:

示例(取自参考页面):

要求:

http://dev.virtualearth.net/REST/v1/Locations/47.64054,-122.12934?key=BingMapsKey

(BingMapsKey 可以从 www.bingmapsportal.com 获得)

响应,其中包括邮政编码:

(...)
"address":{
   "addressLine":"1 Microsoft Way",
   "adminDistrict":"WA",
   "adminDistrict2":"King Co.",
   "countryRegion":"United States",
   "formattedAddress":"1 Microsoft Way, Redmond, WA 98052",
   "locality":"Redmond",
   "postalCode":"98052"
},
(...)
于 2014-05-20T07:33:12.023 回答