<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le blog de SQLpro &#187; SIG</title>
	<atom:link href="https://blog.developpez.com/sqlpro/ptag/sig/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/sqlpro</link>
	<description>Le SQL pour SQL Server, PostGreSQL et tous les autres SGBDR</description>
	<lastBuildDate>Thu, 15 Oct 2020 12:59:17 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Calcul de la &#171;&#160;bouding box&#160;&#187; appropriée pour l&#8217;indexation spatiale</title>
		<link>https://blog.developpez.com/sqlpro/p13125/ms-sql-server/sql-server-2008/calcul-de-la-bouding-box-appropriee-pour-lindexation-spatiale</link>
		<comments>https://blog.developpez.com/sqlpro/p13125/ms-sql-server/sql-server-2008/calcul-de-la-bouding-box-appropriee-pour-lindexation-spatiale#comments</comments>
		<pubDate>Mon, 09 Jan 2017 13:51:50 +0000</pubDate>
		<dc:creator><![CDATA[SQLpro]]></dc:creator>
				<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SQL Server 2014]]></category>
		<category><![CDATA[SQL Server 2016]]></category>
		<category><![CDATA[bounding box]]></category>
		<category><![CDATA[indexation]]></category>
		<category><![CDATA[SIG]]></category>
		<category><![CDATA[spatial]]></category>
		<category><![CDATA[SQL server]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/sqlpro/?p=700</guid>
		<description><![CDATA[SQL Server dispose d&#8217;index spatiaux qui nécessitent l&#8217;utilisation d&#8217;une &#171;&#160;bounding box&#160;&#187; pour le type geometry. Une &#171;&#160;bounding box&#160;&#187; est en fait un rectangle qui délimite la surface à indexer. Mais comment déterminer les limites de cette &#171;&#160;boite&#160;&#187; ? Cet article vous propose une procédure stockée capable de calculer les meilleurs paramètres de ces &#171;&#160;bounding box&#160;&#187; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>SQL Server dispose d&rsquo;index spatiaux qui nécessitent l&rsquo;utilisation d&rsquo;une &laquo;&nbsp;bounding box&nbsp;&raquo; pour le type geometry. Une &laquo;&nbsp;bounding box&nbsp;&raquo; est en fait un rectangle qui délimite la surface à indexer. Mais comment déterminer les limites de cette &laquo;&nbsp;boite&nbsp;&raquo; ? Cet article vous propose une procédure stockée capable de calculer les meilleurs paramètres de ces &laquo;&nbsp;bounding box&nbsp;&raquo; et vous donne le code de création des index spatiaux à ajouter à votre base.<br />
<span id="more-700"></span></p>
<div id="attachment_701" style="width: 829px" class="wp-caption aligncenter"><a href="http://blog.developpez.com/sqlpro/files/2017/01/La-France-Bounding-Box.jpg"><img src="http://blog.developpez.com/sqlpro/files/2017/01/La-France-Bounding-Box.jpg" alt="Bounding box pour l&#039;indexation géométrique de la france" width="819" height="770" class="size-full wp-image-701" /></a><p class="wp-caption-text">Bounding box pour l&rsquo;indexation géométrique de la france</p></div>
<p>Dans le principe, tous les points de toutes vos géométries dans une même colonne de table devraient être situés dans la bounding box de l&rsquo;index pour que certaines recherches bénéficient de l&rsquo;indexation. Pour ce faire il faut déterminer le point le plus bas, le plus haut (en y) le plus à gauche et le plus à droite (en x) de l&rsquo;ensemble des points formant toutes vos géométries.<br />
Pour effectuer ce calcul il existe une astuce qui consiste à calculer l&rsquo;enveloppe d&rsquo;une géométrie, comme le montre l&rsquo;image suivante :<br />
<div id="attachment_702" style="width: 1001px" class="wp-caption aligncenter"><a href="http://blog.developpez.com/sqlpro/files/2017/01/Bounding-box-Paris.jpg"><img src="http://blog.developpez.com/sqlpro/files/2017/01/Bounding-box-Paris.jpg" alt="Calcul de l&#039;enveloppe de Paris à l&#039;aide de la fonction STEnvelope" width="991" height="791" class="size-full wp-image-702" /></a><p class="wp-caption-text">Calcul de l&rsquo;enveloppe de Paris à l&rsquo;aide de la fonction STEnvelope</p></div><br />
Notez que le calcul des limites de Paris a été effectué par concaténation des polygones des différentes arrondissements dans une premier temps (geometry::UnionAggregate(GEOM)).</p>
<p>À partir de là on peut obtenir les valeurs min et max de X et Y, car, comme le rectangle est formé de 4 points, il suffit de prendre les coordonnées de X et Y du point 1 et du point 3, les points étant spécifiées par chainage !<br />
<div id="attachment_703" style="width: 963px" class="wp-caption aligncenter"><a href="http://blog.developpez.com/sqlpro/files/2017/01/Enveloppe-Paris.jpg"><img src="http://blog.developpez.com/sqlpro/files/2017/01/Enveloppe-Paris.jpg" alt="Enveloppe de Paris et ses points" width="953" height="553" class="size-full wp-image-703" /></a><p class="wp-caption-text">Enveloppe de Paris et ses points</p></div></p>
<p>Dès lors la méthode pour obtenir les coordonnées de la bounding box est d&rsquo;obtenir les valeurs de X et Y comme ceci :</p>
<li>MaGeometrie.STPointN(1).STX =&gt; Xmin</li>
<li>MaGeometrie.STPointN(1).STY =&gt; Ymin</li>
<li>MaGeometrie.STPointN(3).STX =&gt; Xmax</li>
<li>MaGeometrie.STPointN(3).STY =&gt; Ymax</li>
<p>Mais il faut concaténer toutes les entrées de toutes les géométries de la colonnes à l&rsquo;aide de la fonction EnvelopeAggregate.</p>
<p>la requête finale ressembles à celle-ci (calcul de la bounding box pour toutes les communes de la France métropolitaine) :</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">WITH</span> T <span style="color: #993333; font-weight: bold;">AS</span><br />
<span style="color: #66cc66;">&#40;</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> geometry::EnvelopeAggregate<span style="color: #66cc66;">&#40;</span>GEOM<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> GEO<br />
<span style="color: #993333; font-weight: bold;">FROM</span> &nbsp; <span style="color: #66cc66;">&#91;</span>S_GEO<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>COMMUNE<span style="color: #66cc66;">&#93;</span> <br />
<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> geometry::EnvelopeAggregate<span style="color: #66cc66;">&#40;</span>GEO<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">.</span>STPointN<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">.</span>STX <span style="color: #993333; font-weight: bold;">AS</span> MIN_X<span style="color: #66cc66;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp;geometry::EnvelopeAggregate<span style="color: #66cc66;">&#40;</span>GEO<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">.</span>STPointN<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">.</span>STX <span style="color: #993333; font-weight: bold;">AS</span> MAX_X<span style="color: #66cc66;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp;geometry::EnvelopeAggregate<span style="color: #66cc66;">&#40;</span>GEO<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">.</span>STPointN<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">.</span>STY <span style="color: #993333; font-weight: bold;">AS</span> MIN_Y<span style="color: #66cc66;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp;geometry::EnvelopeAggregate<span style="color: #66cc66;">&#40;</span>GEO<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">.</span>STPointN<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">.</span>STY <span style="color: #993333; font-weight: bold;">AS</span> MAX_Y <br />
<span style="color: #993333; font-weight: bold;">FROM</span> &nbsp; T</div></div>
<p>Au final nous pouvons automatiser ce calcul pour toutes les colonnes geometry de toute la base. Ceci conduit à la procédures suivantes :</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">PROCEDURE</span> P_AUTOBOUND_SPATIAL_INDEX @DELTA <span style="color: #993333; font-weight: bold;">FLOAT</span><br />
<span style="color: #993333; font-weight: bold;">AS</span><br />
<br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @T <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #66cc66;">&#40;</span>SCH sysname<span style="color: #66cc66;">,</span> TBL sysname<span style="color: #66cc66;">,</span> COL sysname<span style="color: #66cc66;">,</span> XMIN <span style="color: #993333; font-weight: bold;">FLOAT</span><span style="color: #66cc66;">,</span> XMAX <span style="color: #993333; font-weight: bold;">FLOAT</span><span style="color: #66cc66;">,</span> YMIN <span style="color: #993333; font-weight: bold;">FLOAT</span><span style="color: #66cc66;">,</span> YMAX <span style="color: #993333; font-weight: bold;">FLOAT</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #808080; font-style: italic;">-- le delate doit être 1 (bornes strictes) ou supérieur à 1</span><br />
<span style="color: #993333; font-weight: bold;">IF</span> @DELTA <span style="color: #66cc66;">&lt;</span> <span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">OR</span> @DELTA <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NULL</span><br />
&nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">SET</span> @DELTA <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span>;<br />
<br />
<span style="color: #808080; font-style: italic;">-- recherches des colonnes spatiales non indexées de type GEOMETRY</span><br />
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> @T <span style="color: #66cc66;">&#40;</span>SCH<span style="color: #66cc66;">,</span> TBL<span style="color: #66cc66;">,</span> COL<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> TABLE_SCHEMA<span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TABLE_NAME</span><span style="color: #66cc66;">,</span> COLUMN_NAME<br />
<span style="color: #993333; font-weight: bold;">FROM</span> &nbsp; INFORMATION_SCHEMA<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">COLUMNS</span><br />
<span style="color: #993333; font-weight: bold;">WHERE</span> &nbsp;DATA_TYPE <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'geometry'</span><br />
<span style="color: #993333; font-weight: bold;">EXCEPT</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> s<span style="color: #66cc66;">.</span>name<span style="color: #66cc66;">,</span> o<span style="color: #66cc66;">.</span>name<span style="color: #66cc66;">,</span> c<span style="color: #66cc66;">.</span>name<br />
<span style="color: #993333; font-weight: bold;">FROM</span> &nbsp; sys<span style="color: #66cc66;">.</span>objects <span style="color: #993333; font-weight: bold;">AS</span> o<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">JOIN</span> sys<span style="color: #66cc66;">.</span>indexes <span style="color: #993333; font-weight: bold;">AS</span> i<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">ON</span> o<span style="color: #66cc66;">.</span>object_id <span style="color: #66cc66;">=</span> i<span style="color: #66cc66;">.</span>object_id<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">JOIN</span> sys<span style="color: #66cc66;">.</span>schemas <span style="color: #993333; font-weight: bold;">AS</span> s<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">ON</span> o<span style="color: #66cc66;">.</span>schema_id <span style="color: #66cc66;">=</span> s<span style="color: #66cc66;">.</span>schema_id<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">JOIN</span> sys<span style="color: #66cc66;">.</span>spatial_indexes <span style="color: #993333; font-weight: bold;">AS</span> si<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">ON</span> i<span style="color: #66cc66;">.</span>object_id <span style="color: #66cc66;">=</span> si<span style="color: #66cc66;">.</span>object_id<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">AND</span> i<span style="color: #66cc66;">.</span>index_id <span style="color: #66cc66;">=</span> si<span style="color: #66cc66;">.</span>index_id<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">JOIN</span> sys<span style="color: #66cc66;">.</span>index_columns <span style="color: #993333; font-weight: bold;">AS</span> ic<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">ON</span> i<span style="color: #66cc66;">.</span>object_id <span style="color: #66cc66;">=</span> ic<span style="color: #66cc66;">.</span>object_id<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">AND</span> i<span style="color: #66cc66;">.</span>index_id <span style="color: #66cc66;">=</span> ic<span style="color: #66cc66;">.</span>index_id<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">JOIN</span> sys<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">COLUMNS</span> <span style="color: #993333; font-weight: bold;">AS</span> c<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">ON</span> ic<span style="color: #66cc66;">.</span>object_id <span style="color: #66cc66;">=</span> c<span style="color: #66cc66;">.</span>object_id<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">AND</span> ic<span style="color: #66cc66;">.</span>column_id <span style="color: #66cc66;">=</span> c<span style="color: #66cc66;">.</span>column_id<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">JOIN</span> sys<span style="color: #66cc66;">.</span>systypes <span style="color: #993333; font-weight: bold;">AS</span> t<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">ON</span> c<span style="color: #66cc66;">.</span>system_type_id <span style="color: #66cc66;">=</span> t<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">TYPE</span> <br />
<span style="color: #993333; font-weight: bold;">WHERE</span> &nbsp;t<span style="color: #66cc66;">.</span>name <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'geometry'</span>;<br />
<br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @TXY <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #66cc66;">&#40;</span>XMIN <span style="color: #993333; font-weight: bold;">FLOAT</span><span style="color: #66cc66;">,</span> XMAX <span style="color: #993333; font-weight: bold;">FLOAT</span><span style="color: #66cc66;">,</span> YMIN <span style="color: #993333; font-weight: bold;">FLOAT</span><span style="color: #66cc66;">,</span> YMAX <span style="color: #993333; font-weight: bold;">FLOAT</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @TBL sysname<span style="color: #66cc66;">,</span> @SCH sysname<span style="color: #66cc66;">,</span> @COL sysname<span style="color: #66cc66;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; @XMIN <span style="color: #993333; font-weight: bold;">FLOAT</span><span style="color: #66cc66;">,</span> @XMAX <span style="color: #993333; font-weight: bold;">FLOAT</span><span style="color: #66cc66;">,</span> @YMIN <span style="color: #993333; font-weight: bold;">FLOAT</span><span style="color: #66cc66;">,</span> @YMAX <span style="color: #993333; font-weight: bold;">FLOAT</span><span style="color: #66cc66;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; @<span style="color: #993333; font-weight: bold;">SQL</span> NVARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">MAX</span><span style="color: #66cc66;">&#41;</span>;<br />
<br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> C CURSOR <br />
&nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">LOCAL</span><br />
&nbsp; &nbsp;FORWARD_ONLY<br />
&nbsp; &nbsp;STATIC<br />
&nbsp; &nbsp;READ_ONLY<br />
<span style="color: #993333; font-weight: bold;">FOR</span><br />
&nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">SELECT</span> SCH<span style="color: #66cc66;">,</span> TBL<span style="color: #66cc66;">,</span> COL<br />
&nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">FROM</span> &nbsp; @T;<br />
<br />
<span style="color: #993333; font-weight: bold;">OPEN</span> C;<br />
<br />
FETCH C <span style="color: #993333; font-weight: bold;">INTO</span> @SCH<span style="color: #66cc66;">,</span> @TBL<span style="color: #66cc66;">,</span> @COL;<br />
<br />
WHILE @@FETCH_STATUS <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span><br />
<span style="color: #993333; font-weight: bold;">BEGIN</span><br />
&nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">DELETE</span> <span style="color: #993333; font-weight: bold;">FROM</span> @TXY;<br />
&nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">SET</span> @<span style="color: #993333; font-weight: bold;">SQL</span> <span style="color: #66cc66;">=</span> N<span style="color: #ff0000;">'WITH T AS (SELECT geometry::EnvelopeAggregate(['</span> <span style="color: #66cc66;">+</span> @COL <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">']) AS GEO FROM ['</span> <span style="color: #66cc66;">+</span> @SCH &nbsp;<span style="color: #66cc66;">+</span> <span style="color: #ff0000;">'].['</span> <span style="color: #66cc66;">+</span> @TBL <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">']) '</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">'SELECT geometry::EnvelopeAggregate(GEO).STPointN(1).STX / '</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CAST</span><span style="color: #66cc66;">&#40;</span>@DELTA <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">16</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">' AS MIN_X, '</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">'geometry::EnvelopeAggregate(GEO).STPointN(3).STX * '</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CAST</span><span style="color: #66cc66;">&#40;</span>@DELTA <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">16</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">' AS MAX_X, '</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">'geometry::EnvelopeAggregate(GEO).STPointN(1).STY / '</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CAST</span><span style="color: #66cc66;">&#40;</span>@DELTA <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">16</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">' AS MIN_Y, '</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">'geometry::EnvelopeAggregate(GEO).STPointN(3).STY * '</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CAST</span><span style="color: #66cc66;">&#40;</span>@DELTA <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">16</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">' AS MAX_Y '</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">'FROM T;'</span><br />
&nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> @TXY<br />
&nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">EXEC</span> <span style="color: #66cc66;">&#40;</span>@<span style="color: #993333; font-weight: bold;">SQL</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">UPDATE</span> T<br />
&nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">SET</span> &nbsp; &nbsp;XMIN <span style="color: #66cc66;">=</span> TT<span style="color: #66cc66;">.</span>XMIN<span style="color: #66cc66;">,</span> XMAX <span style="color: #66cc66;">=</span> TT<span style="color: #66cc66;">.</span>XMAX<span style="color: #66cc66;">,</span> YMIN <span style="color: #66cc66;">=</span> TT<span style="color: #66cc66;">.</span>YMIN<span style="color: #66cc66;">,</span> YMAX <span style="color: #66cc66;">=</span> TT<span style="color: #66cc66;">.</span>YMAX<br />
&nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">FROM</span> &nbsp; @T <span style="color: #993333; font-weight: bold;">AS</span> T<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">CROSS</span> <span style="color: #993333; font-weight: bold;">JOIN</span> @TXY <span style="color: #993333; font-weight: bold;">AS</span> TT<br />
&nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">WHERE</span> &nbsp;SCH <span style="color: #66cc66;">=</span> @SCH<br />
&nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">AND</span> &nbsp;TBL <span style="color: #66cc66;">=</span> @TBL<br />
&nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">AND</span> &nbsp;COL <span style="color: #66cc66;">=</span> @COL;<br />
&nbsp; &nbsp;FETCH C <span style="color: #993333; font-weight: bold;">INTO</span> @SCH<span style="color: #66cc66;">,</span> @TBL<span style="color: #66cc66;">,</span> @COL;<br />
<span style="color: #993333; font-weight: bold;">END</span><br />
<br />
CLOSE C;<br />
<br />
DEALLOCATE C;<br />
<br />
<span style="color: #993333; font-weight: bold;">SELECT</span> N<span style="color: #ff0000;">'CREATE SPATIAL INDEX XS_'</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">LEFT</span><span style="color: #66cc66;">&#40;</span>SCH<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">16</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">'_'</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">LEFT</span><span style="color: #66cc66;">&#40;</span>TBL<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">30</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">'_'</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">LEFT</span><span style="color: #66cc66;">&#40;</span>COL<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">30</span><span style="color: #66cc66;">&#41;</span> &nbsp;<span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">'_'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">CAST</span><span style="color: #66cc66;">&#40;</span>NEWID<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> NVARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">38</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> N<span style="color: #ff0000;">'-'</span><span style="color: #66cc66;">,</span> N<span style="color: #ff0000;">'_'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">'_'</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CONVERT</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">CHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">112</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">NCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">13</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">NCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">' &nbsp; ON ['</span> <span style="color: #66cc66;">+</span> SCH <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">'].['</span> <span style="color: #66cc66;">+</span> TBL <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">'] (['</span> <span style="color: #66cc66;">+</span> COL <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">']) '</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">NCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">13</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">NCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">' &nbsp; WITH ( BOUNDING_BOX = ('</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CAST</span><span style="color: #66cc66;">&#40;</span> XMIN <span style="color: #993333; font-weight: bold;">AS</span> NVARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">32</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">', '</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CAST</span><span style="color: #66cc66;">&#40;</span> YMIN <span style="color: #993333; font-weight: bold;">AS</span> NVARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">32</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">', '</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CAST</span><span style="color: #66cc66;">&#40;</span> XMAX <span style="color: #993333; font-weight: bold;">AS</span> NVARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">32</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">', '</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CAST</span><span style="color: #66cc66;">&#40;</span> YMAX <span style="color: #993333; font-weight: bold;">AS</span> NVARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">32</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> N<span style="color: #ff0000;">') );'</span><br />
<span style="color: #993333; font-weight: bold;">FROM</span> &nbsp; @T; &nbsp;<br />
<br />
<span style="color: #993333; font-weight: bold;">GO</span></div></div>
<p>Le paramètre @DELTA sert à rajouter un peu de &quot;mou&quot; sur la périphérie de la bounding box et doit être égale à 1 (pas de &quot;mou&quot;) ou supérieur.<br />
par exemple avec 1.1, on ajoute 10% de distance en périphérie de la bounding box.</p>
<p><strong>LE CODE * LE CODE * LE CODE * LE CODE * LE CODE * LE CODE * LE CODE * LE CODE * LE CODE</strong><br />
<a href="http://sqlpro.developpez.com/_fichierSQL/AutoBoundingSpatialIndex.txt" title="Fichier du code" target="_blank">Le code !</a></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Frédéric Brouard, alias SQLpro, ARCHITECTE DE DONNÉES<br />
Expert &nbsp;S.G.B.D &nbsp;relationnelles &nbsp; et &nbsp; langage &nbsp;S.Q.L<br />
Moste &nbsp;Valuable &nbsp;Professionnal &nbsp;Microsoft &nbsp;SQL Server<br />
Société SQLspot &nbsp;: &nbsp;modélisation, conseil, formation,<br />
optimisation, &nbsp;audit, &nbsp;tuning, &nbsp;administration &nbsp;SGBDR<br />
Enseignant: CNAM PACA, ISEN Toulon, CESI Aix en Prov.</div></div>
<p>L&rsquo;entreprise <a href="http://www.sqlspot.com">SQL Spot</a><br />
<strong>Le site web sur le </strong><a href="http://sqlpro.developpez.com/">SQL et les SGBDR</a></p>
<p><img src="http://blog.developpez.com/media/Microsoft_MVP_logo_vertical Brouard 400.jpg" width="400" height="135" alt="MVP Microsoft SQL
Server" /></p>
<div id="attachment_590" style="width: 548px" class="wp-caption alignnone"><a href="http://blog.developpez.com/sqlpro/files/2015/09/Couverture-livre-SQL-server-Eyrolles.jpg"><img src="http://blog.developpez.com/sqlpro/files/2015/09/Couverture-livre-SQL-server-Eyrolles.jpg" alt="Développez et administrez pour la performance avec SQL Server 2014" width="538" height="652" class="size-full wp-image-590" /></a><p class="wp-caption-text">Développez et administrez pour la performance avec SQL Server 2014</p></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
