Please look at following query (run on Oracle 19c):
SELECT SDO_LRS.CONCATENATE_GEOM_SEGMENTS_3D ( MDSYS.SDO_GEOMETRY( 4402, 4327, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(-87.5581857869439, 41.6569754435628, 589.31538218591, 507.27401, -87.5582131677029, 41.6570011677706, 589.35568218591, 507.27623) ), MDSYS.SDO_GEOMETRY( 4402, 4327, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(-87.5582131677030, 41.6570011677707, 589.35568218592, 507.27624, -87.5582454317806, 41.6570319021015, 589.40968218591, 507.27886) ), .005 ) from DUAL;
The two input SDO_GEOMETRY's are contiguous, i.e. the last point of the first geometry coincides with the first point of the second geometry...
It returns:
MDSYS.SDO_GEOMETRY(4402, 4327, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(-87.5581857869439, 41.6569754435628, 0, 507.27401, -87.558213167703, 41.6570011677707, 0, 507.27623, -87.5582454317806, 41.6570319021015, 0, 507.27885))
It 0's out the third values, i.e. the Z values...
Why does this do this?
On the other hand if use NULL values for the input geometry SRID's, it does not 0 out the Z values...
SELECT SDO_LRS.CONCATENATE_GEOM_SEGMENTS_3D ( MDSYS.SDO_GEOMETRY( 4402, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(-87.5581857869439, 41.6569754435628, 589.31538218591, 507.27401, -87.5582131677029, 41.6570011677706, 589.35568218591, 507.27623) ), MDSYS.SDO_GEOMETRY( 4402, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(-87.5582131677029, 41.6570011677706, 589.35568218591, 507.27623, -87.5582454317806, 41.6570319021015, 589.40968218591, 507.27886) ), .005 ) from DUAL;
In fact I tried SRID values of 5706, 43229, even 44444 (made up) and they work... but not 4327, 4329, 4979...
Expecting the Z values not to be 0...