Skip to main content
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.

Best answer by virtualcitymatt

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

View original
Did this help you find an answer to your question?

13 replies

virtualcitymatt
Celebrity
Forum|alt.badge.img+36

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.

 


virtualcitymatt
Celebrity
Forum|alt.badge.img+36
raymond_wilson wrote:

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.

 


virtualcitymatt
Celebrity
Forum|alt.badge.img+36
raymond_wilson wrote:

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.


virtualcitymatt
Celebrity
Forum|alt.badge.img+36
virtualcitymatt wrote:

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).


virtualcitymatt wrote:

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.


virtualcitymatt wrote:

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.


virtualcitymatt
Celebrity
Forum|alt.badge.img+36
virtualcitymatt wrote:

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.


virtualcitymatt wrote:

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.


virtualcitymatt wrote:

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! :)


virtualcitymatt
Celebrity
Forum|alt.badge.img+36
virtualcitymatt wrote:

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?


virtualcitymatt wrote:

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 :)


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings