A Agência Nacional das Águas (ANA) disponibiliza um banco de informações hidrológicas para as regiões hidrográficas brasileiras através do site hidroweb1. As informações são fornecidas no formato shapefile (extensão .shp
). Na verdade, um shapefile está associado a um conjunto de arquivos (no mínimo 3). Os dados são divididos por regiões hidrográficas:
Bacia 1 (Rio Amazonas)
Bacia 2 (Rio Tocantins)
Bacia 3 (Atlântico, Trecho Norte/Nordeste)
Bacia 4 (Rio São Francisco)
Bacia 5 (Atlântico, Trecho Leste)
Bacia 6 (Rio Paraná)
Bacia 7 (Rio Uruguai)
Bacia 8 (Atlântico, Trecho Sudeste)
Nesse tutorial veremos como converter o conjunto de arquivos associados ao shapefile da hidrografia da região hidrográfica do Rio Uruguai (Bacia 7) para o formato KML para visualização no Google Earth. Arquivos KML são geralmente distribuídos como arquivos KMZ, que são arquivos KML zipados e com uma extensão .kmz
.
Este tutorial foi produzido com o software R através do RStudio em um desktop com linux ubuntu.
Para manipulação de dados espaciais existem bibliotecas (externas ao R) específicas que precisam ser instaladas. Essas bibliotecas são acessadas através do R por meio de pacotes. Um exemplo desse tipo de interface entre o R e uma biblioteca externa é o pacote rgdal que faz a interface com a biblioteca Geospatial Data Abstraction Library (GDAL) que possibilita realizar operações de transformação/projeção com a biblioteca PROJ.4. Então para usarmos o pacote rgdal é necessário a instalação das bibliotecas: proj-bin
, libproj-dev
, gdal-bin
, libgdal1-dev
. Elas podem ser instaladas digitando em um terminal linux ubuntu o comando abaixo.
# instala bibliotecas linux, adicione 'sudo' antes do comando abaixo para ter acesso como super usuário
apt-get install proj-bin libproj-dev gdal-bin libgdal1-dev
Para converter os arquivos associados ao shapefile utilizaremos a função KML()
disponibilizada com o pacote raster. Para instalar um pacote no R, digite install.packages("nomeDoPacote")
.
# carregando pacotes
library(raster)
library(sp)
library(rgdal)
rgdal: version: 1.1-10, (SVN revision 622)
Geospatial Data Abstraction Library extensions to R successfully loaded
Loaded GDAL runtime: GDAL 1.11.2, released 2015/02/10
Path to GDAL shared files: /usr/share/gdal/1.11
Loaded PROJ.4 runtime: Rel. 4.8.0, 6 March 2012, [PJ_VERSION: 480]
Path to PROJ.4 shared files: (autodetected)
Linking to sp version: 1.2-3
# opção para não interpretar caracteres como factor (uma tipo de objeto do R especial para variáveis categóricas)
options(stringsAsFactors = TRUE)
Para baixar o arquivo compactado com as informações hidrológicas de uma região hidrográfica precisamos do código identificador da região. No caso da região hidrográfica do Rio Uruguai o identificador é o número 7.
# identificador da bacia hidrográfica (BH)
id_bh <- 7
# site do arquivo definido conforme nº identificador da BH
website <- "http://hidroweb.ana.gov.br/baixar/mapa/BaciaX.zip"
(website <- gsub("X", id_bh, website))
[1] "http://hidroweb.ana.gov.br/baixar/mapa/Bacia7.zip"
# nome e caminho para o arquivo que será baixado
(zip_file <- paste0("data/", basename(website)))
[1] "data/Bacia7.zip"
# baixand arquico compactado
download.file(website, destfile = zip_file)
# diretório para descompactar
extract_dir <- gsub("\\.zip", "", zip_file)
extract_dir
[1] "data/Bacia7"
# descompactando arquivo
unzip(zip_file, exdir = extract_dir)
Lista dos arquivos shapefile da ANA baixados.
#lista dos shapefiles contidos no arquivo compactado
shapefiles_list <- list.files(extract_dir,
pattern = "shp$",
recursive = TRUE,
full.names = TRUE)
shapefiles_list
[1] "data/Bacia7/Bacia 7.shp"
[2] "data/Bacia7/Est_Fluviometricas_ANA_2010.shp"
[3] "data/Bacia7/Est_Fluviometricas_outras_ent_2010.shp"
[4] "data/Bacia7/Est_Pluviometricas_ANA_2010.shp"
[5] "data/Bacia7/Est_Pluviometricas_outras_ent_2010.shp"
[6] "data/Bacia7/Est_Qualidade_ANA_2010.shp"
[7] "data/Bacia7/Est_Qualidade_outras_ent_2010.shp"
[8] "data/Bacia7/Est_Sedimentos_ANA_2010.shp"
[9] "data/Bacia7/Est_Sedimentos_outras_ent_2010.shp"
[10] "data/Bacia7/Est_Telemetricas_ANA_2010.shp"
[11] "data/Bacia7/Est_Telemetricas_outras_ent_2010.shp"
[12] "data/Bacia7/Hidrografia 1000000.shp"
[13] "data/Bacia7/Hidrografia 2500000.shp"
[14] "data/Bacia7/Municipios.shp"
[15] "data/Bacia7/Rodovias.shp"
[16] "data/Bacia7/Sedes municipais.shp"
[17] "data/Bacia7/Sub_bacias.shp"
Vamos importar o arquivo shapefile e ver as diversas informações contidas nele:
# nome do shapefile com a rede drenagem da bacia de interesse
dren_file <- grep(x = shapefiles_list,
pattern = "Hidrografia 1000000",
value = TRUE)
dren_file
[1] "data/Bacia7/Hidrografia 1000000.shp"
# importando shapefile
dren <- shapefile(dren_file)
plot(dren, axes = TRUE, las = 1)
# primeiras linhas da tabela de dados do shapefile
head(dren@data)
COTRECHO <int> | COCURSODAG <chr> | COBACIA <chr> | CORIO <chr> | NUCOMPTREC <dbl> | NUDISTBACT <dbl> | NUDISTCDAG <dbl> | NUAREACONT <dbl> | ||
---|---|---|---|---|---|---|---|---|---|
0 | 119193 | 7754994 | 7754994 | 7754994_0 | 26.74 | 249.20 | 0 | 174.02 | |
1 | 119205 | 7754992 | 7754992 | 7754992_0 | 22.23 | 236.06 | 0 | 134.21 | |
2 | 119232 | 775496 | 775496 | 775496_0 | 54.82 | 226.03 | 0 | 472.32 | |
3 | 119330 | 7754896 | 7754896 | 7754896_0 | 19.49 | 239.46 | 0 | 88.65 | |
4 | 119334 | 7754898 | 7754898 | 7754898_0 | 22.48 | 240.18 | 0 | 117.04 | |
5 | 119338 | 7756966 | 7756966 | 7756966_0 | 9.45 | 136.48 | 0 | 37.89 |
ncol(dren@data)
[1] 32
Nós não precisamos das 32 variáveis contidas na tabela de dados do shapefile. Quanto mais variáveis, maior será o tamanho do arquivo KMZ gerado. Então vamos selecionar somente algumas variáveis de interesse, como o nome do rio (NORIOCOMP
), o código da bacia hidrográfica (COBACIA
) e o do rio (CORIO
). Essas informações poderão ser visualizadas no Google Earth ao clicar sobre o rio de interesse. Entretanto, nem todos rios possuem nomes definidos como pode ser visto pelos valores <NA>
na coluna NORIOCOMP
da tabela de dados acima.
#selecionando somente as variáveis de interesse no slot de dados do objeto dren (SpatialLinesDataFrame)
dren@data <- subset(dren@data, sel = c("NORIOCOMP", "COBACIA", "CORIO"))
# projeção do shapefile da ANA
projection(dren)
[1] "+proj=longlat +ellps=aust_SA +no_defs"
# classe de dados espaciais
class(dren)
[1] "SpatialLinesDataFrame"
attr(,"package")
[1] "sp"
Antes de exportar o objeto dren
para KML (ou KMZ) devemos primeiro reprojetá-lo para coordenadas geográficas Lat/Lon (sistema de coordenadas polares WGS84) usadas no Google Earth. A função spTransform()
do pacote rgdal
permite reprojetar objetos da classe SpatialLinesDataFrame
para qualquer outra projeção. Ela usa a biblioteca PROJ.4
mencionada anteriormente. O pacote rgdal
é a interface entre a biblioteca PROJ.4
e o R que permite realizar essa operação. O argumento CRSobj
deve receber uma expressão proj4
. Expressões proj4
são strings que fornecem os parâmetros das projeções cartográficas2.
# definindo o a projeção de acordo com a do Google Earth
dren_ll <- spTransform(dren, CRSobj = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0")
Finalmente, exportamos os dados reprojetados para KMZ.
# gerando arquivo KML para visualização no google-earth
(kml_file <- gsub("X", id_bh, "data/drenX.kmz"))
[1] "data/dren7.kmz"
KML(x = dren_ll,
file = kml_file,
overwrite = TRUE)
# verificando existência do arquivo
file.exists(kml_file)
[1] TRUE
Agora, tendo o Google Earth instalado, podemos visualizar o arquivo KMZ da Hidrografia da região hidrográfica do Uruguai, clicando duas vezes sobre o ele.
Para gerar o arquivo KMZ para outras regiões é só repetir os procedimentos descritos acima, alterando id_bh
de acordo com a região hidrográfica de interesse, ou seja, id_bh = 6
para região do Paraná e id_bh = 8
para região do Atlântico, Trecho Sudeste.
sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.5 LTS
locale:
[1] LC_CTYPE=en_US.UTF-8
[2] LC_NUMERIC=C
[3] LC_TIME=pt_BR.UTF-8
[4] LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=pt_BR.UTF-8
[6] LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=pt_BR.UTF-8
[8] LC_NAME=C
[9] LC_ADDRESS=C
[10] LC_TELEPHONE=C
[11] LC_MEASUREMENT=pt_BR.UTF-8
[12] LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets
[6] methods base
other attached packages:
[1] rgdal_1.1-10 raster_2.5-8 sp_1.2-3
loaded via a namespace (and not attached):
[1] assertthat_0.1 formatR_1.4 tools_3.3.1
[4] tibble_1.2 Rcpp_0.12.7 grid_3.3.1
[7] knitr_1.14.4 lattice_0.20-34
Para saber mais o conjunto de informações hidrológicas disponibilizadas pela ANA clique aqui↩
Um local para para procurar por projeções é o site de referência espacial. Dessa base de dados podemos buscar qualquer referência espacial e obtê-la em praticamente qualquer formato, incluindo o formato das expressões proj4
.↩