我有一组包含n个地理坐标的数据,需要计算该数据的边界框(即找到最东、最西、最北和最南的位置),但不能依赖用户输入(程序没有用户界面)。简单粗暴的方法是“取纬度的最大值和最小值,经度的最大值和最小值,就可以了”——但当这组数据跨越180度子午线时,这种方法会得到明显不优的结果(例如斐济:https://www.openstreetmap.org/relation/571747#map=2/-16.6/0.0,两半实际上是相邻的,因此不应缩小到整个星球)。
多种解决方案都已经意识到了这一点,例如在Algorithm for determining minimum bounding rectangle for collection of latitude/longitude coordinates中,但并未得到解决。
以下方法都行不通:
多种解决方案都已经意识到了这一点,例如在Algorithm for determining minimum bounding rectangle for collection of latitude/longitude coordinates中,但并未得到解决。
以下方法都行不通:
- 查看其他人的做法(Leaflet也有同样的问题,如上所述)
- 列举可能出现的问题(例如,“如果其中一个坐标接近180度子午线”)——对于边界框横跨但不接近国际日期变更线(IDL)的点,这种方法无法解决(例如日本和夏威夷)
- 遍历所有坐标,并标记是否跨越180度子午线(取决于排序方式)