1、导入依赖
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
onMounted(() => {
projectionLoad()
})
3、计算椭球面积、平面面积
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)
}