GeoDistance[{lat1,lon1},{lat2,lon2}]
给出地球上用经纬度表示的位置之间的地理距离.
GeoDistance[loc1,loc2]
给出由位置对象或者地理实体指定的位置之间的距离.
GeoDistance[{loc1,…,locn}]
给出从 loc1 到 locn、经过所有中间 loci 的总距离.
GeoDistance
GeoDistance[{lat1,lon1},{lat2,lon2}]
给出地球上用经纬度表示的位置之间的地理距离.
GeoDistance[loc1,loc2]
给出由位置对象或者地理实体指定的位置之间的距离.
GeoDistance[{loc1,…,locn}]
给出从 loc1 到 locn、经过所有中间 loci 的总距离.
更多信息和选项
- GeoDistance[loc1,loc2] 能给出地点 loc1 和 loc2 之间的距离,按照参考椭球体表面上连接它们的测地线测量. 忽略高度.
- 结果按照具有长度的维度的 Quantity 对象返回. 使用的单位可以根据选项 UnitSystem 选择,其中 $UnitSystem 是其默认值.
- 经度和纬度可以按照以表示度的数字、DMS 字符串或者 Quantity 角度给出.
- GeoDistance[loc1,loc2] 中的位置对象可以以 GeoPosition、GeoPositionXYZ、GeoPositionENU 或者 GeoGridPosition 对象给出.
- 在 GeoDistance[loc1,loc2] 中,loci 可以是 Entity 对象,它的定义范围的例子有 "City"、"Country" 和 "AdministrativeDivision". 还可以使用 "HistoricalCountry" 和 "MilitaryConflict" 等与时间相关的域实体.
- 对于与扩展地理区域相对应的实体,GeoDistance 默认计算区域内任意点之间的最小距离.
- 对于随时间变化的实体,GeoDistance 默认会计算它们之间最接近时刻的相应距离.
- GeoDistance[loc1,loc2] 默认情况下使用与 loc1 的数据相关联的参考椭球体.
- GeoDistance 自动逐项作用于位置列表或 GeoPosition 数组的各个元素,因此,GeoDistance[loc,locs] 返回一个距离列表,GeoDistance[locs1,locs2] 返回一个距离矩阵. 以 QuantityArray 对象的形式给出结果.
- GeoDisplacement 中的 GeoDistance 和 GeoDirection,或它们的组合可解决大地测量反演问题.
- GeoDistance 具有选项 DistanceFunction,并且有下列设置:
-
"Boundary" 区域中任意点之间的最小距离 "Center" 区域中心之间的距离 "SignedBoundary" 到边界的距离,对于内部点为负数 - 默认 GeoDistance 使用 DistanceFunction"Boundary" 设置.
范例
打开所有单元 关闭所有单元基本范例 (6)
GeoDistance[{37, -109}, {40.113, -88.261}]GeoDistance[Entity["City", {"Chicago", "Illinois", "UnitedStates"}], Entity["City", {"Tokyo", "Tokyo", "Japan"}]]GeoDistance[GeoPosition[{37, -109, 150}, "ITRF00"], GeoPosition[{40.113, -88.261, 192.868}, "ITRF00"]]GeoDistance[Entity["MilitaryConflict", "BattleOfZama"], Entity["HistoricalCountry", "RomanRepublic"]]GeoDistance[{37, -109}, {{40.113, -88.261}, Entity["City", {"Chicago", "Illinois", "UnitedStates"}], GeoPosition[{38.52, -85.23}]}]Normal[%]GeoDistance[{Entity["City", {"LosAngeles", "California", "UnitedStates"}], Entity["City", {"Dallas", "Texas", "UnitedStates"}], Entity["City", {"Miami", "Florida", "UnitedStates"}]}]范围 (11)
地理数据 (8)
地球上任意两点之间的距离,使用默认数据 "ITRF00" 的参数表示:
GeoDistance[{46.42, -21.02}, {-30.23, 40.51}]GeoDistance["46°25'12''N 21°1'12''W", {"30°13'48.''S", "40°30'36.''E"}]或作为 Quantity 对象:
GeoDistance[{Quantity[46.42, "AngularDegrees"], Quantity[-21.02, "AngularDegrees"]}, {Quantity[-30.23, "AngularDegrees"], Quantity[40.51, "AngularDegrees"]}]计算 Entity 对象之间的距离:
GeoDistance[Entity["Country", "Spain"], Entity["Country", "Germany"]]或者 Entity 对象与地理位置之间:
GeoDistance[GeoPosition[{40, -4}], Entity["Country", "Germany"]]p = GeoPosition[{46.42, -21.02}]q = GeoGridPosition[{0.7, 0.9}, "Mercator"]GeoDistance[p, q]GeoDistance[GeoPositionXYZ[p], GeoPositionENU[q, GeoPosition[{0, 0}]]]GeoDistance[Here, {{0, 0}, Entity["City", {"Paris", "IleDeFrance", "France"}], GeoPosition[{40, 20}], GeoGridPosition[{40, 20}, "Mercator"]}]归一化所得 QuantityArray 对象:
Normal[%]SeedRandom[1234];
locs1 = RandomGeoPosition[100];
locs2 = RandomGeoPosition[200];AbsoluteTiming[dists12 = GeoDistance[locs1, locs2]]AbsoluteTiming[outer = Outer[GeoDistance, locs1["Data"], locs2["Data"], 1];]dists12 == outerGeoDistance 计算中忽略高度和时间信息:
GeoDistance[GeoPosition[{20, 30, 100}], GeoPosition[{-20, -30, 200, 3.6 10 ^ 9}]]% === GeoDistance[GeoPosition[{20, 30}], GeoPosition[{-20, -30}]]GeoDistance[GeoPosition[{30., 40.}, "ITRF90"], GeoPosition[{-50., -60.}, "WGS72"]]GeoDistance[GeoPosition[{30., 40.}], GeoPosition[{-50., -60.}]]UnitConvert[% - %%, "Meters"]GeoDistance[{Entity["City", {"LosAngeles", "California", "UnitedStates"}], GeoPosition[{40, -90}], Entity["City", {"Miami", "Florida", "UnitedStates"}]}]% == GeoDistance[Entity["City", {"LosAngeles", "California", "UnitedStates"}], GeoPosition[{40, -90}]] + GeoDistance[GeoPosition[{40, -90}], Entity["City", {"Miami", "Florida", "UnitedStates"}]]历史数据 (3)
GeoDistance[Entity["HistoricalCountry", "RomanRepublic"], Entity["HistoricalCountry", "HanDynasty"]]使用 GeoVariant "UnionArea" 进行计算,忽略时间信息:
GeoDistance[Entity["HistoricalCountry", "RomanRepublic"], GeoVariant[Entity["HistoricalCountry", "HanDynasty"], "UnionArea"]]Dated 将历史实体限制在特定日期:
GeoDistance[Entity["HistoricalCountry", "RomanRepublic"], Dated[Entity["HistoricalCountry", "HanDynasty"], -200]]Dated 也可以给出一个日期间隔、一对日期或年份:
GeoDistance[Entity["HistoricalCountry", "RomanRepublic"], Dated[Entity["HistoricalCountry", "HanDynasty"], {-200, -150}]]GeoDistance[Entity["HistoricalCountry", "RomanEmpire"], Entity["City", {"London", "GreaterLondon", "UnitedKingdom"}]]Dated 可用于将多边形限制在给定的日期或时间间隔内:
GeoDistance[Dated[Entity["HistoricalCountry", "RomanEmpire"], 50], Entity["City", {"London", "GreaterLondon", "UnitedKingdom"}]]选项 (2)
DistanceFunction (1)
GeoDistance[Entity["AdministrativeDivision", {"Illinois", "UnitedStates"}], Entity["AdministrativeDivision", {"Florida", "UnitedStates"}], DistanceFunction -> "Boundary"]GeoDistance[Entity["AdministrativeDivision", {"Illinois", "UnitedStates"}], Entity["AdministrativeDivision", {"Florida", "UnitedStates"}], DistanceFunction -> "Center"]GeoDistance[Entity["AdministrativeDivision", {"Illinois", "UnitedStates"}], Entity["City", {"Champaign", "Illinois", "UnitedStates"}]]GeoDistance[Entity["AdministrativeDivision", {"Illinois", "UnitedStates"}], Entity["City", {"Champaign", "Illinois", "UnitedStates"}], DistanceFunction -> "SignedBoundary"]UnitSystem (1)
结果的默认单位根据 $UnitSystem 的值决定:
$UnitSystemGeoDistance[Entity["City", {"NewYork", "NewYork", "UnitedStates"}], Entity["City", {"London", "GreaterLondon", "UnitedKingdom"}]]GeoDistance[Entity["City", {"NewYork", "NewYork", "UnitedStates"}], Entity["City", {"London", "GreaterLondon", "UnitedKingdom"}], UnitSystem -> "Metric"]应用 (2)
USstateCapitals = EntityClass["AdministrativeDivision", "AllUSStatesPlusDC"]["CapitalCity"]dists = GeoDistance[Here, USstateCapitals]MinMax[dists]Mean[dists]Histogram[dists, 20, PlotRange -> All]绘制一个墨卡托地图,其中包括从你所在位置到美国各州首府城市的所有测地线:
GeoGraphics[GeoPath[{Here, #}]& /@ USstateCapitals, GeoProjection -> "Mercator"]nauticMile[lat_] := GeoDistance[{lat - 1 / 120, 0}, {lat + 1 / 120, 0}]Plot[nauticMile[lat], {lat, 0, 90}, TargetUnits -> "Meters"]标准 "NauticalMiles" 单位近似于纬度 45 度处的数值:
UnitConvert["NauticalMiles", "Meters"]UnitConvert[nauticMile[45], "Meters"]属性和关系 (10)
GeoDistance 是对称函数:
p = GeoPosition[{30, 40}];
q = GeoPosition[{-40, 120}];GeoDistance[p, q]GeoDistance[q, p]GeoDistance 是 GeoDestination 的部分反函数:
GeoDestination[GeoPosition[{30, 40}], {10 ^ 6, 135}]GeoDistance[GeoPosition[{30, 40}], %, UnitSystem -> "Metric"]对于类点地点 GeoDistance 返回由 GeoDisplacement 返回的部分结果:
p = Entity["City", {"Oslo", "Oslo", "Norway"}];
q = Entity["City", {"BuenosAires", "BuenosAires", "Argentina"}];GeoDistance[p, q, UnitSystem -> "SIBase"]GeoDisplacement[p, q]GeoDistance[{10, 0}, {10, 1}]GeoDistance[{80, 0}, {80, 1}]GeoDistance[{10, 0}, {11, 0}]GeoDistance[{80, 0}, {81, 0}]α = 1;Plot[QuantityMagnitude@GeoDistance[{lat - α / 2, 0}, {lat + α / 2, 0}], {lat, -90 + α / 2, 90 - α / 2}]计算有 GeoDistanceList 的点的列表中连续对之间的距离:
points = {{-20, 10}, {40, 20}, {-23, 45}, {82, -132}};GeoDistanceList[points]//Normal同样的结果可以通过 Partition 和 GeoDistance 获得,但这是一个较低效率的方式:
GeoDistance@@@Partition[points, 2, 1]GeoDistance@@@Partition[points, 2, 1, 1]GeoDistance 计算点间的距离:
points = {{-20, 10}, {40, 20}, {-23, 45}, {82, -132}};GeoDistance[points]GeoLength 计算地理路径的长度:
GeoLength[GeoPath[points]]points = First@GeoDestination[{70, 0}, {1000000, Range[0, 360, 30]}]GeoDistance@@@Partition[points, 2, 1]Differences[%]points = First@GeoDestination[{70, 0}, {Range[0, 1000000, 100000], 90}]GeoDistance@@@Partition[points, 2, 1]距离列表也可以通过 GeoDistanceList 获得:
% == GeoDistanceList[points]p = GeoPosition[{35.1, 75.7}];
q = GeoPosition[{60.4, 130.9}];GeoDistance[p, q]GeoDistance[GeoAntipode[p], GeoAntipode[q]]可能存在的问题 (2)
默认延伸地理实体间的距离是根据边界计算的,因此相邻实体间的距离会是零:
GeoDistance[Entity["Country", "Mexico"], Entity["Country", "UnitedStates"]]GeoDistance[Entity["Country", "UnitedStates"], Entity["Country", "Canada"]]GeoDistance[{Entity["Country", "Mexico"], Entity["Country", "UnitedStates"], Entity["Country", "Canada"]}]两个在时间上并不共存的历史实体的 GeoDistance 返回未进行计算的结果:
GeoDistance[Entity["HistoricalCountry", "RomanRepublic"], Entity["HistoricalCountry", "Prussia"]]相关链接
文本
Wolfram Research (2008),GeoDistance,Wolfram 语言函数,https://reference.wolfram.com/language/ref/GeoDistance.html (更新于 2024 年).
CMS
Wolfram 语言. 2008. "GeoDistance." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/GeoDistance.html.
APA
Wolfram 语言. (2008). GeoDistance. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/GeoDistance.html 年
BibTeX
@misc{reference.wolfram_2026_geodistance, author="Wolfram Research", title="{GeoDistance}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/GeoDistance.html}", note=[Accessed: 02-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_geodistance, organization={Wolfram Research}, title={GeoDistance}, year={2024}, url={https://reference.wolfram.com/language/ref/GeoDistance.html}, note=[Accessed: 02-September-2026]}