我有一系列以经度/纬度对表示的点和多边形。我将处理的每组点彼此相距不超过 3 公里,但我有来自美国不同点的不同集群。我正在尝试将它们转换为以米为单位的“地图 XY”坐标,以便我可以进行简单的几何/距离计算:点在多边形内、点之间的距离、点到多边形的距离等。
我尝试使用 pyproj 使用变压器进行一些操作:
pyproj.Transformer.from_crs("EPSG:4326", "EPSG:3857")
但我显然做错了一些事情。使用转换后的 XY 对时,与 (-90., 30.) to (-90.5, 30.)
相比,(-90., 50.) to (-90.5, 50.)
的计算距离相同,这是不正确的,因为第二对点距离北极更近。
您要转换的投影“EPSG:3857”是伪墨卡托投影。它是 Google 地图等使用的扁平化地图。对于远距离的距离计算来说,它根本不是很好,因为事实上,经度 90 和 90.5 之间的距离并不取决于此投影中的纬度,因为两条红线对应于你的两行显示。
墨卡托距离计算的唯一优点,以及从 4326 转换的原因,是它保留了几何形状。因此,围绕任何给定点,水平方向和垂直方向的垂直拉伸相等。因此,您可以计算给定位置(彼此足够接近的点集)的局部拉伸系数,以将 3857 距离转换为实际距离,并且对于足够小的位置,它会给出合理的结果。但拉伸系数会因遥远的地点而异,例如示例中的安大略省和路易斯安那州。
您还可以通过对每个位置/点集使用不同的局部投影来获得更好的精度。