######## USO DO PACOTE 'sf' #### A - Simple Features in R ### 1. Simple Features (SF) # Refere-se a um formato padrão que descreve como objetos do mundo real # e pode ser representado em computadores, com ênfase na sua geometria espacial. # Descreve como estes objetos pode ser armazenados e reecuperados de bancos de # dados e quais operações geométricas podem ser definidas para eles. # Armazenamento de dados espaciais no R: sp # Interfaces no R: rgdal, rgeos, etc # Faltava uma completa implementação para trabalhar com as SF # problemas de conversões confusas, ineficientes e incompletas # Pacote sf (http://github.com/r-spatial/sf) # - tentativa de preencher as lacunas # - objetiva, no longo prazo, suceder o pacote sp # Features ou feições - atributos espaciais e não espaciais # geometria com descrição onde, no planeta, está localizada # outros atributos - descrição de outras propriedades # Dimensões # Feições compostas por pontos - coordenadas X e Y # dimensão Z - por exemplo, altitude ### Tipos comuns de geometria de SF # point, linestring, polygon, multipoint, multilinestring, multipolygon, # geometrycollection (conjunto de geom de qq tipo, exceto esta) ### Sistema de Referência de Coordenadas # CRS: coordinate reference system # coordenas geográficas ou projetadas ### 2. Organização da SF no R # todas as funções e métodos no pacote sf q operam em dados espaciais # são prefixados por 'st_' (espacial e temporal) # armazenamento das feições geográficas em objetos do tipo 'data.frame' # geometrias não são colunas simples (X, Y, Z) - colocas em 'list-column' # 'list-column' - lista com o mesmo nº de registros do 'data-frame', com # cada elemento da lista contendo as inform sobre a geometria de uma feição. ## 2.1 Três classes usadas para representar SF: # 'sf': a tabela (data-frame) com os atributos e geometrias das feições # (q contém) # 'sfc': a 'list-column' com as geometrias de cd feição (registros) # (q é composta por) # 'sfg': a geometria da feição de um SF individual ## 2.2 'sf': objetos com SF # geometrias e atributos colocados conjuntamente em objetos 'sf' # comando para ler o dataset 'nc' - arquivo contido no pacote sf # instalar e carregar pacote 'sf' library(sf) # lendo o mapa 'nc' nc <- st_read(system.file("shape/nc.shp", package="sf")) # comentários sobre as saídas # CRS: epsg (SRID): 4267 ## proj4string: +proj=longlat +datum=NAD27 +no_defs # epsg: European Petroleum Survey Group # classe do objeto # lendo o shape 'nc' a partir do diretório "bancos_aula3" # nc <- st_read("./bancos_aula3/nc.shp") class(nc) # classe sf e é um data.frame q contém uma 'list-column' com geometrias attr(nc,'sf_column') # coluna com geometria # com o comando 'print', abaixo, apresentamos as três primeira feições. # com os seus atributos e uma versão abreviada de sua geometria print(nc[11:15],n=3) # prim 3 linhas das col 11 a 15 - col 15 - geometry!!! # identificando as três classes usadas para representar as SF: # sf: cada uma das linhas do data.frame # NWBIR74 BIR79 SID79 NWBIR79 geometry # 1 10 1364 0 19 MULTIPOLYGON (((-81.47276 3... # 2 10 542 3 12 MULTIPOLYGON (((-81.23989 3... # 3 208 3616 6 260 MULTIPOLYGON (((-80.45634 3... # 'sfc': a 'list-column' com as geometrias de cd feição (registros) # geometry # MULTIPOLYGON (((-81.47276 3... # MULTIPOLYGON (((-81.23989 3... # MULTIPOLYGON (((-80.45634 3... # e 'sfg': a geometria da feição de um SF individual # geometry # MULTIPOLYGON (((-81.47276 3... ## métodos para objetos sf methods(class='sf') # Exemplo: transf obj sf em data.frame nc.no_sf <- as.data.frame(nc) class(nc.no_sf) str(nc.no_sf) head(nc.no_sf) plot(nc.no_sf) # deixou dde ser um objeto sf - perdeu refer espacial plot(nc) # comando plot q muitas op??es - depois as veremos! ## 2.2 'sfc' - a 'list-column' com a geometria da SF # 'sfc' - coluna do data.frame sf q contém a geometria - lista da classe 'sfc' # podemos apresentar esta geometria usando os comandos abaixo: nc$geom # mostra a geometria das 5 primeiras feições nc[[15]] # o mesmo, mas indexando a coluna 15 - da geometria (nc_geom <- st_geometry(nc)) # cria um novo objeto 'sf' somente com geometria; os parêntesis em torno do comando faz com q o resultado da operação seja mostrado (ao mesmo tempo q o objeto é criado!) plot(nc_geom) # sem atributos, plota somente as feições # olhando as informações completas de determinada feição # no caso, a feição n? 1 nc_geom[[1]] # temos todas as coordenadas dos ptos q formam a feição! # atributos do objeto 'nc_geom' attributes(nc_geom) # objeto da classe 'sfc' - sem outros atributos! ### 3 - Writing (exportando o mapa!) # antes, criar diretório 'mapa_nc' st_write(nc,"./mapa_nc/nc.shp") ### 4 - CRS e transformações # objetos 'sfc' - dois atributos para armazenar o CRS: # epsg e proj4string # proj4string - descrição do CRS - http://proj4.org/ # epsg - ID de um CRS - http://www.epsg-registry.org/ - colocar o código epsg no "retrive by code" # OBS.: site do EPSG não encontrado! # conversão de CRS long/lat NAD27 para webmercator (EPSG: 3857) nc.web_mercator <- st_transform(nc,3857) print(nc.web_mercator) # CRS alterado!