(window.webpackJsonp=window.webpackJsonp||[]).push([[2959],{3367:function(t,a,s){"use strict";s.r(a);var e=s(31),n=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"spatial-analysis"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#spatial-analysis"}},[t._v("#")]),t._v(" spatial analysis")]),t._v(" "),s("h2",{attrs:{id:"create-spatial-points-from-xy-data-set"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create-spatial-points-from-xy-data-set"}},[t._v("#")]),t._v(" Create spatial points from XY data set")]),t._v(" "),s("p",[t._v("When it comes to geographic data, R shows to be a powerful tool for data handling, analysis and visualisation.")]),t._v(" "),s("p",[t._v("Often, spatial data is avaliable as an XY coordinate data set in tabular form. This example will show how to create a spatial data set from an XY data set.")]),t._v(" "),s("p",[t._v("The packages "),s("code",[t._v("rgdal")]),t._v(" and "),s("code",[t._v("sp")]),t._v(" provide powerful functions. Spatial data in R can be stored as "),s("code",[t._v("Spatial*DataFrame")]),t._v(" (where "),s("code",[t._v("*")]),t._v(" can be "),s("code",[t._v("Points")]),t._v(", "),s("code",[t._v("Lines")]),t._v(" or "),s("code",[t._v("Polygons")]),t._v(").")]),t._v(" "),s("p",[t._v("This example uses data which can be downloaded at "),s("a",{attrs:{href:"http://www.opengeocode.org/download/worldcities.zip",target:"_blank",rel:"noopener noreferrer"}},[t._v("OpenGeocode"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("p",[t._v("At first, the working directory has to be set to the folder of the downloaded CSV data set. Furthermore, the package "),s("code",[t._v("rgdal")]),t._v(" has to be loaded.")]),t._v(" "),s("div",{staticClass:"language-r extra-class"},[s("pre",{pre:!0,attrs:{class:"language-r"}},[s("code",[t._v("setwd"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D:/GeocodeExample/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nlibrary"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("rgdal"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n")])])]),s("p",[t._v("Afterwards, the CSV file storing cities and their geographical coordinates is loaded into R as a "),s("code",[t._v("data.frame")])]),t._v(" "),s("div",{staticClass:"language-r extra-class"},[s("pre",{pre:!0,attrs:{class:"language-r"}},[s("code",[t._v("xy "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<-")]),t._v(" read.csv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"worldcities.csv"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" stringsAsFactors "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("FALSE")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n")])])]),s("p",[t._v("Often, it is useful to get a glimpse of the data and its structure (e.g. column names, data types etc.).")]),t._v(" "),s("div",{staticClass:"language-r extra-class"},[s("pre",{pre:!0,attrs:{class:"language-r"}},[s("code",[t._v("head"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("xy"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nstr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("xy"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n")])])]),s("p",[t._v('This shows that the latitude and longitude columns are interpreted as character values, since they hold entries like "-33.532". Yet, the later used function '),s("code",[t._v("SpatialPointsDataFrame()")]),t._v(" which creates the spatial data set requires the coordinate values to be of the data type "),s("code",[t._v("numeric")]),t._v(". Thus the two columns have to be converted.")]),t._v(" "),s("div",{staticClass:"language-r extra-class"},[s("pre",{pre:!0,attrs:{class:"language-r"}},[s("code",[t._v("xy"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("$")]),t._v("latitude "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<-")]),t._v(" as.numeric"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("xy"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("$")]),t._v("latitude"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nxy"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("$")]),t._v("longitude "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<-")]),t._v(" as.numeric"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("xy"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("$")]),t._v("longitude"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n")])])]),s("p",[t._v("Few of the values cannot be converted into numeric data and thus, "),s("code",[t._v("NA")]),t._v(" values are created. They have to be removed.")]),t._v(" "),s("div",{staticClass:"language-r extra-class"},[s("pre",{pre:!0,attrs:{class:"language-r"}},[s("code",[t._v("xy "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<-")]),t._v(" xy"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("is.na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("xy"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("$")]),t._v("longitude"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n\n")])])]),s("p",[t._v("Finally, the XY data set can be converted into a spatial data set. This requires the coordinates and the specification of the Coordinate Refrence System (CRS) in which the coordinates are stored.")]),t._v(" "),s("div",{staticClass:"language-r extra-class"},[s("pre",{pre:!0,attrs:{class:"language-r"}},[s("code",[t._v("xySPoints "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<-")]),t._v(" SpatialPointsDataFrame"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("coords "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("xy"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"longitude"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"latitude"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\nproj4string "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" CRS"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\ndata "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" xy\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n")])])]),s("p",[t._v("The basic plot function can easily be used to sneak peak the produced spatial points.")]),t._v(" "),s("div",{staticClass:"language-r extra-class"},[s("pre",{pre:!0,attrs:{class:"language-r"}},[s("code",[t._v("plot"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("xySPoints"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" pch "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n")])])]),s("p",[s("a",{attrs:{href:"http://i.stack.imgur.com/M69h8.png",target:"_blank",rel:"noopener noreferrer"}},[s("img",{attrs:{src:"http://i.stack.imgur.com/M69h8.png",alt:"enter image description here"}}),s("OutboundLink")],1)]),t._v(" "),s("h2",{attrs:{id:"importing-a-shape-file-shp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#importing-a-shape-file-shp"}},[t._v("#")]),t._v(" Importing a shape file (.shp)")]),t._v(" "),s("h3",{attrs:{id:"rgdal"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rgdal"}},[t._v("#")]),t._v(" rgdal")]),t._v(" "),s("p",[t._v("ESRI shape files can easily be imported into R by using the function "),s("code",[t._v("readOGR()")]),t._v(" from the "),s("code",[t._v("rgdal")]),t._v(" package.")]),t._v(" "),s("div",{staticClass:"language-r extra-class"},[s("pre",{pre:!0,attrs:{class:"language-r"}},[s("code",[t._v("library"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("rgdal"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nshp "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<-")]),t._v(" readORG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("dsn "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/path/to/your/file"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" layer "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n")])])]),s("p",[t._v("It is important to know, that the "),s("code",[t._v("dsn")]),t._v(" must not end with "),s("code",[t._v("/")]),t._v(" and the "),s("code",[t._v("layer")]),t._v(" does not allow the file ending (e.g. "),s("code",[t._v(".shp")]),t._v(")")]),t._v(" "),s("h3",{attrs:{id:"raster"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#raster"}},[t._v("#")]),t._v(" raster")]),t._v(" "),s("p",[t._v("Another possible way of importing shapefiles is via the "),s("code",[t._v("raster")]),t._v(" library and the "),s("code",[t._v("shapefile")]),t._v(" function:")]),t._v(" "),s("div",{staticClass:"language-r extra-class"},[s("pre",{pre:!0,attrs:{class:"language-r"}},[s("code",[t._v("library"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("raster"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nshp "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<-")]),t._v(" shapefile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"path/to/your/file.shp"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n")])])]),s("p",[t._v("Note how the path definition is different from the rgdal import statement.")]),t._v(" "),s("h3",{attrs:{id:"tmap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#tmap"}},[t._v("#")]),t._v(" tmap")]),t._v(" "),s("p",[s("code",[t._v("tmap")]),t._v(" package provides a nice wrapper for the "),s("code",[t._v("rgdal::readORG")]),t._v(" function.")]),t._v(" "),s("div",{staticClass:"language-r extra-class"},[s("pre",{pre:!0,attrs:{class:"language-r"}},[s("code",[t._v("library"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("tmap"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \nsph "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<-")]),t._v(" read_shape"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"path/to/your/file.shp"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]);