1

我希望找到一种使用 GEOSwift 获取一系列用户 LatLngs 的方法,构造一个线串并将其缓冲为始终为 30 米宽,无论用户的位置如何。我觉得必须有比我要走的路更简单的方法,任何帮助都将不胜感激。

背景:

据我所知,缓冲区函数宽度参数当前以十进制度定义,因为我的坐标系是 EPSG 4326,这使得以米为单位计算宽度变得困难。我可以使用 Haversine 公式粗略估计经度或纬度的每十进制度数米。

我遇到的问题是一系列点可以在纬度和纵向上移动。因此,在这些情况下,我需要的缓冲区宽度介于 ThirtyMetersInLatDegrees 和 ThirtyMetersInLngDegrees 之间。在这种情况下,提供给缓冲函数的宽度变成了用户在与 ThirtyMetersInLngDegrees 和 ThirtyMetersInLatDegrees 相关的整个线串中的整体纵向和纬度移动的奇怪近似值/平均值。

即假设 ThirtyMetersInLngDegrees 是最大值:

ThirtyMetersInLatDegrees <= bufferWidth <= ThirtyMetersInLngDegrees

我怎样才能更好地做到这一点?

这是我如何计算每十进制度数的米:

//Earth’s radius
let R=6378137.0

let deviceLatitude = 37.535997
let OneMeterInLatDegrees = 1/R * (180/Double.pi)
let OneMeterInLngDegrees = 1/(R*cos(Double.pi*deviceLatitude/180)) * (180/Double.pi)
let ThirtyMetersInLatDegrees = 30 * latDegreesPerMeter
let ThirtyMetersInLngDegrees = 30 * lngDegreesPerMeter
4

0 回答 0