areaArray = {
console.time("memory allocation");
const coordBuffer = geoarrow.CoordBuffer.from_interleaved_coords(
new geoarrow.InterleavedCoordBuffer(flatCoordinateArray)
);
console.timeEnd("memory allocation");
const polygonArray = new geoarrow.PolygonArray(
coordBuffer,
geomOffsets,
polygonOffsets
);
console.time("reproject");
const utmPolygonArray = polygonArray.reproject_rs(
"utm zone=12",
geoarrow.ReprojectDirection.Fwd
);
console.timeEnd("reproject");
console.time("area");
const areaWasmArray = utmPolygonArray.area();
console.timeEnd("area");
const areaFFIArray = areaWasmArray.to_ffi();
const areaField = arrowJsFFI.parseField(
geoarrowMemory.buffer,
areaFFIArray.field_addr()
);
console.time("parse vector");
const areaArray = arrowJsFFI.parseVector(
geoarrowMemory.buffer,
areaFFIArray.array_addr(),
areaField.type,
true
);
console.timeEnd("parse vector");
console.time("memory freeing");
polygonArray.free();
utmPolygonArray.free();
areaWasmArray.free();
areaFFIArray.free();
console.timeEnd("memory freeing");
return areaArray;
}