A caracterização da região de estudo e das estações meteorológicas (EM) empregadas em pesquisas ou aplicações de meteorologia é imprescindível para o melhor entendimento e interpretação dos resultados de uma análise observacional. Neste tutorial apresento como produzir no R, um mapa básico da região de estudo incluindo a localização dos pontos de observação (EM) utilizados na pesquisa ou trabalho.
Pré-requisitos
pcks <- c("tidyverse", "ggmap", "inmetr")
easypackages::libraries(pcks)
Dados de exemplo
Os dados usados no exemplo são de coordenadas de estações meteorológicas de superfície do INMET. Eles são disponibilizados com o pacote inmetr.
Começamos obtendo uma estimativa do ponto central da distribuição espacial das estações meteorológicas. Essa coordenada de referência para geração do mapa será determinada a partir do ponto médio do intervalo de variação da coordenada. Isso é o que faz a função mid_range
() abaixo.
| | | | | | |
---|
83010 | -68.73333 | -11.01666667 | 260.00 | Brasiléia | Acre | |
82704 | -72.66667 | -7.63333333 | 170.00 | Cruzeiro do Sul | Acre | |
82915 | -67.80000 | -9.96666667 | 160.00 | Rio Branco | Acre | |
82807 | -70.76667 | -8.16666667 | 190.00 | Tarauacá | Acre | |
83098 | -36.16667 | -10.15000000 | 56.13 | Coruripe | Alagoas | |
82994 | -35.70000 | -9.66666667 | 64.50 | Maceió | Alagoas | |
82988 | -37.73333 | -9.11666667 | 635.00 | Mata Grande | Alagoas | |
82992 | -36.70000 | -9.45000000 | 274.90 | Palmeira dos Índios | Alagoas | |
82990 | -37.43333 | -9.75000000 | 19.10 | Pão de Acuçar | Alagoas | |
82996 | -35.43333 | -9.18333333 | 50.02 | Porto de Pedras | Alagoas | |
mid_range <- function(x) min(x) + diff(range(x, na.rm = TRUE))/2
ll0 <- apply(bdmep_meta[, c("lon", "lat")], 2, mid_range)
ll0
lon lat
-53.75833 -15.35000
Mapa
O mapa é gerado a partir de um ponto de referência. No exemplo, usamos ll0
como ponto de referência. Teste valores do parâmetro zoom
conforme sua preferência. Os limites de zoom
variam de 3 (scala de continente) à 21 (escala de prédio).
mapa_base <- get_map(location = as.vector(ll0),
source = "google",
zoom = 4,
color = "color",
maptype = "terrain")
No mapa acima, faça testes variando o parâmetro maptype
de acordo com sua preferência. Veja o resultado no mapa final (mapa_loc
) usando as demais opções, como: “terrain-background”, “satellite”, “roadmap”, “hybrid” (google maps), “terrain”, “watercolor”, e “toner”.
mapa_loc <- ggmap(mapa_base, dev = "extent") +
geom_point(data = bdmep_meta,
aes(x = lon, y = lat),
colour = "red",
size = 1)
mapa_loc

Feito! Agora você pode customizar o seu mapa. Veja o help da função ?ggmap
para mais informações.
LS0tCnRpdGxlOiAiTWFwYSBzaW1wbGVzIGRhIHJlZ2nDo28gZGUgZXN0dWRvIgphdXRob3I6Ci0gbmFtZTogSsO0bmF0YW4gVGF0c2NoCiAgYWZmaWxpYXRpb246IExITUVUL1VGU00KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpKWAiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCkEgY2FyYWN0ZXJpemHDp8OjbyBkYSByZWdpw6NvIGRlIGVzdHVkbyBlIGRhcyBlc3Rhw6fDtWVzIG1ldGVvcm9sw7NnaWNhcyAoRU0pIGVtcHJlZ2FkYXMgZW0gcGVzcXVpc2FzIG91IGFwbGljYcOnw7VlcyBkZSBtZXRlb3JvbG9naWEgw6kgaW1wcmVzY2luZMOtdmVsIHBhcmEgbyBtZWxob3IgZW50ZW5kaW1lbnRvIGUgaW50ZXJwcmV0YcOnw6NvIGRvcyByZXN1bHRhZG9zIGRlIHVtYSBhbsOhbGlzZSBvYnNlcnZhY2lvbmFsLiBOZXN0ZSB0dXRvcmlhbCBhcHJlc2VudG8gY29tbyBwcm9kdXppciBubyBSLCB1bSBtYXBhIGLDoXNpY28gZGEgcmVnacOjbyBkZSBlc3R1ZG8gaW5jbHVpbmRvIGEgbG9jYWxpemHDp8OjbyBkb3MgcG9udG9zIGRlIG9ic2VydmHDp8OjbyAoRU0pIHV0aWxpemFkb3MgbmEgcGVzcXVpc2Egb3UgdHJhYmFsaG8uCgojIyMgUHLDqS1yZXF1aXNpdG9zCgoKYGBge3IgY2xlYW5fb3B0LCBlY2hvID0gRkFMU0V9CnJtKGxpc3QgPSBscygpKQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIGNvbW1lbnQgPSAiIikKYGBgCgpgYGB7ciBzZXR1cCwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KIyMgZGVzY29tZW50ZSBwYXJhIGluc3RhbGFyIG9zIHBhY290ZXMgc2UgbmVjZXNzw6FyaW8KIyBpbnN0YWxsLnBhY2thZ2VzKGMoImVhc3lwYWNrYWdlcyIsICJ0aWR5dmVyc2UiLCAiZGV2dG9vbHMiKSkKIyBkZXZ0b29sczo6aW5zdGFsbF9naXRodWIoImRrYWhsZS9nZ21hcCIpCiMgZGV2dG9vbHM6Omluc3RhbGxfZ2l0aHViKCJsaG1ldC9pbm1ldHIiLCBmb3JjZSA9IFRSVUUpCnBja3MgPC0gYygidGlkeXZlcnNlIiwgImdnbWFwIiwgImlubWV0ciIpCmVhc3lwYWNrYWdlczo6bGlicmFyaWVzKHBja3MpCmBgYAoKIyMjIERhZG9zIGRlIGV4ZW1wbG8KCk9zIGRhZG9zIHVzYWRvcyBubyBleGVtcGxvIHPDo28gZGUgY29vcmRlbmFkYXMgZGUgZXN0YcOnw7VlcyBtZXRlb3JvbMOzZ2ljYXMgZGUgc3VwZXJmw61jaWUgZG8gSU5NRVQuIEVsZXMgc8OjbyBkaXNwb25pYmlsaXphZG9zIGNvbSBvIHBhY290ZSBbaW5tZXRyXShodHRwczovL2dpdGh1Yi5jb20vbGhtZXQvaW5tZXRyKS4KCkNvbWXDp2Ftb3Mgb2J0ZW5kbyB1bWEgZXN0aW1hdGl2YSBkbyBwb250byBjZW50cmFsIGRhIGRpc3RyaWJ1acOnw6NvIGVzcGFjaWFsIGRhcyBlc3Rhw6fDtWVzIG1ldGVvcm9sw7NnaWNhcy4gRXNzYSBjb29yZGVuYWRhIGRlIHJlZmVyw6puY2lhIHBhcmEgZ2VyYcOnw6NvIGRvIG1hcGEgc2Vyw6EgZGV0ZXJtaW5hZGEgYSBwYXJ0aXIgZG8gcG9udG8gbcOpZGlvIGRvIGludGVydmFsbyBkZSB2YXJpYcOnw6NvIGRhIGNvb3JkZW5hZGEuIElzc28gw6kgbyBxdWUgZmF6IGEgZnVuw6fDo28gYG1pZF9yYW5nZWAoKSBhYmFpeG8uCgpgYGB7ciBjZW50cm9pZH0KIyB0YWJlbGEgZGUgY29vcmRhbmFzCmJkbWVwX21ldGEKIyBmdW7Dp8OjbyBwYXJhIGNhbGN1bGFyIG8gcG9udG8gbcOpZGlvIGRvIGludGVydmFsbyBkZSB2YXJpYcOnw6NvCm1pZF9yYW5nZSA8LSBmdW5jdGlvbih4KSBtaW4oeCkgKyBkaWZmKHJhbmdlKHgsIG5hLnJtID0gVFJVRSkpLzIKIyBjb29yZCBjZW50cmFsIChhcHJveGltYWRhbWVudGUpCmxsMCA8LSBhcHBseShiZG1lcF9tZXRhWywgYygibG9uIiwgImxhdCIpXSwgMiwgbWlkX3JhbmdlKQpsbDAKYGBgCgoKCiMjIyBNYXBhCgpPIG1hcGEgw6kgZ2VyYWRvIGEgcGFydGlyIGRlIHVtIHBvbnRvIGRlIHJlZmVyw6puY2lhLiBObyBleGVtcGxvLCB1c2Ftb3MgYGxsMGAgY29tbyBwb250byBkZSByZWZlcsOqbmNpYS4gVGVzdGUgdmFsb3JlcyBkbyBwYXLDom1ldHJvIGB6b29tYCBjb25mb3JtZSBzdWEgcHJlZmVyw6puY2lhLiBPcyBsaW1pdGVzIGRlIGB6b29tYCB2YXJpYW0gZGUgMyAoc2NhbGEgZGUgY29udGluZW50ZSkgw6AgMjEgKGVzY2FsYSBkZSBwcsOpZGlvKS4KCmBgYHtyIGJhc2VtYXAsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CiMgbWFwYSBjb20gYSBpbWFnZW0gZG8gR29vZ2xlIE1hcHMgY29tbyBwbGFubyBkZSBmdW5kbwptYXBhX2Jhc2UgPC0gZ2V0X21hcChsb2NhdGlvbiA9IGFzLnZlY3RvcihsbDApLCAKICAgICAgICAgICAgICBzb3VyY2UgPSAiZ29vZ2xlIiwKICAgICAgICAgICAgICAjIGRlZmluaWRvIHBvciB0ZW50YXRpdmEgZXJybwogICAgICAgICAgICAgIHpvb20gPSA0LCAKICAgICAgICAgICAgICBjb2xvciA9ICJjb2xvciIsCiAgICAgICAgICAgICAgbWFwdHlwZSA9ICJ0ZXJyYWluIikKYGBgCgpObyBtYXBhIGFjaW1hLCBmYcOnYSB0ZXN0ZXMgdmFyaWFuZG8gbyBwYXLDom1ldHJvIGBtYXB0eXBlYCBkZSBhY29yZG8gY29tIHN1YSBwcmVmZXLDqm5jaWEuIFZlamEgbyByZXN1bHRhZG8gbm8gbWFwYSBmaW5hbCAoYG1hcGFfbG9jYCkgdXNhbmRvIGFzIGRlbWFpcyBvcMOnw7VlcywgY29tbzogInRlcnJhaW4tYmFja2dyb3VuZCIsICJzYXRlbGxpdGUiLCAicm9hZG1hcCIsICJoeWJyaWQiIChnb29nbGUgbWFwcyksICJ0ZXJyYWluIiwgIndhdGVyY29sb3IiLCBlICJ0b25lciIuCgpgYGB7ciBtYXBfbG9jfQptYXBhX2xvYyA8LSBnZ21hcChtYXBhX2Jhc2UsIGRldiA9ICJleHRlbnQiKSArCiAgICAgIGdlb21fcG9pbnQoZGF0YSA9IGJkbWVwX21ldGEsCiAgICAgICAgICAgICAgICAgYWVzKHggPSBsb24sIHkgPSBsYXQpLAogICAgICAgICAgICAgICAgIGNvbG91ciA9ICJyZWQiLAogICAgICAgICAgICAgICAgIHNpemUgPSAxKQptYXBhX2xvYwpgYGAKCgpGZWl0byEgQWdvcmEgdm9jw6ogcG9kZSBjdXN0b21pemFyIG8gc2V1IG1hcGEuICBWZWphIG8gaGVscCBkYSBmdW7Dp8OjbyBgP2dnbWFwYCBwYXJhIG1haXMgaW5mb3JtYcOnw7Vlcy4KCiMjIyBJbmZvcm1hw6fDtWVzIGRhIHNlw6fDo28KCmBgYHtyLCBzZXNzaW5mb30Kc2Vzc2lvbkluZm8oKQpgYGAK