#1 Wed 10 July 2024 08:46
- VictorLeblanc
- Juste Inscrit !
- Date d'inscription: 9 Jun 2022
- Messages: 1
Batiments fusionnées BD Topo - calcul de surface avec R
Bonjour à tous,
Je réalise un projet de cartographie sur le département du Nord. J'ai un souci avec des calculs de surface avec R : quand je calcule la surface du polygone comme sur la photo suivante, j'ai la surface de l'emprise totale jardins compris et non pas seulement du bâti.
j'utilise st_area
bati %
mutate(surface = st_area(geometry))
Comment faire pour ne calculer la surface que du bâti ?
Merci de votre aide
[img]https://image.noelshack.com/minis/2024/28/2/1720540264-exemple-hameau-fusionne.png[/img]
Hors ligne
#2 Fri 19 July 2024 11:32
- jydee
- Participant occasionnel
- Date d'inscription: 2 Nov 2010
- Messages: 41
Re: Batiments fusionnées BD Topo - calcul de surface avec R
une piste peut être :
-- Étape 1 : Décomposer les multipolygones en polygones simples
CREATE TABLE parcelles_polygons AS
SELECT
id, -- Assurez-vous que chaque parcelle a un identifiant unique
(ST_Dump(geom)).geom AS geom
FROM parcelles;
-- Étape 2 : Identifier les bâtiments
CREATE TABLE bati AS
SELECT
p1.id AS parcel_id,
p1.geom AS building_geom
FROM
parcelles_polygons p1
JOIN
parcelles_polygons p2
ON
ST_Within(p1.geom, p2.geom) AND p1.id <> p2.id;
-- Étape 3 : Calculer la surface des bâtiments
ALTER TABLE bati ADD COLUMN surface_area DOUBLE PRECISION;
UPDATE bati
SET surface_area = ST_Area(building_geom);
-- Optionnel : Index spatial pour améliorer les performances des requêtes spatiales
CREATE INDEX idx_parcelles_polygons_geom ON parcelles_polygons USING GIST (geom);
CREATE INDEX idx_bati_geom ON bati USING GIST (building_geom);
Hors ligne