【Python】在地球球面、椭球面上构建Voronoi多边形

介绍

  1. 在局部区域研究中,我们将地球椭球面投影到平面上,在二维平面上构建Voronoi图(或泰森多边形),已经有成熟的算法及各种编程语言程序库的API。
    以Python为例,有scipy.spatial.Voronoi库。

  2. 但是在涉及全球范围内的研究上,投影到平面后变形很大。在精度要求不高时可以将地球表面近似为球面,构建球面Voronoi。
    在SO问答上有相关讨论
    以Python为例,有scipy.spatial.SphericalVoronoi库,以及一个开源库:py_sphere_Voronoi

  3. 在精度要求较高时,则直接构建地球椭球面上的Voronoi(将地球近似为椭球面)。
    该算法还没有可以直接调用的库。只能参考论文学习。

地球球面上构建Voronoi图

虽然Python有scipy.spatial.SphericalVoronoi库可以用,但是该库支持的输出数据为笛卡尔坐标系的 ( x , y , z ) (x,y,z) (x,y,z)值。

所以,如果输出数据为经纬度数据,则需要参考下文论文[1]中的转换公式:

  • 经度不变,先将纬度从椭球面纬度转为球面纬度
    在这里插入图片描述

  • 再将球面经纬度转为笛卡尔坐标:
    在这里插入图片描述

  • 然后就可以使用scipy.spatial.SphericalVoronoi库了。

地球椭球面上构建Voronoi图

基于矢量的方法

参考论文[1]:Voronoi tessellation on the ellipsoidal earth for vector data

该论文先以球面的角度生成球面Voronoi的近似点,再通过椭球面上的三点问题,将近似点精确化。

关于“椭球面上的三点问题”以及相关知识的补充与扩展,可以参考以下论文:

[2]The Three-point Problem of The Median Line Turning Point- on the Solutions for the Sphere and Ellipsoid
[3]New Solutions to Classical Geodetic Problems on the Ellipsoid
[4]Intersections on the sphere and ellipsoid
[5]Precise Determination of the Clairaut Constant in Ellipsoidal Geodesy
[6]A Method for the Delimitation of an Equidistant Boundary Between Coastal States on the Surface of a Geodetic Ellipsoid

基于栅格的方法

参考论文[7]:Voronoi diagram generation on the ellipsoidal earth

该论文提出了一种在椭球体上生成误差为 2 ∗ r \sqrt{2}*r 2 r,其中 r r r 是网格的空间分辨率。
在他们的方法中,点由网格单元近似,Voronoi 顶点通过计算单元中心之间的距离生成。
用于确定 Voronoi 顶点的单元到单元距离的精度取决于选定的单元大小,无法达到使用矢量方法在椭球体上计算的距离的精度。

矢栅混合方法

参考论文[8]:Determination of circumcenter of triangle on ellipsoidal surface based on map algebra

该方法提高了顶点位置的准确性。然而,对于从密集点数据集生成 Voronoi图,例如,由中分辨率和高分辨率海岸线组成的点,必须使用过小的单元大小,以防止每个单元中包含多个生成点。

尽管基于矢栅混合的方法有其无可置疑的优势,但如论文[7]指出的:“精确的 Voronoi 图只能通过矢量方法获得,在矢量方法中,空间是无限可辨别的,并且每个点都由其精确的坐标来表示”。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在等角投影下,地球椭球面上的直线不一定会投影为直线。等角投影会保持角度不变,但会引起形状和大小的变化,因此地球上的直线在投影后可能会出现弯曲。这是因为地球是一个椭球体,而等角投影是将三维球面投影到二维平面上,因此在这种投影方式下,地球表面的一些区域必须被拉伸或压缩,以适应二维平面的形状。这种形状变化会导致直线在投影后出现曲线。 ### 回答2: 在等角投影下,地球椭球面上的直线在投影后通常不再是直线。等角投影是一种保持角度不变的投影方法,它会将地球上的点按照一定规则映射到平面上。由于地球是一个椭球体,而平面是一个二维图形,因此在投影过程中会引入失真。 具体而言,等角投影会使纬线和经线在投影平面上呈现出直线的形状。但是除此之外,其他曲线或直线在投影后通常不会保持其形状。这是因为地球表面的其他曲线,如大圆弧或曲线线段,在投影过程中将展开或压缩,导致其在投影平面上呈现出曲线、弧线或其他形状。所以,在等角投影下,地球椭球面上的直线投影后一般来说不再是直线。 值得注意的是,不同的等角投影方法可能会导致不同程度的失真。一些等角投影方法,如兰伯特等角投影,可能会保持地球表面上某些特定曲线段上的直线特性,但整体上,除纬线和经线外的大多数曲线投影后仍会呈现曲线形状。因此,在等角投影下,我们不能期望地球椭球面上的所有直线投影后都仍然是直线。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值