Solved

How to change the name of feature class in file geodatabase converted from mdf file by using a transformer from workspace.

  • 23 April 2017
  • 9 replies
  • 29 views

Badge

Hi All,

I develop a workspace to transfer the mdf to gdb but the feature class in file geodatabase have the same name of the feature in mdf.

For example I have mdf “B” containing five feature class when I transform them into file gdb as you can see below

Is there any way to change the name of feature class from “dbo_COMMUNITIES_point” to “communities” by adding a transformer to my workspace?

Best Regards,

Rawan

icon

Best answer by takashi 7 May 2017, 09:40

View original

9 replies

Userlevel 2
Badge +17

Hi @rawansaleh, I guess that you have a dynamic writer feature type, in which the destination feature class name is set to "fme_feature_type" and the Schema Definition Name is set to default (i.e. same as the feature class name).

If my guessing was correct, firstly create appropriate destination feature class name as a new feature attribute. For example, if your desired destination feature class names are the lowercase source table names excluding the schema prefix:

  1. AttributeCopier: Copy the value of "fme_feature_type" (source feature type name) to a new attribute called e.g. "_feature_class".
  2. StringCaseChanger: Make the value of "_feature_class" to lowercase.
  3. SubstringExtractor (or StringReplacer etc.): Remove the unnecessary prefix from the value of "_feature_class".

Then, in the GDB writer feature type properties, set the "_feature_class" to the destination feature class name and set "fme_feature_type" to the Schema Definition Name explicitly. In addition, if you want to prevent adding geometry type suffix ("_point" and "_polygon") to the destination feature class names, try setting "First Feature Defines Geometry Type" to the Geometry.

Badge +16

Hi @rawansaleh, I guess that you have a dynamic writer feature type, in which the destination feature class name is set to "fme_feature_type" and the Schema Definition Name is set to default (i.e. same as the feature class name).

If my guessing was correct, firstly create appropriate destination feature class name as a new feature attribute. For example, if your desired destination feature class names are the lowercase source table names excluding the schema prefix:

  1. AttributeCopier: Copy the value of "fme_feature_type" (source feature type name) to a new attribute called e.g. "_feature_class".
  2. StringCaseChanger: Make the value of "_feature_class" to lowercase.
  3. SubstringExtractor (or StringReplacer etc.): Remove the unnecessary prefix from the value of "_feature_class".

Then, in the GDB writer feature type properties, set the "_feature_class" to the destination feature class name and set "fme_feature_type" to the Schema Definition Name explicitly. In addition, if you want to prevent adding geometry type suffix ("_point" and "_polygon") to the destination feature class names, try setting "First Feature Defines Geometry Type" to the Geometry.

Excellent solution, I wonder if it's possible setting the feature class name directly from within the writer feature type, using the text editor.

 

 

Userlevel 2
Badge +17

Hi @rawansaleh, I guess that you have a dynamic writer feature type, in which the destination feature class name is set to "fme_feature_type" and the Schema Definition Name is set to default (i.e. same as the feature class name).

If my guessing was correct, firstly create appropriate destination feature class name as a new feature attribute. For example, if your desired destination feature class names are the lowercase source table names excluding the schema prefix:

  1. AttributeCopier: Copy the value of "fme_feature_type" (source feature type name) to a new attribute called e.g. "_feature_class".
  2. StringCaseChanger: Make the value of "_feature_class" to lowercase.
  3. SubstringExtractor (or StringReplacer etc.): Remove the unnecessary prefix from the value of "_feature_class".

Then, in the GDB writer feature type properties, set the "_feature_class" to the destination feature class name and set "fme_feature_type" to the Schema Definition Name explicitly. In addition, if you want to prevent adding geometry type suffix ("_point" and "_polygon") to the destination feature class names, try setting "First Feature Defines Geometry Type" to the Geometry.

0684Q00000ArKphQAF.png

Yes, I think you can enter a string expression to the destination feature class name field directly using the Text Editor instead of the transformers, if the destination feature class name should be lowercase source feature type name excluding database schema prefix. e.g.

 

@LowerCase(@ReplaceRegEx(@Value(fme_feature_type),^.+\.,""))
Badge

Dear Takashi

Thanks for your answer, actually I tried to enhance my workbench toget what I need but I’m fail to do so, I’m new in fme and I couldn’t know howto build the work space to get my request.

I attached the work bench if you have a time to look on it, andupdate me what is the mistake that I do in it

sql-filegdb.fmw

Best Regards,

Rawan

Userlevel 2
Badge +17

The procedure I suggested in the previous post can be implemented as below.

And, in this case, you don't need to define any user attribute in the writer feature type. Remove all attribute definitions from the User Attributes tab.

Hope this helps.

Badge

Dear Takashi

Thanks a lot, it’s working fine with me.

I would like to ask about another thing if you have any idea about it.

I tried to transform the feature class from sql data base to gdb, what I need is to automatic transformation for all the feature class in the sql data base to file gdb.

Epically when I add a new feature to sql I need it to be selected automatically without any manual input from user.

Is that possible?

Best,

Rawan

Userlevel 2
Badge +17

Dear Takashi

Thanks a lot, it’s working fine with me.

I would like to ask about another thing if you have any idea about it.

I tried to transform the feature class from sql data base to gdb, what I need is to automatic transformation for all the feature class in the sql data base to file gdb.

Epically when I add a new feature to sql I need it to be selected automatically without any manual input from user.

Is that possible?

Best,

Rawan

I think the MSSQL_SPATIAL reader will read every table from the specified database once you empty (make <not set>) the Feature Types to Read parameter of the reader.

 

Badge

Dear Takashi

Thanks for your answer I tried what you mentioned above but itproduced the following error.

And when I selected all parameter that will produce unnecessarytables while I need only the feature classes.

What do you think?

sql-gdb-02.fmw

Best,

Rawan

Userlevel 2
Badge +17

Dear Takashi

Thanks for your answer I tried what you mentioned above but itproduced the following error.

And when I selected all parameter that will produce unnecessarytables while I need only the feature classes.

What do you think?

sql-gdb-02.fmw

Best,

Rawan

The reader requires to be set one or more tables to Feature Types to Read when being added to the workspace, but you can clear the parameter setting after you added the reader.

 

However, there may not be a generic way to determine if a table is "feature class".

 

Looks like the source dataset is not a native Microsoft SQL Server Spatial database. Perhaps is it an Esri Geodatabase (ArcSDE) dataset that uses a MS SQL Server database as its storage?

 

If so, consider using Esri Geodatabase (ArcSDE Geodb) reader instead of MS SQL Server Spatial reader. # And sorry, I cannot help you since I don't have the ArcSDE environment.

 

 

Reply