Orientation Façades Bâtiments

Dans un précèdent tutoriel présenté  ici,  nous avons vu comment calculer l’angle d’orientation des polygones  et de leurs styles  en fonction de leur orientation avec Qgis.  Je vais  vous présenter ici maintenant comment déterminer l’orientation des façades des bâtiments avec PostgreSQL. En effet, un bâtiment peut avoir plusieurs expositions: Nord, Sud, Est et Ouest.

Outils et Données

Dans ce cadre nous allons utiliser Postgis, l’extension spatiale de PostgreSQL. Les données proviennent d’OSM sur la commune de Gorée au Sénégal.

Méthode

L’azimut est l’angle est référencé à partir du nord. Les valeurs de l’orientation sont positifs dans le sens des aiguilles d’une montre. Pour calculer l’orientation dans Postgis, nous utilisons la fonction st_azimut qui renvoie l’azimut en radians du segment défini par les géométries de type de points. Pour ce faire nous allons d’abord transformer les polygones en points avant de calculer leur orientation.

  • Etape 1:  Extraire les points des segments à partir des polygones
CREATE TEMP TABLE tab_point AS
SELECT
ST_PointN(geom, generate_series(1, ST_NPoints(geom)-1)) AS start_pt,
ST_PointN(geom, generate_series(2, ST_NPoints(geom) )) AS end_pt
FROM
-- Transformer les polygons en lignes
(SELECT (ST_Dump(ST_Boundary(geom))).geom
FROM goree) AS linestrings;
  • Etape 2: Créer des lignes 
CREATE TEMP TABLE tab_lignes AS
SELECT start_pt, end_pt, st_makeline(start_pt, end_pt)
FROM tab_point;
  • Etape 3: Calculer l’azimut en degrés de chaque segment des points des segments
CREATE TABLE orientation_facade AS 
SELECT bd.id, row_number()
OVER (order by bd.id), degrees(st_azimuth(ff.start_pt, ff.end_pt)) AS az_deg,
ST_LENGTH(ff.st_makeline) , ff.st_makeline FROM tab_lignes ff
JOIN goree bd ON st_touches(ff.st_makeline, bd.geom)
GROUP BY bd.id, ff.start_pt, ff.end_pt, ff.st_makeline;

Visualiser les résultats dans Qgis

Orientation des façades des bâtiments, Ile de Gorée, Sénégal

Tableau de correspondance avec la rose des vents

Une rose des vents est une figure indiquant les points cardinaux : N pour nord, S pour sud, E pour est, O pour ouest et les orientations intermédiaires, jusqu’à 32 directions. En fait, les roses initiales n’indiquaient pas quatre directions mais huit directions. L’objectif ici est de traduire nos degrés pour faciliter la lecture de la carte. Par exemple trouver les façades bâtiments qui sont orienté Nord Ouest ou Sud.

Pour donner un sens à des données de direction des façades qui sont en degrés, nous allons commencer par une conversion. Pour convertir des degrés en directions de boussole, je divise d’abord la boussole en 16 secteurs de 22,5 degrés chacune. Les secteurs sont des parts, centrées sur les points cardinaux.

Rose des vents
Tableau de correspondance
1 -> Nord = 0° ou 360°
2->Nord-Nord-Est = 22,5°
3->Nord-Est = 45°
4->Est-Nord-Est = 67,5°
5->Est = 90°
6->Est-Sud-Est = 112,5°
7->Sud-Est = 135°
8->Sud-Sud-Est = 157,5°
9->Sud = 180°
10->Sud-Sud-Ouest = 202,5°
11->Sud-Ouest = 225°
12->Ouest-Sud-Ouest = 247,5°
13->Ouest = 270°
14->Ouest-Nord-Ouest = 292,5°
15->Nord-Ouest = 315°
16->Nord-Nord-Ouest = 337,5°
17 -> Nord = 0° ou 360°

En divisant les degrés par 22,5 degrés (pour chaque façade), nous obtenons des chiffres allant de 0 à 16. Parce que les étiquettes stockées dans le tableau sont indexés 1-17il faut ajouter 1 pour correspondre à la tranche. Par exemple si on prend 45 degrés on le divise par 22,5, nous obtenons  2: 45 / 22.5 = 2. Si nous ajoutons 1, le résultat est 3 : 2 + 1 = 3. Dans notre tableau la valeur “3” correspond à la direction “NE.” (nord-est).

Application sur nos données

Ajouter deux variables  et les mettre à jour en.

ALTER TABLE orientation_facade ADD COLUMN orientation integer;
UPDATE orientation_facade SET orientation=round(az_deg::numeric/22.5,0)+1 ;
ALTER TABLE orientation_facade ADD COLUMN orientation text;

UPDATE orientation_facade SET orientationtxt=
CASE WHEN orientation=1 THEN'N'
WHEN orientation=2 THEN 'NNE'
WHEN orientation=3 THEN 'NE'
WHEN orientation=4 THEN 'ENE'
WHEN orientation=5 THEN 'E'
WHEN orientation=6 THEN 'ESE'
WHEN orientation=7 THEN 'SE'
WHEN orientation=8 THEN 'SSE'
WHEN orientation=9 THEN 'S'
WHEN orientation=10 THEN 'SSW'
WHEN orientation=11 THEN 'SW'
WHEN orientation=12 THEN 'WSW'
WHEN orientation=13 THEN 'W'
WHEN orientation=14 THEN 'WNW'
WHEN orientation=15 THEN 'NW'
WHEN orientation=16 THEN 'NNW'
WHEN orientation= 17 THEN 'N' end;

Résultats avec Qgis

Orientation des façades des bâtiments, Ile de Gorée, Sénégal

Laisser un commentaire