library(readstata13)
library(dplyr)
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
library(ncdf4)
library(raster)
Loading required package: sp
Attaching package: 'raster'
The following object is masked from 'package:dplyr':
select
library(sp)
library(rgeos)
rgeos version: 0.3-26, (SVN revision 560)
GEOS runtime version: 3.5.1-CAPI-1.9.1 r4246
Linking to sp version: 1.2-4
Polygon checking: TRUE
library(rgdal)
rgdal: version: 1.2-15, (SVN revision 691)
Geospatial Data Abstraction Library extensions to R successfully loaded
Loaded GDAL runtime: GDAL 2.2.2, released 2017/09/15
Path to GDAL shared files: /usr/share/gdal/2.2
GDAL binary built with GEOS: TRUE
Loaded PROJ.4 runtime: Rel. 4.9.2, 08 September 2015, [PJ_VERSION: 492]
Path to PROJ.4 shared files: (autodetected)
Linking to sp version: 1.2-4
library(dismo)
Read ShapeFile and Raster File.
muni.shp<-readOGR(dsn="gis/shapefiles/conjunto_de_datos/",layer = "areas_geoestadisticas_municipales")
OGR data source with driver: ESRI Shapefile
Source: "gis/shapefiles/conjunto_de_datos/", layer: "areas_geoestadisticas_municipales"
with 2458 features
It has 3 fields
RASTER_FILE_NAME <- 'gis/noaa_temperatures/air.mon.mean.nc'
DATES <- c(836:838)
r.stack<-stack(RASTER_FILE_NAME,bands=DATES)
r.stack<- rotate(r.stack)
data.frame( rasterToPoints( r.stack ) )
mexico_limits <- extent(-118,-82,14,34)
r.stack <- crop(r.stack, mexico_limits)
print (r.stack)
class : RasterBrick
dimensions : 40, 72, 2880, 3 (nrow, ncol, ncell, nlayers)
resolution : 0.5, 0.5 (x, y)
extent : -118, -82, 14, 34 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names : X2017.08.01.01.06.32, X2017.09.01.01.06.32, X2017.10.01.01.06.32
min values : 288.13, 286.52, 281.90
max values : 314.63, 311.87, 312.26
#df.r<- as.data.frame(rc,xy=TRUE,optional = TRUE)
plot(r.stack)

Project both Shapefile and Raster on WGS84 and check that they match on the map.
# tranform both data set to longlat
#myshp<- subset(myshp,CVE_ENT=='01')
rgeo <- projectRaster(r.stack, crs='+proj=longlat +datum=WGS84')
pgeo <- spTransform(muni.shp, CRS('+proj=longlat +datum=WGS84'))
# plot on top of Google map
e <- union(extent(rgeo), extent(pgeo))
print(e)
class : Extent
xmin : -120
xmax : -80
ymin : 12
ymax : 36
g <- gmap(e,lonlat=TRUE)
plot(g, inter=TRUE)

plot(extent(rgeo), add=TRUE, col='red', lwd=2)
plot(pgeo, add=TRUE, col='blue', lwd=2)

kelvins_to_celsius= function(x){
return (x-273.15)
}
#extraction <-extract(rgeo,pgeo, weights = TRUE, normalizeWeights=TRUE, fun=mean,df=TRUE)
extraction <-extract(rgeo,pgeo,fun=mean,df=TRUE)
extraction <- extraction %>% mutate_at(vars(-ID),funs(kelvins_to_celsius))
pgeo@data <- data.frame(pgeo@data, means=extraction)
spplot(pgeo, "means.X2017.08.01.01.06.32",lwd=.1,title ='Mean temp (Celsius) for August 2014')

Read and add tariffa to shapefile data :
pgeo@data <- pgeo@data %>% mutate(id = paste(CVE_ENT,CVE_MUN,sep=''))
df.tariffa<- read.dta13('gis/tariff/Tariffs.dta')
summary(df.tariffa)
date2 munid tarifa year
Min. :600.0 Min. : 1001 DAC :167899 Min. :2010
1st Qu.:620.0 1st Qu.:13072 01 :147096 1st Qu.:2011
Median :642.0 Median :20119 1B : 59076 Median :2013
Mean :641.8 Mean :19113 1A : 43276 Mean :2013
3rd Qu.:663.0 3rd Qu.:25013 1C : 34690 3rd Qu.:2015
Max. :683.0 Max. :99999 1D : 12743 Max. :2016
(Other): 11808
mun id month
Length:476588 Length:476588 Min. : 1.000
Class :character Class :character 1st Qu.: 4.000
Mode :character Mode :character Median : 7.000
Mean : 6.512
3rd Qu.:10.000
Max. :12.000
pgeo@data<- left_join(pgeo@data,df.tariffa, by='id')
df.temp.tariffa.munid<-as.data.frame(pgeo@data)
head(df.temp.tariffa.munid)
LS0tCnRpdGxlOiAiQ29tYmluZSBSYXN0ZXIgdGVtcGVyYXR1cmUgd2l0aCBNZXhpY28gbXVuaWNpcGFsaXRpZXMgU2hhcGVmaWxlIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDogaHRtbF9ub3RlYm9vawoKLS0tCgoKYGBge3J9CmxpYnJhcnkocmVhZHN0YXRhMTMpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkobmNkZjQpCmxpYnJhcnkocmFzdGVyKQpsaWJyYXJ5KHNwKQpsaWJyYXJ5KHJnZW9zKQpsaWJyYXJ5KHJnZGFsKQpsaWJyYXJ5KGRpc21vKQpgYGAKIyMgUmVhZCBTaGFwZUZpbGUgYW5kIFJhc3RlciBGaWxlLgpgYGB7cn0KCm11bmkuc2hwPC1yZWFkT0dSKGRzbj0iZ2lzL3NoYXBlZmlsZXMvY29uanVudG9fZGVfZGF0b3MvIixsYXllciA9ICJhcmVhc19nZW9lc3RhZGlzdGljYXNfbXVuaWNpcGFsZXMiKQoKUkFTVEVSX0ZJTEVfTkFNRSA8LSAnZ2lzL25vYWFfdGVtcGVyYXR1cmVzL2Fpci5tb24ubWVhbi5uYycKCkRBVEVTIDwtIGMoODM2OjgzOCkKCnIuc3RhY2s8LXN0YWNrKFJBU1RFUl9GSUxFX05BTUUsYmFuZHM9REFURVMpCnIuc3RhY2s8LSByb3RhdGUoci5zdGFjaykKCmRhdGEuZnJhbWUoIHJhc3RlclRvUG9pbnRzKCByLnN0YWNrICkgKQoKbWV4aWNvX2xpbWl0cyA8LSBleHRlbnQoLTExOCwtODIsMTQsMzQpCnIuc3RhY2sgPC0gY3JvcChyLnN0YWNrLCBtZXhpY29fbGltaXRzKQpwcmludCAoci5zdGFjaykKI2RmLnI8LSBhcy5kYXRhLmZyYW1lKHJjLHh5PVRSVUUsb3B0aW9uYWwgPSBUUlVFKQpwbG90KHIuc3RhY2spCmBgYAoKIyMgUHJvamVjdCBib3RoIFNoYXBlZmlsZSBhbmQgUmFzdGVyICBvbiBXR1M4NCBhbmQgY2hlY2sgdGhhdCB0aGV5IG1hdGNoIG9uIHRoZSBtYXAuCmBgYHtyfQoKIyB0cmFuZm9ybSBib3RoIGRhdGEgc2V0IHRvIGxvbmdsYXQKI215c2hwPC0gc3Vic2V0KG15c2hwLENWRV9FTlQ9PScwMScpCgpyZ2VvIDwtIHByb2plY3RSYXN0ZXIoci5zdGFjaywgY3JzPScrcHJvaj1sb25nbGF0ICtkYXR1bT1XR1M4NCcpCnBnZW8gPC0gc3BUcmFuc2Zvcm0obXVuaS5zaHAsIENSUygnK3Byb2o9bG9uZ2xhdCArZGF0dW09V0dTODQnKSkKCiMgcGxvdCBvbiB0b3Agb2YgR29vZ2xlIG1hcAplIDwtIHVuaW9uKGV4dGVudChyZ2VvKSwgZXh0ZW50KHBnZW8pKQpwcmludChlKQpnIDwtIGdtYXAoZSxsb25sYXQ9VFJVRSkKcGxvdChnLCBpbnRlcj1UUlVFKQpwbG90KGV4dGVudChyZ2VvKSwgYWRkPVRSVUUsIGNvbD0ncmVkJywgbHdkPTIpCnBsb3QocGdlbywgYWRkPVRSVUUsIGNvbD0nYmx1ZScsIGx3ZD0yKQpgYGAKYGBge3J9CmtlbHZpbnNfdG9fY2Vsc2l1cz0gZnVuY3Rpb24oeCl7CiAgcmV0dXJuICh4LTI3My4xNSkKfQpgYGAKCmBgYHtyfQojZXh0cmFjdGlvbiA8LWV4dHJhY3QocmdlbyxwZ2VvLCB3ZWlnaHRzID0gVFJVRSwgbm9ybWFsaXplV2VpZ2h0cz1UUlVFLCBmdW49bWVhbixkZj1UUlVFKQpleHRyYWN0aW9uIDwtZXh0cmFjdChyZ2VvLHBnZW8sZnVuPW1lYW4sZGY9VFJVRSkKCmV4dHJhY3Rpb24gPC0gZXh0cmFjdGlvbiAgJT4lIG11dGF0ZV9hdCh2YXJzKC1JRCksZnVucyhrZWx2aW5zX3RvX2NlbHNpdXMpKQoKCnBnZW9AZGF0YSA8LSBkYXRhLmZyYW1lKHBnZW9AZGF0YSwgbWVhbnM9ZXh0cmFjdGlvbikKCnNwcGxvdChwZ2VvLCAibWVhbnMuWDIwMTcuMDguMDEuMDEuMDYuMzIiLGx3ZD0uMSx0aXRsZSA9J01lYW4gdGVtcCAoQ2Vsc2l1cykgZm9yIEF1Z3VzdCAyMDE0JykKCmBgYAoKIyMgUmVhZCBhbmQgYWRkIHRhcmlmZmEgdG8gc2hhcGVmaWxlIGRhdGEgOgpgYGB7cn0KcGdlb0BkYXRhIDwtIHBnZW9AZGF0YSAlPiUgbXV0YXRlKGlkID0gcGFzdGUoQ1ZFX0VOVCxDVkVfTVVOLHNlcD0nJykpCgpkZi50YXJpZmZhPC0gIHJlYWQuZHRhMTMoJ2dpcy90YXJpZmYvVGFyaWZmcy5kdGEnKQpzdW1tYXJ5KGRmLnRhcmlmZmEpCnBnZW9AZGF0YTwtIGxlZnRfam9pbihwZ2VvQGRhdGEsZGYudGFyaWZmYSwgYnk9J2lkJykKCmRmLnRlbXAudGFyaWZmYS5tdW5pZDwtYXMuZGF0YS5mcmFtZShwZ2VvQGRhdGEpCmhlYWQoZGYudGVtcC50YXJpZmZhLm11bmlkKQpgYGAK