将纬度/经度转换为美国州

Posted

技术标签:

【中文标题】将纬度/经度转换为美国州【英文标题】:Convert lat/long to US State 【发布时间】:2020-06-30 15:37:10 【问题描述】:

我可以访问经纬度坐标列表,并且我想(大致)知道这些坐标所在的美国州。我可以解决精度损失问题,但我不能依赖外部库或API。我还可以在我的代码中添加位置数据库。

这样做的合理方法是什么? 我想到了 3 种可能性:

    用其中心的一个点表示每个状态,然后进行最近邻搜索 通过位于州内城市的点来表示每个州,然后进行最近邻搜索(点更多) 用一个简单的边界框表示每个状态,然后使用某种算法查询我的点属于哪个边界框

你认为什么是最好的?我倾向于考虑解决方案 3,但我找不到美国各州的粗略“边界框”列表

【问题讨论】:

你不能使用外部图书馆,因为这是学校作业? @NomadMaker 不,更多的是我真的不能为此拉大外部依赖项 【参考方案1】:

我进行了一些搜索,并通过边界框数据集找到了适合您正在寻找的解决方案。

*** 上的回答:LINK

数据集:LINK

要使用的算法(实现):LINK

所以是的,实现它的正确方法是使用带有给定数据集的解决方案 3。

希望对你有帮助:)

【讨论】:

非常感谢!我正在努力找出这个数据集,非常感谢! 请记住,由于数据集不能 100% 精确,因此总会存在一些精度错误【参考方案2】:
    行不通,考虑

    很有可能至少在某些州不工作。考虑城镇/城市集中在中间的州,以及城镇/城市集中在边缘的州。

    不起作用(这些应该是 90 度角,完美的正方形,但用鼠标绘图很难:))

如果您想稍微准确地执行此操作,您将需要一些定义状态之间边界的形状数据。然后,您将需要一个算法来确定一个点是否在不规则多边形内

见List of the United States (US) state boundaries / borders as latitude/longitude pairs for geofence?

【讨论】:

谢谢!的确,前两种方法非常不准确,但它们也很快(至少方法 1)我将尝试专注于方法 3

以上是关于将纬度/经度转换为美国州的主要内容,如果未能解决你的问题,请参考以下文章

在谷歌地图 api v3 中将地区、城市、州、国家/地区转换为纬度和经度?

将纬度/经度转换为地址 [重复]

R中州代码的纬度经度坐标

将地址转换为经度和纬度

如何将纬度和经度转换为莫顿码(z 阶曲线)

如何将 CLLocationCoordinate2D 纬度和经度转换为双倍?