• Aucun résultat trouvé

interpolation et interaction spatiale

N/A
N/A
Protected

Academic year: 2022

Partager "interpolation et interaction spatiale"

Copied!
33
0
0

Texte intégral

(1)

Du point à la surface :

interpolation et interaction spatiale

Hadrien Commenges & Timothée Giraud

SEMIN-R, Paris, 10 juin 2016

(2)

Transformation des objets géographiques

Points

Lignes

Zones

Champs

Points Lignes Zones Champs

Buffer Voronoi Réseau

Barycentre

Intersection

Centroïde

Arbre couvrant

... ... ... ...

...

... ...

... ...

(3)

Qu’est-ce qu’un champ ?

CHAMP SCALAIRE CHAMP VECTORIEL

Continuité : à tout point de l'espace de référence correspond une valeur de champ Unicité : à tout point de l'espace de référence correspond une unique valeur de champ Fonction qui associe un scalaire à chaque

point de l'espace de référence

Fonction qui associe un vecteur à chaque

point de l'espace de référence

(4)

Quels usages ?

Calcul vs. Visualisation

(5)

Quelles méthodes ?

INTERPOLATION

RÉGRESSION SPATIALE INTERACTION SPATIALE DENSITÉ

Points Champ

Non valués

Valués (univarié)

Valués (univarié)

Valués (multivarié)

Localisation

Localisation

Localisation Localisation Régresseurs

Densité de points

Valeur prédite qui s'interprète comme la variable initiale (sens et étendue) Valeur prédite qui s'interprète comme un potentiel d'accès à la variable initiale Résultat d'un modèle de régression dont les coefficients sont localement pondérés

(6)

Quels packages et quelles fonctions ?

INTERPOLATION

RÉGRESSION SPATIALE INTERACTION SPATIALE

DENSITÉ KDE -Kernel Density Estimator Simple : IDW - Inverse Weighted Distance Ajustée : trend analysis, kriging Modèles gravitaires de position (Stewart's potentials)

GWR -Geographically Weighted Regression MÉTHODES

kde2d (MASS) ; kernel.factor(spatstat);

geom_density2d (ggplot2)

idw (gstat) ; krige (gstat) ; idw (spatstat) ; lm & glm (stats)

stewart ; reilly ; huff (SpatialPosition) gwr(spgwr)

FONCTIONS (PACKAGES)

(7)

Quelle projection ?

Source : Wikimedia, Mercator projection

(8)

Quelle projection ?

UTM Mercator 0

25 50 75

Densité de population (milliers d'hab. / km2)

Med. 3069 Moy. 5483 Med. 2111

Moy. 3764 Paris : 22 000 hab./km2 Île-de-France : 1 000 hab./km2

Cape Town - Subplaces

Source : Statistics South Africa, Census 2010

(9)

Quelle projection ?

Pseudo-mercator UTM

Aire (milliers de km2)

0 50 100

Aire des provinces chiliennes

4300 km

(10)

Quelle projection ?

Altérations lors de la projection en 2D d’un objet 3D : projection conforme : conserve les angles

projection équivalente : conserve les aires

calcul de densité → ¿altération des aires ?

calcul de distances¿altération linéaire ?

(11)

Quelle distance ?

La distance :

distance à vol d’oiseau distance sur un réseau friction : temps, coût

La fonction d’impédance :

puissance négative ou exponentielle négative

paramétrage de la fonction (valeur de l’exposant)

(12)

Quelle distance ?

Méthodes simples (KDE, IDW) : calibrage de la fonction au jugé

Méthodes ajustées (kriging, gravitaire) : calibrage data-driven

(13)

Interpolation vs. Interaction

Interpolation (IDW) et interaction s’expriment de façon semblable...

z j e =

m

X

i=1

w ij z i

m est le nombre de points de contrôle (qui peut être égal au total n) w

ij

est un poids inversement proportionnel à la distance entre i et j

... mais s’appliquent et s’interprètent différemment :

1

Ex. d’interpolation (IDW) de l’altitude en Corse

2

Ex. d’interaction spatiale avec les bars parisiens

(14)

Interpolation : l’exemple de l’altitude

Représentation raster avec estompage Information complète (N = 31 M)

Zoom et échantillonage Échantillon (n = 1000)

IGN - BD ALTI, résolution 25m

(15)

Interpolation : l’exemple de l’altitude

Deux flux de travail possibles (au moins) :

travail sur objets data.frame et affichage avec ggplot2 travail et affichage sur objets raster (package raster)

Packages nécessaires : ggplot2, sp, gstat

str(corseCentre)

## 'data.frame': 573762 obs. of 3 variables:

## $ x : num 1200025 1200050 1200075 1200100 1200125 ...

## $ y : num 6149975 6149975 6149975 6149975 6149975 ...

## $ altitude: num 1576 1572 1567 1561 1555 ...

ggplot(corseCentre) +

geom_raster(aes(x = x, y = y, fill = altitude)) +

scale_fill_gradientn(colours = terrain.colors(10)) +

coord_equal() + theme_bw()

(16)

Interpolation : l’exemple de l’altitude

6135000 6140000 6145000 6150000

1200000 1202500 1205000 1207500 1210000 x

y

500

1000

1500

2000

2500

altitude

(17)

Interpolation : l’exemple de l’altitude

1

création d’un objet spatial

2

création d’une grille avec un pas fixe (résolution du modèle)

3

transformation de la grille en objet spatial

# Étape 1

corseSample <- SpatialPointsDataFrame(coords = corseSample[, c("x", "y")], data = corseSample)

# Étape 2

xRange <- range(coordinates(corseSample)[, 1]) yRange <- range(coordinates(corseSample)[, 2])

fixGrid <- expand.grid(x = seq(xRange[1], xRange[2], by = 200), y = seq(yRange[1], yRange[2], by = 200))

# Étape 3 (identique à l'étape 1)

coordinates(fixGrid) <- ~ x + y

gridded(fixGrid) <- TRUE

(18)

Interpolation : l’exemple de l’altitude

calcul du modèle IDW dans la grille

affichage du résultat (transformé en data.frame) avec ggplot2

corseIdw <- idw(formula = altitude ~ 1, locations = corseSample, newdata = fixGrid)

## [inverse distance weighted interpolation]

class(corseIdw)

## [1] "SpatialPixelsDataFrame"

## attr(,"package")

## [1] "sp"

ggplot(as.data.frame(corseIdw)) +

geom_raster(aes(x = x, y = y, fill = var1.pred)) +

scale_fill_gradientn(colours = terrain.colors(10)) +

coord_equal() + theme_bw()

(19)

Interpolation : l’exemple de l’altitude

6135000 6140000 6145000 6150000

1200000 1202500 1205000 1207500 1210000 x

y

1000

1500

2000

var1.pred

(20)

Interaction : l’exemple des bars parisiens

Agents et ressources :

Consommateurs (agents) cherchent magasins (ressources)

Magasins (agents) cherchent clients (ressources)

(21)

Interaction : l’exemple des bars parisiens

Packages nécessaires : sp : formats spatiaux

cartography : cartographie statistique SpatialPosition : interaction spatiale

plot(boundParis, col = "grey50", border = NA)

plot(ptBars, pch = 20, col = "white", cex = 0.3, add = TRUE) layoutLayer(title = "Les bars parisiens",

frame = FALSE, coltitle = "black", col = NA,

scale = NULL,

sources = "OpenStreetMap contributors - 2016",

author = "T. Giraud")

(22)

Interaction : l’exemple des bars parisiens

Les bars parisiens

OpenStreetMap contributors − 2016 T. Giraud

(23)

Interaction : l’exemple des bars parisiens

Comme pour l’interpolation, le champ prend la forme d’une grille :

# Création de la grille (résolution dans l'unité du syst. de proj.) gridParis <- CreateGrid(w = boundParis, resolution = 200)

# Affichage de la grille

plot(boundParis, col = "grey50", border = NA)

plot(gridParis, pch = 20, col = "black", cex = 0.3, add = TRUE) layoutLayer(title = "Grille régulière d'un pas de 200 mètres",

frame = FALSE, coltitle = "black", col = NA,

scale = NULL)

(24)

Interaction : l’exemple des bars parisiens

Grille régulière d'un pas de 200 mètres

Source(s) Author(s)

(25)

Interaction : l’exemple des bars parisiens

Puissance négative ou exponentielle négative

Paramétrage de la fonction (valeur de l’exposant)

(26)

Interaction : l’exemple des bars parisiens

Exemple de calibrage :

Distance (m)

Potentiel d'accès à l'équipement

Équipement de proximité Équipement intermédiaire Équipement supérieur Portée

(27)

Interaction : l’exemple des bars parisiens

Calcul des potentiels sur la grille incluant calcul de distance Transformation des points en raster

Transformation du raster en isolignes (contour)

potBars <- stewart(knownpts = ptBars, unknownpts = gridParis, varname = "n",

typefct = "exponential", span = 1000,

beta = 3)

rastPotBars <- rasterStewart(potBars)

contPotBars <- rasterToContourPoly(r = rastPotBars, mask = boundParis,

breaks = seq(0, 400, by = 50))

(28)

Interaction : l’exemple des bars parisiens

Cartographie des potentiels :

choroLayer(spdf = contPotBars, df = contPotBars@data, var = "center",

breaks = seq(0, 400, by = 50), border = NA,

legend.title.cex = 0.7, legend.frame = FALSE, legend.pos = "topright",

legend.title.txt = "Nombre\nde bars",

col = carto.pal(pal1 = 'turquoise.pal', n1 = 8), add = FALSE)

layoutLayer(title = "Nombre potentiel de bars (voisinage de 1000 mètres)", frame = FALSE,

coltitle = "black",

col = NA, scale = NULL, sources="",

author = "")

(29)

Interaction : l’exemple des bars parisiens

(30)

Interaction : l’exemple des bars parisiens

Calcul préalable d’une matrice de distance

Approximation de la distance réseau (CERTU 2005, coef. 1,3) Transformation en temps à une vitesse piétonne (4,5 km/h) Bien sûr il est possible de faire un véritable calcul du temps réseau

# création d'une matrice de distance

distBars <- spDists(x = coordinates(ptBars), y = coordinates(gridParis), longlat = FALSE,

diagonal = FALSE)

# approximation d'une distance réseau distBarsNetwork <- distBars * 1.3

# matrice de temps à pied en minutes

timeBars <- (distBarsNetwork / 1000) / (4.5 * 60)

(31)

Interaction : l’exemple des bars parisiens

Calcul des potentiels sur la grille avec calcul préalable d’une matrice de distance

Transformation des points en raster

Transformation du raster en isolignes (contour)

potBars <- stewart(knownpts = ptBars, unknownpts = gridParis, varname = "n",

matdist = timeBars, typefct = "exponential", span = 10,

beta = 3)

rastPotBars <- rasterStewart(potBars)

contPotBars <- rasterToContourPoly(r = rastPotBars, mask = paris,

breaks = seq(0, 170, by = 15))

(32)

Interaction : l’exemple des bars parisiens

(33)

Conclusion

Qualitatif Quantitatif

Nominal Ordinal Stock Rapport

Catégorie Id Catégorie Id Discret Continu Discret Continu Échelle

Discret Continu Interaction

somme pondérée d'accès à un stock

Interpolation

moyenne pondérée d'une quantité relative ou repérable

La valeur connue d’un point échantillonné est-elle la vraie valeur

que l’on cherche à estimer ?

Références

Documents relatifs

Partie II - Lévitation d’une bille diélectrique dans un faisceau laser On cherche à interpréter de manière qualitative la.. possibilité de piéger des petites billes

Hors du cadre de la classe, aucune reproduction, même partielle, autres que celles prévues à l'article L 122-5 du code de la propriété intellectuelle, ne peut être faite de ce

- Dans un repère orthogonal, la courbe d’équation y= x 2 de la fonction carré est symétrique par rapport à l’axe des ordonnées.. Méthode : Comparer des images

Dans chaque organisme, à l’occasion des opérations déterminant les bénéficiaires de mesures individuelles non automatiques en 2010, un examen des situations des salariés

La valeur 0 K est dite zéro absolu : c’est la température où il n’y a plus d’agitation thermique des particules, et on ne peut plus abaisser la température en dessous de

On observe les propriétés de symétrie du champ : en tout point M (r, θ, z), le champ est orthogonal au plan contenant l’axe Oz et passant par M.. On peut alors choisir un

Exprimer la vitesse de phase et la vitesse de groupe des ondes de gravité en fonction de g et du vecteur d ?onde k.. Quelle est la relation simple qui relie la vitesse de phase à

L’onde n’est pas plane car dans un plan normal à la direction de propagation, le champ électrique n’a pas la même valeur en tout point à un instant donné.. Il s’agit d’une