Hello, I would expect the Projection Engine to transform Z. It appears not to. I have an input vertical coordinate system with international feet [FOOT .3048] and an output of WGS84 meters [METER 1.0].
Here is some sample code, and the Z is not changed after the transform.
private static int PackGeometry(
int layer_index,
Feature feature,
bool modify,
bool selectable,
bool editable)
{
Geometry geom = feature.GetShape();
if (geom == null) return -1;
// Reserve space for count - backfill with actual count at end.
int num_bytes = 0;
int start_offset = _offset;
_offset += sizeof(int);
// Everything goes to SOCET GXP as WGS84/ellipsoid.
SfaLayer layer = SfaSettings.Layers[layer_index]; // internal class
Geometry projected_geom = null;
if (layer.SpatialRef.HasVcs) {
// input of layer spatial ref is feet, output Util.GeoCS is WGS84 meters.
// Z = 5908.123
ProjectionTransformation proj_trans =
ProjectionTransformation.CreateWithVertical(layer.SpatialRef, Util.GeoCS);
projected_geom = GeometryEngine.Instance.ProjectEx(geom, proj_trans);
// Z still = 5908.123
} else {
projected_geom = GeometryEngine.Instance.Project(geom, Util.GeoCS);
}
if (projected_geom == null) return -1;