Tessellation?

Okay, it's time to come clean.  As a technical evangelist, particularly one that focuses on driving platform adoption, I have to be familiar with an ever-increasing array of technologies.  Compound that with the aging process, vast quantities of fried brain cells from my misspent youth and various and sundry character flaws (such as the over use of superlatives), and the result is that I don't always have a complete understanding of everything of which I speak.  Shocking, I know...

Usually I do a pretty good job of motoring past these soft spots and steering the conversation into more familiar territory before whomever I'm talking with flips my bozo bit.  But sometimes there's just no way out and I get caught.  I had just such an experience last week, and in the interest of full disclosure (and laughs) I thought I'd come clean.

So I'm doing this podcast for Greg Low of Solid Quality Mentors in Australia on SQL Server 2008 developer enhancements.  Now Greg's a pretty sharp guy, and I know going in that he's not going to learn much from me, but what the heck its a great chance to reach out to the developer community and get people excited about SQL Server 2008.  The interview is going pretty well, and Greg's doing a great job of filling in the weak spots, until we reach the end and start talking about spatial support in SQL Server 2008

Then I did it.  I used the word "tessellation".  As soon as the word came out of my mouth I regretted it.  Greg perked up and asked me to define it, at which point I fell on my sword and said I had absolutely no clue. 

DECLARE @rogerBozoBit [bit] = 1;

We both had a chuckle, and he offered to remove it from the podcast.  I told him I thought he should leave it in for laughs, but he removed it after all.  Thanks Greg for protecting my dignity, but I have none.  Besides, I didn't want to loose the opportunity to actually define the word so that other fast talking evangelists won't fall into the same trap.  There's an excellent discussion of the topic in the SQL Server 2008 books online that I will try to summarize here.

Generally speaking, tessellation is a technique used to simplify the manipulation of complex structures by forming the structure out of a bunch of polygons.   In the context of SQL Server 2008 spatial support, tessellation comes into play when you are talking about spatial indexes.  By all accounts we've provided a pretty powerful and flexible indexing capability for spatial data that decomposes an indexed space into a grid hierarchy.  When searching for a match, SQL Server uses tessellation to fit an instance of spatial data into this grid hierarchy.  In this case, where a shape is being compared to a grid hierarchy, SQL Server uses various tessellation rules to see how many cells in the the grid hierarchy are touched by the current shape being compared to the index, and how deep down the grid hierarchy the search needs to go.  SQL Server provides a couple of different tessellation options when creating a spatial index which map directly to usage of the geometry vs. the geography type.

So there, I've grossly oversimplified tessellation so the term can be butchered by evangelists worldwide.