New Spatial Features in SQL Server Code-Named “Denali” CTP1


 

We have just released a white paper, New Spatial Features in SQL Server Code-Named “Denali” Community Technology Preview 1, as your definitive guide to the spatial improvements in this release of SQL Server.

Of course, you can’t take advantage of the new spatial features without the new server. You can now download the new server, Microsoft SQL Server code-named ‘Denali’ – Community Technology Preview 1 (CTP1), today.

Also, don’t forget that the serialization format for the spatial types has been updated in Microsoft SQL Server CLR Types Serialization Formats [MS-SSCLRT] for those of you who need to know even more.

Let us know how you like the new spatial features.

Comments (7)

  1. Alastair says:

    Lots of new features to play with! One question re: the new ReorientObject() method of the geography datatype – it claims to fix geography polygons constructed with the "wrong" ring orientation.

    But won't this method break geography instances that were intentionally constructed to be larger than a hemisphere?

  2. Ed Katibah says:

    ReorientObject() will reverse the vertex order of polygon rings.  I would posit that , in most cases, you would not run this method over a column of type geography.  Rather, you would use this method to correct the ring orientation for selected polygons which were constructed with the "wrong" ring orientation.  

    If your geography polygons are "intentionally constructed to be larger than a hemisphere", running ReorientObject() on them will cause them to reverse – they go from "large" polygons to "small" polygons (less than a hemisphere in size).  The new "small" polygons will be a valid polygons, just not the ones you want.

  3. Milan Stojic says:

    You can check EnvelopeAngle() and only call ReorientObject() if EnvelopeAngle() is greater than 90 degrees.

  4. Milan Stojic says:

    You can check EnvelopeAngle() and only call ReorientObject() if EnvelopeAngle() is greater than 90 degrees.

  5. tanoshimi says:

    Milan – Since the suggested use case for ReorientObject() was to "fix" polygons with incorrect ring orientation, I had assumed that it only worked in cases where EnvelopeAngle() was > 90 anyway!

    Now I see that ReorientObject() simply inverts *any* geography polygon. So in other words,

    SELECT @x.ReorientObject()

    gives the same result as:

    DECLARE @g geography = geography::STGeomFromText('FULLGLOBE', 4326);

    SELECT @g.STDifference(@x);

    Is that correct? If so, it would be helpful to note in the documentation 😉

  6. tanoshimi says:

    My last comment should of course have read:

    DECLARE @g geography = geography::STGeomFromText('FULLGLOBE', @x.STSrid);

    SELECT @g.STDifference(@x);

    I shouldn't assume that the full globe has to bow down to the global hegemony of EPSG 4326….

  7. tanoshimi says:

    My last comment should of course have read:

    DECLARE @g geography = geography::STGeomFromText('FULLGLOBE', @x.STSrid);

    SELECT @g.STDifference(@x);

    I shouldn't assume that the full globe has to bow down to the global hegemony of EPSG 4326….