Today I want to shine a little light on Geo-Coding levels. Checking out the master data location in SAP TM, one will notice the enhanced section for coordinates. And one could really wonder why a location having a specific adress might need multiple coordinates.
First of all: Geo-Coding levels are completely optional when running SAP TM. The only usages currently are setting an external GIS for Geo-Coding (not using the IGS infrastructure) and to boost performance in GIS based distance determination for large scale scenarios. And here is the story behind: A few years back distance determination was based on location – location pairs, which ended up in huge external calls to a connected GIS including a large volume buffer table. To fix this, we started internal and external discussions with experts in that area and decided to switch from location – location pairs to coordinates – coordinates pairs. As quite a few TM customers are not working with street / house number coordinates for their locations, this already enables to merge multiple locations into a single distance determination. For example having location geo-coded on postal code level, just a single distance determination would be required to connect locations of two different postal codes even if there are hundreds of locations involved.
Evaluating this change, we saw that this was going into the right direction regarding performance and scalability. But we still failed to combine scenarios with a need for high accuracy, and scenarios where an aggregation would be okay. Lets give an example: Customer is based in New York. When delivering goods within the New York area, he requires distances on house number level to plan tours. When delivering to Baltimore, the planning accuracy is sufficient on postal code coordinates. When delivering to the west coast, 3-digit ZIP codes work fine. When delivering to China, region should work fine for the overview.
There are two challenges:
1. Define the right aggregation levels fitting for a scenario: Well, the external experts told us reference coordinates really boost performance, but how to find them they could not help. So we introduced Geo-Coding levels. With this function it is possible to explicitly define for each location (adress) all relevant aggregation coordinates by selecting a process controller strategy for Geo-Coding. We also delivered example implementations to use postal code and region aggregation. The pure existence of these implementations does NOT mean they are mandatory.
2. Decide when to use which location coordinates: Well, there are many options to approach this. We went for straight line distance: Within the distance determination customizing, you can define based on the straight line distance between the involved locations which coordinates should be used for the GIS distance. (Note that the distance determination customizing really allows a lot of settings – check the documentation!)
So here is a list of hints, Dos and Don’ts:
1. Use a single Geo-Coding level if you want to use an external GIS for Geo-Coding and don’t want to use the IGS infrastructure. Define a custom GC strategy in the process controller framework and set it for this GC level. The location will then get its coordinates from this strategy.
2. Do not use multiple Geo-Coding levels if you don’t need them! Do not setup 3 GC levels just because there are 3 default implemenations by SAP. Of course it should not hurt too much, but from a data consistency and efficiency point of view it makes no sense. Even if you want to use the above mentioned distance determination boost later, you can add the levels then and re-geocode.
3. Usually GC levels should be setup in a way that the lowest GC level holds the most accurate coordinates. Technically it works fine in any way, but it certainly is easier to understand checking a scenario.
4. Good way to start: Do not use any additional GC levels and evaluate the performance. In case its not fast enough, carefully check where it would be okay to balance between performance and accuracy.
I am aware that this is at first sight a complicated topic and not in all setting it is completely clear that is only required for large scale scenarios. Nevertheless, from my point of view without it these scenarios would not be possible.
Again, details are available in the GIS Integration Whitepaper (note 1685381).