Solved

How do I provide a custom reprojector implementation to FME?


We have certain coordinate system transfomation requirements for LLH to grid coordinate conversions that are difficult to satisfy using the available reprojectors.

I would like to understand how to build and provide a custom projector to be used in our FME transformation pipelines.

icon

Best answer by virtualcitymatt 9 August 2021, 08:47

View original

13 replies

Userlevel 4
Badge +26

Here's the documentation on adding a custom transformation:

https://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_Coordinate_Systems/CoordSys/coord_sys_custom_transformation.htm

 

You can look at the <FME_Install_Dir>/Reproject/MyCoordSysDefs.fme file as a guide on how to get the syntax correct.

 

Here is another user question who had some related questions.

https://community.safe.com/s/question/0D54Q000080hG7T/help-adding-a-custom-transformation

Hi Matt,

 

Thanks for the pointers for adding additional custom transformations using datum shift grids. They look useful.

 

My question is more oriented towards an implementation of a reprojector itself. For instance, building a reprojector that could replace the ESRI one we currently use to convert LLH to grid coordinates.

 

Raymond.

 

Userlevel 4
Badge +26

Hi Matt,

 

Thanks for the pointers for adding additional custom transformations using datum shift grids. They look useful.

 

My question is more oriented towards an implementation of a reprojector itself. For instance, building a reprojector that could replace the ESRI one we currently use to convert LLH to grid coordinates.

 

Raymond.

 

Hmm, well once you have the custom reprojection defined you can use it inside the CSMapReprojector transformer.

If you don't want to use a built in projection engine then I guess you would probably want to use the PythonCaller, that would probably be the next easiest thing.

If you want to go further or use a different language then take a look at the Software Development Kit, here's an overview on creating a new transformer/plug-in

https://community.safe.com/s/article/developing-a-new-transformer-using-the-fme-plug-in

 

Those pointers look interesting. Some light reading:)

 

Does the CSMapProjector require a WKT or PROJ definition of the CRS, or can I use a custom CRS schema as the argument to it?

 

We would want to use this to support arbitrary coordinate systems that we express to the FME pipeline via a file argument alongside the other files being processed. The core idea is to route the coordinate conversions into our CRS engine rather than the default ones provided with FME.

 

Userlevel 4
Badge +26

Those pointers look interesting. Some light reading:)

 

Does the CSMapProjector require a WKT or PROJ definition of the CRS, or can I use a custom CRS schema as the argument to it?

 

We would want to use this to support arbitrary coordinate systems that we express to the FME pipeline via a file argument alongside the other files being processed. The core idea is to route the coordinate conversions into our CRS engine rather than the default ones provided with FME.

 

Right, well I think the CSMapRepojector uses the default FME reprojection engine (the CS-Map library - https://vimeo.com/106232945). There are a list of different reprojection transformers in here that FME has: https://community.safe.com/s/article/using-coordinate-systems-within-fme

 

To me it sounds like you want to develop a plug-in, one that doesn't use either ESRI or CS-MAP.

Userlevel 4
Badge +26

Hmm, well once you have the custom reprojection defined you can use it inside the CSMapReprojector transformer.

If you don't want to use a built in projection engine then I guess you would probably want to use the PythonCaller, that would probably be the next easiest thing.

If you want to go further or use a different language then take a look at the Software Development Kit, here's an overview on creating a new transformer/plug-in

https://community.safe.com/s/article/developing-a-new-transformer-using-the-fme-plug-in

 

Then again, if you just want to define a new transformation (to be used by CSMAP/FME for a given reprojection) then you can look at the link I shared above about how to define a new transformation. The new transformation can be used inside of the CSMapReprojector (selected from a drop down, or passed as an attribute).

Hmm, well once you have the custom reprojection defined you can use it inside the CSMapReprojector transformer.

If you don't want to use a built in projection engine then I guess you would probably want to use the PythonCaller, that would probably be the next easiest thing.

If you want to go further or use a different language then take a look at the Software Development Kit, here's an overview on creating a new transformer/plug-in

https://community.safe.com/s/article/developing-a-new-transformer-using-the-fme-plug-in

 

Thanks. The core issue here is that the core FME coordinate system support does not easily cover certain aspects we use in geodetic coordinate systems in our use cases, so I think we need to reroute the conversions into our underlying library.

Right, well I think the CSMapRepojector uses the default FME reprojection engine (the CS-Map library - https://vimeo.com/106232945). There are a list of different reprojection transformers in here that FME has: https://community.safe.com/s/article/using-coordinate-systems-within-fme

 

To me it sounds like you want to develop a plug-in, one that doesn't use either ESRI or CS-MAP.

Yes, it sounds like a plug in is required.

Userlevel 4
Badge +26

Hmm, well once you have the custom reprojection defined you can use it inside the CSMapReprojector transformer.

If you don't want to use a built in projection engine then I guess you would probably want to use the PythonCaller, that would probably be the next easiest thing.

If you want to go further or use a different language then take a look at the Software Development Kit, here's an overview on creating a new transformer/plug-in

https://community.safe.com/s/article/developing-a-new-transformer-using-the-fme-plug-in

 

Wow, ok crazy. Cool, good luck with the project. Sounds really interesting. If you want to develop a new transformer you can try and contact your sales rep at Safe Software. you might be able to get a free developer license to work with.

Hmm, well once you have the custom reprojection defined you can use it inside the CSMapReprojector transformer.

If you don't want to use a built in projection engine then I guess you would probably want to use the PythonCaller, that would probably be the next easiest thing.

If you want to go further or use a different language then take a look at the Software Development Kit, here's an overview on creating a new transformer/plug-in

https://community.safe.com/s/article/developing-a-new-transformer-using-the-fme-plug-in

 

Thanks.

I'm currently having an issue with missing files in the SDK install (fmeplugincapabilities.h and ipipe.h)have opened a ticket for visibility.

Hmm, well once you have the custom reprojection defined you can use it inside the CSMapReprojector transformer.

If you don't want to use a built in projection engine then I guess you would probably want to use the PythonCaller, that would probably be the next easiest thing.

If you want to go further or use a different language then take a look at the Software Development Kit, here's an overview on creating a new transformer/plug-in

https://community.safe.com/s/article/developing-a-new-transformer-using-the-fme-plug-in

 

Just FYI, I have a C++ reprojector plugin implementation working in a FME desktop installation - works really well! :)

Userlevel 4
Badge +26

Hmm, well once you have the custom reprojection defined you can use it inside the CSMapReprojector transformer.

If you don't want to use a built in projection engine then I guess you would probably want to use the PythonCaller, that would probably be the next easiest thing.

If you want to go further or use a different language then take a look at the Software Development Kit, here's an overview on creating a new transformer/plug-in

https://community.safe.com/s/article/developing-a-new-transformer-using-the-fme-plug-in

 

Oh awesome work. Great that it worked out. Did you get support from Safe on this? or were you able to figure it out on your own?

Hmm, well once you have the custom reprojection defined you can use it inside the CSMapReprojector transformer.

If you don't want to use a built in projection engine then I guess you would probably want to use the PythonCaller, that would probably be the next easiest thing.

If you want to go further or use a different language then take a look at the Software Development Kit, here's an overview on creating a new transformer/plug-in

https://community.safe.com/s/article/developing-a-new-transformer-using-the-fme-plug-in

 

I had some help from support on the missing files. Once I reverted to an older version I was able to work through it :)

Reply