跳至内容

random-location-generator

随机位置生成器可以生成有效的随机经纬度坐标,以十进制度数格式显示结果,同时在交互式世界地图上直接标出对应的地理位置,纬度范围为负90度到正90度,经度范围为负180度到正180度。该免费工具适用于软件测试中模拟真实地理位置数据,也可以用于地理课堂上直观演示经纬度坐标系统的基本概念。

随机位置生成器

加载计算器...
📚

文档

随机位置生成器是一种生成一对随机地理坐标的工具:一个纬度和一个经度。每个结果都标记一个可能位于地球表面任何位置的点,从开阔海域、城市街道到山峰都有可能。

工具生成的内容

每次点击都会生成一个纬度值,范围在-90°到90°之间,以及一个经度值,范围在-180°到180°之间。工具会以十进制度数显示这两个数值,例如60.0000° N、90.0000° W,并在简易世界地图上标出该点。负纬度表示该点位于赤道以南;负经度表示该点位于本初子午线以西。本初子午线经过英国格林尼治。

如何使用随机位置生成器

  1. 按下 生成 按钮。
  2. 读取按钮下方显示的坐标,以及 N/S 和 E/W 方向标记。
  3. 查看世界地图上的标记,大致确定该点所在的位置。
  4. 按下 复制,将坐标复制到其他地方使用。
  5. 再次按下 生成,获取一个新点。生成次数不受限制。

坐标如何计算(公式)

经度的计算很简单:它采用均匀抽样,也就是说,-180°到180°之间的每个值被选中的概率相同。公式为:

经度 = v × 360 − 180

其中,v 是介于0和1之间的随机数。

纬度的计算方式不同,这也是人们经常出错的地方。使用的公式是:

纬度 = arcsin(2u − 1),再将弧度转换为度数

其中,u 是介于0和1之间的另一个随机数,arcsin 是正弦函数的反函数。

为什么纬度不能直接使用普通随机数

靠近两极的纬线圈很短,赤道处的纬线圈很长,几乎绕地球一周。如果直接在 -90 和 90 之间取一个普通随机数作为纬度,每一度纬度得到的结果份额相同,尽管极地附近的纬线圈覆盖的地表面积远小于赤道附近的纬线圈。这会使过多的点聚集在两极附近。

反正弦公式解决了这个问题。它会分布各点,使地球表面的每一小块区域都有相同的被选中概率,无论该区域离两极有多近。这种方法称为球面点选取,其依据是一条有时称为阿基米德帽盒定理的规则:一条纬度带的表面积取决于其边界正弦值之差,而不是其纬度度数之差。

算例

假设生成器抽取两个随机数:纬度用 u = 0.9330127,经度用 v = 0.25。

  • 纬度 = arcsin(2 × 0.9330127 − 1) = arcsin(0.8660254) = 60°
  • 经度 = 0.25 × 360 − 180 = -90°

结果为60.0000° N、90.0000° W,即加拿大北部哈德逊湾附近的一个点。

代码示例

同样的两个步骤适用于任何编程语言:抽取两个介于0和1之间的随机数,对第一个数应用反正弦公式以获得纬度,再对第二个数进行缩放以获得经度。

Python

1import random
2import math
3
4def generate_random_coordinates():
5    u = random.random()
6    v = random.random()
7    latitude = math.degrees(math.asin(2 * u - 1))
8    longitude = v * 360 - 180
9    return latitude, longitude
10

JavaScript

1function generateRandomCoordinates() {
2  const u = Math.random();
3  const v = Math.random();
4  const latitude = Math.asin(2 * u - 1) * (180 / Math.PI);
5  const longitude = v * 360 - 180;
6  return { latitude, longitude };
7}
8

跳过反正弦步骤、直接将纬度设为random.uniform(-90, 90)的简单版本更容易编写,但它会使各点聚集在两极附近,而不是将各点均匀分布在地球表面。

常见用途

软件开发人员使用随机坐标测试 GPS 功能、地图渲染和基于位置的应用,而不必手动选择测试数据。游戏设计师使用随机坐标放置出生点或寻宝地点。教师使用随机坐标与学生练习读取纬度和经度。研究人员使用随机坐标为实地研究选择无偏的样本位置,因为反正弦方法不会偏向地球上的任何区域。

常见问题

坐标采用什么格式?

十进制度数(DD),例如40.7128° N、74.0060° W。这是大多数地图服务(包括 Google 地图)以及 GPS 设备使用的格式。

为什么这么多随机坐标落在海洋中?

水体覆盖了地球表面的约 71%,因此一个真正随机的点更可能落在海洋而不是陆地上。这是正常现象,说明坐标分布均匀,并不是工具的缺陷。

可以只生成某个国家或洲的坐标吗?

不可以只生成某个国家或洲的坐标。该工具会从地球上的任意位置选取点。若要将结果限制在某个区域内,就需要在生成后进行额外筛选,或者使用带有边界限制的工具。

坐标的精确度如何?

每个数值的小数点后有 4 位数字。对纬度而言,这相当于地球上任何位置约 11 米(36 英尺 (11 m))的精度,因为一度纬度约为 364,000 英尺 (111,000 m),从赤道到两极变化不大。对经度而言,同样的 4 位数字在赤道附近约覆盖 11 米,越靠近两极覆盖的距离越小,因为经线在那里彼此靠得更近。

这些坐标是现实世界中有效的位置吗?

是有效的位置。每个结果都是地球表面上数学上有效的点,但它可能位于开阔海域、冰面或其他附近没有居民点的位置。

如何将十进制度数转换为度、分、秒(DMS)?

将整数部分作为度数。将小数部分乘以60得到分。取该结果的小数部分,再乘以60得到秒。

参考文献

  1. Weisstein, E. W.(Wolfram MathWorld)。Sphere Point Picking。MathWorld:球面取点 — 从均匀分布中选取球面坐标会使点聚集在两极附近。
  2. 美国地质调查局。How much distance does a degree, minute, and second cover on your maps? USGS 度的距离 — 一度纬度约为 364,000 英尺 (111,000 m),且基本恒定;经度的距离向两极逐渐缩小。
  3. 美国地质调查局。How Much Water is There on Earth? USGS 水科学学校 — 地球表面约 71% 被水覆盖。