# Exercise in grImport

[This article was first published on

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Last week I used grImport for the first time. I decided to try perform another exercise using it. The task was to add voivodeship division of Poland.**R snippets**, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Standard R maps do not contain such a division. I have found it on r-forge in package mapoland based on ESRI shape files, but I wanted to import such a map from SVG file which can be found on Wikipedia. As last time SVG file has to be converted do PS first. Here is a comparison of both maps showing that the import worked quite well.

And this is the code I have used:

library

**(**grImport**)**PostScriptTrace

**(**“Wojewodztwa.ps”**)**voiv

**<-**readPicture**(**“Wojewodztwa.ps.xml”**)**broken.voiv

**<-**explodePaths**(**voiv**)**#extracting voivodeship ‘PictureStrokes’

xpath

**<-**ypath**<-**list**()**sel

**<-**c**(**2,4,6,8,20,22,24,28,30,32,34,36,38,41,44,46**)****for**

**(**i

**in**seq

**(**along

**=**sel

**))**

**{**

xpath

**[[**i**]]****<-**broken.voiv**[[**sel**[**i**]]]**@paths**$**path@x ypath

**[[**i**]]****<-**broken.voiv**[[**sel**[**i**]]]**@paths**$**path@y**}**

#adding Wolin island to zachodniopomorskie

xpath

**[[**2**]]****<-**c**(**broken.voiv**[**10**]**@paths**$**path@x**[**c**(**39**:**1, 95**:**40**)]**, xpath

**[[**2**]])**ypath

**[[**2**]]****<-**c**(**broken.voiv**[**10**]**@paths**$**path@y**[**c**(**39**:**1, 95**:**40**)]**, ypath

**[[**2**]])**library

**(**mapoland**)**pl

**<-**getShape**(**“voiv”**)**#functions rescaling paths to mapoland map size

transx

**<-****function****(**x**)****{** old

**<-**c**(**min**(**sapply**(**xpath,min**))**, max**(**sapply**(**xpath,max**)))** new

**<-**pl@bbox**[**1,**]****((**x

**–**old

**[**1

**])**

**/**

**(**old

**[**2

**] –**old

**[**1

**]))**

*****

**(**new

**[**2

**]**

**–**new

**[**1

**])**

**+**new

**[**1

**]**

**}**

transy

**<-****function****(**y**)****{** old

**<-**c**(**min**(**sapply**(**ypath, min**))**, max**(**sapply**(**ypath, max**)))** new

**<-**pl@bbox**[**2,**]****((**y

**–**old

**[**1

**])**

**/**

**(**old

**[**2

**] –**old

**[**1

**]))**

*****

**(**new

**[**2

**]**

**–**new

**[**1

**])**

**+**new

**[**1

**]**

**}**

plot

**(**pl, lwd**=**4**)****for**

**(**i

**in**seq

**(**along

**=**sel

**))**

**{**

lines

**(**transx**(**xpath**[[**i**]])**, transy**(**ypath**[[**i**]])**, col**=**“red”**)****}**

To

**leave a comment**for the author, please follow the link and comment on their blog:**R snippets**.R-bloggers.com offers

**daily e-mail updates**about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.