使用经度和纬度识别位置的邮政编码

时间:2019-02-20 16:52:37

标签: c# location geocoding zipcode geonames

我需要为数据集中的每条记录标识邮政编码,其中包含以以下格式存储在SQL Server数据库中的位置信息,

Location dataset

我要使用Geo Names提供的信息来标识某个位置的邮政编码,该信息的格式为:国家/地区代码,邮政编码,地点,数据1,数据2,数据3,数据4,纬度,经度和文本文件中的准确性如下,

Zip codes and their lat lon location

如何识别第一个数据集中每个记录的邮政编码(检查位置lat lang是否落在邮政编码的lat lang内)。我曾尝试找出与该主题相关的任何先前问题,但我只能找到this问题,在该问题中答案没有详细说明到达答案所需的过程或计算(仅提供特定语言的解决方案)。 / p>

Ps。这是我的本科生最后一年项目提出的要求。

1 个答案:

答案 0 :(得分:1)

一种有效的方法(尽管有点蛮力)是将Haversine Formula应用于初始数据集中(您的第一张图片)中的一对(纬度,经度),每个 (对GeoNames数据库中的(纬度,经度)对)。

Haversine公式可为您提供两个纬度/经度对之间的大圆距离(请记住,地球是一个地球)。如果您以第一个示例行lat 40.769,lon -73.9545为例,并循环浏览GeoNames数据库中的每个记录,计算出大圆距离(适用于North Bergan,Weehawken,Union City等),并跟踪最近的找到的距离,应该可以很好地指示正确的邮政编码。