转换纬度/经度为美国州

时间:2020-06-30 15:37:10

标签: java geolocation

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

执行此操作的合理方法是什么? 我考虑了3种可能性:

  1. 在每个州的中心点用一个点表示每个州,然后进行最近邻搜索
  2. 用位于该州城市的点代表每个州,然后进行最近邻搜索(点数更多)
  3. 用一个简单的边界框表示每个状态,然后使用某种算法查询我的点属于哪个边界框

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

2 个答案:

答案 0 :(得分:1)

  1. 考虑不了

Proof 1

  1. 极有可能在至少某些州不工作。考虑城镇/城市集中在中间的州,而城镇/城市集中在边缘的州。

enter image description here

  1. 将无法正常工作(这些角度应该是90度角,完美的正方形,但是用鼠标绘制很难:))

enter image description here

如果要精确地做到这一点,则需要一些形状数据来定义状态之间的边界。然后,您将需要一种可以确定点是否在不规则多边形内的算法

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

答案 1 :(得分:1)

我进行了一些搜索,并使用边界框数据集找到了适合您所要查找的解决方案。

关于StackOverflow的答案:LINK

数据集:LINK

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

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

希望它会有所帮助:)