Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#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

 

Pied de page des forums

Powered by FluxBB