<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://sig.cenlr.org/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel>
        <title>Présentation du&lt;br/&gt;&lt;br/&gt;Système d'Information outils:postgis_raster</title>
        <description></description>
        <link>http://sig.cenlr.org/</link>
        <lastBuildDate>Sat, 16 May 2026 01:44:59 +0200</lastBuildDate>
        <generator>FeedCreator 1.7.2-ppt DokuWiki</generator>
        <image>
            <url>http://sig.cenlr.org/lib/images/favicon.ico</url>
            <title>Présentation du&lt;br/&gt;&lt;br/&gt;Système d'Information</title>
            <link>http://sig.cenlr.org/</link>
        </image>
        <item>
            <title>outils:postgis_raster:cas_d_utilisation</title>
            <link>http://sig.cenlr.org/outils/postgis_raster/cas_d_utilisation</link>
            <description>&lt;div class=&quot;box round red&quot; style=&quot;width: 100%; &quot;&gt;
  &lt;b class='xtop'&gt;&lt;b class='xb1'&gt;&lt;/b&gt;&lt;b class='xb2'&gt;&lt;/b&gt;&lt;b class='xb3'&gt;&lt;/b&gt;&lt;b class='xb4'&gt;&lt;/b&gt;&lt;/b&gt;
  &lt;div class='xbox'&gt;
&lt;div class='box_content'&gt;&lt;strong&gt;&lt;em&gt;PAGE OBSOLETE&lt;/em&gt;&lt;/strong&gt;
&lt;p&gt;
&lt;code&gt;&lt;em class=&quot;u&quot;&gt;!!NB!! Depuis que GDAL est compilé avec PostGIS, l&amp;#039;outil &lt;em&gt;raster2pgsql&lt;/em&gt; n&amp;#039;est plus un script python script. Le script python peut ne plus fonctionner avec les futurs version de PostGIS Raster (cf &lt;a href=&quot;http://www.postgis.org/documentation/manual-2.0/using_raster.xml.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.postgis.org/documentation/manual-2.0/using_raster.xml.html&quot;  rel=&quot;nofollow&quot;&gt;http://www.postgis.org/documentation/manual-2.0/using_raster.xml.html&lt;/a&gt;).&lt;/em&gt;&lt;/code&gt;
Certaines fonctions ont par ailleurs été renommée dans la version finale.

&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;b class='xbottom'&gt;&lt;b class='xb4'&gt;&lt;/b&gt;&lt;b class='xb3'&gt;&lt;/b&gt;&lt;b class='xb2'&gt;&lt;/b&gt;&lt;b class='xb1'&gt;&lt;/b&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://sig.cenlr.org/tag/postgis-raster?do=showtag&amp;amp;tag=PostGIS-Raster&quot; class=&quot;wikilink1&quot; title=&quot;tag:postgis-raster&quot; rel=&quot;tag&quot;&gt;PostGIS-Raster&lt;/a&gt;,
	&lt;a href=&quot;http://sig.cenlr.org/tag/srtm?do=showtag&amp;amp;tag=SRTM&quot; class=&quot;wikilink1&quot; title=&quot;tag:srtm&quot; rel=&quot;tag&quot;&gt;SRTM&lt;/a&gt;,
	&lt;a href=&quot;http://sig.cenlr.org/tag/bdtopo?do=showtag&amp;amp;tag=BDTOPO&quot; class=&quot;wikilink1&quot; title=&quot;tag:bdtopo&quot; rel=&quot;tag&quot;&gt;BDTOPO&lt;/a&gt;,
	&lt;a href=&quot;http://sig.cenlr.org/tag/classification?do=showtag&amp;amp;tag=classification&quot; class=&quot;wikilink1&quot; title=&quot;tag:classification&quot; rel=&quot;tag&quot;&gt;classification&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;h1 class=&quot;sectionedit1&quot;&gt;&lt;a name=&quot;installation_de_postgis-rasterpostgis_20_pour_windows_xp&quot; id=&quot;installation_de_postgis-rasterpostgis_20_pour_windows_xp&quot;&gt;Installation de PostGIS-Raster/PostGIS 2.0 pour Windows XP&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT1 SECTION &quot;Installation de PostGIS-Raster/PostGIS 2.0 pour Windows XP&quot; [462-533] --&gt;
&lt;h2 class=&quot;sectionedit2&quot;&gt;&lt;a name=&quot;installation_de_postgis_20&quot; id=&quot;installation_de_postgis_20&quot;&gt;Installation de PostGIS 2.0&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Télécharger les binaires compatible avec la version de PostreSQL (&lt;a href=&quot;http://www.postgis.org/download/windows/experimental.php&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.postgis.org/download/windows/experimental.php&quot;  rel=&quot;nofollow&quot;&gt;http://www.postgis.org/download/windows/experimental.php&lt;/a&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Lire les consignes des fichiers textes README et README_Raster:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Éditer &lt;em&gt;makepostgisdb.bat&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Préciser le mot de passe de connexion&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Décommenter la ligne pour les templates, si nécessaire&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Lancer &lt;em&gt;makepostgisdb.bat&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; La base de données &lt;em&gt;template_postgis20&lt;/em&gt; est créée, avec le schéma &lt;em&gt;public&lt;/em&gt; contenant les fonctions raster et la schéma &lt;em&gt;topology&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT2 SECTION &quot;Installation de PostGIS 2.0&quot; [534-1100] --&gt;
&lt;h2 class=&quot;sectionedit3&quot;&gt;&lt;a name=&quot;installation_de_python_27&quot; id=&quot;installation_de_python_27&quot;&gt;Installation de Python 2.7&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.python.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.python.org/&quot;  rel=&quot;nofollow&quot;&gt;http://www.python.org/&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT3 SECTION &quot;Installation de Python 2.7&quot; [1101-1163] --&gt;
&lt;h2 class=&quot;sectionedit4&quot;&gt;&lt;a name=&quot;installation_du_package_numpy_et_de_la_librairie_gdal_tentative_1&quot; id=&quot;installation_du_package_numpy_et_de_la_librairie_gdal_tentative_1&quot;&gt;Installation du package NumPy et de la librairie GDAL (tentative 1)&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.lfd.uci.edu/~gohlke/pythonlibs&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.lfd.uci.edu/~gohlke/pythonlibs&quot;  rel=&quot;nofollow&quot;&gt;http://www.lfd.uci.edu/~gohlke/pythonlibs&lt;/a&gt;
Télécharger les versions compatibles et lancer les.
&lt;/p&gt;

&lt;p&gt;
Tester l&amp;#039;installation en testant dans la fenêtre de commande &lt;em&gt;raster2pgsql.py&lt;/em&gt; (cf NB tentative 2)
&lt;/p&gt;

&lt;p&gt;
NB: suite à l&amp;#039;exécution de ces 2 packages, et ce moment là de l&amp;#039;installation, je n&amp;#039;exécutais vainement que &lt;em&gt;raster2pgsql&lt;/em&gt;.
J&amp;#039;ai donc testé une autre installation de GDAL. (cf ci-après)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT4 SECTION &quot;Installation du package NumPy et de la librairie GDAL (tentative 1)&quot; [1164-1636] --&gt;
&lt;h2 class=&quot;sectionedit5&quot;&gt;&lt;a name=&quot;installation_de_la_librairie_gdal_tentative_2&quot; id=&quot;installation_de_la_librairie_gdal_tentative_2&quot;&gt;Installation de la librairie GDAL (tentative 2)&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
via l&amp;#039;installateur générique de GDAL (&lt;a href=&quot;http://vbkto.dyndns.org/sdk/Download.aspx?file=release-1310-gdal-1-8-mapserver-5-6&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://vbkto.dyndns.org/sdk/Download.aspx?file=release-1310-gdal-1-8-mapserver-5-6&quot;  rel=&quot;nofollow&quot;&gt;http://vbkto.dyndns.org/sdk/Download.aspx?file=release-1310-gdal-1-8-mapserver-5-6&lt;/a&gt;\gdal-18-1310-core.msi)
&lt;/p&gt;

&lt;p&gt;
Bien suivre l&amp;#039;étape 2 de la page &lt;a href=&quot;http://gis4free.wordpress.com/category/postgis-raster/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://gis4free.wordpress.com/category/postgis-raster/&quot;  rel=&quot;nofollow&quot;&gt;http://gis4free.wordpress.com/category/postgis-raster/&lt;/a&gt;, notamment l&amp;#039;&lt;em&gt;UPDATE 2011-03-25&lt;/em&gt; sur l&amp;#039;ajout de variables d&amp;#039;environnement.
&lt;/p&gt;

&lt;p&gt;
Tester l&amp;#039;installation en testant dans la fenêtre de commande &lt;em&gt;raster2pgsql.py&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
NB: au premier test, comme lors de la tentative 1, c&amp;#039;est &lt;em&gt;raster2pgsql&lt;/em&gt; qui était vainement lancé,  jusqu&amp;#039;à ce que &lt;em&gt;raster2pgsql.py&lt;/em&gt; soit testé avec succès. A voir si lors de la tentative 1 &lt;em&gt;raster2pgsql.py&lt;/em&gt; fonctionnait.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT5 SECTION &quot;Installation de la librairie GDAL (tentative 2)&quot; [1637-2331] --&gt;
&lt;h1 class=&quot;sectionedit6&quot;&gt;&lt;a name=&quot;notes_sur_certaines_fonctions_de_postgis_raster_postgis_20&quot; id=&quot;notes_sur_certaines_fonctions_de_postgis_raster_postgis_20&quot;&gt;Notes sur certaines fonctions de PostGIS Raster (PostGIS 2.0)&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.postgis.org/documentation/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.postgis.org/documentation/&quot;  rel=&quot;nofollow&quot;&gt;http://www.postgis.org/documentation/&lt;/a&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT6 SECTION &quot;Notes sur certaines fonctions de PostGIS Raster (PostGIS 2.0)&quot; [2332-2445] --&gt;
&lt;h2 class=&quot;sectionedit7&quot;&gt;&lt;a name=&quot;accessoires_raster&quot; id=&quot;accessoires_raster&quot;&gt;Accessoires Raster&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT7 SECTION &quot;Accessoires Raster&quot; [2446-2476] --&gt;
&lt;h3 class=&quot;sectionedit8&quot;&gt;&lt;a name=&quot;st_georeference_st_height_st_metadata_st_scalex_st_scaley_st_skewx_st_skewy_st_srid_st_upperleftx_st_upperlefty_st_width&quot; id=&quot;st_georeference_st_height_st_metadata_st_scalex_st_scaley_st_skewx_st_skewy_st_srid_st_upperleftx_st_upperlefty_st_width&quot;&gt;ST_GeoReference, ST_Height, ST_MetaData, ST_ScaleX, ST_ScaleY, ST_SkewX, ST_SkewY, ST_SRID, ST_UpperLeftX, ST_UpperLeftY, ST_Width&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
(cf. &lt;a href=&quot;http://en.wikipedia.org/wiki/World_file&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://en.wikipedia.org/wiki/World_file&quot;  rel=&quot;nofollow&quot;&gt;http://en.wikipedia.org/wiki/World_file&lt;/a&gt;)
&lt;/p&gt;

&lt;p&gt;
Les métadonnées de Raster utilisent 6 types de descripteurs :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;height&lt;/em&gt; : hauteur de l&amp;#039;image&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;scale x/y&lt;/em&gt; : taille du pixel en x ou y&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;skew x/y&lt;/em&gt; : distance en x et y due à la rotation&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;srid&lt;/em&gt; : identifiant du référentiel spatial&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;upperleft x/y&lt;/em&gt; : coordonnée x et y du coin haut gauche de l&amp;#039;image&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;width&lt;/em&gt; :  largeur de l&amp;#039;image&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT8 SECTION &quot;ST_GeoReference, ST_Height, ST_MetaData, ST_ScaleX, ST_ScaleY, ST_SkewX, ST_SkewY, ST_SRID, ST_UpperLeftX, ST_UpperLeftY, ST_Width&quot; [2477-3028] --&gt;
&lt;h3 class=&quot;sectionedit9&quot;&gt;&lt;a name=&quot;st_raster2worldcoordx_st_raster2worldcoordy&quot; id=&quot;st_raster2worldcoordx_st_raster2worldcoordy&quot;&gt;ST_Raster2WorldCoordX, ST_Raster2WorldCoordY&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Renvoie les coordonnées x/y, dans le référentiel spatial du raster, du coin haut gauche d&amp;#039;un raster, d&amp;#039;une colonne ou d&amp;#039;une ligne.

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT9 SECTION &quot;ST_Raster2WorldCoordX, ST_Raster2WorldCoordY&quot; [3029-3217] --&gt;
&lt;h3 class=&quot;sectionedit10&quot;&gt;&lt;a name=&quot;st_world2rastercoordx_st_world2rastercoordy&quot; id=&quot;st_world2rastercoordx_st_world2rastercoordy&quot;&gt;ST_World2RasterCoordX, ST_World2RasterCoordY&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Renvoie la colonne d&amp;#039;un ponctuel (géométrie ou coordonnées) du même référentiel spatial que le raster.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT10 SECTION &quot;ST_World2RasterCoordX, ST_World2RasterCoordY&quot; [3218-3383] --&gt;
&lt;h3 class=&quot;sectionedit11&quot;&gt;&lt;a name=&quot;st_histogram&quot; id=&quot;st_histogram&quot;&gt;ST_Histogram&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Permets la classification des valeurs d&amp;#039;une bande donnée, et d&amp;#039;afficher de fait les valeurs minimum et maximum en excluant les valeurs &amp;#039;-1&amp;#039;.

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SELECT band, (stats).*
FROM (SELECT rid, band, ST_Histogram(ST_SetBandNoDataValue(raster,-1), band, 5) As stats
FROM bd_topo.mnt CROSS JOIN generate_series(1,1) As band
WHERE rid=1) As foo

-----resultats-----
&amp;#039;band&amp;#039;|&amp;#039;min&amp;#039;  |&amp;#039;max&amp;#039; |&amp;#039;count&amp;#039; |&amp;#039;percent&amp;#039;
1     |0      |253.6 |11004566|0.585324
1     |253.6  |507.2 |2861291 |0.15219
1     |507.2  |760.8 |3102829 |0.165037
1     |760.8  |1014.4|1667889 |0.088714
1     |1014.4 |1268  |164249  |0.008736&lt;/pre&gt;

&lt;p&gt;
Temps d&amp;#039;exécution : 6 secondes
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT11 SECTION &quot;ST_Histogram&quot; [3384-4048] --&gt;
&lt;h2 class=&quot;sectionedit12&quot;&gt;&lt;a name=&quot;accessoires_et_manipulateurs_de_pixels&quot; id=&quot;accessoires_et_manipulateurs_de_pixels&quot;&gt;Accessoires et Manipulateurs de Pixels&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT12 SECTION &quot;Accessoires et Manipulateurs de Pixels&quot; [4049-4098] --&gt;
&lt;h3 class=&quot;sectionedit13&quot;&gt;&lt;a name=&quot;st_value&quot; id=&quot;st_value&quot;&gt;ST_Value&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Exemple ci-après pour l&amp;#039;énumération des valeurs des 100 premières lignes et colonnes , soit près de 5/10 000ème du MNT du Département de l&amp;#039;Hérault
&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; x&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ST_Value&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; x&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; b1val
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; bd_topo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;mnt 
	&lt;span class=&quot;kw1&quot;&gt;CROSS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; generate_series&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; x 
	&lt;span class=&quot;kw1&quot;&gt;CROSS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; generate_series&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; y
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rid &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;
Temps d&amp;#039;exécution : 46 minutes
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT13 SECTION &quot;ST_Value&quot; [4099-4486] --&gt;
&lt;h1 class=&quot;sectionedit14&quot;&gt;&lt;a name=&quot;cas_d_utilisations&quot; id=&quot;cas_d_utilisations&quot;&gt;CAS D&amp;#039;UTILISATIONS&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;

&lt;h5&gt;&lt;a name=&quot;caracteristiques_des_images_utilisees&quot; id=&quot;caracteristiques_des_images_utilisees&quot;&gt;Caractéristiques des images utilisées:&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
&lt;strong&gt;SRTM (WGS84)&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; non tuilée: 6001&amp;times;6001 px&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level5&quot;&gt;&lt;div class=&quot;li&quot;&gt; tuiles  de 60&amp;times;60 px : 10 201 tuiles&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

&lt;strong&gt;MNT de département de l&amp;#039;Hérault(Lambert93)&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; non tuilée: 5401&amp;times;3481 px  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level5&quot;&gt;&lt;div class=&quot;li&quot;&gt; tuiles  de 250&amp;times;250 px : 308 tuiles &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level5&quot;&gt;&lt;div class=&quot;li&quot;&gt; tuiles  de 60&amp;times;60 px : 5 369 tuiles&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT14 SECTION &quot;CAS D'UTILISATIONS&quot; [4487-4850] --&gt;
&lt;h2 class=&quot;sectionedit15&quot;&gt;&lt;a name=&quot;vectorisation_d_une_selection_sur_la_valeur_de_pixels_dans_une_sous_partie_du_raster&quot; id=&quot;vectorisation_d_une_selection_sur_la_valeur_de_pixels_dans_une_sous_partie_du_raster&quot;&gt;Vectorisation d&amp;#039;une sélection sur la valeur de pixels dans une sous partie du raster&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Soit: vectorisation des altitudes de plus de 300 mètres dans une zone de 250 mètres de côté dans le nord-est de l&amp;#039;emprise du MNT du Département de l&amp;#039;Hérault (10 colonnes/lignes de 25 mètres depuis les coin haut-gauche), soit .
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; SELECT rid, ST_Union(pixpolyg)  As geometrie
FROM (
	SELECT rid,
		ST_Translate(
			ST_MakeEnvelope(
				ST_UpperLeftX(raster), ST_UpperLeftY(raster),
				ST_UpperLeftX(raster) + ST_ScaleX(raster),
				ST_UpperLeftY(raster) + ST_ScaleY(raster), 2154
				), 
			ST_ScaleX(raster)*x-ST_ScaleX(raster), 
			ST_ScaleY(raster)*y-ST_ScaleY(raster)
		) As pixpolyg, 
		ST_Value(raster, 1, x, y) As b1val
	FROM bd_topo.mnt 
		CROSS JOIN generate_series(1,10) As x 
                CROSS JOIN generate_series(1,10) As y
	WHERE rid = 1
	) As foo
WHERE b1val &amp;gt; 300::double precision
  GROUP BY foo.rid&lt;/pre&gt;

&lt;p&gt;
Temps d&amp;#039;exécution : 4 minutes (moins de 3 minutes le lendemain)
&lt;/p&gt;

&lt;p&gt;
NB: Dans la documentation, les exemples de ce type présentent la fonction &lt;em&gt;ST_Translate&lt;/em&gt; avec les options de translation suivante

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ST_Translate(
			ST_MakeEnvelope(
				ST_UpperLeftX(raster), ST_UpperLeftY(raster),
				ST_UpperLeftX(raster) + ST_ScaleX(raster),
				ST_UpperLeftY(raster) + ST_ScaleY(raster), 2154
				), 
			ST_ScaleX(raster)*x, 
			ST_ScaleY(raster)*y
		)&lt;/pre&gt;

&lt;p&gt;

causant un décalage d&amp;#039;un pixel en x et y!!!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT15 SECTION &quot;Vectorisation d'une sélection sur la valeur de pixels dans une sous partie du raster&quot; [4851-6290] --&gt;
&lt;h2 class=&quot;sectionedit16&quot;&gt;&lt;a name=&quot;creation_d_une_couche_vecteur_issue_de_l_intersection_d_un_raster_recuperation_de_la_valeur_du_pixel_et_d_un_vecteur_recuperation_du_gid&quot; id=&quot;creation_d_une_couche_vecteur_issue_de_l_intersection_d_un_raster_recuperation_de_la_valeur_du_pixel_et_d_un_vecteur_recuperation_du_gid&quot;&gt;création d&amp;#039;une couche vecteur issue de l&amp;#039;intersection d&amp;#039;un raster (récupération de la valeur du pixel) et d&amp;#039;un vecteur (récupération du gid)&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; foo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rid&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; foo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id_entite_occsol&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ST_AsText&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;foo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geomval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geom&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geomwkt&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;foo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geomval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; A&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rid&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ocsol_1_commune34&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id_entite_occsol &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ST_Intersection&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;A&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;raster&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ocsol_1_commune34&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geometrie&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geomval
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; bd_topo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;mnt &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; A 
		&lt;span class=&quot;kw1&quot;&gt;CROSS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=use password=pass'&lt;/span&gt;::text&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;'
			SELECT id_entite_occsol, area, perimeter, idpol_06, st_transform(raster_test_ocsol_1_commune34.geometrie, 2154) as geometrie, id_poste, code_insee
			FROM raster_test_ocsol_1_commune34'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; true
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ocsol_1_commune34&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id_entite_occsol integer&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; area double precision&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; perimeter double precision&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
			idpol_06 character varying&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie geometry&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; id_poste character varying&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
			code_insee character varying&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; A&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rid &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; 
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; foo;&lt;/pre&gt;

&lt;p&gt;
ou 
&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; foo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rid&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; foo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id_entite_occsol&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ST_AsText&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;foo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geomval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geom&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geomwkt&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;foo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geomval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; A&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rid&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ocsol_1_commune34&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id_entite_occsol &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ST_Intersection&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;A&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;raster&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ocsol_1_commune34&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geometrie&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geomval
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; bd_topo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;mnt &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; A 
		&lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=use password=pass'&lt;/span&gt;::text&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;'
			SELECT id_entite_occsol, area, perimeter, idpol_06, st_transform(raster_test_ocsol_1_commune34.geometrie, 2154) as geometrie, id_poste, code_insee
			FROM raster_test_ocsol_1_commune34'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; true
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ocsol_1_commune34&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id_entite_occsol integer&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; area double precision&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; perimeter double precision&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
			idpol_06 character varying&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie geometry&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; id_poste character varying&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
			code_insee character varying&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; st_intersects&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ocsol_1_commune34&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geometrie&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; A&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; A&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rid &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; 
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; foo;&lt;/pre&gt;

&lt;p&gt;
Ces deux requêtes font planter PostgreSQL et seul un redémarrage de l&amp;#039;ordinatuer permet la reconnexion au serveur!!!
&lt;/p&gt;

&lt;p&gt;
Quant à 

&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_entite_occsol&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geom&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val alti
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_entite_occsol&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ST_Intersection&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;geometrie&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; gv
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=use password=pass'&lt;/span&gt;::text&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;'
			SELECT id_entite_occsol, area, perimeter, 
			idpol_06, 
			cleangeometry(st_transform(raster_test_ocsol_1_commune34.geometrie, 2154)) as geometrie, 
			id_poste, code_insee
			FROM raster_test_ocsol_1_commune34'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; true
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ocsol_1_commune34&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id_entite_occsol integer&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; area double precision&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; perimeter double precision&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
			idpol_06 character varying&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
			geometrie geometry&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
			id_poste character varying&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; code_insee character varying&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
		bd_topo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;mnt
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; ST_Intersects&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; sub
&lt;span class=&quot;kw1&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;

cela renvoie l&amp;#039;erreur

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ERREUR: Error creating GEOS Coordinate Sequence
État SQL :XX000
Contexte : PL/pgSQL function &amp;quot;_st_intersects&amp;quot; line 28 at affectation&lt;/pre&gt;

&lt;p&gt;

ou un “Microsoft Visual C++ Runtime Library Error”
&lt;/p&gt;

&lt;/div&gt;

&lt;h4&gt;&lt;a name=&quot;test_2eme&quot; id=&quot;test_2eme&quot;&gt;Test 2ème&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Les mêmes opérations sont recommencées après que le raster ait été réintégré mais sous forme de tuiles de 250*250px.
&lt;/p&gt;

&lt;p&gt;
Là les dernières requêtes aboutissent mais ne renvoient aucun résultat
&lt;/p&gt;

&lt;/div&gt;

&lt;h4&gt;&lt;a name=&quot;tests_3eme&quot; id=&quot;tests_3eme&quot;&gt;Tests 3ème&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;strong&gt;SUCCES&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Croisement de données de type ponctuel avec le MNT du département de l&amp;#039;Hérault :

&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Attribution de la valeur d&amp;#039;altitude du &lt;strong&gt;MNT&lt;/strong&gt; au &lt;strong&gt;point d&amp;#039;observation de 10 individu&lt;/strong&gt; issus d&amp;#039;une autre base (via &lt;em&gt;dblink&lt;/em&gt;).&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_obs&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; nom_complet&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cd_nom&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
		&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
		&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geom &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geometrie
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_obs&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; nom_complet&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cd_nom&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
			ST_Intersection&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; gv
		&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; srtm&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;srtm_lr_wgs84_block&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
			dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=use password=pass'&lt;/span&gt;::text&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
				&lt;span class=&quot;st0&quot;&gt;'SELECT id_obs, nom_complet, cd_nom, 
					st_transform(st_buffer(st_transform(geometrie, 2154), 100), 4326) as geometrie
				FROM saisie.saisie_observation
				LIMIT 10'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
				tampon_pts_test&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id_obs integer&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; nom_complet character varying&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
					cd_nom character varying&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie geometry&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; ST_Intersects&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; foo&lt;/pre&gt;

&lt;p&gt;

Résultat en 3.5 s:

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;id_obs  |nom_complet                                            |cd_nom |val
2       |Zerynthia polyxena (Denis &amp;amp; Schiffermüller, 1775)      |8267	|518
3	|Pyrgus malvae (Linnaeus, 1758)	                        |53221	|59
28	|Tircis	Pararge aegeria (Linnaeus, 1758)	        |53595	|63
17235	|Issoria lathonia (Linnaeus, 1758)	                |53908	|1547
21248	|Chazara briseis (Linnaeus, 1764)	                |53425	|92
21690	|Gonepteryx cleopatra (Linnaeus, 1767)	                |54419	|233
21733	|Papilio sibilla Linnaeus, 1767	                        |392395	|391
22122	|Maculinea arion Linnaeus, 1758	                        |54085	|236
22123	|Maculinea alcon rebeli Hirschke, 1904	                |54083	|236
43	|Melanargia lachesis (Hübner, 1790)	                |219805	|142&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Même chose mais avec une &lt;strong&gt;zone tampon de 100 m&lt;/strong&gt; autour des données ponctuelles pour attribuer à chaque espèce les différentes altitudes environnantes.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;em&gt;NB: les données vecteur étant en WGS84, on réalise la zone tampon après avoir les avoir convertis dans un sytème projeté (ici Lambert93).
PostGIS ne gérant pas la projection à la volée des raster, les zones tampons sont reprojetées en WGS84 pour réaliser le croisement spatial&lt;/em&gt;

&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_obs&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; nom_complet&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cd_nom&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
		&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
		&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geom &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geometrie
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_obs&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; nom_complet&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cd_nom&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
			ST_Intersection&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; gv
		&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; srtm&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;srtm_lr_wgs84_block&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
			dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=use password=pass'&lt;/span&gt;::text&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
				&lt;span class=&quot;st0&quot;&gt;'SELECT id_obs, nom_complet, cd_nom, 
					st_transform(st_buffer(st_transform(geometrie, 2154), 100), 4326) as geometrie
				FROM saisie.saisie_observation
				LIMIT 10'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
				tampon_pts_test&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id_obs integer&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; nom_complet character varying&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
					cd_nom character varying&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie geometry&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; ST_Intersects&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; foo
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; nom_complet&lt;/pre&gt;

&lt;p&gt;

Temps d&amp;#039;éxécution : 3.5 s

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; premières lignes de résultats...
id_obs  |nom_complet                            |cd_nom |val
21248   |Chazara briseis (Linnaeus, 1764)	|53425	|70
21248	|Chazara briseis (Linnaeus, 1764)	|53425	|71
21248	|Chazara briseis (Linnaeus, 1764)	|53425	|78
21248	|Chazara briseis (Linnaeus, 1764)	|53425	|79
21248	|Chazara briseis (Linnaeus, 1764)	|53425	|92
21248	|Chazara briseis (Linnaeus, 1764)	|53425	|102
21248	|Chazara briseis (Linnaeus, 1764)	|53425	|109
21248	|Chazara briseis (Linnaeus, 1764)	|53425	|126
21248	|Chazara briseis (Linnaeus, 1764)	|53425	|148
21248	|Chazara briseis (Linnaeus, 1764)	|53425	|157
21690	|Gonepteryx cleopatra (Linnaeus, 1767)	|54419	|208
21690	|Gonepteryx cleopatra (Linnaeus, 1767)	|54419	|215
21690	|Gonepteryx cleopatra (Linnaeus, 1767)	|54419	|217
...     |...                                    |...    |...  &lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;&lt;a name=&quot;vectorisation_du_srtm_intersectant_le_departement_de_l_herault_pour_les_altitudes_a_600_m&quot; id=&quot;vectorisation_du_srtm_intersectant_le_departement_de_l_herault_pour_les_altitudes_a_600_m&quot;&gt;Vectorisation du SRTM intersectant le département de l&amp;#039;hérault pour les altitudes &amp;gt;= à 600 m&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;strong&gt;SUCCES&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; val&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geometrie
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt;	&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; rid&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_DumpAsPolygons&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geom &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geometrie&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_DumpAsPolygons&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; srtm&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;srtm_lr_wgs84_block
		&lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=use password=pass'&lt;/span&gt;::text&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
				&lt;span class=&quot;st0&quot;&gt;'SELECT code_dept, st_transform((geometrie), 4326) as geometrie
				FROM ign_bd_topo.departements_lr 
				WHERE code_dept='&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'34'&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;
				&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; dept_34&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;code_dept character varying&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie geometry&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; ST_Intersects&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; srtm_34
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; val&lt;span class=&quot;sy0&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;600&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;

temps d&amp;#039;exécution : 5 minutes
&lt;/p&gt;

&lt;/div&gt;

&lt;h5&gt;&lt;a name=&quot;un_peu_plus_loincreation_d_une_couche_forets_montagnardes_par_croisement_d_ocsol_et_du_srtm&quot; id=&quot;un_peu_plus_loincreation_d_une_couche_forets_montagnardes_par_croisement_d_ocsol_et_du_srtm&quot;&gt;un peu plus loin: Création d&amp;#039;une couche &amp;quot;forêts montagnardes&amp;quot; par croisement d&amp;#039;OCSOL et du SRTM&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_entite_occsol&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; id_poste&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; val&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ST_Intersection&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;zone_montagne_34&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geometrie&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ocsol_foret_34&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geometrie&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geometrie
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt;	&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; val&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt;	&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; rid&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_DumpAsPolygons&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geom &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geometrie&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_DumpAsPolygons&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val
		&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; srtm&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;srtm_lr_wgs84_block
			&lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=use password=pass'&lt;/span&gt;::text&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
					&lt;span class=&quot;st0&quot;&gt;'SELECT code_dept, st_transform((geometrie), 4326) as geometrie
					FROM ign_bd_topo.departements_lr 
					WHERE code_dept='&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'34'&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;
					&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; dept_34&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;code_dept character varying&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie geometry&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; ST_Intersects&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; srtm_34
	&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; val&lt;span class=&quot;sy0&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;600&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; zone_montagne_34
	&lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=use password=pass'&lt;/span&gt;::text&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;'
				SELECT id_entite_occsol, area, perimeter, st_transform(cleangeometry(occsol_2006.geometrie), 4326) as geometrie,
					id_poste
				FROM occupation_du_sol.occsol_2006
					JOIN ign_bd_topo.departements_lr ON st_intersects(occsol_2006.geometrie, departements_lr.geometrie)
				WHERE id_poste LIKE '&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'31%'&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;' AND code_dept='&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'34'&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;
				&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ocsol_foret_34&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id_entite_occsol integer&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; area double precision&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
					perimeter double precision&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie geometry&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
					id_poste character varying&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; ST_Intersects&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;zone_montagne_34&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geometrie&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ocsol_foret_34&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geometrie&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;

&lt;strong&gt;SUCCES&lt;/strong&gt;!!
Temps d&amp;#039;exécution : près de 350 minutes, soit près de 6H !!!
Possibilité d&amp;#039;améliorer l&amp;#039;exécution? A voir.
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;Pour info/rappel, les sous requêtes s&amp;#039;exécutent respectivement en 5 et 7.5 minutes&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Cette requête a été retentée en modifiant la sous-requête &lt;em&gt;ocsol_foret_34&lt;/em&gt;&lt;/strong&gt; en retirant l&amp;#039;intersection avec le département 34, en pensant que la &lt;em&gt;dblink&lt;/em&gt; allait pouvoir utiliser les index de la table &lt;em&gt;ocsol&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
Résultat : temps d&amp;#039;exécution 380 minutes. Aucun gain!
&lt;/p&gt;

&lt;/div&gt;

&lt;h4&gt;&lt;a name=&quot;vectorisation_du_mnt_du_departement_de_l_herault_pour_les_altitudes_a_600_m&quot; id=&quot;vectorisation_du_mnt_du_departement_de_l_herault_pour_les_altitudes_a_600_m&quot;&gt;Vectorisation du MNT du département de l&amp;#039;Hérault pour les altitudes &amp;gt;= à 600 m&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;/div&gt;

&lt;h5&gt;&lt;a name=&quot;avec_un_mnt_en_tuiles_de_250_px&quot; id=&quot;avec_un_mnt_en_tuiles_de_250_px&quot;&gt;Avec un MNT en tuiles de 250 px&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; val&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt;	&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; rid&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_DumpAsPolygons&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geom &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geometrie&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_DumpAsPolygons&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val
		&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; bd_topo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;mnt_34_tif_block
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; mnt_34
	&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; val&lt;span class=&quot;sy0&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;600&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;

temps d&amp;#039;éxécution : 39 minutes
&lt;/p&gt;

&lt;/div&gt;

&lt;h5&gt;&lt;a name=&quot;avec_un_mnt_en_tuiles_de_60px&quot; id=&quot;avec_un_mnt_en_tuiles_de_60px&quot;&gt;Avec un MNT en tuiles de 60px&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; val&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; geometrie
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt;	&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; rid&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_DumpAsPolygons&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geom &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geometrie&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_DumpAsPolygons&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val
		&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; bd_topo&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;mnt_34_tif_block60
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; mnt_34
	&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; val&lt;span class=&quot;sy0&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;600&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;

temps d&amp;#039;exécution : 38 minutes
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;La taille des tuiles ne semble pas être un élément d&amp;#039;optimisation des requêtes.&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT16 SECTION &quot;création d'une couche vecteur issue de l'intersection d'un raster (récupération de la valeur du pixel) et d'un vecteur (récupération du gid)&quot; [6291-16408] --&gt;
&lt;h2 class=&quot;sectionedit17&quot;&gt;&lt;a name=&quot;creation_d_une_fonction_pour_recuperer_les_valeurs_d_un_raster_d_une_base_distante_a_partir_d_une_couche_vecteur&quot; id=&quot;creation_d_une_fonction_pour_recuperer_les_valeurs_d_un_raster_d_une_base_distante_a_partir_d_une_couche_vecteur&quot;&gt;Création d&amp;#039;une fonction pour récupérer les valeurs d&amp;#039;un raster d&amp;#039;une base distante à partir d&amp;#039;une couche vecteur&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h4&gt;&lt;a name=&quot;recuperation_pour_des_donnees_ponctuelles_des_altitudes_correspondantes_du_mnt_du_departement_de_l_herault_stocke_sur_un_autre_serveur&quot; id=&quot;recuperation_pour_des_donnees_ponctuelles_des_altitudes_correspondantes_du_mnt_du_departement_de_l_herault_stocke_sur_un_autre_serveur&quot;&gt;Récupération pour des données ponctuelles des altitudes correspondantes du MNT du département de l&amp;#039;Hérault stocké sur un autre serveur&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;

Création d&amp;#039;une fonction opérant dans la base distante qui comporte les différents types et fonctions “raster”.
Le paramètre de la fonction est une géométrie au format texte.
&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;OR&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;REPLACE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FUNCTION&lt;/span&gt; cen_calcul_mnt_point&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  RETURNS double precision &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt;
$BODY$	
DECLARE
	var_geom alias &lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; $&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
	val_rec RECORD;
	var_alt double precision;
BEGIN
	&lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; val_rec &lt;span class=&quot;kw1&quot;&gt;IN&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; val
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=use password=pass'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;st0&quot;&gt;'SELECT (gv).val as val
			FROM (
				SELECT ST_Intersection(raster, ST_Geomfromtext('&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;var_geom&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;', 2154)) AS gv
				FROM bd_topo.mnt_34_tif_block60
				WHERE ST_Intersects(raster, ST_Geomfromtext('&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;var_geom&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;', 2154))
			) foo'&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;mnt_test &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val double precision&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	LOOP
	var_alt:&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; val_rec&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val;
	END LOOP;
&lt;span class=&quot;kw1&quot;&gt;RETURN&lt;/span&gt; var_alt;
END;
$BODY$
  &lt;span class=&quot;kw1&quot;&gt;LANGUAGE&lt;/span&gt; plpgsql VOLATILE
  COST &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;
Exemple d&amp;#039;utilisation sur un échantillon de 10 données.

&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_obs&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; nom_complet&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cen_calcul_mnt_point&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_AsText&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;st_transform&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;geometrie&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2154&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; alt
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; saisie&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;saisie_observation
&lt;span class=&quot;kw1&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Résultat

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;id_obs;nom_complet                                        ;alt
2     ;&amp;quot;Zerynthia polyxena (Denis &amp;amp; Schiffermüller, 1775)&amp;quot;;
3     ;&amp;quot;Pyrgus malvae (Linnaeus, 1758)&amp;quot;                   ;59
28    ;&amp;quot;Pararge aegeria (Linnaeus, 1758)&amp;quot;                 ;64
17235 ;&amp;quot;Issoria lathonia (Linnaeus, 1758)&amp;quot;                ;
21248 ;&amp;quot;Chazara briseis (Linnaeus, 1764)&amp;quot;                 ;88
21690 ;&amp;quot;Gonepteryx cleopatra (Linnaeus, 1767)&amp;quot;            ;
21733 ;&amp;quot;Papilio sibilla Linnaeus, 1767&amp;quot;                   ;388
22122 ;&amp;quot;Maculinea arion Linnaeus, 1758&amp;quot;                   ;
22123 ;&amp;quot;Maculinea alcon rebeli Hirschke, 1904&amp;quot;            ;
22148 ;&amp;quot;Maculinea alcon D., 1775&amp;quot;                         ;&lt;/pre&gt;

&lt;p&gt;

temps d&amp;#039;exécution : 1.6 s
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;NB: Si pour certaines données vecteurs nous n&amp;#039;avons pas de donnée d&amp;#039;altitude, c&amp;#039;est que ces données ne concernent pas le département de l&amp;#039;Hérault&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4&gt;&lt;a name=&quot;recuperation_pour_des_donnees_surfaciques_des_altitudes_correspondantes_du_mnt_du_departement_de_l_herault_stocke_sur_un_autre_serveur&quot; id=&quot;recuperation_pour_des_donnees_surfaciques_des_altitudes_correspondantes_du_mnt_du_departement_de_l_herault_stocke_sur_un_autre_serveur&quot;&gt;Récupération pour des données surfaciques des altitudes correspondantes du MNT du département de l&amp;#039;Hérault stocké sur un autre serveur&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;/div&gt;

&lt;h5&gt;&lt;a name=&quot;moyenne_maximum_minimum_et_ecart_type&quot; id=&quot;moyenne_maximum_minimum_et_ecart_type&quot;&gt;Moyenne, Maximum, Minimum et Écart type&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Création d&amp;#039;un TYPE de donnée composite qui contiendra les données calculées du MNT concernant un polygone : identifiant du polygone (pour les calcul d&amp;#039;agrégation), altitude moyenne, altitude maximum, altitude minimum et écart type.

&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; TYPE enum_stat_mnt &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id integer&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    moy numeric&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    max numeric&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    min numeric&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    ecart_type numeric&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;
Création d&amp;#039;une fonction opérant dans la base distante qui comporte les différents types et fonctions “raster”.
&lt;/p&gt;

&lt;p&gt;
Les paramètres de la fonction sont l&amp;#039;identifiant du polygone et la géométrie au format texte.

&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;OR&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;REPLACE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FUNCTION&lt;/span&gt; cen_calcul_stat_mnt_polygone&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;integer&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  RETURNS enum_stat_mnt &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt;
$BODY$	
DECLARE
	var_id alias &lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; $&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
	var_geom alias &lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; $&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;;
	myrec enum_stat_mnt;
BEGIN
	&lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; myrec &lt;span class=&quot;kw1&quot;&gt;IN&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; var_id &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; id&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; round&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;avg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; moy&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; max&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; max&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; min&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; min&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
			round&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;stddev&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;::numeric&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; ecart_type
		&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=use password=pass'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;st0&quot;&gt;'SELECT (gv).val as val				
			FROM (
				SELECT ST_Intersection(raster, ST_Geomfromtext('&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;var_geom&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;', 2154)) AS gv
				FROM bd_topo.mnt_34_tif_block60
				WHERE ST_Intersects(raster, ST_Geomfromtext('&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;var_geom&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;', 2154))
				) foo'&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; mnt_polyg_test &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val numeric&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; var_id
	LOOP
	END LOOP;
&lt;span class=&quot;kw1&quot;&gt;RETURN&lt;/span&gt; myrec;
END;
$BODY$
  &lt;span class=&quot;kw1&quot;&gt;LANGUAGE&lt;/span&gt; plpgsql VOLATILE
  COST &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;;
&amp;nbsp;&lt;/pre&gt;

&lt;p&gt;
Exemple d&amp;#039;utilisation sur une zone tampon de 10 m pratiquée sur l&amp;#039;échantillon précédent.

&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_obs&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; nom_complet&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;stat&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;moy&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;stat&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;max&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;stat&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;min&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;stat&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;ecart_type
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_obs&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; nom_complet&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
		cen_calcul_stat_mnt_polygone&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id_obs&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ST_AsText&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;st_buffer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;st_transform&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;geometrie&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2154&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; stat
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; saisie&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;saisie_observation
	&lt;span class=&quot;kw1&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;polyg_test&lt;/pre&gt;

&lt;p&gt;
Résultat:

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;id_obs;nom_complet                                        ;moy;max;min;ecart_type
2     ;&amp;quot;Zerynthia polyxena (Denis &amp;amp; Schiffermüller, 1775)&amp;quot;;
3     ;&amp;quot;Pyrgus malvae (Linnaeus, 1758)&amp;quot;                   ;58 ;59 ;57 ;1.41
28    ;&amp;quot;Pararge aegeria (Linnaeus, 1758)&amp;quot;                 ;64 ;64 ;64 ;
17235 ;&amp;quot;Issoria lathonia (Linnaeus, 1758)&amp;quot;                ;
21248 ;&amp;quot;Chazara briseis (Linnaeus, 1764)&amp;quot;                 ;92 ;101;84 ;7.68
21690 ;&amp;quot;Gonepteryx cleopatra (Linnaeus, 1767)&amp;quot;            ;
21733 ;&amp;quot;Papilio sibilla Linnaeus, 1767&amp;quot;                   ;388;388;388;
22122 ;&amp;quot;Maculinea arion Linnaeus, 1758&amp;quot;                   ;
22123 ;&amp;quot;Maculinea alcon rebeli Hirschke, 1904&amp;quot;            ;
22148 ;&amp;quot;Maculinea alcon D., 1775&amp;quot;                         ;&lt;/pre&gt;

&lt;p&gt;

temps d&amp;#039;exécution : 1.7 s
&lt;/p&gt;

&lt;/div&gt;

&lt;h5&gt;&lt;a name=&quot;medianes_du_jeu_de_donnees_maximum_et_minimum_et_mediane_calculee&quot; id=&quot;medianes_du_jeu_de_donnees_maximum_et_minimum_et_mediane_calculee&quot;&gt;Médianes du jeu de données (maximum et minimum) et Médiane calculée&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Création d&amp;#039;un TYPE de données composite qui contiendra les données calculées du MNT concernant un polygone : médiane maximum, médiane minimum, médiane calculée.

&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; TYPE enum_median_mnt &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;min_med numeric&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    max_med numeric&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    calc_med numeric&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;
Création d&amp;#039;une fonction opérant dans la base distante qui comporte les différents types et fonctions “raster”.
&lt;/p&gt;

&lt;p&gt;
Mais avant ça, une fonction intermédiaire est nécessaire pour calculer les occurrences cumulées des différentes valeurs
les paramètres de cette “sous-fonction” sont: la valeur en question, l&amp;#039;identifiant et la géométrie de l&amp;#039;objet.

&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;OR&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;REPLACE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FUNCTION&lt;/span&gt; cen_mnt_occurence_cumul&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;numeric&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; integer&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  RETURNS numeric &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt;
$BODY$	
DECLARE
	var_val alias &lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; $&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;	
	var_id alias &lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; $&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;;
	var_geom alias &lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; $&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;;
	myrec record;
BEGIN
	&lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; myrec &lt;span class=&quot;kw1&quot;&gt;IN&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; sum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; occ_cum 
		&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; var_id &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; id&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; val &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; alt&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; occ
			&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=use password=pass'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
					&lt;span class=&quot;st0&quot;&gt;'SELECT (gv).val as val			
					FROM (
						SELECT ST_Intersection(raster, ST_Geomfromtext('&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;var_geom&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;', 2154)) AS gv
						FROM bd_topo.mnt_34_tif_block60
						WHERE ST_Intersects(raster, ST_Geomfromtext('&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;var_geom&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;', 2154))
						) foo
					ORDER by val'&lt;/span&gt;
				&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; mnt_polyg_test &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val numeric&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; id&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; val
			&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; id&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; val
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; mnt_polygone_occ 
		&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; alt &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; var_val
	LOOP
	END LOOP;
&lt;span class=&quot;kw1&quot;&gt;RETURN&lt;/span&gt; myrec&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;occ_cum;
END;
$BODY$
  &lt;span class=&quot;kw1&quot;&gt;LANGUAGE&lt;/span&gt; plpgsql VOLATILE
  COST &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;
Puis la “fonction principale”,
dont les paramètre sont l&amp;#039;identifiant du polygone et la géométrie au format texte:

&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;OR&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;REPLACE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FUNCTION&lt;/span&gt; cen_calcul_mediane_mnt_polygone&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;integer&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  RETURNS enum_median_mnt &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt;
$BODY$	
DECLARE
	var_id alias &lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; $&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
	var_geom alias &lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; $&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;;
	myrec enum_median_mnt;
BEGIN
	&lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; myrec &lt;span class=&quot;kw1&quot;&gt;IN&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;WITH&lt;/span&gt; mnt_polygone_occ &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; var_id &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; id&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; val &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; alt&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; occ
			&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=use password=pass'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
					&lt;span class=&quot;st0&quot;&gt;'SELECT (gv).val as val			
					FROM (
						SELECT ST_Intersection(raster, ST_Geomfromtext('&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;var_geom&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;', 2154)) AS gv
						FROM bd_topo.mnt_34_tif_block60
						WHERE ST_Intersects(raster, ST_Geomfromtext('&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;var_geom&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;', 2154))
						) foo
					ORDER by val'&lt;/span&gt;
				&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; mnt_polyg_test &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val numeric&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; id&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; val
			&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; id&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; val
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; min&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mnt_polygone_occ&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;alt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; min_median&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; max&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mnt_polygone_occ&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;alt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; max_median&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
			round&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;min&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mnt_polygone_occ&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;alt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;max&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mnt_polygone_occ&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;alt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; calc_median
		&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; mnt_polygone_occ
		&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; cen_mnt_occurence_cumul&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;alt&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; var_id&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; var_geom&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; sum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mnt_polygone_occ&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; n_demi &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; mnt_polygone_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
	LOOP
	END LOOP;
&lt;span class=&quot;kw1&quot;&gt;RETURN&lt;/span&gt; myrec;
END;
$BODY$
  &lt;span class=&quot;kw1&quot;&gt;LANGUAGE&lt;/span&gt; plpgsql VOLATILE
  COST &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;;
&amp;nbsp;&lt;/pre&gt;

&lt;p&gt;
Exemple d&amp;#039;utilisation sur une zone tampon de 10 m pratiquée sur l&amp;#039;échantillon précédent.

&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_obs&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; nom_complet&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;med&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;min_med&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;med&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;max_med&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;med&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;calc_med
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_obs&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; nom_complet&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
		cen_calcul_mediane_mnt_polygone&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id_obs&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ST_AsText&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;st_buffer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;st_transform&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;geometrie&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2154&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; med
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; saisie&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;saisie_observation
	&lt;span class=&quot;kw1&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;polyg_med_test&lt;/pre&gt;

&lt;p&gt;
Résultat:

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;id_obs;nom_complet                                        ;min_med;max_med;calc_med
2     ;&amp;quot;Zerynthia polyxena (Denis &amp;amp; Schiffermüller, 1775)&amp;quot;;
3     ;&amp;quot;Pyrgus malvae (Linnaeus, 1758)&amp;quot;                   ;57     ;59     ;58.00
28    ;&amp;quot;Pararge aegeria (Linnaeus, 1758)&amp;quot;                 ;64     ;64     ;64.00
17235 ;&amp;quot;Issoria lathonia (Linnaeus, 1758)&amp;quot;                ;
21248 ;&amp;quot;Chazara briseis (Linnaeus, 1764)&amp;quot;                 ;88     ;101    ;94.50
21690 ;&amp;quot;Gonepteryx cleopatra (Linnaeus, 1767)&amp;quot;            ;
21733 ;&amp;quot;Papilio sibilla Linnaeus, 1767&amp;quot;                   ;388    ;388    ;388.00
22122 ;&amp;quot;Maculinea arion Linnaeus, 1758&amp;quot;                   ;
22123 ;&amp;quot;Maculinea alcon rebeli Hirschke, 1904&amp;quot;            ;
22148 ;&amp;quot;Maculinea alcon D., 1775&amp;quot;                         ;&lt;/pre&gt;

&lt;p&gt;

temps d&amp;#039;exécution : 4.3 s
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT17 SECTION &quot;Création d'une fonction pour récupérer les valeurs d'un raster d'une base distante à partir d'une couche vecteur&quot; [16409-25537] --&gt;
&lt;h2 class=&quot;sectionedit18&quot;&gt;&lt;a name=&quot;creation_d_une_fonction_pour_recuperer_les_valeurs_de_plusieurs_rasters_d_une_base_distante_a_partir_d_une_couche_vecteur&quot; id=&quot;creation_d_une_fonction_pour_recuperer_les_valeurs_de_plusieurs_rasters_d_une_base_distante_a_partir_d_une_couche_vecteur&quot;&gt;Création d&amp;#039;une fonction pour récupérer les valeurs de plusieurs rasters d&amp;#039;une base distante à partir d&amp;#039;une couche vecteur&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h4&gt;&lt;a name=&quot;recuperation_pour_des_donnees_ponctuelles_des_altitudes_correspondantes_au_mnt_du_departement_concerne_stocke_sur_un_autre_serveur&quot; id=&quot;recuperation_pour_des_donnees_ponctuelles_des_altitudes_correspondantes_au_mnt_du_departement_concerne_stocke_sur_un_autre_serveur&quot;&gt;Récupération pour des données ponctuelles des altitudes correspondantes au MNT du département concerné stocké sur un autre serveur&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;

Création d&amp;#039;une fonction opérant dans la base distante qui comporte les différents types et fonctions “raster”.
Le paramètre de la fonction est une géométrie au format texte et le numéro du département extrait du code_insee de la commune où est localisée la donnée.
&lt;/p&gt;

&lt;p&gt;
Chaque table RASTER étant nommée avec son numéro du département, on concatène dans le dblink() le paramètre “numéro de département” dans le nom de la table appelée.
&lt;/p&gt;

&lt;p&gt;
Seuls les MNT des départements de la région Languedoc-Roussillon ont été intégrés, d&amp;#039;où le WHERE.
&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;OR&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;REPLACE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FUNCTION&lt;/span&gt; cen_calcul_mnt_point_v2&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  RETURNS double precision &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt;
$BODY$	
DECLARE
	var_geom alias &lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; $&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
	val_rec RECORD;
	var_alt double precision;
	var_dept alias &lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; $&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;;
BEGIN
	&lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; val_rec &lt;span class=&quot;kw1&quot;&gt;IN&lt;/span&gt;	
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; val
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; dblink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'hostaddr=host port=5432 dbname=db user=user password=pw'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;st0&quot;&gt;'SELECT (gv).val as val
			FROM (
				SELECT ST_Intersection(raster, ST_Geomfromtext('&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;var_geom&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;', 2154)) AS gv
				FROM bd_topo.mnt_'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;var_dept&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'_asc_block60
				WHERE ST_Intersects(raster, ST_Geomfromtext('&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;var_geom&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;', 2154))
			) foo'&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;mnt_test &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val double precision&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; var_dept &lt;span class=&quot;kw1&quot;&gt;IN&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'11'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;'30'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;'34'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;'48'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;'66'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	LOOP
	var_alt:&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; val_rec&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val;
	END LOOP;
&lt;span class=&quot;kw1&quot;&gt;RETURN&lt;/span&gt; var_alt;
END;
$BODY$
  &lt;span class=&quot;kw1&quot;&gt;LANGUAGE&lt;/span&gt; plpgsql VOLATILE
  COST &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;
Exemple d&amp;#039;utilisation sur les données dont le champ “elevation” n&amp;#039;est pas renseigné.

&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id_obs&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; nom_complet&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; substring&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;code_insee &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
	cen_calcul_mnt_point_v2&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_AsText&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;st_transform&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;geometrie&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2154&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; substring&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;code_insee &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FOR&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; alt
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; saisie&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;saisie_observation
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; saisie_observation&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;elevation &lt;span class=&quot;kw1&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
temps d&amp;#039;exécution pour 139 données : 40 s
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT18 SECTION &quot;Création d'une fonction pour récupérer les valeurs de plusieurs rasters d'une base distante à partir d'une couche vecteur&quot; [25538-27559] --&gt;
&lt;h2 class=&quot;sectionedit19&quot;&gt;&lt;a name=&quot;test_du_tutoriel_de_pierre_racine&quot; id=&quot;test_du_tutoriel_de_pierre_racine&quot;&gt;Test du tutoriel de Pierre racine&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://trac.osgeo.org/postgis/wiki/WKTRasterTutorial01&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://trac.osgeo.org/postgis/wiki/WKTRasterTutorial01&quot;  rel=&quot;nofollow&quot;&gt;http://trac.osgeo.org/postgis/wiki/WKTRasterTutorial01&lt;/a&gt;
SRTM/données odonates-papillons
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT19 SECTION &quot;Test du tutoriel de Pierre racine&quot; [27560-27695] --&gt;
&lt;h3 class=&quot;sectionedit20&quot;&gt;&lt;a name=&quot;chargement_du_srtm_dans_postgis&quot; id=&quot;chargement_du_srtm_dans_postgis&quot;&gt;chargement du SRTM dans postgis&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
chargement du raster en tuiles carrées de 60px de côté.

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;raster2pgsql.py -r G:\TEMP\SRTM\srtm_37_04.tif -t srtm.srtm_lr_wgs84_block -s 4326 -c -f raster -F -I -M -k 60x60| psql -d raster_lr -h localhost -U yoann&lt;/pre&gt;

&lt;p&gt;

La table produite comprend 10201 enregistrements/tuiles.
Propriétés/métadonnées de la table

&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;md&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.*,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bmd&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.*&lt;/span&gt; 
 &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; ST_Metadata&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; md&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
              ST_BandMetadata&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; bmd 
       &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; srtm&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;srtm_lr_wgs84_block &lt;span class=&quot;kw1&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; foo;&lt;/pre&gt;

&lt;/div&gt;

&lt;h5&gt;&lt;a name=&quot;visualisation_de_l_etendue_du_raster_dans_qgis&quot; id=&quot;visualisation_de_l_etendue_du_raster_dans_qgis&quot;&gt;visualisation de l&amp;#039;étendue du raster dans QGIS&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
avec l&amp;#039;extension &lt;em&gt;Fast &lt;acronym title=&quot;Structured Query Language&quot;&gt;SQL&lt;/acronym&gt; layer&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Bien nommer les champs de la requête avec des alias. 
Saisir les alias des champs “identifiant” et “géométrique” dans la barre de dessous de la fenêtre &lt;em&gt;Query&lt;/em&gt;. 
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Attention! QuantumGIS, contrairement à OpenJUMP qui est utilisé dans le tutoriel, nécessite un champ unique!&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h5&gt;&lt;a name=&quot;etendue_de_chaque_tuile&quot; id=&quot;etendue_de_chaque_tuile&quot;&gt;étendue de chaque tuile&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; rid&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; raster::geometry &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geometrie
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; srtm&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;srtm_lr_wgs84_block&lt;/pre&gt;

&lt;p&gt;

&lt;a href=&quot;http://sig.cenlr.org/_detail/outils/postgis_raster/fast_query_qgis_raster.png?id=outils%3Apostgis_raster%3Acas_d_utilisation&quot; class=&quot;media&quot; title=&quot;outils:postgis_raster:fast_query_qgis_raster.png&quot;&gt;&lt;img src=&quot;http://sig.cenlr.org/_media/outils/postgis_raster/fast_query_qgis_raster.png?w=300&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h5&gt;&lt;a name=&quot;etendue_de_l_ensemble&quot; id=&quot;etendue_de_l_ensemble&quot;&gt;étendue de l&amp;#039;ensemble&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; id&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ST_Buffer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_Union&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster::geometry&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0.000001&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; geometrie
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; srtm&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;srtm_lr_wgs84_block&lt;/pre&gt;

&lt;p&gt;

&lt;em&gt;NB: Comme le souligne le tutoriel, la fonction &lt;/em&gt; ST_Buffer()&lt;em&gt; garantit la fusion des polygones d&amp;#039;emprise de chaque tuile qui n&amp;#039;auraient été que largement partielle (polygones non exactement jointifs!?) &lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://sig.cenlr.org/_detail/outils/postgis_raster/fast_query_qgis_raster_union.png?id=outils%3Apostgis_raster%3Acas_d_utilisation&quot; class=&quot;media&quot; title=&quot;outils:postgis_raster:fast_query_qgis_raster_union.png&quot;&gt;&lt;img src=&quot;http://sig.cenlr.org/_media/outils/postgis_raster/fast_query_qgis_raster_union.png?w=300&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h5&gt;&lt;a name=&quot;vectorisation_d_une_tuile&quot; id=&quot;vectorisation_d_une_tuile&quot;&gt;vectorisation d&amp;#039;une tuile&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_DumpAsPolygons&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;geom&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
        &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ST_DumpAsPolygons&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;raster&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val
 &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; srtm&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;srtm_lr_wgs84_block
 &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rid&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3299&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; val&lt;/pre&gt;

&lt;p&gt;

Temps d&amp;#039;exécution : 890 ms
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;visualisation dans QGIS&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Un problème se pose avec QGIS et la fonction &lt;em&gt;Fast &lt;acronym title=&quot;Structured Query Language&quot;&gt;SQL&lt;/acronym&gt; layer&lt;/em&gt;. Alors que les géométries résultantes sont justes, les valeurs attribuées sont erronées (expl: &lt;em&gt;1077739520&lt;/em&gt; pour une valeur attendue de &lt;em&gt;29&lt;/em&gt;.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;visualisation dans OpenJUMP&lt;/strong&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;http://sig.cenlr.org/_detail/outils/postgis_raster/sql_raster_oj_dap.png?id=outils%3Apostgis_raster%3Acas_d_utilisation&quot; class=&quot;media&quot; title=&quot;outils:postgis_raster:sql_raster_oj_dap.png&quot;&gt;&lt;img src=&quot;http://sig.cenlr.org/_media/outils/postgis_raster/sql_raster_oj_dap.png?w=300&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT20 SECTION &quot;chargement du SRTM dans postgis&quot; [27696-29789] --&gt;
&lt;h1 class=&quot;sectionedit21&quot;&gt;&lt;a name=&quot;croisement_srtmregion_biogeographiquecorine_land_cover&quot; id=&quot;croisement_srtmregion_biogeographiquecorine_land_cover&quot;&gt;Croisement SRTM/region biogéographique/Corine Land Cover&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Ce cas consiste à récupérer les habitats ouverts de la zone méditerranéenne situés en dessous de 700 mètres d&amp;#039;altitudes.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT21 SECTION &quot;Croisement SRTM/region biogéographique/Corine Land Cover&quot; [29790-29991] --&gt;
&lt;h2 class=&quot;sectionedit22&quot;&gt;&lt;a name=&quot;integration_de_la_mosaique_de_dalles&quot; id=&quot;integration_de_la_mosaique_de_dalles&quot;&gt;Intégration de la mosaïque de dalles&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Contrairement à ce qui a été fait dans les cas précédents, les dalles SRTM concernées (au nombre de 4) sont intégrées en tuiles de 50*50. L&amp;#039;intégration par tuiles de 60*60 crée des bordures vides.

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;création de la table et intégration de la première dalle
raster2pgsql.py -r G:\TEMP\SRTM\srtm_37_04\srtm_37_04.asc -t srtm.srtm_block_50 -s 4326 -c -f raster -F -I -M -k 50x50| psql -d dbname -h host -U user
insertion des autres dalles
raster2pgsql.py -r G:\TEMP\SRTM\srtm_38_04\srtm_38_04.asc -t srtm.srtm_block_50 -s 4326 -a -f raster -F -k 50x50| psql -d dbname -h host -U user
raster2pgsql.py -r G:\TEMP\SRTM\srtm_38_03\srtm_38_03.asc -t srtm.srtm_block_50 -s 4326 -a -f raster -F -k 50x50| psql -d dbname -h host -U user
raster2pgsql.py -r G:\TEMP\SRTM\srtm_37_03\srtm_37_03.asc -t srtm.srtm_block_50 -s 4326 -a -f raster -F -k 50x50| psql -d dbname -h host -U user&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT22 SECTION &quot;Intégration de la mosaïque de dalles&quot; [29992-30940] --&gt;
&lt;h2 class=&quot;sectionedit23&quot;&gt;&lt;a name=&quot;etape_1creation_de_la_couche_vectorielle_de_la_zone_mediterraneenne_sous_700_metre_d_altitude&quot; id=&quot;etape_1creation_de_la_couche_vectorielle_de_la_zone_mediterraneenne_sous_700_metre_d_altitude&quot;&gt;Etape 1: Création de la couche vectorielle de la zone méditerranéenne sous 700 mètre d&amp;#039;altitude&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Le traitement sur l&amp;#039;ensemble de la couche region_biogeo semble être trop lourd. La requête ci-dessous plante systématiquement.

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SELECT &amp;#039;&amp;lt;700m&amp;#039;as alti, ST_Buffer(ST_Union(geometrie), 0.000001) AS geometrie
FROM (
	SELECT val, geometrie AS geometrie
	FROM	(
		SELECT rid, (ST_DumpAsPolygons(raster)).geom AS geometrie, (ST_DumpAsPolygons(raster)).val
		FROM srtm.srtm_block_50
			JOIN biogeographie.region_biogeo ON ST_Intersects(raster, ST_Transform(geometrie, 4326))
		WHERE gid=4
		) srtm_med
	
	WHERE val&amp;lt;700
	) srtm_med_700&lt;/pre&gt;

&lt;p&gt;
Pour contourner ce problème, une couche de la zone biogéographique désirée (“méditérranée”) est créée et subdivisée en 4 partie.
&lt;/p&gt;

&lt;p&gt;
La requête, appliquée à une seule sous-partie, comme ce qui suit

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SELECT &amp;#039;&amp;lt;700m&amp;#039;as alti, ST_Buffer(ST_Union(geometrie), 0.000001) AS geometrie
	FROM (
		SELECT val, geometrie AS geometrie
		FROM	(
			SELECT rid, (ST_DumpAsPolygons(raster)).geom AS geometrie, (ST_DumpAsPolygons(raster)).val
			FROM srtm.srtm_block_50
				JOIN biogeographie.region_biogeo_med_part ON ST_Intersects(raster, ST_Transform(geometrie, 4326))
			WHERE dom_part=&amp;#039;4-1&amp;#039;
			) srtm_med	
		WHERE val&amp;lt;700
		) srtm_med_700_1&lt;/pre&gt;

&lt;p&gt;

renvoie son résultat avec &lt;strong&gt;succès&lt;/strong&gt; en 42 min.
&lt;/p&gt;

&lt;p&gt;
Cette dernière est intégré dans un table PostGIS pour la suite
&lt;/p&gt;

&lt;p&gt;
ATTENTION! Pour une raison non déterminée, cette même requête crash et éteint le serveur Postgres pour seulement l&amp;#039;un des 4 secteurs.
En divisant en 2 ce dernier, le problème persiste sur l&amp;#039;une des moitié, mais avec cette fois ci une erreur GEOS de type &lt;em&gt;UnionCascaded&lt;/em&gt;.
Il aurait été possible de continuer à diviser la partie à problème jusqu&amp;#039;à isolement et identification du problème, mais au vu de grand nombre de lignes, ce travail aurait pu être fastidieux. Il a été décidé d&amp;#039;utiliser plutôt les outils de PostGIS.
&lt;/p&gt;

&lt;p&gt;
En décomposant la requête, il semble que le problème vienne du &lt;em&gt;ST_Union&lt;/em&gt;. Les autres fonctions d&amp;#039;union (&lt;em&gt;ST_MemUnion&lt;/em&gt; et &lt;em&gt;ST_UnaryUnion&lt;/em&gt;) ont été testé mais sans succès.
La solution est apporté par &lt;em&gt;ST_Collect&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
Par contre le buffer sur ST_Collect fait planter le serveur
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT23 SECTION &quot;Etape 1: Création de la couche vectorielle de la zone méditerranéenne sous 700 mètre d'altitude&quot; [30941-33200] --&gt;
&lt;h2 class=&quot;sectionedit24&quot;&gt;&lt;a name=&quot;etape_2decoupage_de_la_couche_d_occupation_du_sol_selon_le_perimetre_obtenu_precedemment&quot; id=&quot;etape_2decoupage_de_la_couche_d_occupation_du_sol_selon_le_perimetre_obtenu_precedemment&quot;&gt;Etape 2: Découpage de la couche d&amp;#039;occupation du sol selon le périmètre obtenu précédemment.&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT24 SECTION &quot;Etape 2: Découpage de la couche d'occupation du sol selon le périmètre obtenu précédemment.&quot; [33201-] --&gt;</description>
        <category>PostGIS-Raster</category>
        <category>SRTM</category>
        <category>BDTOPO</category>
        <category>classification</category>
            <pubDate>Thu, 24 Oct 2013 12:33:10 +0200</pubDate>
        </item>
        <item>
            <title>outils:postgis_raster:ressources</title>
            <link>http://sig.cenlr.org/outils/postgis_raster/ressources</link>
            <description>
&lt;h2 class=&quot;sectionedit25&quot;&gt;&lt;a name=&quot;ressources_en_ligne_sur_postgis_ratser&quot; id=&quot;ressources_en_ligne_sur_postgis_ratser&quot;&gt;Ressources en ligne sur &amp;quot;PostGIS Ratser&amp;quot;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://trac.osgeo.org/postgis/wiki/WKTRaster&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://trac.osgeo.org/postgis/wiki/WKTRaster&quot;  rel=&quot;nofollow&quot;&gt;http://trac.osgeo.org/postgis/wiki/WKTRaster&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://fuzzytolerance.info/code/postgis-raster-ftw/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://fuzzytolerance.info/code/postgis-raster-ftw/&quot;  rel=&quot;nofollow&quot;&gt;http://fuzzytolerance.info/code/postgis-raster-ftw/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://oslandia.org/postgis_paris_juin_2011/postgis_paris_raster_racine.pdf&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://oslandia.org/postgis_paris_juin_2011/postgis_paris_raster_racine.pdf&quot;  rel=&quot;nofollow&quot;&gt;Pierre Racine - Stockage, manipulation et analyse de données matricielles avec PostGIS Raster&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.postgis.us/downloads/ncgis2011/NCGISSDBPostGIS20_2011.pdf&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.postgis.us/downloads/ncgis2011/NCGISSDBPostGIS20_2011.pdf&quot;  rel=&quot;nofollow&quot;&gt;http://www.postgis.us/downloads/ncgis2011/NCGISSDBPostGIS20_2011.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
</description>
        <category>outils:postgis_raster</category>
            <pubDate>Fri, 13 Jan 2012 17:00:36 +0200</pubDate>
        </item>
    </channel>
</rss>
