Skip to content

adjusting the map of France to 1830

4 messages · Michael Friendly, Stéphane Dray

#
I'm doing some analyses of historical data from France in 1830 on 'moral 
statistics' that I'd like to
show on a map.  I've done most of my analyses in SAS, but a few things 
would work better in R.
To do this, I have to adjust the modern map,

library(maps)
map('france')

to adjust for changes in departments (86 in 1830, to 97 now).  I've read 
the documentation
for the maps and maptools package, but there seems to be no functions to 
allow this, and
I can't find information on the exact structure of map datasets, but I 
understand them to
be delimited lists of polygon coordinates.

In SAS, all maps have (one or more) ID variables representing the 
geographical region,
and there is also a proc gremove that can remove internal boundaries 
inside the polygons
for regions with the same ID.  Is there some way I can do this in R?

Here's what I did in SAS:

*-- Fix the map of France to conform to Guerry:
    - adjust the 97 current departments to correspond to the 86 in 1830
    - delete those not part of France then
;

data gfrtemp;
    set maps.france;
    /* Corse was one dept - merge these to one area, new ID */
    if id in (201, 202)    then dept=200;

    /* Seine et Oise (78) was cut into
    Essonne (91), Val d'Oise (95) and Yvelines (78) */
    else if id in (91, 95)    then dept=78;

    /* Seine (75) now split into
    Hauts-de-Seine (92), Seine-Saint-Denis (93) et Val-de-Marne (94)*/
    else if id in (92, 93, 94)    then dept=75;
   
     /* departments not part of France in 1830 */
    else if id in (
        6,     /* Alpes-Maritimes */
        73,74, /* Savoie, Haute-Savoie */
        90)    /* Territore-de-Belfort */
        then delete;
    else                       dept=id;
    run;
   
*-- remove internal boundaries based on merged DEPT;
proc sort data=gfrtemp;
    by dept;

proc gremove data=gfrtemp out=gfrance;
   by dept;
   id id;
   run;
#
Hello. I do not know if you can merge polygons, but you can select easily:

 > departements=map('france',namesonly=T) # returns a vector of names of 
regions
 > map('france',regions=departements[1:20],namesonly=T) # use what you need 
with regions argument

Hope this helps,
At 16:29 18/11/2004, Michael Friendly wrote:
St??phane DRAY
-------------------------------------------------------------------------------------------------- 

D??partement des Sciences Biologiques
Universit?? de Montr??al, C.P. 6128, succursale centre-ville
Montr??al, Qu??bec H3C 3J7, Canada

Tel : (514) 343-6111 poste 1233         Fax : (514) 343-2293
E-mail : stephane.dray at umontreal.ca
-------------------------------------------------------------------------------------------------- 

Web                                          http://www.steph280.freesurf.fr/
#
Here's what I tried.   I can plot a selection of regions, but I
can't seem to remove an arbitrary list of region numbers, unless I've 
done something wrong
by selecting the regions I want to plot with departements[-exclude].
I also get an error
when I try to use map.text to label a map with only the regions I'm  
selecting.

 > departements <- map('france',namesonly=T, plot=FALSE)
 > # returns a vector of names of regions
 >
 > exclude <- c(47,  #Alpes-Maritimes
+ 66,  # Haute-Savoie
+ 76,  # Savoie
+ 95,  # Territore-de-Belfort
+ 109, 110, 111, # Var: Iles d'Hyeres
+ 49, 53, 54, 55, # Moribhan: Isles
+ 62, 64,    # Vendee: Isles
+ 72, 75     # Charente-Maritime: Isles
+ )
 >
 > depts <- departements[-exclude]
 > gfrance <-map('france', regions=depts)
 > labels <- (as.character(1:length(departements)))[-exclude]
 > gfrance <-map.text('france', regions=depts, add=FALSE, labels=labels)
Error in map.text("france", regions = depts, add = FALSE, labels = labels) :
        map object must have polygons (fill=TRUE)

Another problem, potentially more difficult for mapping data on the map 
of France is that
the "departements" are actually just the polygons in the map, 
arbitrarily numbered from
east to west, and from north to south --- they don't correspond to the 
'official' administrative
region numbers.  As well, the departement names don't always match 
exactly (ignoring
accents, e.g., Val-d'Oise vs. Val-Doise) so it would be another 
challenge to plot my
historical data on the map of France.

-Michael
Stephane DRAY wrote:

            

  
    
#
Hello Michael,

you have made a small mystake in your code:

use

gfrance <-map.text('france', regions=depts, add=FALSE)

But I think that, it would be quite difficult to do what you need in R.
It is more a GIS problem.

I think that your problem can be better treated if you can create your map 
outside R and import it.
The map is freely available at:
http://www.ign.fr/affiche_rubrique.asp?rbr_id=1761&lng_id=FR#71023
it contains administrative numbers... You can modify the map in a GIS, 
(e.g. ArcView) and import it with maptools package.

Tell me if you can do the GIS part, otherwise I can do the job (it is is 
not too long ;-) ) and send you the "old france" data !

Sincerely,
At 15:59 19/11/2004, you wrote:
St??phane DRAY
-------------------------------------------------------------------------------------------------- 

D??partement des Sciences Biologiques
Universit?? de Montr??al, C.P. 6128, succursale centre-ville
Montr??al, Qu??bec H3C 3J7, Canada

Tel : (514) 343-6111 poste 1233         Fax : (514) 343-2293
E-mail : stephane.dray at umontreal.ca
-------------------------------------------------------------------------------------------------- 

Web                                          http://www.steph280.freesurf.fr/