<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Spatial Ed's blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/edkatibah/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/edkatibah/feed.xml</link>
    <description>Information and news on spatial data support in Windows Azure SQL Database, SQL Server and environs...</description>
    <lastBuildDate>Sat, 04 Apr 2015 20:19:36 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Setting Up A Delayed Sending Rule For Email In Microsoft Outlook</title>
      <link>https://docs.microsoft.com/archive/blogs/edkatibah/setting-up-a-delayed-sending-rule-for-email-in-microsoft-outlook</link>
      <pubDate>Mon, 17 Dec 2012 17:45:59 GMT</pubDate>
      <dc:creator><![CDATA[Spatial Ed]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edkatibah/2012/12/17/setting-up-a-delayed-sending-rule-for-email-in-microsoft-outlook/</guid>
      <description><![CDATA[&nbsp;
Author: Ed Katibah, Microsoft SQLCATReviewer: Abdallah Fateen, Microsoft
Introduction
A...]]></description>
      <content:encoded><![CDATA[<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/4113.Outlook2010_bL.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/4113.Outlook2010_5F00_bL.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/4113.Outlook2010_bL.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/4113.Outlook2010_5F00_bL.png" alt="" width="352" /></a></p>
<p>&nbsp;</p>
<p>Author: Ed Katibah, Microsoft SQLCAT<br /><br />Reviewer: Abdallah Fateen, Microsoft</p>
<h2>Introduction</h2>
<p>A few weeks ago, a couple of us were in the hallway discussing email and the topic of recalling sent email came up.&nbsp; After some discussion, a colleague, Chris Kurt suggested another approach &ndash; implementing a delay in outgoing email, a.k.a. a delayed sending rule?&nbsp; That sounded like it could be a great general purpose approach and subsequently became the basis for this blog post since I liked it so much.</p>
<p>As a means of introducing this rule, how many times have you pressed the Send button on an email only to realize in the following moments that you wished to add (or delete) something on the email &ndash; maybe you left somebody off of the To&hellip; line who needed to be on it.&nbsp; Or worse, you had second thoughts about sending the email at all.&nbsp; Wouldn&rsquo;t it be nice if the email were delayed for a few minutes before it was actually sent, allowing you time to be able to modify it (or delete it)?&nbsp; The following tutorial steps you through how to set up such a rule in Microsoft Outlook, in this case Outlook 2010 (Version 14). The post reviewer, Abdallah, reports that the instructions presented in this post work with Outlook 2013, also.</p>
<h2>Quick Start</h2>
<p>If you have done this before and/or want just the basic<br />steps to get started, here is a quick start guide:</p>
<p><strong>A.</strong> In Outlook, select &ldquo;<strong>File</strong>&rdquo;, &ldquo;<strong>Info</strong>&rdquo;</p>
<p><strong>B.</strong> On the &ldquo;Account Information&rdquo; screen, select &ldquo;<strong>Manage Rules and Alerts</strong>&rdquo;</p>
<p><strong>C.</strong> On the &ldquo;Rules and Alerts&rdquo; screen, select &ldquo;<strong>New Rule</strong>&rdquo;</p>
<p><strong>D.</strong> On the "Rules Wizard" screen, go the "<strong>Start from blank rule</strong>" section and select "<strong>Apply rule on messages I send</strong>"</p>
<p><strong>E.</strong> On the next "Rules Wizard" screen, go to "<strong>Step 1: Select condition(s)</strong>" and <strong>check "on this computer only"</strong></p>
<p><strong>F. </strong>On the next "Rules Wizard" screen, go to the "<strong>Step 1: Select actions(s)</strong>"<br />section and...</p>
<ol>
<li>check "<strong>defer delivery by a number of minutes</strong>"</li>
<li>select "<strong>a number of" minutes</strong> hyperlink... under Step 2 on the screen</li>
<li><strong>enter the number of minutes</strong> to delay sending in the popup menu</li>
</ol>
<p><strong>G.</strong> On the next "Rules Wizard" screen, go to the "<strong>Step 1: Select exceptions(s)</strong>" section and...</p>
<ol>
<li>check "<strong>except if the subject contains specific words</strong>"</li>
<li>select the "<strong>specific words" hyperlink in Step 2...</strong>&rdquo;</li>
<li>enter the <strong>specific word(s) string</strong> in the "Search Text" menu</li>
</ol>
<p><strong>H.</strong> Enter the <strong>specific word or phrases string</strong> in the "Search Text" menu on which to apply the delay exception</p>
<p><strong>I.</strong> This step is a <strong>recap</strong> of the last wizard screen, confirming the choices that you just made</p>
<p><strong>J.</strong> On the next "Rules Wizard" screen, you can <strong>name</strong>, <strong>finalize</strong> and <strong>review</strong> the new rule in 3 easy steps&hellip;</p>
<p><strong>K.</strong> Accept the final notification screen and you are done.</p>
<h2>Steps</h2>
<p>Here are steps I employed to set up a rule to delay sending mail by 4 minutes.&nbsp; I also added several key words, which when added (typically appended) to the subject line, instruct Outlook to bypass the delayed mail send rule and send immediately.<br /><br /><strong>Step A</strong>: In Outlook, select &ldquo;<strong>File</strong>&rdquo;, &ldquo;<strong>Info</strong>&rdquo;<br />&nbsp;<br />&nbsp; <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/8875.Image_2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/8875.Image_5F00_2.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/8875.Image_2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/8875.Image_5F00_2.png" alt="" width="198" /></a><br />&nbsp;&nbsp;<br /><strong></strong></p>
<p><strong>Step B:</strong> On the &ldquo;Account Information&rdquo; screen, select &ldquo;<strong>Manage Rules and Alerts</strong>&rdquo;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/7870.Image_3a.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/7870.Image_5F00_3a.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/7870.Image_3a.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/7870.Image_5F00_3a.png" alt="" width="657" /></a></p>
<p><strong></strong></p>
<p><strong>Step C:</strong> On the &ldquo;Rules and Alerts&rdquo; screen, select &ldquo;<strong>New Rule</strong>&rdquo;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/3480.Image_4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/3480.Image_5F00_4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/3480.Image_4.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/3480.Image_5F00_4.png" alt="" border="0" /></a></p>
<p><strong></strong></p>
<p><strong>Step D:</strong> On the "Rules Wizard" screen, go the "<strong>Start from blank rule</strong>" section and select "<strong>Apply rule on messages I send</strong>"</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/3835.Image_6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/3835.Image_5F00_6.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/3835.Image_6.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/3835.Image_5F00_6.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p><strong>Step E:</strong> On the next "Rules Wizard" screen, go to "<strong>Step 1: Select condition(s)</strong>" and <strong>check "on this computer only"</strong></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/8765.Image_7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/8765.Image_5F00_7.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/8765.Image_7.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/8765.Image_5F00_7.png" alt="" border="0" /></a></p>
<p><br />&nbsp;</p>
<p><strong>Step F:</strong> On the next "Rules Wizard" screen, go to the "<strong>Step 1: Select actions(s)</strong>" section and...</p>
<ol>
<li>check "<strong>defer delivery by a number of minutes</strong>"</li>
<li>select "<strong>a number of" minutes</strong> hyperlink... under Step 2 on the screen</li>
<li><strong>enter the number of minutes</strong> to delay sending in the popup menu</li>
</ol>
<p><strong><em>Note</em></strong><em>: 1 minute is the default.&nbsp; I set my delay for 4 minutes as a personal preference.&nbsp; Set your delay to however many minutes you would like.&nbsp;You can always go back and modify the delay (or remove it altogether).</em></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/1641.Image_8-9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/1641.Image_5F00_8_2D00_9.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/1641.Image_8-9.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/1641.Image_5F00_8_2D00_9.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p><strong>Step G:</strong> On the next "Rules Wizard" screen, go to the "<strong>Step 1: Select exceptions(s)</strong>" section and...</p>
<ol>
<li>check "<strong>except if the subject contains specific words</strong>"</li>
<li>select the "<strong>specific words" hyperlink in Step 2...</strong>&rdquo;</li>
<li>enter the <strong>specific word(s) string</strong> in the "Search Text" menu</li>
</ol>
<p><strong><em>Note</em></strong><em>: In this example, I used the keyword "&lt;send&gt;".&nbsp; In the following examples, I added a couple of additional key words, used to bypass the sending delay.</em></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/4786.Image_10-11.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/4786.Image_5F00_10_2D00_11.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/4786.Image_10-11.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/4786.Image_5F00_10_2D00_11.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p><strong>Step H.</strong> Enter the <strong>specific word or phrases string</strong> in the "Search Text" menu on which to apply the delay exception</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/1778.Image_12a.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/1778.Image_5F00_12a.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/1778.Image_12a.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/1778.Image_5F00_12a.png" alt="" width="520" /></a></p>
<p>&nbsp;</p>
<p><strong>Step I:</strong> This step is a <strong>recap</strong> of the last wizard screen, confirming the choices that you just made.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/3817.Image_13a.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/3817.Image_5F00_13a.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/3817.Image_13a.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/3817.Image_5F00_13a.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p><strong>Step J:</strong> On the next "Rules Wizard" screen, you can <strong>name</strong>, <strong>finalize</strong> and <strong>review</strong> the new rule in 3 easy steps&hellip;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/2654.Image_14.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/2654.Image_5F00_14.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/2654.Image_14.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/2654.Image_5F00_14.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p><strong>Step K.</strong> Accept the final notification screen and you are done.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/1261.Image_15.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/1261.Image_5F00_15.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/1261.Image_15.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-25/1261.Image_5F00_15.png" alt="" width="540" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Updated Spatial Features in the SQL Azure Q4 2011 Service Release</title>
      <link>https://docs.microsoft.com/archive/blogs/edkatibah/updated-spatial-features-in-the-sql-azure-q4-2011-service-release</link>
      <pubDate>Tue, 13 Dec 2011 14:37:21 GMT</pubDate>
      <dc:creator><![CDATA[Spatial Ed]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edkatibah/2011/12/13/updated-spatial-features-in-the-sql-azure-q4-2011-service-release/</guid>
      <description><![CDATA[The Q2 2011 Service Release of SQL Azure introduced the updated spatial data platform from SQL...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: Calibri;">The Q2 2011 Service Release of SQL Azure introduced the updated spatial data platform from SQL Server 2012. SQL Server 2012 spatial features are being released in SQL Azure in increments, beginning with Q2 2011 Service Release. With the introduction of the Q4 2011 Service Release for SQL Azure, a new TechNet Wiki post</span><span style="font-family: Calibri;">, <a href="https://social.technet.microsoft.com/wiki/contents/articles/updated-spatial-features-in-the-sql-azure-q4-2011-service-release.aspx" rel="nofollow" target="_blank">Updated Spatial Features in SQL Azure Q4 2011 Service Release</a>, is now available, providing the definative guide to the new SQL Server 2012 spatial features making their appearance in SQL Azure.</span></p>
<p><span style="font-family: Calibri;">The Q4 2011 Service Relase enables the following spatial features relative to the Q2 2011 Service Release:</span></p>
<p><span style="font-family: Calibri;">Spatial aggregates (<strong>CollectionAggregate</strong>(),<strong>ConvexHullAggregate</strong>(), <strong>UnionAggregate</strong>()), and <strong>geometry::EnvelopeAggregate</strong>() now work correctly. <strong>Geography::EnvelopeAggregate</strong> does not work because it returns a circular subtype which is not yet supported in SQL Azure (see the <a href="https://social.technet.microsoft.com/wiki/contents/articles/updated-spatial-features-in-the-sql-azure-q4-2011-service-release.aspx" target="_blank">post</a> for more details). Additionally, the system view, <strong>sys.spatial_reference_systems</strong>, previously missing from SQL Azure, is now available.</span></p>
<p>For more information on the new SQL Server 2012 spatial features, please see the TechNet Wiki: <a href="https://sqlcat.com/sqlcat/b/whitepapers/archive/2011/08/08/new-spatial-features-in-sql-server-code-named-denali-community-technology-preview-3.aspx" target="_blank">New Spatial Features in SQL Server Code-Named "Denali" Community Technology Preview 3</a>.</p>
<p>Thanks,</p>
<p>- Ed</p>]]></content:encoded>
    </item>
    <item>
      <title>Potential Side-Effects of Improved Spatial Precision in SQL Server 2012 and the SQL Azure September 2011 Service Release</title>
      <link>https://docs.microsoft.com/archive/blogs/edkatibah/potential-side-effects-of-improved-spatial-precision-in-sql-server-2012-and-the-sql-azure-september-2011-service-release</link>
      <pubDate>Tue, 15 Nov 2011 15:07:14 GMT</pubDate>
      <dc:creator><![CDATA[Spatial Ed]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edkatibah/2011/11/15/potential-side-effects-of-improved-spatial-precision-in-sql-server-2012-and-the-sql-azure-september-2011-service-release/</guid>
      <description><![CDATA[In Microsoft SQL Server 2012 (previously known as SQL Server Code-Name &ldquo;Denali&rdquo;), all...]]></description>
      <content:encoded><![CDATA[<p>In Microsoft SQL Server 2012 (previously known as SQL Server Code-Name &ldquo;Denali&rdquo;), all constructions and relations are now done with 48 bits of precision, compared to 27 bits used in SQL Server 2008 and SQL Server 2008 R2. This can result in differences that range from how individual coordinates (vertices) in spatial objects appear (rounding) to how computational results are produced in different versions of the database server for certain spatial operations.</p>
<p style="margin: 0in 0in 10pt;"><span style="font-family: calibri;">Recently, SQL Azure has been upgraded in all data centers to incorporate the new SQL Server 2012 spatial library. This upgrade, known as the September 2011 Service Release, thus enables spatial operations in SQL Azure to be the computationally identical with SQL Server 2012.</span></p>
<p style="margin: 0in 0in 10pt;"><span style="font-family: calibri;">Because of this new feature, results from spatial operations in SQL Azure September Refresh and SQL Server 2012 can differ from results produced in their respective prior versions. This<a href="https://social.technet.microsoft.com/wiki/contents/articles/5580.aspx" rel="nofollow"> technical note</a> reviews the effects of the precision change and assists in identifying potential migration issues..</span></p>]]></content:encoded>
    </item>
    <item>
      <title>New Spatial Features in SQL Server Code-Named “Denali” Community Technology Preview 3</title>
      <link>https://docs.microsoft.com/archive/blogs/edkatibah/new-spatial-features-in-sql-server-code-named-denali-community-technology-preview-3</link>
      <pubDate>Mon, 08 Aug 2011 11:53:53 GMT</pubDate>
      <dc:creator><![CDATA[Spatial Ed]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edkatibah/2011/08/08/new-spatial-features-in-sql-server-code-named-denali-community-technology-preview-3/</guid>
      <description><![CDATA[We have just released a new white paper, New Spatial Features in SQL Server Code-Named...]]></description>
      <content:encoded><![CDATA[<p>We have just released a new white paper, <a href="https://sqlcat.com/whitepapers/archive/2011/08/08/new-spatial-features-in-sql-server-code-named-denali-community-technology-preview-3.aspx">New Spatial Features in SQL Server Code-Named “Denali”</a>.&#160; This white paper covers the spatial improvements added to both CTP1 and CTP3 and becomes the definitive spatial guide to this release of SQL Server.</p>  <p>You can download the new server from this location: <a href="https://www.microsoft.com/betaexperience/pd/SQLDCTP3CTA/enus/" target="_blank">Microsoft SQL Server code-named 'Denali' CTP3</a> and try out the new spatial features.</p>]]></content:encoded>
    </item>
    <item>
      <title>Spatial Support Coming to the SQL Server Entity Framework</title>
      <link>https://docs.microsoft.com/archive/blogs/edkatibah/spatial-support-coming-to-the-sql-server-entity-framework</link>
      <pubDate>Thu, 23 Jun 2011 09:25:36 GMT</pubDate>
      <dc:creator><![CDATA[Spatial Ed]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edkatibah/2011/06/23/spatial-support-coming-to-the-sql-server-entity-framework/</guid>
      <description><![CDATA[Some of you may not have heard that spatial support is coming in the next version of the SQL Server...]]></description>
      <content:encoded><![CDATA[<p>Some of you may not have heard that spatial support is coming in the next version of the SQL Server Entity Framework. Here is the first paragraph from a post on this subject:</p>  <p><em>“One of the highly-anticipated features coming in the next version of Entity Framework is Spatial support. The team has been hard at work designing a compelling story for Spatial, and we would love to get your feedback on it. In this post we will cover:</em></p>  <ul>   <li><em>The basics of SQL Server’s spatial support </em></li>    <li><em>Design goals </em></li>    <li><em>Walkthrough of design: CLR types, Metadata, Usage, WCF Serialization, Limitations </em></li>    <li><em>Questions (we want to hear from you!)</em></li> </ul>  <p><em>This entry will not cover the tools experience as we want to focus on what is happening under the hood. We will blog about the tools design at a later time. For now, be sure that we plan on shipping Spatial with Tools support.”</em></p>  <p>You can read the full post here: <a title="https://blogs.msdn.com/b/efdesign/archive/2011/05/04/spatial-types-in-the-entity-framework.aspx" href="https://blogs.msdn.com/b/efdesign/archive/2011/05/04/spatial-types-in-the-entity-framework.aspx">https://blogs.msdn.com/b/efdesign/archive/2011/05/04/spatial-types-in-the-entity-framework.aspx</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Spatial Aggregates in SQL Server Denali</title>
      <link>https://docs.microsoft.com/archive/blogs/edkatibah/spatial-aggregates-in-sql-server-denali</link>
      <pubDate>Wed, 27 Apr 2011 14:20:38 GMT</pubDate>
      <dc:creator><![CDATA[Spatial Ed]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edkatibah/2011/04/27/spatial-aggregates-in-sql-server-denali/</guid>
      <description><![CDATA[&#160;  SQL Server Code-named “Denali” is currently available as a Community Technology Preview...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p>SQL Server Code-named “Denali” is currently available as a Community Technology Preview (CTP).&#160; Denali introduces 4 new aggregates to the the suite of spatial operators in SQL Server:</p>  <ul>   <li>Union Aggregate</li>    <li>Envelope Aggregate</li>    <li>Collection Aggregate</li>    <li>Convex Hull Aggregate</li> </ul>  <p>All aggregates are implemented as static methods which work for either the Geography or the Geometry data types. As an example, consider the following geography aggregate:</p>  <blockquote>   <p>Geography::UnionAggregate(geog)</p> </blockquote>  <p>and its counterpart for geometry:</p>  <blockquote>   <p>Geometry::UnionAggregate(geom)</p> </blockquote>  <p>The following introduces each aggregate with a short definition, a code sample and a visual illustrating what goes into the aggregate and what is returned. While aggregates are applicable to all classes of spatial data (points, linestrings, etc.) they are most effectively described and illustrated with polygons, which are used in the following discussion.</p>  <p><strong><font size="3"></font></strong></p>  <p><strong><font size="3">Union Aggregate</font></strong></p>  <p><strong>Definition</strong>: Combines multiple spatial objects into a single spatial object, removing interior boundaries, where applicable.</p>  <p><font size="2" face="Courier New">SELECT <font color="#ff0000">Geography::UnionAggregate(geog)</font>       <br />&#160; </font><font size="2" face="Courier New">FROM Counties      <br />&#160;&#160;&#160; </font><font size="2" face="Courier New">WHERE name_1 = 'Washington';</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/8865.image_38909B0E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/8865.image_5F00_38909B0E.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/0458.image_thumb_3958DB2B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/0458.image_5F00_thumb_5F00_3958DB2B.png" width="640" height="202" /></a></p>  <p><font size="3"><strong></strong></font></p>  <p><font size="3"><strong>Envelope Aggregate</strong></font> </p>  <p>The unlike other aggregates, the Envelope Aggregate exhibits different behavior depending on whether is is applied to a geography or a geometry type.&#160; For the geometry type, a “traditional” rectangular polygon is calculated which closely bounds the selected input objects.&#160; For the geography type, a circular object is calculated which loosely bounds the selected input objects.&#160; Furthermore, the circular object is defined using the new CurvePolygon feature.</p>  <p><strong><font size="2">Envelope Aggregate for the Geometry Type</font></strong></p>  <p><strong>Definition</strong>: Returns a bounding rectangular polygon object, which encloses one or more spatial objects. </p>  <p><font size="2" face="Courier New">SELECT <font color="#ff0000">Geometry::EnvelopeAggregate(geom)</font>       <br /></font><font size="2" face="Courier New">&#160; FROM Counties      <br /></font><font size="2" face="Courier New">&#160;&#160;&#160; WHERE name_1 = 'Washington';</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/0042.image_121E91F6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/0042.image_5F00_121E91F6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/2273.image_thumb_31CD6BBE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/2273.image_5F00_thumb_5F00_31CD6BBE.png" width="640" height="130" /></a></p>  <p><strong><font size="2"></font></strong></p>  <p><strong><font size="2">Envelope Aggregate for the Geography Type</font></strong></p>  <p><strong>Definition</strong>: Returns a bounding circular object as a CurvePolygon which encloses one or more spatial objects.</p>    <p><font size="2" face="Courier New">SELECT <font color="#ff0000">Geography::EnvelopeAggregate(geog</font>).STCurveToLine()       <br />&#160; </font><font size="2" face="Courier New">FROM Counties      <br />&#160;&#160;&#160; </font><font size="2" face="Courier New">WHERE name_1 = 'Washington';</font></p>  <p><em>Note the STCurveToLine() method in the sample code, above.&#160; This new method is used to output spatial objects in a manner which older visualization systems can digest.</em></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/6724.image_71975243.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/6724.image_5F00_71975243.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/5734.image_thumb_6358D953.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/5734.image_5F00_thumb_5F00_6358D953.png" width="640" height="205" /></a></p>  <p><strong><font size="3">Collection Aggregate</font></strong></p>  <p><strong>Definition</strong>: Returns a geometry collection with one geometry part for each spatial object(s) in the selection set.</p>  <p><font size="2" face="Courier New">SELECT <font color="#ff0000">Geography::CollectionAggregate(geog)</font>       <br /></font><font size="2" face="Courier New">&#160; FROM Counties      <br /></font><font size="2" face="Courier New">&#160;&#160;&#160; WHERE name_1 = 'Washington';</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/6724.image_42D199A1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/6724.image_5F00_42D199A1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/5734.image_thumb_56EAB62A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/5734.image_5F00_thumb_5F00_56EAB62A.png" width="640" height="204" /></a></p>  <p>&#160;</p>  <p><strong><font size="3">Convex Hull Aggregate</font></strong></p>  <p><strong>Definition</strong>: Returns a convex hull polygon which encloses one or more spatial objects.</p>  <p><font size="2" face="Courier New">SELECT <font color="#ff0000">Geography::ConvexHullAggregate(geog)</font>       <br /></font><font size="2" face="Courier New">&#160; FROM Counties      <br /></font><font size="2" face="Courier New">&#160;&#160;&#160; WHERE name_1 = 'Washington';</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/8054.image_36637678.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/8054.image_5F00_36637678.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/7701.image_thumb_2105C110.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/7701.image_5F00_thumb_5F00_2105C110.png" width="640" height="118" /></a></p>  <p>&#160;</p>    <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1ea439c6-ef33-436a-a356-0cf9e30eaf26" class="wlWriterEditableSmartContent">Technorati Tags: <a href="https://technorati.com/tags/SQL+Server" rel="tag">SQL Server</a>,<a href="https://technorati.com/tags/Denali" rel="tag">Denali</a>,<a href="https://technorati.com/tags/spatial" rel="tag">spatial</a>,<a href="https://technorati.com/tags/aggregates" rel="tag">aggregates</a>,<a href="https://technorati.com/tags/union" rel="tag">union</a>,<a href="https://technorati.com/tags/envelope" rel="tag">envelope</a>,<a href="https://technorati.com/tags/collection" rel="tag">collection</a>,<a href="https://technorati.com/tags/convex+hull" rel="tag">convex hull</a></div>]]></content:encoded>
    </item>
    <item>
      <title>Spatial Support for Persisted Computed Columns In Denali CTP1</title>
      <link>https://docs.microsoft.com/archive/blogs/edkatibah/spatial-support-for-persisted-computed-columns-in-denali-ctp1</link>
      <pubDate>Tue, 25 Jan 2011 14:55:21 GMT</pubDate>
      <dc:creator><![CDATA[Spatial Ed]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edkatibah/2011/01/25/spatial-support-for-persisted-computed-columns-in-denali-ctp1/</guid>
      <description><![CDATA[A few weeks ago, in the whitepaper, New Spatial Features in SQL Server Code-Named “Denali” Community...]]></description>
      <content:encoded><![CDATA[<p>A few weeks ago, in the whitepaper, <a href="https://sqlcat.com/whitepapers/archive/2010/11/09/new-spatial-features-in-sql-server-code-named-denali-community-technology-preview-1.aspx" target="_blank">New Spatial Features in SQL Server Code-Named “Denali” Community Technology Preview 1</a>, new spatial support for persisted computed columns was presented.&#160; This post will elaborate on this new feature, describing how it is different from prior support in SQL Server 2008.</p>  <p>In SQL Server 2008 you could create a column in a table defined by a spatial method.&#160; For instance, you could create a column to store and persist the area of a polygon using the STArea() method, for instance, as long as that method did not return a spatial type (Geometry or Geography):</p>  <p><font size="2" face="Courier New">CREATE TABLE LOCATION (      <br />&#160; ID INT PRIMARY KEY,&#160; <br />&#160; GEOM GEOMETRY,       <br />&#160; <font style="background-color: #ffffff"></font></font><font size="2" face="Courier New"><font color="#ff0000">AREA AS GEOM.STArea() PERSISTED</font></font><font size="2" face="Courier New"><font style="background-color: #ffffff" color="#ff0000">        <br /></font></font><font size="2" face="Courier New">);</font></p>  <p>Note that the computed column, AREA, will be of type FLOAT.</p>  <p>In SQL Server Denali CTP1, this functionality is supported and augmented with the ability to persist a computed spatial column (Geometry or Geography) in the table definition.&#160; For example, lets say that you wanted to define the centroid of the polygon in the GEOM column in the table DDL.&#160; In Denali CTP1 (but not in SQL Server 2008) you can define this as follows:</p>  <p><font size="2" face="Courier New">CREATE TABLE LOCATION (      <br />&#160; ID INT PRIMARY KEY,       <br />&#160; GEOM GEOMETRY,       <br />&#160; AREA AS GEOM.STArea() PERSISTED,       <br />&#160; <font color="#ff0000">CENTROID AS GEOM.STCentroid() PERSISTED        <br /></font>);</font></p>  <p>Note that the computed column, CENTROID, will be of type GEOMETRY.</p>  <p>Here is how this table looks in SSMS:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/6102.image_5B04FB90.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/6102.image_5F00_5B04FB90.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/0247.image_thumb_4130C561.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/0247.image_5F00_thumb_5F00_4130C561.png" width="348" height="138" /></a></p>  <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:cdb76c73-7b4f-40dd-930e-bb847ebe4482" class="wlWriterEditableSmartContent">Technorati Tags: <a href="https://technorati.com/tags/SQL+Server" rel="tag">SQL Server</a>,<a href="https://technorati.com/tags/spatial" rel="tag">spatial</a>,<a href="https://technorati.com/tags/2008" rel="tag">2008</a>,<a href="https://technorati.com/tags/Denali" rel="tag">Denali</a>,<a href="https://technorati.com/tags/CTP1" rel="tag">CTP1</a>,<a href="https://technorati.com/tags/computed" rel="tag">computed</a>,<a href="https://technorati.com/tags/persisted" rel="tag">persisted</a>,<a href="https://technorati.com/tags/column" rel="tag">column</a></div>]]></content:encoded>
    </item>
    <item>
      <title>Database Compatibility Levels: Getting Existing Spatial Databases Ready For Denali</title>
      <link>https://docs.microsoft.com/archive/blogs/edkatibah/database-compatibility-levels-getting-existing-spatial-databases-ready-for-denali</link>
      <pubDate>Mon, 17 Jan 2011 08:52:54 GMT</pubDate>
      <dc:creator><![CDATA[Spatial Ed]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edkatibah/2011/01/17/database-compatibility-levels-getting-existing-spatial-databases-ready-for-denali/</guid>
      <description><![CDATA[With the availability of the new SQL Server code-named “Denali” CTP1 release, some of you will be...]]></description>
      <content:encoded><![CDATA[<p>With the availability of the new <a href="https://www.microsoft.com/downloads/en/details.aspx?FamilyID=6a04f16f-f6be-4f92-9c92-f7e5677d91f9" target="_blank">SQL Server code-named “Denali” CTP1</a> release, some of you will be moving existing SQL Server 2008 databases into the new server.&#160; In order to enable the new spatial features in Denali, you will need to update the database compatibility level for existing SQL Server 2008 databases.&#160; For Denali, the compatibility level is 110 and can be set with the following T-SQL:</p>  <p><font face="Courier New">--Set database compatibility level to SQL Server Code-Named &quot;Denali&quot;      <br />ALTER DATABASE &lt;<em>database name&gt;</em>       <br />SET COMPATIBILITY_LEVEL = 110;</font></p>  <p>You can get information on the compatibility level of all databases in a given SQL Server instance with the following stored procedure:</p>  <p><font face="Courier New">EXEC sp_helpdb</font></p>  <p>For more information on database compatibility levels please see: <a href="https://msdn.microsoft.com/en-us/library/bb510680.aspx">https://msdn.microsoft.com/en-us/library/bb510680.aspx</a></p>  <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8f4daa67-bcb2-4a11-a6c1-fba375741026" class="wlWriterEditableSmartContent">Technorati Tags: <a href="https://technorati.com/tags/compatibility+level" rel="tag">compatibility level</a>,<a href="https://technorati.com/tags/SQL+Server+2008" rel="tag">SQL Server 2008</a>,<a href="https://technorati.com/tags/spatial" rel="tag">spatial</a>,<a href="https://technorati.com/tags/Denali" rel="tag">Denali</a></div>]]></content:encoded>
    </item>
    <item>
      <title>New Functions Added To The SQL Server Spatial Tools CodePlex Project</title>
      <link>https://docs.microsoft.com/archive/blogs/edkatibah/new-functions-added-to-the-sql-server-spatial-tools-codeplex-project</link>
      <pubDate>Thu, 30 Dec 2010 09:00:32 GMT</pubDate>
      <dc:creator><![CDATA[Spatial Ed]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edkatibah/2010/12/30/new-functions-added-to-the-sql-server-spatial-tools-codeplex-project/</guid>
      <description><![CDATA[Two new functions have been added to the SQL Server Spatial Tools CodePlex Project:...]]></description>
      <content:encoded><![CDATA[<p>Two new functions have been added to the <a href="https://sqlspatialtools.codeplex.com/" target="_blank">SQL Server Spatial Tools CodePlex Project</a>:</p>  <ul>   <li><strong>FilterArtifactsGeography</strong> </li>    <li><strong>FilterArtifactsGeometry</strong> </li> </ul>  <p>These new functions, as the names imply, are designed to remove unwanted components from spatial objects.&#160; For instance, consider the output from the Reduce() method on a Geography object which results in a GeometryCollection consisting of a MultiPolygon and many Point components.&#160; The <strong>FilterArtifactsGeography</strong> function can be used to remove the Point components and return only the MultiPolygon.&#160; </p>  <p>As one would imagine, these functions also allow the removal of LineStrings and Empty geometries. Arguably, however, the most interesting feature of the new functions is their ability to remove Polygons – specifically very thin polygons (often called “slivers”).&#160; Slivers can creep into spatial objects from a variety of ways, most commonly from union operations on polygons which do not precisely match each others adjoining edges.&#160; The polygon filtering feature of these new functions employs a simple but very effective algorithm which allows a fair degree of control over which Polygon components are removed from the input object.&#160; Here is the formula:</p>  <blockquote>   <p>ring.STArea &lt; ringTolerance * ring.STLength</p>    <p><em>where: ringTolerance is a value supplied by the user&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ring.STLength is calculated by the function&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; and is the circumference of the ring</em></p> </blockquote>  <p>In practice, this allows very thin polygon rings (slivers) to be detected and removed while leaving more typically shaped polygon rings alone.&#160; The presumption is, of course, that slivers are undesirable but non-sliver rings are desirable.</p>  <p>Here is the more formal description of the <strong>FilterArtifactsGeography()</strong> function:</p>  <p><u>SqlGeography <b>FilterArtifactsGeography</b>(SqlGeography geography, bool filterEmptyShapes, bool filterPoints, double lineStringTolerance, double ringTolerance)</u></p> <u></u>  <p>   <br />Selectively filter unwanted shapes from input geography, with the following arguments:</p>  <ul>   <li>geography SQLGeography – Input geography object.      <br /></li>    <li>filterEmptyShapes boolean – A value of 1 will remove all empty shapes while a value of 0 will not remove any empty shapes.      <br /></li>    <li>filterPoints Boolean – A value of 1 will remove all point/multipoint shapes while a value of 0 will not remove any.      <br /></li>    <li>lineSTringTolerance double – Remove all linestring/multilinestring shapes shorter than the provided tolerance. A value of 0 will not remove any linestring/multilinestring shapes.      <br /></li>    <li>ringTolerance double – Remove all polygon rings thinner than provided tolerance (e.g. ring.STArea&lt; ringTolerance * ring.STLength). A value of 0 will not remove any rings. </li> </ul>  <p>The <strong>FilterArtifactsGeometry</strong> function is identical in description with the substitution of geometry for geography. Both functions will always return the simplest OGC construction possible.</p>  <p>Here is a pseudo-code example of the <strong>FilterArtifactsGeography</strong> function in use:</p>  <blockquote>   <p>FilterArtifactsGeography(@g, 1, 1, 4, 2)</p> </blockquote>  <p>Here is an example using the <strong>FilterArtifactsGeometry</strong> function:</p>  <div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">   <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">     <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> DECLARE @g GEOMETRY</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> SET @g = GEOMETRY::STGeomFromText(<span style="color: #006080">'GEOMETRYCOLLECTION (</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>                                      LINESTRING (51 51, 99 99), </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>                                      MULTILINESTRING ((52 50, 70 50),(80 50, 100 50)),</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>                                      POINT (50 50),</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>                                      POINT EMPTY,</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>                                      MULTIPOINT ((30 30),(31 31), (32 32)),</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>                                      POLYGON ((0 0, 100 0, 100 100, 0 100, 0 0),</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>                                               (10 80, 20 80, 20 90, 10 90, 10 80),</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>                                               (10 10, 90 10, 90 11, 10 11, 10 10)))'</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>                                    ,4326)</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span> SELECT @g</pre>
<!--CRLF--></div>
</div>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/7268.image_23E0189F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/7268.image_5F00_23E0189F.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/2084.image_thumb_229B7FC0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/2084.image_5F00_thumb_5F00_229B7FC0.png" width="470" height="473" /></a></p>

<p>Here is the resulting object after using the FilterArtifactsGeometry() function to remove empty components, Points/MultiPoints, LineStrings/MultiLineStrings and thin polygon rings:</p>

<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
  <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> DECLARE @g GEOMETRY</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> SET @g = GEOMETRY::STGeomFromText(<span style="color: #006080">'GEOMETRYCOLLECTION (</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>                                      LINESTRING (51 51, 99 99), </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>                                      MULTILINESTRING ((52 50, 70 50),(80 50, 100 50)),</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>                                      POINT (50 50),</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>                                      POINT EMPTY,</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>                                      MULTIPOINT ((30 30),(31 31), (32 32)),</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>                                      POLYGON ((0 0, 100 0, 100 100, 0 100, 0 0),</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>                                               (10 80, 20 80, 20 90, 10 90, 10 80),</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>                                               (10 10, 90 10, 90 11, 10 11, 10 10)))'</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>                                    ,4326)</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span> SELECT dbo.FilterArtifactsGeometry(@g,1,1,200,1.1)</pre>
<!--CRLF--></div>
</div>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/2072.image_09337C86.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/2072.image_5F00_09337C86.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/25/metablogapi/1884.image_thumb_56CFA906.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-99-25-metablogapi/1884.image_5F00_thumb_5F00_56CFA906.png" width="471" height="472" /></a></p>

<p>POLYGON ((0 0, 100 0, 100 100, 0 100, 0 0), (10 80, 20 80, 20 90, 10 90, 10 80))</p>

<p><font color="#ff0000"><em><strong>Note</strong>: The <a href="https://sqlspatialtools.codeplex.com/" target="_blank">current SQL Server Spatial Tools CodePlex Project</a> is designed for use with SQL Server 2008 (including R2).&#160; Some functions in this project will not perform correctly in <a href="https://blogs.msdn.com/b/edkatibah/archive/2010/11/09/new-spatial-features-in-sql-server-code-named-denali-ctp1.aspx?wa=wsignin1.0" target="_blank">Denali CTP1</a>, including the two functions described in this post.&#160; A new version of this project will be created which will be Denali-specific.</em></font></p>

<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a721e664-0685-41a8-8daa-f8afa74e3290" class="wlWriterEditableSmartContent">Technorati Tags: <a href="https://technorati.com/tags/SQL+Server" rel="tag">SQL Server</a>,<a href="https://technorati.com/tags/spatial" rel="tag">spatial</a>,<a href="https://technorati.com/tags/CodePlex" rel="tag">CodePlex</a>,<a href="https://technorati.com/tags/Spatial+Tools" rel="tag">Spatial Tools</a>,<a href="https://technorati.com/tags/artifacts" rel="tag">artifacts</a></div>]]></content:encoded>
    </item>
    <item>
      <title>FME Webinar: Practical Techniques for Loading Data into SQL Server</title>
      <link>https://docs.microsoft.com/archive/blogs/edkatibah/fme-webinar-practical-techniques-for-loading-data-into-sql-server</link>
      <pubDate>Thu, 09 Dec 2010 11:40:43 GMT</pubDate>
      <dc:creator><![CDATA[Spatial Ed]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edkatibah/2010/12/09/fme-webinar-practical-techniques-for-loading-data-into-sql-server/</guid>
      <description><![CDATA[One of the most often asked questions about SQL Server Spatial is “How do I load data into the...]]></description>
      <content:encoded><![CDATA[<p>One of the most often asked questions about SQL Server Spatial is “How do I load data into the spatial types?”. Safe Software has long provided solutions for this dilemma with their excellent ETL tool, Feature Manipulation Engine (FME).&#160; On December 14th, Safe will be presenting an FME Webinar entitled “Practical Techniques for Loading Data into SQL Server”.&#160; This webinar will cover such topics as:</p>  <ul>   <li>Support for multiple spatial columns in a table</li>    <li>Loading spatial data into SQL Azure Spatial</li>    <li>The new, low cost, FME Desktop SQL Server Data Loading Edition </li>    <li>The FME Extension for SSIS</li> </ul>  <p>I would encourage anyone with an interest in this topic to register at <a href="https://fme.safe.com/forms/SQLServerWebinar">https://fme.safe.com/forms/SQLServerWebinar</a>.</p>  <p>Additionally, there is another page, <a title="https://www.safe.com/c/load-data-into-sqlserver.php" href="https://www.safe.com/c/load-data-into-sqlserver.php">https://www.safe.com/c/load-data-into-sqlserver.php</a>, which includes links to an overview movie as well as links to the webinar.</p>  <p>Lastly, you can get more information on FME solutions for SQL Server on Safe’s <a href="https://www.safe.com/solutions/database/SQLserver.php" target="_blank">SOLUTIONS FOR MICROSOFT SQL SERVER USERS</a> page.</p>]]></content:encoded>
    </item>
  </channel>
</rss>