Question

Moving Geomedia Text Features from one Oracle table to another

  • 23 August 2016
  • 5 replies
  • 1 view

Badge

I'm doing a basic transfer of Geomedia Text Features from one table to another. In the past I've always done this by exposing the oracle_element{} attribute and exploding the list. This is always worked fine but I'm running into problems with certain features that don't contain the oracle_element{} attribute. An example of what I'm talking about:

create table source (id int, geometry mdsys.sdo_geometry);
create table destination (id int, geometry mdsys.sdo_geometry);


insert into mdsys.user_sdo_geom_metadata
values(
    'SOURCE',
    'GEOMETRY',
    mdsys.sdo_dim_array(
        mdsys.sdo_dim_element('X', 610000, 660000, 0.0005),
        mdsys.sdo_dim_element('Y', 5500000, 5550000, 0.0005)
    ),
    82232
);


insert into mdsys.user_sdo_geom_metadata
values(
    'DESTINATION',
    'GEOMETRY',
    mdsys.sdo_dim_array(
        mdsys.sdo_dim_element('X', 610000, 660000, 0.0005),
        mdsys.sdo_dim_element('Y', 5500000, 5550000, 0.0005)
    ),
    82232
);


-- row that translates correctly, sdo_gtype = 2001
insert into source (id, geometry) values (
    1,
    mdsys.sdo_geometry(
        2001, 
        82232,
        null,
        mdsys.sdo_elem_info_array(1, 0, 6001, 46, 1, 1),
        mdsys.sdo_ordinate_array(57.0947570800781, 0, 0, 1, 0, 155, 1953651835, 1633431910, 1550414702, 1769172577, 828862563, 1546794290, 1717986660, 1717336880, 1953787503, 1551592546, 1717317734, 1550608750, 1634231142, 1952805746, 1916870704, 996958569, 168656253, 1868782715, 1953656684, 991980642, 1684370012, 1546990898, 1701147239, 1650208878, 811955564, 168656187, 1701410396, 1852402551, 1968976996, 1885090147, 1550086753, 1546741347, 1735287148, 858992689, 829646428, 775168048, 544028728, 913532508, 8195360, 637050.695979835, 5536121.47807501)
    )
);


-- row that doesn't translate correctly, sdo_gtype = 2004
insert into source (id, geometry) values (
    2,
    mdsys.sdo_geometry(
        2004, 
        82232,
        null,
        mdsys.sdo_elem_info_array(1, 0, 6001, 8, 1, 1, 10, 0, 6001, 17, 1, 1, 19, 0, 6001, 26, 1, 1, 28, 0, 6001, 35, 1, 1, 37, 0, 6001, 44, 1, 1, 46, 0, 6001, 53, 1, 1, 55, 0, 6001, 62, 1, 1, 64, 0, 6001, 71, 1, 1, 73, 0, 6001, 80, 1, 1, 82, 0, 6001, 89, 1, 1, 91, 0, 6001, 98, 1, 1, 100, 0, 6001, 107, 1, 1, 109, 0, 6001, 116, 1, 1, 118, 0, 6001, 125, 1, 1),
        mdsys.sdo_ordinate_array(45.4333842851572, 0, 0, 1, 134348800, 2, 78, 629302.384858863, 5517176.36121535, 44.6030243280644, 0, 0, 1, 134348800, 2, 79, 629305.258198423, 5517179.23638135, 43.7726643709715, 0, 0, 1, 134348800, 2, 84, 629308.172903168, 5517182.06960496, 42.2454428421706, 0, 0, 1, 134348800, 2, 65, 629313.639663363, 5517187.16905656, 41.4818320777702, 0, 0, 1, 134348800, 2, 83, 629316.423527983, 5517189.66368812, 40.7182213133697, 0, 0, 1, 134348800, 2, 66, 629319.240391641, 5517192.12099722, 39.9546105489693, 0, 0, 1, 134348800, 2, 85, 629322.089754005, 5517194.54054739, 39.3645476855689, 0, 0, 1, 134348800, 2, 73, 629324.313472766, 5517196.38406574, 38.814534337784, 0, 0, 1, 134348800, 2, 76, 629326.403255095, 5517198.08175246, 38.0909730889989, 0, 0, 1, 134348800, 2, 84, 629329.17707837, 5517200.28441903, 36.563751560198, 0, 0, 1, 134348800, 2, 73, 629335.121836545, 5517204.81759935, 35.9736886967976, 0, 0, 1, 134348800, 2, 78, 629337.45070098, 5517206.52636368, 35.2501274480125, 0, 0, 1, 134348800, 2, 70, 629340.330283504, 5517208.58884765, 34.4598170065351, 0, 0, 1, 134348800, 2, 79, 629343.5049919, 5517210.79984779)
    )
);

commit;

Both features are valid Geomedia text features, but only the point has the oracle_element{} attribute. The other has an oracle_unknown_element{} attribute, but it doesn't seem to contain data for all the points in the collection. If I look in the inspector the contents are: 

oracle_unknown_element{0}.interpretation: 6001

oracle_unknown_element{0}.num_ordinates: 7

oracle_unknown_element{0}.ordinate{1}: 0

oracle_unknown_element{0}.ordinate{2}: 0

oracle_unknown_element{0}.ordinate{3}: 1

oracle_unknown_element{0}.ordinate{4}: 134348800

oracle_unknown_element{0}.ordinate{5}: 2

oracle_unknown_element{0}.ordinate{6}: 79

These are the ordinates for only the last point in the geometry object, minus the X and Y coordinates.

Does anyone have any ideas on how I can import these collection features properly?


5 replies

Badge +16

Hi @yola,

The sdo_gtype 2004 is a collection, did you try deaggregating it?

Badge

Hi @yola,

The sdo_gtype 2004 is a collection, did you try deaggregating it?

Yes, if I feed the 2004 features into a Deaggregator the transformer has no output.
Badge +11

Hi @yola,

When you say "In the past I've always done this by exposing the oracle_element{} attribute and exploding the list. This is always worked fine but..." are you suggesting this worked in the past with an older version of FME with this same data?

I've tested with your sample data and it does come out the same in FME 2016 and FME 2015... oracle_unknown_element{}. I would be surprised if we handled this 6001 data type for collections in the past.

We know about this limitation handling collections. Would you be able to contact us at support so we can keep you updated on any updates on this?

Steve.

Badge +11

Also - if you could include how the collection was created in GeoMedia? Was it with a text labeling tool or just using GeoMedia's own text tools?

I have a similar issue. We have a 2014 32bit workbench that uses the 'oracle_element' attribute to get at geomedia created text. All version of FME after this do not 'see' this attribute. Here's a snap from the log file of the same feature in 2014 and 2021 32bit.

|INFORM|Attribute(string)        : `oracle_element{0}.geomedia_justification' has value `9'

|INFORM|Attribute(string: windows-1252)      : `geomedia_justification' has value `9'

 

Does Safe have another method of getting to these attributes? I sure would love to update from 2014. Thanks.

Reply