三个经纬度在一条直线上_中国地图上画一条直线,最多能穿过多少个城市?

本文探讨了中国地图上画一条直线最多能穿过多少个城市的问题,通过算法分析发现,最多共线城市为10个,分别是运城、漯河和杭州。研究使用了Matlab进行计算,并提供了相关代码。
摘要由CSDN通过智能技术生成

好朋友Jimmy给发了一张图,说:太原和成都之间刚好隔了一个西安,而且三个城市近乎在一条直线上。由此开始了一个头脑风暴:中国地图上画一条直线,最多能穿过多少个城市?

bf60bd2ad5147ad28de93766b77c01db.png

f9536fa1099a863339663022bebee203.png

6dac61f24489c79181a999c6a21e8903.png

△Jimmy发来的截图

其实问题是平面上散点的共线问题,昨天组会后花了点时间实现了算法,原文发在个人主页上了:https://weilungao.github.io/tools/2020/10/15/LinkCity/ ; 相关代码放在了Github的仓库里:https://github.com/weilungao/LinkCity 。没有时间做参数的敏感性分析了,有兴趣的同学可自行下载代码玩一下。具体内容如下:

中国地图上画一条直线,最多能穿过多少个城市?

摘要

地理上的一些直线具有直观的地理显示度和特定的地理学意义,受到了人们的关注。本文主要关注中国地图上的城市共线问题。通过将问题转化为矩形包含的坐标数量,利用Matlab进行求解。结果显示,最多共线城市为10个。本研究为后续城市共线问题的探讨提供借鉴。

1. 引言

地理上有很多有趣的直线,有一些具有很强的地理学意义。例如我国著名的胡焕庸线(英文:Hu Line),即黑河-腾冲连线。该线大致地划分了中国人口在区域上的分布,体现了中国人口在东南和西北区域的悬殊差异。此外还有神秘的北纬30度线,秦岭淮河线等等。这些直线具有直观的地理显示度和特定的地理学意义,因此受到了人们的关注。

此外,也有一些直线尽管可能不具备特殊的地理学含义,也依然受到了人们的关注,例如北京市的中轴线南北延伸穿过的地区,东北三省省会城市的三点共线等。不同城市之间连线有时候看起来挺有趣的,也为日常聊天提供了些许谈资。然而,现有的资料缺乏多个城市连线现象的相关地理人文现象的探讨,作为相关探讨的第一步,我们需要量化究竟有哪些城市可以使用一条直线进行连接。因此本文着重关注以下的问题:如果在中国地图上画一条直线,最多能穿过多少个城市呢?

本文首先对问题进行了概化。接着利用现有的数据,使用Matlab进行相关算法的实现,分析了每个城市与其他城市的共线情况分布,提出了中国地图上最多能穿过多少个城市的直线。

2. 方法与数据

2.1 问题概化

在地图上,城市被简化成为一个点,这个点往往是城市的中心。如果直接画一条严格意义上的直线,那么很难获取多个城市点在同一条线上。考虑到城市具有一定的面积,因此我们将这条线赋予一定的“宽度”。此外,因为条线必然经过一个城市(至少两个),否则没有意义,因此本文将问题转化为:经过某一个城市,画一条具有一定“宽度”的直线,最多能穿过多少个城市?值得注意的是,本文所有的直线并不指数学意义上的没有端点的直线,而是指数学意义上具有足够长的线段。

2.2 算法实现

如图1所示,以任意一个城市为中心,画一个矩形,矩形的宽度为上述直线的宽度,本文为10 km;矩形的长度L设置为20000 km,以足够覆盖中国全境。那么计算过程便转化为,矩形内包含的城市坐标点有多少个。

2bf9efa50efdcd523c43f45a504e4faa.png

图1 经过特定城市的矩形及其包含的城市

本文采用Matlab实现相关算法,主要涉及矩形的生成以及矩形内坐标点的计算。相关代码见本文的Github仓库(https://github.com/weilungao/LinkCity)。

2.3 数据获取

如图2所示,通过中国地级市经纬度坐标,采用中国地图常用的Albers投影,获取城市坐标点的投影坐标(笛卡尔坐标),便于后续计算。转换后的城市投影坐标数据见本文的Github仓库(https://github.com/weilungao/LinkCity)。

73584066a2ee1cd55a4fa4f31af785c5.png

图2 中国主要城市分布

3. 结果

3.1 城市共线数量分布

本文分析了每个城市与其他城市的共线情况的统计分布和空间分布,如图3a所示,共线城市数量范围为4-10个,大部分共线城市数量为6-7个。如图3b所示,共线城市数量的分布没有明显的空间特征。

270e52ca1df45ae6e8ca1c95cde7050c.png

图3 与其他城市共线的(a)城市数量统计分布; (b)城市数量空间分布

3.2 共线最多的城市

按照现在的参数设置,结果分析显示,中国地图上画一条直线线,穿过其他城市数量最多的三个城市是运城,漯河,杭州,这3个城市均与其他9个城市共线,且三者本身共线。

0967e097ccfa2200e7b6c75a6d82cd9b.png

图4 与其他城市共线最多的城市

4. 讨论

4.1 城市共线数量分布

不一定位于中原的城市就具有更多的共线城市。以中原城市为中心,虽然直线两端均可能与其他城市共线,看似与其他城市共线的概率较大;然而,靠近边境的城市虽然只有直线一端可能与其他城市共线,但是直线一端的城市数量大于中原城市,也提高了其可能与其他城市共线的概率。

此外,由于共线的城市可能位于矩形中心城市的两侧,因此,当矩形中心城市为共线城市中的其他城市时,可能会得到不同的共线结果(图5)。这也是为什么本文得到的最多共线城市数量是10个,但是却只有运城、漯河、杭州3个城市具有最多的共线城市,而不是10个城市具有最多10个共线城市。

c13cd44b9b656fbd652bc4242e3153fc.png

图5 某种情况下的共线城市可能具有不同的共线城市数量

4.2 可能的其他概化方式

本文将城市视为点,考虑到城市具有一定的面积,赋予直线一定的“宽度”,转化为矩形内包含坐标点的问题进行求解。其他可能的概化方式是将城市视为具有一定半径的圆,转化为圆与直线相交、相切、相离的问题进行求解(图6)。

0bf0baa636a5d862b6a3287e5765a557.png

图6 可能的其他概化方式

4.3 结果的不确定性

本文直线的宽度为10 km,改变此参数可能会影响最终结果。如图7所示,将直线宽度增大为15 km,最多共线城市由原来的10个上升为12个。这是因为矩形的范围增大了,可能包含更多的城市坐标。

b46b92a72bee2c53cc5512f74f65349e.png

图7 直线宽度为15 km时的共线城市数量分布

此外,本文采用中国地图常用的Albers投影,获取城市坐标点的投影坐标。不同的投影坐标的选择会导致不同的城市投影坐标,可能会对结果产生一定的影响。此外,本文使用的数据不是中国最新的地级市数据,其中并不包含海南省三沙市。

5. 结论

 本文利用Matlab进行求解了中国地图上的城市共线问题。结果显示,中国地图上共线城市数量范围为4-10个,共线城市数量空间分布特征不明显。中国地图上画一条直线,穿过其他城市数量最多的三个城市是运城,漯河,杭州;最多共线城市为10个。本文结论可为后续城市共线问题的相关讨论提供借鉴。

参考文献:

无。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值