geodesicUtils

AMD: require(["geoscene/geometry/support/geodesicUtils"], (geodesicUtils) => { /* code goes here */ });
ESM: import * as geodesicUtils from "@geoscene/core/geometry/support/geodesicUtils";
类: geoscene/geometry/support/geodesicUtils
起始版本:GeoScene Maps SDK for JavaScript 4.12

此类对地球和 70 多个非地球旋转椭球体执行测地线计算。方法包括测地线长度、面积、点距和点对点计算。

方法概述

名称 返回值类值 描述 对象
Number[]

通过测地线计算一个或多个面的面积。

更多详情
geodesicUtils
Polyline|Polygon

计算并返回增密的线或面。

更多详情
geodesicUtils
GeodesicDistanceResult

通过测地线计算两个已知位置之间的方向和距离。

更多详情
geodesicUtils
Number[]

通过测地线计算一个或多个几何的面周长或折线长度。

更多详情
geodesicUtils
Point

在距已知位置的定义距离和方向上,通过测地线计算位置。

更多详情
geodesicUtils

方法详细说明

geodesicAreas(polygons, unit){Number[]}static

通过测地线计算一个或多个面的面积。

参数
polygons Polygon[]

要计算其面积的多边形。

unit String
optional
默认值:"square-meters"

输出面积单位。

可能的值"square-millimeters"|"square-centimeters"|"square-decimeters"|"square-meters"|"square-kilometers"|"square-inches"|"square-feet"|"square-yards"|"square-miles"|"square-us-feet"|"acres"|"ares"|"hectares"

返回
类型 描述
Number[] 与源多边形对应的面积数组。
示例
// Display the area of the Bermuda Triangle.
const MIAMI    = { lat: 25.775278, lon: -80.208889 };  // Florida
const HAMILTON = { lat: 32.293, lon: -64.782 };        // Bermuda
const SANJUAN  = { lat: 18.406389, lon:  -66.063889 }; // Puerto Rico
const polygon = new Polygon({
  rings: [[
    [MIAMI.lon, MIAMI.lat],
    [HAMILTON.lon, HAMILTON.lat],
    [SANJUAN.lon, SANJUAN.lat],
    [MIAMI.lon, MIAMI.lat]
  ]]
});
const areas = geodesicUtils.geodesicAreas([polygon], "square-kilometers");
const area = Math.round(areas[0]);
console.log("Area: ", area, " km²"); // Area: 1150498 km²
geodesicDensify(geometry, maxSegmentLength){Polyline|Polygon}static

计算并返回增密的线或面。

参数
geometry Polyline|Polygon

输入折线或面。

maxSegmentLength Number

折点之间的最大长度 (以米为单位)。

返回
类型 描述
Polyline | Polygon 增密的折线或面。
示例
// Densify the polygon representing Bermuda Triangle with maximum segment size of 100km.
const MIAMI    = { lat: 25.775278, lon: -80.208889 };  // Florida
const HAMILTON = { lat: 32.293, lon: -64.782 };        // Bermuda
const SANJUAN  = { lat: 18.406389, lon:  -66.063889 }; // Puerto Rico
const polygon = new Polygon({
  rings: [[
    [MIAMI.lon, MIAMI.lat],
    [HAMILTON.lon, HAMILTON.lat],
    [SANJUAN.lon, SANJUAN.lat],
    [MIAMI.lon, MIAMI.lat]
  ]]
});
const densifiedPolygon = geodesicUtils.geodesicDensify(polygon, 100000);
const vertexCountBefore = polygon.rings[0].length;
const vertexCountAfter = densifiedPolygon.rings[0].length;
console.log("Before: ", vertexCountBefore, ", After: ", vertexCountAfter); // Before: 4, After: 51
geodesicDistance(from, to, unit){GeodesicDistanceResult}static

通过测地线计算两个已知位置之间的方向和距离。两个输入点必须具有相同的地理坐标系。

参数
from Point

起始位置。

目标位置。

unit String
optional
默认值:"meters"

输出线性单位。

可能的值"millimeters"|"centimeters"|"decimeters"|"meters"|"kilometers"|"inches"|"feet"|"yards"|"miles"|"nautical-miles"|"us-feet"

返回
类型 描述
GeodesicDistanceResult 计算两个已知位置之间的距离和方向。
名称 类型 描述
distance number 两个位置之间的距离。
azimuth number 方位角 (或“方向角”) 以度为单位。值范围从 0° 到 360°。
reverseAzimuth number 以度为单位的反方位角。值范围从 0° 到 360°。
示例
// Display the distance and direction between Los Angeles and New York City.
const LA = {
  latitude: 34.05,
  longitude: -118.25
};
const NY = {
  latitude: 40.7127,
  longitude: -74.0059
};
const join = geodesicUtils.geodesicDistance(
  new Point({ x: LA.longitude, y: LA.latitude }),
  new Point({ x: NY.longitude, y: NY.latitude }),
  "kilometers"
);
const { distance, azimuth } = join;
console.log("Distance: ", distance, ", Direction: ", azimuth);
geodesicLengths(geometries, unit){Number[]}static

通过测地线计算一个或多个几何的面周长或折线长度。

参数

输入折线或面。

unit String
optional
默认值:"meters"

输出线性单位。

可能的值"millimeters"|"centimeters"|"decimeters"|"meters"|"kilometers"|"inches"|"feet"|"yards"|"miles"|"nautical-miles"|"us-feet"

返回
类型 描述
Number[] 与输入几何对应的长度/周长数组。
示例
// Display the perimeter of the Bermuda Triangle.
const MIAMI    = { lat: 25.775278, lon: -80.208889 };  // Florida
const HAMILTON = { lat: 32.293, lon: -64.782 };        // Bermuda
const SANJUAN  = { lat: 18.406389, lon:  -66.063889 }; // Puerto Rico
const polygon = new Polygon({
  rings: [[
    [MIAMI.lon, MIAMI.lat],
    [HAMILTON.lon, HAMILTON.lat],
    [SANJUAN.lon, SANJUAN.lat],
    [MIAMI.lon, MIAMI.lat]
  ]]
});
const perimeters = geodesicUtils.geodesicLengths([polygon], "kilometers");
const perimeter = Math.round(perimeters[0]);
console.log("Perimeter: ", perimeter, " km"); // Perimeter: 4879 km
pointFromDistance(point, distance, azimuth){Point}static

在距已知位置的定义距离和方向上,通过测地线计算位置。

参数
point Point

源位置。

distance Number

与原点的距离,以米为单位。

azimuth Number

从原点开始的方向,以度为单位。

返回
类型 描述
Point 计算点。
示例
// Display the location of a point 10km East of Los Angeles.
const LA = {
  latitude: 34.05,
  longitude: -118.25
};
const destination = geodesicUtils.pointFromDistance(
  new Point({ x: LA.longitude, y: LA.latitude }),
  10000,
  90
);
const { latitude, longitude } = destination;
console.log("Latitude: ", latitude, ", Longitude: ", longitude);

类型定义

GeodesicDistanceResult

计算两个已知位置之间的距离和方向。

属性
distance Number
optional

两个位置之间的距离。

azimuth Number
optional

方位角 (或“方向角”) 以度为单位。值将在 0-360° 的范围内。

reverseAzimuth Number
optional

反方向的方位角,以度为单位。值将在 0-360° 的范围内。

您的浏览器不再受支持。请升级您的浏览器以获得最佳体验。请参阅浏览器弃用帖子以获取更多信息