Utiliser des données géographiques sous R Fichier

Transcription

Utiliser des données géographiques sous R Fichier
Ecole doctorale 227
Sciences de la Nature et de l’Homme
Module
R : APPLICATIONS
Utiliser des données géographiques sous R
Raymond Baudoin
Conservatoire botanique national du Bassin parisien
Département EGB
[email protected]
27 avril 2012
Manipuler des fichiers spatiaux sous R se révèle utile pour la présentation cartographique de
résultats de calculs effectués avec R mais aussi pour réaliser des traitements statistiques sur
les objets géographiques que n'offrent pas les systèmes d'informations géographiques libres ou
commerciaux (SIG).
Mais avant cela il faut pouvoir accéder aux éléments géographiques souvent issus de SIG,
c'est-à-dire :
• Lire des fichiers vectoriels ou rasters, des images qu'ils soient de format texte ou binaire ;
• Travailler sur les cartes pour les adapter au sujet d'étude : faire des regroupements de
cartes, modifier les projections, les origines, etc ;
• Créer de nouveaux objets géographiques.
Actuellement le site du CRAN propose près de 100 librairies qui offrent des fonctions associées
à la cartographie.
Des libraires R pour la :
• Lecture et écriture des données spatiales
• Manipulation des données spatiales
• Géostatistique
• Analyse ponctuelle et spatiale
• Régression spatiale
• Analyse écologique et environnementale
A consulter :
La mailing-list formée autour de l'utilisation de données géographiques et cartographiques [email protected] website
La CRAN Task View: Analysis of Spatial Data
http://cran.r-project.org/web/views/Spatial.html
Maintenues par Roger Bivand
Liste des libraires associées aux traitements géographiques (27 avril 2012)
ade4
ecespa
mapproj
regress
spBayes
adehabitat
fields
maps
rgdal (core)
spcosa
adehabitatHR
FieldSim
maptools (core)
rgeos
spdep (core)
adehabitatHS
gdistance
MarkedPointProcess
RgoogleMaps
spgrass6
adehabitatLT
Geneland
MBA
RPyGeo
spgwr
adehabitatMA
GEOmap
Metadata
RSAGA
sphet
ads
geomapdata
ModelMap
RSurvey
splancs (core)
akima
geonames
ncdf
rworldmap
spsurvey
ash
geoR (core)
ncf
sgeostat
SQLiteMap
aspace
geoRglm
nlme
shapefiles
Stem
automap
geosphere
pastecs
sp (core)
tgp
classInt (core)
GeoXp
PBSmapping
sparr
trip
clustTool
glmmBUGS
PBSmodelling
spatcounts
tripack
CompRandFld
gmt
psgp
spatgraphs
tripEstimation
constrainedKriging
gstat (core)
ramps
spatial
UScensus2000
cshapes
Guerry
RandomFields (core)
spatialCovariance
UScensus2000blkgrp
DCluster (core)
hdeco
rangeMapper
SpatialExtremes
UScensus2000cdp
deldir (core)
intamap
RArcInfo
spatialkernel
UScensus2000tract
DSpat
landsat
raster (core)
spatialsegregation
vardiag
mapdata
RColorBrewer (core)
spatstat (core)
vegan
Plan
Introduction sur les systèmes de projection et représentations planes
Les formats des fichiers spaciaux
Importer des données géographiques
Modifier des objets cartographiques
Créer de nouveaux objets
Quelques traitements
Librairies utilisées :
• sp (incontournable)
• rgdal et raster
• SDMTools, maptools, mapproj avec maps
• PBSmapping
• gpclib
• ade4, adehabitat
Système d'information géographique
S.I.G.
Un système d'information géographique (SIG) est un système d'information capable
de stocker, d'organiser et de présenter des données alphanumériques spatialement
référencées par des coordonnées dans un système de référence (CRS).
Système de coordonnées de référence (CRS)
Datum
Système de référence
géodésique
Ellipsoïde
Projection
Origine,
axes,
unités
Système de référence
cartographique
(projection plane)
L'usage du S.I.G. est la représentation de l'environnement spatial en se basant sur :
 des objets (primitives) géométriques : des points, des vecteurs (arcs), des polygones, etc.
 des maillages (raster).
Aux objets sont associées des informations attributaires telles que leur nature (route, voie ferrée,
forêt, etc.) ou des informations contextuelles (nombre d'habitants, superficie, etc.).
Système de référence géodésique
(Datum)
1. Le système NTF (Nouvelle Triangulation de la France)
▪ point fondamental : croix du Panthéon
▪ ellipsoïde : Clarke 1880 IGN
- demi-grand-axe : a = 6 378 249,20 m
- demi-petit-axe : b = 6 356 515,00 m
▪ représentation plane associée : Lambert zone I, II, III, IV
▪ méridien origine : Paris.
2. Le système ED50 (European Datum 1950)
▪ point fondamental : POTSDAM
▪ ellipsoïde : HAYFORD 1909
- aplatissement (a-b)/a : 1/297
- demi-grand-axe : a = 6 378 388,0 m
▪ représentation plane associée : Universal Transverse Mercator (UTM)
▪ méridien origine : Greenwich.
l'ellipsoïde
3. Le système WGS84
▪ ellipsoïde : IAG-GRS80
- aplatissement (a-b)/a : 1/298257222101
- demi-grand-axe : a = 6 378 137 m
▪ représentation plane associée : Universal Transverse Mercator (UTM).
4. Le système RGF93
Successeur de la Nouvelle Triangulation Française (NTF).
Repose sur l'observation par GPS (en 1993) de 23 sites
constituant le Réseau de Référence Français (RRF)
▪ ellipsoïde : IAG-GRS80
▪ représentation plane associée : Lambert 93
▪ méridien origine : Greenwich.
Extrait de Cartographie, Lecture de Carte de Patrick BOURON
École Nationale des Sciences Géographiques, IGN
library (rgdal)
projInfo(type = "datum")[1:3,c(1,2,4)]
name ellipse
description
1 WGS84
WGS84
2 GGRS87
GRS80 Greek_Geodetic_Reference_System_1987
3 NAD83
GRS80
North_American_Datum_1983
projInfo(type = "ellps")[c(41,42),]
name
major
ell
description
41 WGS84 a=6378137.0 rf=298.257223563
WGS 84
42 sphere a=6370997.0
b=6370997.0 Normal Sphere (r=6370997)
Système de référence cartographique
(projection plane)
Où comment convertir
la longitude et la latitude géographique λ, φ
en coordonnées cartésiennes x et y
(λ, φ) → (x, y)
Les représentations
▪ conformes conservent les angles
▪ équivalentes conservent le rapport des surfaces
Système de référence cartographique
Représentation UTM (Mercator Transverse Universel)
Représentation conforme est obtenue par projection de
l'ellipsoïde sur un cylindre tangent à celle-ci le long du méridien
origine.
▪ Le méridien origine de contact devient sur la carte un axe
parallèle à l’axe des Y de la projection.
▪ L’équateur, qui se projette suivant une droite, devient l’axe
des X.
Soit le point A de la sphère de coordonnées x’ et y’ telles que :
▪ x’ = AA’ , distance de A au méridien mesurée
orthogonalement à ce méridien
▪ y’ = MA’, distance comptée sur le méridien origine
A est représenté sur le plan de projection par un point a de
coordonnées x et y telles que x = f (x’) et y = y’ + e
Les fuseaux UTM
Ce système compte 60 fuseaux de 6° de différence de longitude, numérotés à partir du méridien antipode du méridien international.
Le méridien de Greenwich est donc entre les fuseaux 30 et 31.
Les fuseaux qui intéressent la France sont les fuseaux 30, 31 et 32
ayant respectivement pour origine les méridiens 3° Ouest, 3° Est,
9° Est du méridien international. Les fuseaux sont subdivisés en
bandes égales de 8° de latitude. Chacune de ces zones est ensuite
divisée en carrés de 100 km de coté.
5072
Coordonnées WGS84
exemple :
x = 288 700
y = 5 071 700
Fuseau 32T
700
450
5071
288
289
Système de référence cartographique
Représentation Lambert
C'est une représentation conforme.
Elle est obtenue par la projection sur un cône tangent à
la sphère le long du parallèle passant par O, centre de
la zone à représenter (parallèle origine). Le sommet S
du cône est situé sur l’axe des pôles PP’.
Soit A un point de la sphère, la position de ce point par
rapport au point O est définie par :
• x’ = longueur d’arc de parallèle entre le méridien
origine et le méridien de A, la
distance étant comptée sur le parallèle origine 0
• y’ = arc de méridien compris entre le parallèle
origine et le parallèle de A.
Le point A est représenté sur le plan de projection par
le point "a" dont les coordonnées sont Xa et Ya.
Projection Lambert-93
Type de projection
Zone d’application
Unité de distance
Unité d’angle
Longitude origine (méridien central)
Méridien origine
Longitude du méridien origine
Latitude origine
E0
N0
Mode de définition
Latitude de tangence
Facteur d’échelle
Mode de définition
Premier parallèle automécoïque
Deuxième parallèle automécoïque
Conique Conforme directe sécante
41° - 51° Nord
Mètre (unité internationale)
DGM (degré – minute – seconde)
3° Est
Greenwich
0°
46°30’
700 000 m
6 600 000 m
tangente
46°31’09’’95535
0,999051030064
Sécante
44°
49°
Projection Lambert I - IV et II étendu
Zone application
Lambert Zone I
Lambert Zone II
Lambert Zone III
53,5gr - 57gr
50,5gr - 53,5gr
47gr - 50,5gr
Ellipsoïde associé
Latitude origine
Corse
Lambert II étendu
France entière
Clarke 1880
49°30´
49.5
46°48´
46.79999999999
44°06´
44.10000000001
42°09´54"
42.16499999999
46°48´
46.79999999999
0° du méridien de Paris
0
2°20´14.025" Est du méridien de Greenwich
2.33722916670
Méridien central
Parallèles standard 1
Lambert Zone IV
48°35´54,682"
48.59852277780
50°23´45,282"
50.39591166670
45°53´56,108"
45.89891888890
47°41´45,652"
47.69601444440
43°11´57,449"
43.19929138890
44°59´45,938"
44.99609388890
41°33´37,396"
41.56038777780
42°46´03,588"
42.76766333330
45°53´56,108"
45.89891888890
47°41´45,652"
47.69601444440
X0 : False Easting
600 000 m
600 000 m
600 000 m
234,358 m
600 000 m
Y0 : False Northing
200 000 m
200 000 m
200 000 m
185 861,369 m
2 200 000 m
Parallèles standard 2
Source : support.esrifrance.fr
mercator
Système de référence cartographique
51
Exemples de représentation
50
-5
-4
-2
0
2
4
6
8
10
49
48
library (maps)
47
m <- map("france", plot=FALSE)
map ("france", project="mercator")
title ("mercator")
map.grid (m)
46
45
44
43
42
41
lambert
51
50
-5
lat0=46.5
lat1=49
map ("france", project="lambert", par=c(lat0,lat1))
title ("lambert")
map.grid (m)
-4
-2
49
48
47
46
45
44
43
42
41
0
2
4
6
8
10
La base de données EPSG des paramètres géodésiques
L'ensemble de données EPSG est un référentiel structuré pour :
• identifier les coordonnées de telle sorte que ces coordonnées décrivent la position
sans ambiguïté par la définition du système de coordonnées de référence (CRS).
• définir les transformations et conversions qui permettent de modifier les coordonnées
d'un CRS à un autre.
L'EPSG Geodetic Parameter Dataset est maintenu actuellement par le sous-comité de géodésie de l'OGP (Oil & Gas Producers).
http://www.epsg.org/
La liste EPSG est régulièrement mise à jour pour correction et prendre en compte les nouvelles entrées.
Elle permet la conversion d'un grand nombre de CRS.
Chaque CRS est décrit suivant les règles définies dans la bibliothèque PROJ.4 décrivant les procédures
de projection cartographiques pour l'UNIX (proj). http://trac.osgeo.org/proj/
Proj est un programme Unix qui convertit la longitude et la latitude géographique en coordonnées cartésiennes
avec une grande variété de fonctions de projection cartographiques.
Signification de quelques sigles utilisés
CRS
EPSG
GDAL
OGC
OGP
SDE
SIR
SRS
: Coordinate Reference System
: European Petroleum Survey Group
: Geospatial Data Abstraction Library
: Open Geospatial Consortium
: International Association of Oil & Gas producers
: Spatial Database Engine (moteur de recherche dans des bases de
données spatiales)
: Système International de Référence = CRS
: Spatial Referencing System
Les paramètres PROJ.4
Les paramètres décrivant la projection sont donnés suivant la convention typologique suivante :
+paramètre=valeur
chaque couple {paramètre-valeur} est séparé par un espace.
exemple : +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
Paramètres
+a
+alpha
+axis
+b
+datum
+ellps
+k
+k_0
+lat_0
+lat_1
+lat_2
+lat_ts
+lon_0
+lonc
+lon_wrap
+nadgrids
+no_defs
+over
+pm
+proj
+south
+to_meter
+towgs84
+units
+vto_meter
+vunits
+x_0
+y_0
+zone
Signification
Demi-grand rayon de l'axe ellipsoïde
Utilisé avec la projection Mercator oblique et éventuellement quelques autres
Axe d'orientation
Demi -petit rayon de l'axe ellipsoïde
Datum de référence
Nom de l'ellipsoïde
Facteur d'échelle k (ancien nom)
Facteur de mise à l'échelle (nouveau nom)
Latitude de l'origine
Latitude du parallèle première norme
Latitude du parallèle seconde norme
Latitudede l'échelle réelle
Méridien central
Longitude utilisé avec Mercator oblique et éventuellement quelques autres
Centre de longitude couverte (par défaut la couverture va de -180° à 180°)
Nom du fichier de grille à utiliser pour les transformations
Ne pas utiliser les définitions par défaut
Autoriser la couverte de la longitude de -180 à 180°, désactive +lon_wrap
Décalage entre le méridien du système déclarées et celui de Greenwich. Peut être le nom d'une ville (ex. paris pour 2d20'14.025"E)
Nom de la Projection
Indique la zone UTM de l'hémisphère sud
Multiplicateur des unités de la carte à 1m
Description du changement de Datum par rapport à towgs84
(3 ou 7 paramètres de transformation : delta_x, delta_y, delta_z, Rx - rotation X, Ry - rotation Y, Rz - rotation Z, M_BF - Mise à l'échelle.
Les trois paramètres de translation sont en mètres, ceux de rotation sont en secondes d'arc, la mise à l'échelle est en ppm.
Unités
Conversion verticale en mètres.
Unités verticales.
Abscisse fictive
Ordonnée fictive
UTM zone
Exemple : un système de coordonnées
d'un fichier MapInfo
CoordSys Earth Projection 3, 1002, 7, 0, 49.5, 48.5985227778, 50.39591167, 600000, 200000
Bounds (-40092, -818525) (1264450, 486383)
Signification :
Arguments PROJ.4 :
Earth Projection 3 : Nom de la projection
3
: Type de la projection (3 = conique conforme de Lambert
2003 = idem, borné)
1002
: Datum (1002 = NTF - Paris ; 33 = RGF93)
7
: Unités (7 = m)
0
: Origine lon (le méridien central) (°)
49.5
: Origine lat (°)
48.5985227778 : Parallèle standard 1 (°)
50.39591167
: Parallèle standard 2 (°)
600000
: Abscisse origine fictive (ici en m)
200000
: Ordonnée origine fictive ( 200000 = Lambert II Zone ≡
2200000 = Lambert II Carto)
+proj=lcc
lambert conique conforme
+units=m
+lon_0
+lat_0
+lat_1
+lat_2
+x_0
+y_0
en mètres
numéro de la zone Lambert
Bounds
: Limites (Min X, Min Y) ( Max X, Max Y)
PROJ.4 correspondant :
a : demi-grand-axe de l'ellipsoïde (a = 6 378 249,20 m
: ellipsoïde de Clarke 1880 IGN associé à NTF)
+proj=lcc +lat_1=48.5985227778 +lat_2=50.39591167 +lat_0=49.5 +lon_0=0 +x_0=600000 +y_0=200000 +a=6378249.2
+b=6356515.000000472 +towgs84=-168,-60,320,-0,-0,-0,0 +pm=2.337229166667 +units=m +no_defs"
b : demi-petit-axe (b = 6 356 515,00 m : Clarke -NTF
pm : écart entre méridien de Greenwich et celui de Paris
Système géographique de référence
Une copie de la liste EPSG se trouve dans la librairie rgdal
version de l'EPSG ?
getPROJ4VersionInfo()
[1] "Rel. 4.7.1, 23 September 2009, [PJ_VERSION: 470]"
Accès aux données du fichier des codes de référence EPSG
EPSG <- make_EPSG ()
Recherche du bon code, exemple pour les projections Lambert xx
(EPSG_Lambert <- EPSG [grep("Lambert", EPSG$note), 1:2] )
Trois codes incontournables
rownames
Code
EPSG
249
4326
WGS 84
+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
584
2154
RGF93 / Lambert-93
+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000
+y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
2985
note
NTF (Paris) / Lambert
27572
zone II
WGS 84 :
NTF :
RGF :
RGF93 :
Lambert :
Lambert93 :
Arguments PROJ.4 pour la définition du système de référence (CRS)
+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000
+y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0
+pm=paris +units=m +no_defs
système géodésique mondial (World Geodesic System 1984). Celui de Google Earth.
Nouvelle Triangulation pour la France (1873 - 1991).
Réseau Géodésique Français (à partir de 1990).
Réseau géodésique français légal pour la métropole depuis le décret du 26.12.2000.
système de projection utilisé pour la France (4 zones).
projection associée au système géodésique RGF93 (compatible avec WGS84).
Conversion des coordonnées géographiques
Degré : système sexagésimal comme l'heure
Les sous-multiples du degré sont :
la minute sexagésimale, notée « ' » telle que 60' =
1°
la seconde, notée « '' » telle que 60'' = 1'
1° = 60' = 3 600''
Rappel des mesures d'angles
mesure de la circonférence :
2 π radians = 400 grades = 360 degrés
soit : 90° = 100 gr = 1.570796 rd
Coordonnées géographique d'un point de latitude : 48°51'23.27" N et de longitude : 2°21'08.41" E
Degré sexagésimal ↔ Degré décimal
Coordonnées UTM ↔ Lat. / Lon.
Pour s'affranchir du système sexagésimal , les SIG utilisent
des degrés décimaux
library (PBSmapping)
(d + m' / 60 + s" / 3600 attention au sgn)
Paris = data.frame(EID=1, X=xdd, Y=ydd)
ParisPS = as.EventData (Paris)
attr (ParisPS , "zone") <- 31
attr (ParisPS , "projection") <- "LL"
str (ParisPS)
Classes ‘EventData’ and 'data.frame':
1 obs. of
variables:
$ EID: num 1
$ X : num 2.35
$ Y : num 48.9
- attr(*, "zone")= num 31
- attr(*, "projection")= chr "LL"
(ParisUTM = convUL (ParisPS,km=FALSE))
EID
X
Y
1
1 452492.4 5411702
library(sp)
x = "2d21'08.41\"E" # Notation des degrés dans proj.4 : d
y = "48d51'23.27\"N"
(xdms = char2dms (x))
[1] 2d21'8.41"E
(ydms = char2dms (y))
[1] 48d51'23.27"N
(xdd = as.numeric(xdms)) # en valeur décimale
[1] 2.352336
(ydd = as.numeric(ydms))
[1] 48.85646
str(xdms)
Formal class 'DMS' [package "sp"] with 5 slots
..@ WS : logi FALSE
..@ deg: int 2
..@ min: int 21
..@ sec: num 8.41
..@ NS : logi FALSE
dd2dms (xdd, NS = FALSE) # NS = FALSE pour l'est / ouest
[1] 2d21'8.41"E
dd2dms (ydd, NS = TRUE) # NS = TRUE pour Nord / Sud
[1] 48d51'23.27"N
# Attention la longitude doit être en X
(ParisD = convUL (ParisUTM ,km=FALSE))
EID
X
Y
1
1 2.352336 48.85646
str(ParisD)
Classes ‘EventData’ and 'data.frame':
variables:
$ EID: num 1
$ X : num 2.35
$ Y : num 48.9
- attr(*, "zone")= num 31
- attr(*, "projection")= chr "LL"
1 obs. of
3
3
Les principaux formats utilisés par les S.I.G.
Image
Vectorielle
Une
image
vectorielle
est
composée d'objets géométriques
individuels (segments de droite,
polygones, arcs de cercle…)
ayant chacun divers attributs
(position, couleur…).
Définitions
Binaire
Shapefile
*.tab
(ESRI)
MIF / MID
KML
(MapInfo)
(MapInfo)
Raster
Une image matricielle (bitmap ou
raster) est composée d'un tableau
de points (pixels) associés à une
ou plusieurs valeurs visualisées
par la couleur.
*.BMP, *.JPEG,
*.TIFF, *.PNG
Codage du
fichier
Texte
(Google Earth)
*.asc
*.bil . . .
(ESRI)
Exemple de format texte
► Pour des données vectorielles
Une
image
vectorielle
est
composée d'objets géométriques
individuels (segments de droite,
polygones, arcs de cercle, etc.)
ayant chacun divers attributs
(position, couleur, etc.).
Fichiers MIF - MID : format d'échange du SIG MapInfo
(MapInfo Interchange Format)
Deux fichiers associés
xx.MIF : contient la géométrie des objets
- composé d'une en-tête :
* références géographiques
* description des données attributaires
- d'une description de la géométrie
* coordonnées
* représentation
xx.MID : contient les données attributaires
Structure des fichiers MIF - MID
.MIF
En-tête
.MID
Version 300
Charset "WindowsLatin1"
Description du MID
Delimiter ","
Index 3,12,14
CoordSys Earth Projection 3, 1002, "m",
0, 46.8, 45.898918964419,
Système de
47.696014502038, 600000, 2200000
coordonnées
Bounds (-113967455.417, MapInfo
106367759.649) (115167455.417,
122767151.185)
Columns 14
ID_COM Integer
NOM_COM Char(50)
NUM_COM Char(5)
Objets
STATUT Char(2)
X_COM Integer
Y_COM Integer
Description
SURFACE Integer
POPU Integer
du MID
NUM_CAN Char(2)
NUM_ARR Char(1)
NOM_DEP Char(30)
NUM_DEP Char(3)
NOM_REG Char(30)
NUM_REG Char(2)
Data
Region 1
131
479087 2463986
479112 2463991
479276.9 2464086
479452 2464171
Description
479562 2464247
d'un
…
polygone
…
478947 2463896
479077 2463971
479087 2463986
Pen (1,2,0)
Brush (2,16777215,16777215)
Center 480103.6 2464572.6
Region 1
221
508173 2418283
508188 2418343
508213 2418363
508268 2418378.1
508318 2418399
508343.1 2418399
270000001,"ACLOU","27001","06",480418,2464086,370,200,"09","2","EURE","27","HAUTE-NORMANDIE","23"
270000002,"ACON","27002","06",509314,2419859,916,400,"25","3","EURE","27","HAUTE-NORMANDIE","23"
270000003,"ACQUIGNY","27003","06",515518,2463665,1783,1400,"39","3","EURE","27","HAUTE-NORMANDIE","23"
270000004,"AIGLEVILLE","27004","06",533415,2445735,324,200,"26","3","EURE","27","HAUTE-NORMANDIE","23"
270000005,"AILLY","27005","06",520222,2462811,1555,800,"42","1","EURE","27","HAUTE-NORMANDIE","23"
fichier MIF : gestion des polygones disjoints
exemple de la commune du Val-de-Reuil (insee : 27701)
nombre de polygones
6000
8000
3
000
1
000
2
0000
[22] "Region 3"
nombre de sommets
[23] " 390"
[24] "515719 2470940"
[25] "515754 2471010"
[26] "515819 2471131"
[27] "515894 2471236"
. . .
1
. . .
[409] "515684 2470555.1"
[410] "515639.1 2470595"
[411] "515659 2470705"
[412] "515699 2470820"
[413] "515719 2470940"
[414] " 73"
nombre de sommets
[415] "519146.4 2471924"
[416] "519209.1 2472150.7"
[417] "519184 2472157.7"
2
. . .
. . .
[486] "519216 2471842"
[487] "519146.4 2471924"
nombre de sommets
[488] " 41"
[489] "518682 2478654.1"
[490] "518303.6 2478485.3"
. . .
. . .
3
[527] "518636 2479335"
[528] "518667 2479000"
[529] "518682 2478654.1"
Pen (1,2,0)
Brush (2,16777215,16777215)
Center 515828.8 2473912
Exemple de format texte
► Pour des données raster
Fichier ASCII format ArcGis text raster (.asc)
Une image matricielle (bitmap ou
raster) est composée d'un tableau
de points (pixels) associés à une
ou plusieurs valeurs visualisées
par la couleur.
L'ouvrir avec un éditeur de texte pour :
En-tête
Valeurs pour
chaque pixel
ncols
2442
nrows
3719
xllcorner 575350,517
yllcorner 2444630,98
cellsize
30
NODATA_value -9999
- Vérifier que le séparateur décimal soit un point
- Vérifier la cohérence de cette valeur avec le
codage des pixels
-9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999
…
…
91 92 93 93 91 90 89 89 89 89 89 88 88 88 87 86 86 86 86 86 86 86 85 81 79 77 78 78 77 76 75
74 76 76 73 70 70 69 70 70 72 73 74 75 76 75 76 75 73 73 68 64 60 60 60 60 65 69 75 77 71 62
59 57 56 57 58 62 66 75 78 78 77 77 77 75 74 73 73 72 73 74 75 75 77 79 79 79 78 78 77 76 74
73 70 69 68 68 68 68 67 66 65 63 62 60 60 59 59 -9999 -9999 -9999 -9999
-9999 -9999 82 80 79 80 83 87 92 92 91 91 89 89 88 88 90 88 86 87 88 88 87 84 84 80 78 78 78
77 77 76 75 74 73 72 72 71 72 71 71 72 74 77 78 79 80 82 85 86 90 92 96 98 98 96 91 88
…
Fichier raster (.asc) et sa représentation
NCOLS 10
NROWS 12
XLLCORNER 4
YLLCORNER 8
CELLSIZE 4
NODATA_value -3.4e+38
2 7 9 1 8 6 2 4 8 4
6 3 3 6 3 5 4 2 1 2
10 7 2 5 8 2 1 9 1 5
2 2 5 5 8 8 7 3 4 6
1 10 6 10 6 2 8 10 8 6
3 4 10 1 7 1 2 9 7 8
7 6 4 3 3 7 4 8 5 3
1 9 10 6 9 6 8 3 1 10
8 5 6 6 6 1 1 5 2 7
10 5 5 8 5 3 1 2 7 5
9 1 8 6 9 1 9 2 1 8
5 7 5 7 1 6 7 1 2 5
YLLCORNER
NCOLS
1
56
52
10
1
48
44
40
36
32
NROWS
28
24
20
16
12
8
12
CELLSIZE
4
exemple : "rst1.asc"
XLLCORNER
44
40
36
32
28
24
20
16
12
8
4
0
0
LIRE DES
FICHIERS
CARTOGR
APHIQUES
Importer des données géographiques dans
Fonctions suivant les formats
Données vectorielles
fichier
Shapefile
Binaire
codage
fonctions
librairies
readShapeSpatial ()
readOGR ()
maptools
rgdal
readOGR ()
rgdal
*.tab
Texte
Données raster
Binaire
codage
MIF / MID
GML, KML
fichier
Images (*.bmp,
*.jpeg, *.png)
*.asc
Texte
*.bil
fonctions
librairies
readGDAL ()
raster ()
rgdal
raster
import.asc ()
read.asc ()
readGDAL ()
raster ()
ade4habitat
SDMTools
rgdal
raster
library (rgdal)
Utilise le package sp et
les runtimes GDAL et
PROJ.4
Lecture de données vectorielles
Aux formats : ESRI Shapefile, ESRI ArcSDE,
MapInfo (tab et mif/mid), GML, KML, DXF, ...
# Afficher les formats
supportés (pilotes)
ogrDrivers ()
readOGR (dsn, layer, verbose = TRUE, p4s=NULL, stringsAsFactors=default.stringsAsFactors(),
drop_unsupported_fields=FALSE, input_field_name_encoding=NULL, …)
dsn : nom d'un répertoire ou nom de fichier suivant le pilote
layer : nom de la couche à lire
p4s : système de référence cartographique (CRS)
drop_unsupported_fields : si TRUE saute les champs autre que String, Integer
et Real; Date, heure et DateTime sont converties en String.
input_field_name_encoding : codepage pour le nom de dsn et de layer.
Retourne un objet spatial de classe SpatialPointsDataFrame,
SpatialLinesDataFrame ou SpatialPolygonsDataFrame.
 Premier exemple : lecture d'un fichier .tab de MapInfo
d78 <- readOGR (dsn="Dept78.TAB", layer="Dept78", stringsAsFactors=FALSE)
plot (d78, col = "snow2")
Objet de classe SpatialPolygonsDataFrame [package "sp"]
Données vectorielles
str (d78)
Formal class 'SpatialPolygonsDataFrame' [package "sp"] with
..@ data
..
..
..
..
..
..
..$
..$
..$
..$
..$
..$
5 slots
Fonctions associées
:'data.frame': 1 obs. of 6 variables:
Code
:
Nom
:
INSEE_Région
:
Id_BDCarto
:
Abscisse_Département:
Ordonnée_Département:
chr
chr
chr
int
int
int
"78"
"YVELINES"
"11"
78
583975
2423234
données
attributaires
ogrInfo (dsn="Dept78.TAB", layer="Dept78")
correspond à un str() des
données attributaires
..@ polygons
:List of 1
.. ..$ :Formal class 'Polygons' [package "sp"] with 5 slots
.. .. .. ..@ Polygons :List of 1
.. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
.. .. .. .. .. .. ..@ labpt : num [1:2] 563622 2424181
.. .. .. .. .. .. ..@ area
: num 2.31e+09
ogrFIDs("Dept78.TAB", "Dept78")
.. .. .. .. .. .. ..@ hole
: logi FALSE
.. .. .. .. .. .. ..@ ringDir: int 1
Liste les ID
.. .. .. .. .. .. ..@ coords : num [1:3355, 1:2] 570261 570196 570161 570162 570277 ...
des polygones
.. .. .. ..@ plotOrder: int 1
.. .. .. ..@ labpt
: num [1:2] 563622 2424181
.. .. .. ..@ ID
: chr "1"
.. .. .. ..@ area
: num 2.31e+09
..@ plotOrder
: int 1
..@ bbox
: num [1:2, 1:2] 534891 2382272 592091 2454474
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:2] "x" "y"
.. .. ..$ : chr [1:2] "min" "max"
bbox (d78)
min
max
x 534891 592091
y 2382272 2454474
Emprise de la carte
..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
OGRSpatialRef
.. .. ..@ projargs: chr " +proj=lcc +lat_1=45.898918964419 +lat_2=47.696014502038
+lat_0=46.8 +lon_0=0| __truncated__
("Dept78.TAB", "Dept78")
Affiche le CRS
library (rgdal) - Données vectorielles
Lecture de fichiers MIF / MID
(MapInfo)
PAS DE MELANGE DE GEOMETRIES DANS UNE COUCHE
que des polygones, points …
c78p <- readOGR (dsn="Com78p.MIF", layer="Com78p")
Erreur dans ogrInfo(dsn = dsn, layer = layer,
input_field_name_encoding = input_field_name_encoding) :
Multiple incompatible geometries: 1:3
file <- "Com78.MIF"
c78 <- readOGR (file, layer="Com78")
plot (c78)
Mettre le nom du fichier
sans l'extention
ogrInfo (dsn = file, layer="Com78")
Source: "C:\Mes documents
sauvegardés\Enseignement\Séminaire
R\Séminaire_201103\Cartes_78_L2E\Com78.MIF
", layer: "Com78"
Driver: MapInfo File number of rows 262
Feature type: wkbPolygon with 2 dimensions
+proj=lcc +lat_1=45.89891889 +lat_2=47.69601444
+lat_0=46.8 +lon_0=0 +x_0=600000
+y_0=2200000 +a=6378249.2
+b=6356515.000000472 +towgs84=-168,60,320,-0,-0,-0,0 +pm=2.337229166667
+units=m +no_defs
Number of fields: 9
name type length typeName
1
ID
2
10
Real
2
NOM
4
50
String
3
INSEE
4
5
String
4
X
2
8
Real
5
Y
2
8
Real
6 SUPERFICIE
2
10
Real
7 POPULATION
2
8
Real
8
NOM_DEPT
4
30
String
9 NOM_REGION
4
30
String
points (c78@data$X, c78@data$Y,pch=19,col=3)
Données vectorielles
Lecture de fichiers Shapefile (ESRI)
Réparties en plusieurs fichiers : *.shp, *.shx, *.dbf, *prj
 library (rgdal)
c78sh <- readOGR (dsn="ESRI", layer="Com78_region")
Nom du répertoire
contenant les fichiers
nom du fichier sans
l'extention
OGR data source with driver: ESRI Shapefile
Source: "ESRI", layer: "Com78_region"
with 262 features and 9 fields
ogrInfo (dsn="ESRI", layer="Com78_region")
Source: "ESRI", layer: "Com78_region"
Driver: ESRI Shapefile number of rows 262
Feature type: wkbPolygon with 2 dimensions
+proj=lcc +lat_1=45.89891889
+lat_2=47.69601444 +lat_0=46.8
+lon_0=2.337229104484 +x_0=600000
+y_0=2200000 +ellps=clrk80 +units=m +no_defs
Number of fields: 9
name type length typeName
1
ID
0
10 Integer
2
NOM
4
50
String
3
INSEE
4
5
String
4
X
0
8 Integer
5
Y
0
8 Integer
6 SUPERFICIE
0
10 Integer
7 POPULATION
0
8 Integer
8
NOM_DEPT
4
30
String
9 NOM_REGION
4
30
String
 library (maptools)
c78sh <- readShapeSpatial (Com78_region.shp)
Retourne aussi un objet
SpatialPolygonsDataFrame
Lecture de fichiers KML
library (rgdal) - Données vectorielles
Avec Google Earth utiliser le
système de référence
international : WGS 84
(Google Earth)
d78k <- readOGR ("d78WGS84.KML", layer="Contour78")
plot (d78k )
Nom du fichier
Champ name du
fichier KML
Début du fichier d78WGS84.KML
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<name>Contour78</name>
<description><![CDATA[]]></description>
<Style id="1">
# Fichier KLM créé avec Google Earth
Vk <- readOGR ("Versailles - Polygone.kml", layer="Versailles - Polygone.kml")
plot (Vk, add=TRUE, col=2 )
# Création et écriture d'un KML par la fonction kmlPolygon de Maptools
kmlPolygon (obj=d78WGS84, kmlfile="d78WGS84.KML", name="Contour",
description="", col=NULL, visibility=1, lwd=1, border=1,
kmlname="Contour78", kmldescription="")
library (rgdal) - Données raster
Liste des pilotes existants
Drv <- gdalDrivers()
Drv [which(Drv[,3] | Drv[,4]), c(1,2)]
Pilotes fichiers
images : JPEG,
PNG, BMP,
GTiff
Pilotes fichiers rasters :
AAIGrid Arc/Info ASCII Grid
EHdr
ESRI .hdr Labelled
ENVI
ENVI .hdr Labelled
GSAG Golden Software ASCII Grid (.grd)
GTiff
GeoTIFF
XPM
X11 PixMap Format
...
readGDAL (fname, offset, region.dim, output.dim, band, p4s=NULL, ...,
half.cell=c(0.5, 0.5), silent = FALSE)
fname :
offset :
Nom de la carte avec l'extension identifiant le pilote
Nombre de lignes et de colonnes de l'origine (commence au coin supérieur
gauche) *
region.dim :Le nombre de lignes et de colonnes à lire dans l'ensemble de données *
output.dim :Le nombre de lignes et de colonnes à retourner dans l'objet créé *
p4s :
Système de référence cartographique (CRS)
half.cell : Utilisé pour ajuster l'intra-cellule de compensation à partir du coin au centre,
le plus souvent par défaut, mais peut être réglé pour c = (0,0) si nécessaire *
silent :
Si TRUE, le commentaire et les erreurs non fatales du pilote supprimés
* peut changer
Lecture d'un fichier image
Veg <- readGDAL ("Veg78.jpg")
image (Veg) # pour l'affichage
Retourne un objet spatial SpatialGridDataFrame
L'image
d'origine
Objet de classe SpatialGridDataFrame [package "sp"]
Pour les données raster
str (Veg)
Formal class 'SpatialGridDataFrame' [package "sp"] with 6 slots
..@ data
:'data.frame': 450912 obs. of 3 variables:
.. ..$ band1: int [1:450912] 255 255 255 255 255 255 255 255 255 255 ... Si image : gestion
bmp :
1 band
.. ..$ band2: int [1:450912] 255 255 255 255 255 255 255 255 255 255 ... des couleurs
jpeg, png : 3 bands
.. ..$ band3: int [1:450912] 255 255 255 255 255 255 255 255 255 255 ... sinon, valeurs
lues.
..@ grid
:Formal class 'GridTopology' [package "sp"] with 3 slots
.. .. ..@ cellcentre.offset: Named num [1:2] 0.5 0.5
.. .. .. ..- attr(*, "names")= chr [1:2] "x" "y"
Ajout possible
.. .. ..@ cellsize
: num [1:2] 1 1
Taille du pixel
d'autres données
.. .. ..@ cells.dim
: int [1:2] 672 671
dans @data
ncol, nrow soit y,x
..@ grid.index : int(0)
..@ coords : num [1:2, 1:2] 0.5 671.5 0.5 670.5
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : NULL
.. .. ..$ : chr [1:2] "x" "y"
..@ bbox
: num [1:2, 1:2] 0 0 672 671
xmin, ymin, xmax, ymax
.. ..- attr(*, "dimnames")=List of 2
= emprise de la carte
.. .. ..$ : chr [1:2] "x" "y"
.. .. ..$ : chr [1:2] "min" "max"
..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
.. .. ..@ projargs: chr NA
pas de CRS par défaut pour une image
(absent du fichier)
library (raster)
Données raster
Une fonction unique pour créer ou lire un raster
raster (x, crs=NA, ...)
 Création d'un raster
nrows <- 12; ncols <- 10; cellsize <- 4; xllcorner <- 4; yllcorner <- 8
rst <- raster (nrows = nrows, ncols = ncols,
xmn = xllcorner, xmx = xllcorner + (ncols*cellsize),
ymn = yllcorner, ymx = yllcorner + (nrows*cellsize))
rst [ ] <- sample(1:10, size=nrows*ncols, replace = TRUE)
56
52
NCOLS
1
10
1
48
Affecte les valeurs
44
40
36
 Ecriture d'un raster au format asc
32
NROWS
28
writeRaster ( rst, filename="rst1.asc")
24
20
16
12
12
CELLSIZE
4
XLLCORNER
28
32
36
40
44
0
12
16
20
24
rst1 <- raster("rst1.asc")
plot (rst1, asp=1)
8
0
4
8
 Lecture d'un fichier raster
YLLCORNER
Objet de classe raster
"rst1.asc"
NCOLS 10
NROWS 12
XLLCORNER 4
YLLCORNER 8
CELLSIZE 4
rst
Extent
ymax
48
44
Y
Extent
4
44
8
56
1
52
rst@extent
:
:
:
:
:
10
56
class
: RasterLayer
dimensions : 12, 10, 1 (nrow, ncol, nlayers)
resolution : 4, 4 (x, y)
extent
: 4, 44, 8, 56 (xmin, xmax, ymin, ymax)
projection : +proj=longlat +datum=WGS84
values
: in memory
min value : 1
max value : 10
class
xmin
xmax
ymin
ymax
NCOLS
1
40
36
32
28
NROWS
24
20
16
12
ymin
YLLCORNER
xmax <- xllcorner + (NCOLS*cellsize)
ymax <- yllcorner + (NROWS*cellsize)
8
Cellsize
12
0
[1] 0 0
nombre entier de cellule
x <- round (xllcorner / cellsize, 0)
Ox <- xllcorner - (x*cellsize)
# origine en x
y <- round (yllcorner / cellsize, 0)
Oy <- yllcorner - (y*cellsize)
# origine en y
xmin
XLLCORNER
X
44
36
40
32
28
24
16
20
8
12
# Calcul de l'origine
4
origin (rst)
0
origine
xmax
Remarque sur les coordonnées de
l'origine d'un raster
53
49
40
36
32
33
29
25
28
24
20
Y
21
17
13
16
12
9
5
8
0
0
4
-4
X
rst2.asc
NCOLS
NROWS
XLLCORNER
YLLCORNER
CELLSIZE
origin (rst)
10
12
3
5
4
-1 1
extent (rst)
class : Extent
xmin : 3
xmax : 43
ymin : 5
ymax : 53
X
rst4.asc
NCOLS
NROWS
XLLCORNER
YLLCORNER
CELLSIZE
10
12
3
-8
4
origin (rst)
-1 0
extent (rst)
class : Extent
xmin : 3
xmax : 43
ymin : -8
ymax : 40
43
39
35
31
27
23
19
15
11
-8
7
43
31
35
39
19
23
27
7
11
15
origine
0
3
origine
0
3
Y
45
41
37
MODIFIER
DES
OBJETS
CARTOGRA
PHIQUES
Changer de système géographique de référence
Avoir le bon CRS !
car
l'ensemble des couches doit être dans le même système de projection
Utilisation des données EPSG pour changer de système géographique
Rappel : accès aux données du fichier des codes de référence EPSG par la fonction make_EPSG () de la
librairie rgdal
Trois CRS pour l'Île-de-France
Code
EPSG
note
Arguments PROJ.4 pour la définition du système de référence (CRS)
4326
WGS 84
+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
2154
RGF93 / Lambert-93
+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000
+y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
27572
NTF (Paris) /
Lambert zone II
+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000
+y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0
+pm=paris +units=m +no_defs
Dans la librairie mapproj, la fonction mapproject() permet la conversion de la latitude et la longitude du
système géodésique mondial WGS84 vers un autre système de projection.
A éviter, il y a moins de choix et la conversion est moins bonne.
library (rgdal)
ici : SpatialPolygonsDataFrame
d78 <- readOGR ("Dept78.TAB", layer="Dept78")
2400000
 Reprojeter en RGF93, code EPSG : 2154
600000
2380000
580000
plot (d78, axes = TRUE, las=2)
title ("epsg 27572 - NTF (Paris) / Lambert zone II")
2420000
540000
"+proj=lcc +lat_1=45.898918964419 +lat_2=47.696014502038 +lat_0=46.8 +lon_0=0
+x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515.000000472 +towgs84=-168,60,320,-0,-0,-0,0 +pm=2.337229166667 +units=m +no_defs"
2440000
520000
proj4string (d78) # Affiche le système de référence (CRS)
epsg 27572 - NTF (Paris) / Lambert zone II
560000
Changer de système de référence
pour des objets de classe : Spatial... [ librairie sp ]
epsg 2154# RGF93 / Lambert-93
6880000
d78RGF93 <- spTransform (d78, CRS ("+init=epsg:2154") )
6860000
proj4string (d78RGF93)
6840000
640000
620000
plot (d78RGF93, axes = TRUE, las=2)
title ("epsg 2154 # RGF93 / Lambert-93")
600000
6820000
580000
"+init=epsg:2154 +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000
+y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"
epsg 4326 # WGS 84
49.1N
 Reprojeter en WGS 84 , code EPSG : 4326
49N
48.9N
d78WGS84 <- spTransform (d78, CRS ("+init=epsg:4326") )
48.8N
proj4string (d78WGS84)
48.6N
48.7N
48.5N
plot (d78WGS84, axes = TRUE, las=2)
title ("epsg 4326 # WGS 84")
2.4E
2.2E
2E
1.8E
1.6E
1.4E
"+init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0"
Comparaison des représentations suivant le CRS
NTF / Lambert II
code EPSG : 27572
WGS 84
code EPSG : 4326
RGF93 / Lambert93
code EPSG : 2154
epsg 27572 - NTF (Paris) / Lambert zone II
epsg 4326 # WGS 84
epsg 2154# RGF93 / Lambert-93
49.1N
6880000
49N
2440000
48.9N
6860000
48.8N
2420000
48.7N
6840000
48.6N
2400000
48.5N
6820000
Emprise des cartes
bbox(d78)
bbox(d78RGF93)
bbox(d78WGS84 )
min
max
x 534891 592091
y 2382272 2454474
min
max
x 586431.7 643333.8
y 6815921.5 6888312.4
min
max
x 1.446436 2.228964
y 48.438499 49.085414
2.4E
2.2E
2E
1.8E
1.6E
1.4E
640000
620000
600000
580000
600000
580000
560000
540000
520000
2380000
Changer de système de référence
pour des objets de classe RasterLayer [ librairie raster ]
library (raster)
Veg <- raster ("d78Veg.asc")
projection (Veg) # [1] "NA" Affiche le système de référence
VegWGS84 <- projectRaster (Veg, crs = proj4string (d78WGS84))
raster d'origine
Nouveau système de référence. Ici,
celui du SpatialPolygonsDataFrame
d78WGS84
Mais
Erreur dans projectRaster :
input projection is NA
donc :
1 - Affecter le BON système de référence
projection (Veg) <- proj4string (d78)
cohérent avec
les coordonnées
plot (VegWGS84)
plot (d78WGS84, add=TRUE, lwd=4)
Puis
2 - Recalculer les coordonnées des cellules par la fonction projectRaster ()
VegWGS84 <- projectRaster (Veg, crs = proj4string (d78WGS84))
projection (VegWGS84) # [1] "+init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84
+no_defs +towgs84=0,0,0 +over"
Attention les x, y de la résolution (pixel) peuvent devenir différents. Problème pour l'écriture au format asc
Library raster
Modifier la grille d'un raster
50
Diminuer la résolution
rst1 <- raster ("rst1.asc")
40
10
Fonction
d'aggrégation
des valeurs
30
4
2
20
raster Facteur x
source (entier)
6
10
rstA2 <- aggregate (rst1, fact=2, fun=mean)
8
plot (rst1, asp=1)
x11()
plot (rstA2, asp=1, main="Fact *2")
10
20
30
40
7
40
rstA2
: RasterLayer
: 6, 5, 1
(nrow, ncol, nlayers)
: 8, 8
(x, y)
: 4, 44, 8, 56 (xmin, xmax, ymin, ymax)
: 2.25
: 7.25
6
5
30
class
dimensions
resolution
extent
min value
max value
rst1
: RasterLayer
: 12, 10, 1
: 4, 4
: 4, 44, 8, 56
:1
: 10
50
Fact *2
4
# resample pour modifier l'origine et la résolution et croiser les valeurs
10
20
3
10
20
30
40
Modifier la grille d'un raster
Diminuer la résolution : exemple
d78Veg <- raster ("d78Veg.asc",crs="+init=epsg:27572")
d78Veg10 <- aggregate (d78Veg, fact=10, fun=mean)
plot (d78Veg10, main="d78Veg10")
plot (d78Veg, main="d78Veg")
Problème de valeur pour les
pixels en limite de zone
writeRaster (d78Veg10, filename="d78Veg10.asc")
d78Veg
dimensions : 2408, 1907, 1
resolution : 30, 30
d78Veg10
dimensions : 241, 191, 1
resolution : 300, 300
Library raster
50
Modifier la grille d'un raster
10
40
Augmenter la résolution
8
30
6
4
20
2
10
rst1 <- raster ("rst1.asc")
rstD2 <- disaggregate (rst1, fact=2, method='ngb')
20
30
40
Fact :2
50
10
Calcul des
valeurs
8
6
30
raster Facteur :
source (entier)
40
10
20
2
10
20
30
40
Fact :c(5,5)- bilinear
40
plot (rstD2, asp=1)
4
10
rstD2
: RasterLayer
: 24, 20, 1
(nrow, ncol, nlayers)
: 2, 2
(x, y)
: 4, 44, 8, 56 (xmin, xmax, ymin, ymax)
:1
: 10
50
rst1
class
: RasterLayer
dimensions : 12, 10, 1
resolution
: 4, 4
extent
: 4, 44, 8, 56
min value
:1
max value : 10
10
30
5
0
20
rstD2b <- disaggregate(rst1, fact=c(5,5), method='bilinear')
10
plot (rstD2b, asp=1, main="Fact :c(5,5)- bilinear")
10
20
30
40
CREER
DES
OBJETS
CARTOGR
APHIQUES
Caler un raster image
Les données :
Veg
- un fichier image (bmp)
(carte communale de la végétation des Yvelines)
Veg <- raster ("Veg78.bmp")
plot(Veg)
bVeg <- as.vector (bbox (Veg) ) # emprise de l'image
rect (bVeg[1], bVeg[2], bVeg[3], bVeg[4], border=1, lty=2)
class
dimensions
resolution
extent
projection
values
min value
max value
: RasterLayer
: 671, 672, 1
: 1, 1 (x, y)
: 0, 672, 0, 671
: NA
: Veg78.bmp
:0
: 255
1 - Isoler la carte du fond de l'image
hist (Veg)
Histogram of values(Veg)
250000
Veg [ which (values (Veg) == 6)] <- NA
Couleur fond image
origin (Veg)
[1] 0 0
150000
hist (Veg)
50000
res (Veg)
[1] 1 1
0
extent (Veg)
class : Extent
xmin : 89
Nouvelle
xmax : 577
ymin : 31
emprise
ymax : 647
Frequency
Veg <- trim (Veg) # suppression des NA
0
1
2
3
values(Veg)
4
5
6
Caler un raster image
2 - Ajuster le raster sur la référence (raster)
d78Veg10 <- raster("d78Veg10.asc", crs="+init=epsg:27572") # raster source
d78Veg10
dimensions : 241, 191, 1
resolution : 300, 300
extent
: 534895, 592195, 2382200, 2454500
Création d'un raster de référence sans valeur (reprenant ici les caractéristiques du raster source)
r <- raster (nrows= nrow(d78Veg10), ncols= ncol(d78Veg10),
xmn= xmin(d78Veg10), xmx= xmax(d78Veg10), ymn= ymin(d78Veg10), ymx= ymax(d78Veg10),
crs= "+init=epsg:27572" )
Ajuster les emprises (étendues)
extent (Veg) <- extent (r)
Création du raster par échantillonnage
fonction resample ()
Vegr <- resample (Veg, r, method='ngb')
objet échantillonné
Cellules et valeurs recalculées
Vegr
class
raster de
référence
méthode de calcul
des valeurs
: RasterLayer
dimensions : 241, 191, 1 (nrow, ncol, nlayers)
resolution : 300, 300 (x, y)
extent
: 534895, 592195, 2382200, 2454500 (xmin, xmax, ymin, ymax)
projection : +init=epsg:27572 +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000
+y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs
values
: in memory
min value : 0
max value : 5
plot( Vegr, main="Vegr ngb")
Créer un raster à partir de données existantes
Les données :
- une carte (objet SpatialGridDataFrame) des communes (n polygones)
- un fichier de valeurs par commune
- un raster de référence
Lecture de la carte des communes
c78 <- readOGR ("Com78.MIF", layer="Com78")
Lecture des données caractérisant les communes
nbi <- read.table ("nbi_CAH.txt")
Introduction dans les données attributaires
c78@data <- cbind (c78@data, nbi$classe)
str (c78@data)
Lecture du raster de référence
d78alt <- raster ("d78alt.asc")
Rasterisation du SpatialGridDataFrame
rVeg <- rasterize (c78, d78alt, field=10)
Objet Raster de Champ de
Spatial... référence la valeur
writeRaster (rVeg, filename="d78Veg.asc")
plot (rVeg)
origin (rVeg)
[1] -5.026339 -9.726538
origin (d78alt)
[1] -5.026339 -9.726538
Créer un raster à partir de données existantes
Les données :
- contour des Yvelines (1 polygone : SpatialPolygonsDataFrame)
- 4 rasters (MNT - altitude *) couvrant ce département
n <- c("rn","rnw","rwy","rs")
rec <- rbind (as.vector(bbox(rn))
,as.vector(bbox(rnw))
,as.vector(bbox(rwy))
,as.vector(bbox(rs)))
par (mar=c(2.2,2.2,.2,.2))
plot (c(min(rec[,1]),max(rec[,3])),c(min(rec[,2]), max(rec[,4])), type="n", asp=1)
for (i in 1:nrow(rec)) {
rect (rec[i,1],rec[i,2],rec[i,3],rec[i,4], border=i+1, lwd=2)
text (mean(rec[i,c(1,3)]), mean (rec[i,c(2,4)]), labels=n[i], col=i+1, cex=3) }
plot (d78,add=TRUE)
rect (bd78[1], bd78[2], bd78[3], bd78[4], border=1, lty=2)
(*) ASTER Global Digital Elevation Model (ASTER GDEM), modèle numérique de terrain
(MNT) disponible sur le monde entier
http://www.ersdac.or.jp/GDEM/E/index.html
2500000
rnw
rn
rwy
rs
2450000
emprise des Yvelines
2400000
bd78 <- as.vector (bbox(d78))
2350000
Objectif : avoir le MNT des Yvelines
plot (rn, main ="MNT - Altitude", sub="IdF nord")
2550000
d78 <- readOGR ("Dept78.TAB", layer="Dept78")
rn <- raster ("aster_idf_nord.txt", crs= "+init=epsg:27572")
rnw <- raster ("aster_idf_nw.txt", crs= "+init=epsg:27572")
rwy <- raster ("aster_idf_ouest_yvelines.asc", crs= "+init=epsg:27572")
rs <- raster ("aster_idf_sud.txt", crs= "+init=epsg:27572")
500000
550000
600000
650000
library (raster)
Créer un raster à partir de données existantes
1 - Découper les rasters par l'emprise du polygone
Fonction crop ()
rd78n
<- crop (rn, extent (bd78[1],bd78[3],bd78[2],bd78[4]))
rd78nw <- crop (rnw, extent (bd78[1],bd78[3],bd78[2],bd78[4]))
rd78wy <- crop (rwy, extent (bd78[1],bd78[3],bd78[2],bd78[4]))
rd78s
<- crop (rs, extent (bd78[1],bd78[3],bd78[2],bd78[4]))
xmin
xmax
ymin
ymax
raster emprise
source
2 - Fusionner les rasters
Fonction merge ()
rd78M <- merge (rd78n, rd78nw, rd78wy, rd78s, tolerance=1)
rasters
à fusionner
Tolérance
admissible
% taille
cellule
Les rasters devraient avoir même origine et même résolution
Ici même résolution
resolution : 30, 30 (x, y)
cellsize = (rec[1,3]-rec[1,1]) / ncol(rn)
plot (rd78M, asp=1 )
plot (d78, add=TRUE)
mais origines différentes
origin (rn)
origin (rnw)
origin (rwy)
origin (rs)
#
#
#
#
10.517 -9.020
-2.671439 7.268528
-5.026339 -9.726538
13.678634 -7.611634
Créer un raster à partir de données existantes
3 - Pixellisation d'un objet spatial
Fonction rasterize ()
class (d78)
[1] "SpatialPolygonsDataFrame"
d78alt <- rasterize (d78, rd78M , mask=TRUE)
objet
Spatial
raster à
découper
Option
Si TRUE :
Utilise
valeurs du
raster
d78alt
class
: RasterLayer
dimensions : 2408, 1907, 1 (nrow, ncol, nlayers)
plot (d78alt, asp=1)
resolution : 30, 30 (x, y)
extent
: 534895, 592105, 2382260, 2454500 (xmin, xmax, ymin, ymax)
projection : +proj=lcc +lat_1=45.898918964419 +lat_2=47.696014502038 +lat_0=46.8 +lon_0=0 +x_0=600000
+y_0=2200000 +a=6378249.2 +b=6356515.000000472 +towgs84=-168,-60,320,-0,-0,-0,0
+pm=2.337229166667 +units=m +no_defs
values
: in memory
min value : -111
max value : 231
Ecriture du raster au format asc
writeRaster (d78alt, filename="d78alt.asc")
Créer des objets : POINTS
library (rgdal)
plot (d78WGS84, axes = TRUE)
(pt <- locator (type = "p"))
Clic droit pour arrêter
$x
[1] 1.556412 2.103122 1.862998 1.522108
$y
[1] 49.02610 48.79291 48.51591 48.56961
pt <- data.frame (x = pt$x, y = pt$y)
(pt <- rbind (pt, c(1.84, 48.8)))
coordonnées d'un 5ème point
1
2
3
4
5
x
1.556412
2.103122
1.862998
1.522108
1.840000
y
49.02610
48.79291
48.51591
48.56961
48.80000
 2 méthodes
# affectation du BON système de projection
proj4string (pt) <- CRS (proj4string (d78WGS84)))
49N
48.5N
plot (pt, col=2, pch=19, add=TRUE)
48.9N
coordinates (pt) <- ~ x + y
48.8N
# transformation en objet de classe SpatialPoints
48.7N
# ou
Système de référence
du fond cartographique
48.6N
Data.frame des coordonnées
49.1N
pt <- SpatialPoints (pt, proj4string = CRS (proj4string (d78WGS84)))
SpatialPointsDataFrame() permet d'associer des données attributaires
1.4E
1.6E
1.8E
2E
2.2E
2.4E
Objet de classe SpatialPoints (librairie sp)
library (rgdal)
str (pt)
Formal class 'SpatialPoints' [package "sp"] with 3 slots
..@ coords
: num [1:5, 1:2] 1.56 2.1 1.86 1.52 1.84 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : NULL
.. .. ..$ : chr [1:2] "x" "y"
..@ bbox
: num [1:2, 1:2] 1.52 48.52 2.1 49.03
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:2] "x" "y"
.. .. ..$ : chr [1:2] "min" "max"
..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
.. .. ..@ projargs: chr " +init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
+towgs84=0,0,0"
slot (pt, "bbox")
# identique à pt@bbox
min
max
x 1.522108 2.103122
y 48.515905 49.026098
pt@coords
[1,]
[2,]
[3,]
[4,]
[5,]
x
1.556412
2.103122
1.862998
1.522108
1.840000
# identique à slot (pt, "coords")
y
49.02610
48.79291
48.51591
48.56961
48.80000
Créer un POLYGONE
d78 <- readOGR ("Dept78.TAB", layer="Dept78")
Veg <- raster ("VegImg.asc")
projection (Veg) <- proj4string (d78)
plot (Veg)
zoom (Veg)
library (raster)
zoom (Veg)
uniquement avec raster
pol <- drawPoly (sp = TRUE)
Si TRUE : création d'un
objet SpatialPolygons
(librairie sp)
plot(d78,lwd=2)
plot(pol, add=TRUE,border=2,col="grey")
Objet de classe SpatialPolygons (librairie sp)
pol
Centroïde
Contour
An object of class "SpatialPolygons"
Slot "polygons":
[[1]]
An object of class "Polygons"
Slot "Polygons":
[[1]]
An object of class "Polygon"
Slot "labpt":
[1] 558287.4 2442123.6
Slot "area":
[1] 4832745
Slot "hole":
[1] FALSE
Slot "ringDir":
[1] 1
Slot "coords":
[,1] [,2]
[1,] 557806.5 2443614
[2,] 558860.6 2443559
[3,] 558583.2 2442782
[4,] 559581.8 2442421
[5,] 559554.1 2441090
[6,] 557223.9 2441062
[7,] 557223.9 2441451
[8,] 556863.3 2441534
[9,] 557806.5 2443614
Slot "plotOrder":
[1] 1
Slot "labpt":
[1] 558287.4 2442123.6
Slot "ID":
[1] "1"
Nom
Slot "area":
[1] 4832745
Slot "plotOrder":
[1] 1
Slot "bbox":
min
max
x 556863.3 559581.8
y 2441062.2 2443614.2
Slot "proj4string":
CRS arguments: NA
Des objets emboîtés
Polygon
Polygons
SpatialPolygons
Centroïde
du polygone
Créer des objets : POLYGONES
mpol <- drawPoly (sp = FALSE)
library (raster)
mpol
Si FALSE : création
d'une matrice des
coordonnées
[1,]
[2,]
[3,]
[4,]
[5,]
[6,]
[7,]
[8,]
[9,]
Création d'un objet classe Polygon
[,2]
2443587
2443559
2442782
2442394
2441118
2441034
2441478
2441562
2443587
library (rgdal)
Transforme la matrice de
coordonnées en objet de
classe Polygon
P <- Polygon (mpol)
Création d'un objet de classe Polygons
Ps
[,1]
557806.5
558832.8
558583.2
559554.1
559581.8
557251.7
557251.7
556835.6
557806.5
<- Polygons (list (P),
Liste des objets de
classe Polygon
"mpol")
Pourquoi cette classe?
Permettre la gestion
des polygones disjoints
Nom du
polygone (ID)
Création d'un objet spatial de classe SpatialPolygons
pol <- SpatialPolygons (list (Ps), proj4string=CRS("+init=epsg:27572"))
Liste des objets de
classe Polygons
Le BON système de référence
celui de la carte du tracé !
Créer des objets : POLYGONES
library (rgdal)
plot(d78,lwd=2)
mpol1 <- drawPoly (sp = FALSE, col=1)
mpol2 <- drawPoly (sp = FALSE, col=2)
mpol3 <- drawPoly (sp = FALSE, col=3)
Objet classe Polygon
P1 <- Polygon (mpol1)
P2 <- Polygon (mpol2)
P3 <- Polygon (mpol3)
Objet de classe Polygons
Ps12<- Polygons (list (P1, P2), "Pm") # polygone disjoint composé de P1, P2
Ps3 <- Polygons (list (P3)
, "P3")
Objet spatial de classe SpatialPolygons
polSp <- SpatialPolygons (list (Ps12, Ps3), proj4string = CRS(proj4string (d78)))
Système de référence du fond cartographique
Objet de classe SpatialPolygons [librairie sp]
str (polSp)
Nom des polygones
row.names (polSp)
Pm
[1] "Pm" "P3"
plot (d78)
plot (polSp, add=TRUE, col = c("peru","pink"))
text (coordinates (polSp), labels = row.names (polSp), font=2)
P3
Accès aux polygones par leur nom (ID)
polSp["P3"]@bbox
min
max
x 558980 568988.7
y 2403501 2413791.5
plot (polSp ["Pm"], col=3)
y <- as.vector (polSp ["Pm"]@bbox)
rect (y[1], y[2], y[3], y[4])
Remarque : pour un objet de classe SpatialPolygonsDataFrame, la sélection est réalisée comme pour un data.frame :
plot ( c78 [ "196", ] )
Créer des polygones
à partir d'un fichier de coordonnées
MatCoord <- read.table ("MatCoord.txt")
# création du fichier de coordonnées
MatCoord <- rbind (
cbind(as.data.frame(mpol1),pol="P1"),
cbind(as.data.frame(mpol2),pol="P2"),
cbind(as.data.frame(mpol3),pol="P3") )
write.table (MatCoord,"MatCoord.txt")
str (MatCoord)
'data.frame': 15 obs. of 3 variables:
$ V1 : num 552777 560249 550381 552777 569835 ...
$ V2 : num 2444100 2434091 2432117 2444100 2437192 ...
$ pol: Factor w/ 3 levels "P1","P2","P3": 1 1 1 1 2 2 2 2 2 3 ...
►library (ade4)
area.plot (MatCoord [, c(3,1:2)] )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
V1
V2
552777.3 2444100
560248.7 2434091
550380.9 2432117
552777.3 2444100
569834.5 2437192
576742.0 2436206
577446.8 2422814
570962.3 2422532
569834.5 2437192
563631.9 2413792
568988.7 2409140
566592.3 2403501
560953.5 2403924
558980.0 2408717
563631.9 2413792
pol
P1
P1
P1
P1
P2
P2
P2
P2
P2
P3
P3
P3
P3
P3
P3
Fonction graphique
Identificateur du polygone en
1ère colonne et de classe "factor"
►library (adehabitat)
polmap <- area2spol (map)
class (polmap)
2440000
2430000
V2
Création d'un objet de
classe :
[1] "SpatialPolygons"
attr(,"package")
[1] "sp"
2420000
plot.area (map, colpol=NA, lwd=1)
2410000
map <- as.area (MatCoord [, c(3,1:2)] )
Création d'un objet de classe :
class(map)
[1] "area"
"data.frame"
540000
550000
560000
570000
580000
plot.area (map, colpol=NA, lwd=1)
plot.area (map, which = "P2",
colpol="red", add=TRUE)
V1
QUELQUES
TRAITEMENTS
CARTOGRAPHI
QUES
Opérations logiques entre polygones
library (gpclib)
Créer un objet polygone de classe gpc.poly
a <- cbind (rnorm(100,mean=3), rnorm(100,mean=3))
b <- a [chull (a), ]
# 100 valeurs de x, 100 valeurs de y
# enveloppe des points (polygone convexe)
Conversion de b ("class matrix") en objet "gpc.poly"
b <- as (b, "gpc.poly")
# pas besoin de fermer le polygone !
plot b
nouvelle classe
6
5
7
5
8
4
3
4
b
GPC Polygon
Num. Contours: 1
Num. Vertices: 9
BBox (X): 0.83022 --> 5.826104
BBox (Y): -0.1570411 --> 5.256018
$x
[1] 0.830220 5.826104
$y
[1] -0.1570411 5.2560180
3
1
get.bbox(b)
2
Y
9
2
Formal class 'gpc.poly' [package "gpclib"] with 1 slots
..@ pts:List of 1
.. ..$ :List of 3
.. .. ..$ x
: num [1:9] 5.07 1.99 0.83 1 1.33 ...
.. .. ..$ y
: num [1:9] -0.157 0.713 1.706 4.144 4.502 ...
.. .. ..$ hole: logi FALSE
0
str(b)
1
1
2
3
4
5
6
plot (b, main ="plot b")
X
sapply(1:9, function(x) points (b@pts[[1]]$x[x], b@pts[[1]]$y[x],
pch = as.character(x)))
get.pts(b)
[[1]]$x
[1] 5.065687 1.985782 0.830220 1.003784 1.329209 2.266448 3.438016 5.204712 5.826104
[[1]]$y
[1] -0.1570411 0.7129101 1.7063695 4.1443739 4.5023267 5.2560180 5.2115360 4.2712646
[[1]]$hole
[1] FALSE
2.6550988
library (gpclib)
plot c
5
Fonctions combinant deux (n) polygones
4
Création d'un deuxième polygone
2
3
Y
c <- cbind(rnorm(100,mean=3), rnorm(100,mean=3))
c <- as (c[chull(c), ], "gpc.poly")
plot (c,poly.args = list(lty = 2), main ="plot c")
1
création d'un polygone multiple
0
abc = append.poly (b, c)
plot (abc,main = "append.poly (b, c)")
1
2
3
4
5
X
5
6
append.poly (b, c)
3
0
1
2
Y
Formal class 'gpc.poly' [package "gpclib"] with 1 slots
..@ pts:List of 2
.. ..$ :List of 3
.. .. ..$ x
: num [1:9] 5.07 1.99 0.83 1 1.33 ...
.. .. ..$ y
: num [1:9] -0.157 0.713 1.706 4.144 4.502 ...
.. .. ..$ hole: logi FALSE
.. ..$ :List of 3
.. .. ..$ x
: num [1:9] 4.77 4.27 3.21 2.53 1.48 ...
.. .. ..$ y
: num [1:9] 2.929 1.147 0.708 0.726 1.506 ...
.. .. ..$ hole: logi FALSE
4
str(abc)
0
1
2
3
X
4
5
6
library (gpclib)
5
6
intersect (b, c)
4
ibc = intersect (b, c)
plot (abc, main="intersect (b, c)")
plot (ibc, add = TRUE, poly.args = list (col = 2))
1
2
Y
3
b AND c
s etdiff (c, b )
0
setd iff (b , c)
1
2
3
6
2
0
Y
2
5
6
par(mfrow=c(1,2))
dbc = setdiff (b, c)
plot (abc, main="setdiff (b, c)")
plot (dbc, poly.args = list (col = 4), add = TRUE)
c NOT b
0
Y
b NOT c
4
X
4
4
6
0
dcb = setdiff (c,b)
plot (abc, main="setdiff (c, b)")
plot (dcb, poly.args = list (col = 3), add = TRUE)
6
union (b, c)
2
3
4
5
6
5
1
X
4
6
ubc = union (b, c)
plot (ubc, main="union (b, c)")
b OR c
3
5
2
4
X
1
3
0
2
Y
1
0
1
2
3
X
4
5
6
4
5
library (gpclib)
2
Y
3
bb = scale.poly (b, xscale=2, yscale=3)
plot (b)
plot (bb, add=TRUE, poly.args = list (lty = 2))
1
area.poly (b)
[1] 19.94434
0
area.poly (bb) * (2*3) # car xscale=2, yscale=3
[1] 19.94434
1
2
3
4
5
6
X
4
3
b
2
fermer le polygone
1
plot (xb, axes=TRUE)
text (coordinates(xb), names(xb), cex=2)
0
xb <- as (b,"matrix")
xb <- SpatialPolygons (list (Polygons (list (Polygon (rbind (xb,xb[1,]) )),"b") ))
5
Transformation d'un objet "gpc.poly" en un objet "SpatialPolygons"
1
2
3
4
5
6
library (gpclib)
append.poly
Combiner les contours de deux objets "gpc.poly" en un objet "gpc.poly"
area.poly
Calcule la somme des superficies de tous les contours d'un objet "gpc.poly"
get.bbox
Retourne la boîte englobant l'objet "gpc.poly"
get.pts
Retourne la liste des coordonnées x et y des sommets d'un objet "gpc.poly"
intersect
Intersection entre deux objets "gpc.poly"
plot-method
Argument poly.args pour passer une liste d'arguments supplémentaires (cf. polygon {graphics})
read.polyfile
Lecture d'un objet "gpc.poly" à partir un fichier texte
scale.poly
Divise les coordonnées d'un objet "gpc.poly" suivant les valeurs de xscale et yscale (défaut : xscale = yscale)
setdiff
Différence entre deux objets "gpc.poly"
triangulate
Retourne une matrice de sommets d'une triangulation d'un objet "gpc.poly"
tristrip
Retourne une liste tristrip d'un objet "gpc.poly"
union
Union de deux objets "gpc.poly"
write.polyfile
Ecriture d'un objet "gpc.poly" dans un fichier texte
Dénombrer
i = 500
a <- cbind (rnorm(i,mean=3), rnorm(i,mean=3))
# i valeurs de x, y
0.8
0.8
0.8
1.0
1.0
1.0
Avec la librairie adehabitat
14
10
8
6
4
0.4
0.4
0.4
y
yy
0.6
0.6
0.6
12
2
0.0
0.0
0.0
0.2
0.2
0.2
0
0.0
0.0
0.2
0.4
0.6
0.8
1.0
x
plot (a, pch=19, cex=.6)
0.2
0.4
0.6
0.8
1.0
xx
library (adehabitat)
casc = ascgen (xy = a, nrcol = 10)
image (casc)
as.vector (count.points (a, casc))
[1] 0 6 4 4 1 4 5 1 3 2 3 6 9 4 10 6 8 6 7 2 1 8 7 4 4 2 7 10
[29] 8 2 2 15 3 4 5 6 8 4 9 5 7 9 4 4 3 7 3 5 14 5 5 3 7 3 2 3
[57] 3 5 3 5 4 12 5 7 7 5 5 5 4 2 3 5 4 6 4 6 5 8 7 12 4 6 4 6
[85] 5 11 9 7 5 4 0 2 3 1 3 1 1 4 2 1
0.0
0.2
0.4
0.6
0.8
1.0
library (raster)
crast = raster(casc)
plot(crast)
Dénombrer
i = 500
a <- cbind (rnorm(i,mean=3), rnorm(i,mean=3))
0.8
1.0
Avec overlay() de la librairie sp
0.0
0.2
0.4
y
0.6
j = seq (0,1,length=10)
n = data.frame( x = rep(j,10), y = rep(j,each=10))
n.sp = SpatialPoints (n)
a.gr = SpatialPixels (n.sp)
gridded (a.spi) <- TRUE
a.po <- as (a.gr, "SpatialPolygons")
a.sp = SpatialPoints (a)
0.0
1.0
g1
0
g2
2
g11
0.8
4
g12
g21
2
0.6
g41
g42
g3
3
g20
5
g37
4
g54
6
g71
1
g88
7
g4
1
g21
2
g38
4
g55
3
g72
8
g89
7
g5
2
g22
6
g39
5
g56
8
g73
7
g90
2
g6
2
g23
4
g40
2
g57
3
g74
4
g91
0
g7
1
g24
7
g41
4
g58
5
g75
4
g92
6
g8
3
g25
3
g42
5
g59
14
g76
2
g93
4
g9 g10 g11 g12 g13 g14 g15 g16 g17
2
1
4
6
4
5
5
10
10
g26 g27 g28 g29 g30 g31 g32 g33 g34
7
5
8
7
12
3
12
5
7
g43 g44 g45 g46 g47 g48 g49 g50 g51
7
3
2
2
3
5
1
7
7
g60 g61 g62 g63 g64 g65 g66 g67 g68
5
2
15
3
4
5
6
6
6
g77 g78 g79 g80 g81 g82 g83 g84 g85
7
10
8
2
3
6
9
4
10
g94 g95 g96 g97 g98 g99 g100
4
1
4
5
1
3
2
0.4
g52
g61
1.0
g81
g82
g91
0
0.0
0.2
g66
g75
g84
g76
2
g85
10
g94
4
g95
1
0.4
g86
6
g96
4
0.6
g79
g88
g89
g98
0.8
g80
2
7
1
g70
5
8
7
g97
5
g69
g78
g87
g60
5
10
10
7
g59
g68
g77
g50
7
14
6
7
g49
g58
g67
g40
2
1
5
6
g39
g48
g57
g30
12
5
5
3
6
4
4
g93
4
g65
g74
g83
g56
g29
g38
g47
g20
5
7
4
3
8
5
4
9
g92
6
g55
g64
g73
g46
g19
g28
g37
g10
1
4
8
4
2
3
4
7
6
g54
g63
g72
g45
g18
g27
g36
g9
2
8
5
6
2
6
3
8
3
g53
g62
g71
1
g44
g17
g26
g35
g8
3
10
7
6
3
3
15
g25
g34
g43
g16
10
3
7
7
8
2
0.2
g2
2
g19
4
g36
6
g53
3
g70
5
g87
7
0.8
g7
1
g15
g24
g33
g6
2
5
7
5
5
g14
g23
g32
g5
2
5
4
12
7
g13
g22
g31
g4
1
4
6
4
g3
3
6
3
0.0
g1
0
g18
8
g35
6
g52
8
g69
10
g86
6
0.6
plot (a, pch=19, cex=.6)
g51
v [order (as.numeric (substring (names (v),2) ) )]
0.4
x
v = sapply (1:100, function(i) sum (overlay (a.po[i], a.sp), na.rm=TRUE))
names(v) = names (a.po)
vv = as.vector(matrix(v,nr=10))
plot(a.po,axes=TRUE)
plot(a.sp,add=TRUE)
text (coordinates (a.po), labels = vv, col=2, cex=.8)
text (coordinates (a.po)+.04, labels = names (a.po), font=2, cex=.5)
0.2
g90
2
g99
3
g100
2
1.0

Documents pareils

Utiliser des fichiers spatiaux dans des applications R

Utiliser des fichiers spatiaux dans des applications R http://cran.r-project.org/web/views/Spatial.html Ainsi que la mailing-list formée autour de l'utilisation de données géographiques et cartographiques [email protected] website maintenues par ...

Plus en détail