Question

checking linkage with a database and updating a database

  • 23 November 2016
  • 6 replies
  • 1 view

Badge +1

Hi all,

I have a dgn file (let's say old_dgn) which is linked to an oracle database (let's say table_dgn).

Because some centroids are missing, I created a new dgn file (let's say new_dgn) that contains all the existing features of the old file and also the new centroides.

Now I would like to write a workspace that will:

(1) detect the centroids without linkage with the oracle table table_dgn

(2) create the linkage in case some centroids were found in step (1). This means update also the oracle table table_dgn.

The oracle table table_dgn has a column mslink which corresponds to mslink1 of the file new_dgn.

Any suggestions?


6 replies

Badge +16

If the case is as follows: the centroids missing the linkage are the ones created in the workspace the I would continue to use the same workspace to update the mslink oracle table with the newly created linkage values.

Badge +1

If the case is as follows: the centroids missing the linkage are the ones created in the workspace the I would continue to use the same workspace to update the mslink oracle table with the newly created linkage values.

@itay,

 

Yes but that's not my problem.

 

i) The centroids missing the linkage are the one newly created but I don't know how to create the linkage in the workspace.

 

ii) some existing centroids also have no linkage with the database and I want to be able to correct that.

 

Thanks

 

 

Badge +16
@itay,

 

Yes but that's not my problem.

 

i) The centroids missing the linkage are the one newly created but I don't know how to create the linkage in the workspace.

 

ii) some existing centroids also have no linkage with the database and I want to be able to correct that.

 

Thanks

 

 

@arthy sounds more like something you need to correct in the database since creating linkage values via FME that dont exist in the database will be of no use.

 

Badge +1
@arthy sounds more like something you need to correct in the database since creating linkage values via FME that dont exist in the database will be of no use.

 

@itay,

 

I agree with you that the database has to be corrected and I would like to detect all the issues with FME.

 

 

In the attached workspace (test-igds2igds.fmw), the first branch allows me to extract all the elements of interest (let's say A) that are in the dgn file and the second branch extracts the similar elements of the database (let's say B).

 

 

test-igds2igds 

 

What I want now is to perform a test that will give me:

 

(i) all the elements that are in A and not in B (let's say A\\B). Those are the elements for which I should correct the database.

 

(ii) all the elements that are in B and not in A (let's say B\\A). Those are the elements that are for which I should investigate why they are not appearing on the dgn file.

 

 

In my example, the cardinality of A is 242 and the cardinality of B is 207 and the element of comparison between the two dataset is mslink for the oracle database and mslink_2 for the dgn file.

 

 

Many thanks

 

Badge +16

@itay,

 

I agree with you that the database has to be corrected and I would like to detect all the issues with FME.

 

 

In the attached workspace (test-igds2igds.fmw), the first branch allows me to extract all the elements of interest (let's say A) that are in the dgn file and the second branch extracts the similar elements of the database (let's say B).

 

 

test-igds2igds 

 

What I want now is to perform a test that will give me:

 

(i) all the elements that are in A and not in B (let's say A\\B). Those are the elements for which I should correct the database.

 

(ii) all the elements that are in B and not in A (let's say B\\A). Those are the elements that are for which I should investigate why they are not appearing on the dgn file.

 

 

In my example, the cardinality of A is 242 and the cardinality of B is 207 and the element of comparison between the two dataset is mslink for the oracle database and mslink_2 for the dgn file.

 

 

Many thanks

 

Hi @arthy,

 

I would use the FeatureMerger to achieve this since you can merge on the mslink from the db and dgn.

 

Depending on the ports of the FeatureMerger you can get A\\B and B\\A.

 

So if A (dgn) is the requestor then for A\\B use the Not Merged port and for B\\A the unreferenced port.

 

Cheers,

 

Itay

 

 

Badge +1

@itay,

 

 

Thanks again. Using the feature merger, it solves my issue.

Do you know if there is a way to pull out the mslink values of the elements of B\\A (i.e. all the database records without a corresponding centroid in the dgn)?

 

 

So far, I'm only able to count those elements (see attached workspace test-igds2igds.fmw) but I would also like to list them in the log file.

Cheers,

Reply