geodesicUtils

AMD: require(["geoscene/geometry/support/geodesicUtils"], (geodesicUtils) => { /* 代码 */ });
ESM: import * as geodesicUtils from "@geoscene/core/geometry/support/geodesicUtils";
对象: geoscene/geometry/support/geodesicUtils
起始版本: GeoScene API for JavaScript 4.22

此类对地球和 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[] 与源多边形对应的区域数组。
示例代码:
// 显示百慕大三角的面积。
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²"); // 面积: 1150498 km²
geodesicDensify(geometry, maxSegmentLength){Polyline|Polygon}static

计算并返回致密化的线或面。

参数:
geometry Polyline|Polygon

输入线或面。

maxSegmentLength Number

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

返回值:
类型 描述
Polyline | Polygon 致密化的线或面。
示例代码:
// 将表示百慕大三角的面致密化,最大分段大小为 100 公里。
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); // 之前: 4,之后: 51
geodesicDistance(from, to, unit){GeodesicDistanceResult}static

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

参数:
from Point

起始位置。

to 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°。
示例代码:
// 显示洛杉矶和纽约市之间的距离和方向。
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

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

参数:
geometries Polyline[]|Polygon[]

输入线或面。

unit String
optional
默认值: "meters"

输出线性单位。

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

返回值:
类型 描述
Number[] 与输入几何对应的长度/周长数组。
示例代码:
// 显示百慕大三角的周长。
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"); // 周长: 4879 km
pointFromDistance(point, distance, azimuth){Point}static

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

参数:
point Point

源位置。

distance Number

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

azimuth Number

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

返回值:
类型 描述
Point 计算点。
示例代码:
// 显示洛杉矶以东 10 公里的点的位置。
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° 的范围内。

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.