arcgis js统计FeatureLayer的椭球面积、平面面积

1、导入依赖

sql 复制代码
import FeatureLayer from '@arcgis/core/layers/FeatureLayer'
import { geodesicArea, planarArea, simplify } from '@arcgis/core/geometry/geometryEngine';
import { project, load as projectionLoad } from '@arcgis/core/geometry/projection'

2、初始化project

sql 复制代码
onMounted(() => {
  // 第一步:加载投影引擎
  projectionLoad()
})

3、计算椭球面积、平面面积

sql 复制代码
const calculateFeatureLayer = async (featureLayer: FeatureLayer) => {

  const query = featureLayer.createQuery()
  query.where = '1 = 1'
  const result = await featureLayer.queryFeatures(query)

  // 总面积统计
  let totalGeoArea = 0;
  let totalPlanarArea = 0;

  for (const feature of result.features) {
    if (feature.geometry.type === 'polygon') {
      let geometry = feature.geometry

      // 坐标系转换
      if (geometry.spatialReference.wkid !== 4326) {
        geometry = await project(geometry, { wkid: 4326 }) as any
      }

      // 简化多边形
      const simplifiedPolygon = simplify(geometry)

      // 椭球面积
      const geoArea = geodesicArea(simplifiedPolygon, "square-kilometers")
      totalGeoArea += geoArea

      // 平面面积
      const projectedGeometry = await project(simplifiedPolygon, { wkid: 3857 }) as any
      const planarAreaResult = planarArea(projectedGeometry, "square-kilometers")
      totalPlanarArea += planarAreaResult
    }
  }

  console.log("椭球面积(平方千米):", totalGeoArea)
  console.log("毛面积(平方千米):", totalPlanarArea)

}
相关推荐
暗不需求10 小时前
从路虎汽车小程序看微信小程序开发的最佳实践
前端·javascript·微信小程序
东风破_10 小时前
用原型实现一个队列:JS 面向对象的"不走寻常路"
javascript
向日的葵00610 小时前
vue路由(二)
前端·javascript·vue.js·vue
ejinxian10 小时前
Angular v22 正式发布:Signal Forms、Angular Aria 和 AI 开发工具全面生产化
前端·javascript·angular.js
sugar__salt11 小时前
基于Prompt的NLP项目实战:ES6模块化落地开发指南
javascript·自然语言处理·prompt·es6
小雨下雨的雨11 小时前
通过鸿蒙PC Electron框架技术完成-井字棋游戏 - 实现详解
前端·javascript·游戏·华为·electron·鸿蒙
冰暮流星11 小时前
javascript建立对象之构造函数
开发语言·javascript·ecmascript
雪的季节11 小时前
ARGIS制图效果展示
arcgis
小雨下雨的雨11 小时前
基于鸿蒙PC Electron框架技术完成的五子棋游戏 - 技术实现详解
前端·javascript·游戏·华为·electron·鸿蒙
老毛肚11 小时前
jeecgboot vue API 拆分02
前端·javascript·vue.js