Successfully reported this slideshow.

Operações com dados espaciais (Vetor) em R

2

Share

1 of 100
1 of 100

Operações com dados espaciais (Vetor) em R

2

Share

Download to read offline

Aula da disciplina de Uso de dados espaciais em estudos ambientais, Universidade Federal do ABC (UFABC), março de 2020.
Gravação de aula disponível em: https://youtu.be/ap7IcO2Icgs
Base de dados disponíveis em: https://app.box.com/s/qf2hsg4b2uontvrawbk3el4fg9cxjufg

Aula da disciplina de Uso de dados espaciais em estudos ambientais, Universidade Federal do ABC (UFABC), março de 2020.
Gravação de aula disponível em: https://youtu.be/ap7IcO2Icgs
Base de dados disponíveis em: https://app.box.com/s/qf2hsg4b2uontvrawbk3el4fg9cxjufg

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Operações com dados espaciais (Vetor) em R

  1. 1. Operações com dados espacias (vetor) em R Ângela Terumi Fushita Vitor Vieira Vasconcelos Introdução ao uso de dados espaciais para estudos ambientais Programa de Pós-Graduação em Ciência e Tecnologia Ambiental Universidade Federal do ABC Março, 2020 São Bernardo do Campo - SP
  2. 2. Conceitos anteriores  Noções de cartografia  Comandos plot, join, manipulação de vetores e tabelas  Dados vetoriais (formato sf)
  3. 3. Abrir o RStudio
  4. 4. É sempre recomendável verificar atualizações nos pacotes instalados antes de começar a trabalhar Abrir o R Studio
  5. 5. Materiais de aula disponíveis em: Baixar os dados em: D:/R_CTA/aula4/ ● Pasta de nome curto, perto da raiz, sem caracteres especiais, nem espaços ● Não criar pasta em “Área de trabalho”, “Meus documentos”, etc... https://app.box.com/s/qf2hsg4b2uontvrawbk3el4fg9cxjufg
  6. 6. Novo projeto
  7. 7. D:/R_CTA Aula4
  8. 8. Abrir script de código da aula: aula4.R
  9. 9. Pacotes a serem utilizados sf Formato espacial sf units Atribuição e conversão de unidades de medida xml2 Visualização de tabelas xml2 tidyr Manipulação de dados em tabelas cleangeo Correção topológica rmapshaper Simplificação e sobreposição de camadas spatialEco Amostragem e métricas de paisagem install.packages( ) Instala library( ) Carrega na memória
  10. 10. Conteúdo ● Áreas e distâncias ● Operações com atributos ● Agregação ● Correção topológica ● Simplificação de geometrias ● Buffer e seleção espacial ● Sobreposição de camadas (overlay) ● Amostragem ● União espacial (spatial join)
  11. 11. Livros Mas, Jean-Francois, Horta, M.B. Vasconcelos, R. N. Análise espacial com R. Feira de Santana: UEFS Editora, 2019. ● Operações básicas em R para análise espacial https://bit.ly/2KpSI7C https://www.researchgate.net/publication/332865 022_Analise_espacial_com_R
  12. 12. Livros Lovelace, Robin; Nowosad, J.; Muenchow, J. Geocomputation with R. CRC Press. 2019. https://geocompr.robinlovelace.net/ ● Conteúdo de referência: – Dados vetoriais (sf) e raster – Visualização
  13. 13. Livros Bivand, Roger. S., Pebesma, E. J., Gomez-Rubio, V., & Pebesma, E. J. (2013). Applied spatial data analysis with R. New York: Springer. https://app.box.com/s/uti6bqyiscqp oqu2dsmd06yk5xw5m9qw Site de apoio: https://asdar-book.org/ ● Conteúdo de referência – Dados vetoriais e raster (formato sp) – Estatística espacial
  14. 14. Importação dos dados vetoriais pocos_abc <- read_sf("abc.gpkg", layer="pocos_abc") hidrografia_abc <- read_sf("abc.gpkg", layer="hidrografia_abc") setores_abc_censo <- read_sf("abc.gpkg", layer="setores_abc_censo") contaminadas_abc <- read_sf("abc.gpkg", layer="contaminadas_abc") View(setores_abc_censo)
  15. 15. Padronizar a projeção cartográfica st_crs(pocos_abc) Coordinate Reference System: No EPSG code proj4string: "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs" st_crs(pocos_abc)<-31983 st_crs(hidrografia_abc)<-31983 st_crs(setores_abc_censo)<-31983 st_crs(contaminadas_abc)<-31983 Os dados estão em SIRGAS 2000 UTM 23S (EPSG 31983) Vamos usar projeção UTM, mais adequada para cáculos de área e distância
  16. 16. Plotar camadas para conferir sobreposição plot(st_geometry(setores_abc_censo)) plot(st_geometry(hidrografia_abc), add=TRUE, col="blue") plot(st_geometry(contaminadas_abc), add=TRUE, col= "red") plot(st_geometry(pocos_abc), add=TRUE, col= "green")
  17. 17. Calcular áreas e comprimentos setores_abc_censo$area_m2<-st_area(setores_abc_censo) View(setores_abc_censo) hidrografia_abc$comprimento_m<-st_length(hidrografia_abc) View(hidrografia_abc)
  18. 18. Cálculo de valores dos campos e unidades de medida setores_abc_censo$area_ha <- setores_abc_censo$area_m2/10000 View(setores_abc_censo) setores_abc_censo$area_ha <- set_units(setores_abc_censo$area_ha, NULL) View(setores_abc_censo)
  19. 19. Cálculo de valores dos campos e unidades de medida View(valid_udunits())
  20. 20. Cálculo de valores dos campos e unidades de medida setores_abc_censo$area_ha <- set_units(setores_abc_censo$area_ha, "hectare") View(setores_abc_censo)
  21. 21. Cálculo de valores dos campos e unidades de medida plot(setores_abc_censo["area_ha"], main="Area(ha)", axes = TRUE, border = NA, cex.axis=0.5, breaks = "fisher")
  22. 22. Atividade 1 A) Criar uma variável de densidade demográfica, denominada "pessoas_km2" para cada setor censitário B) Plotar um mapa da densidade demográfica Obs: submeta o código e a figura gerados
  23. 23. Lidando com valores nulos (NA) View(setores_abc_censo) Ordenar por ordem crescente de pessoas Setores zerados Setores nulos Censo 2010
  24. 24. plot(setores_abc_censo["Pessoas"]) Lidando com valores nulos (NA)
  25. 25. O que fazer com os valores nulos e zerados? ● Por que eles estão nulos ou zerados? – Áreas desertas – Falhas de preenchimento (interpolar?) ● Faz sentido analisar esses elementos? – Focar o estudo em áreas não desertas – Trabalhar com amostras e não com universo dos dados ● Os modelos aceitam dados faltantes ou zerados? – Substituir por zero para agregar em áreas maiores – Descartar para análise de vizinhança – Dados zerados podem atrapalhar regressões
  26. 26. library(tidyr) setores_abc_censo$Pessoas_sem_na <- replace_na(setores_abc_censo$Pessoas,0) View(setores_abc_censo) Lidando com valores nulos (NA)
  27. 27. Agregação em tabelas (…) (…) (…) (...) https://data36.com/pandas-tutorial-2-aggregation-and-grouping/
  28. 28. Agregação espacial https://www.earthdatascience.org/courses/use-data-open-source-python/intro-vector-data-python/vector-data-processing/dissolve-polygons-in-python-geopandas-shapely/
  29. 29. Agregação de setores para bairros f1 <- function(x) sum(x) bairros_abc_censo <- aggregate(setores_abc_censo["Pessoas_sem_na"], by=list(setores_abc_censo$CD_GEOCODB), FUN = f1) View(bairros_abc_censo)
  30. 30. Agregação de setores para bairros plot(st_geometry(setores_abc_censo)) plot(st_geometry(bairros_abc_censo), border="blue", add=T)
  31. 31. Agregação de setores para bairros plot(bairros_abc_censo["Pessoas_sem_na"])
  32. 32. https://cran.r-project.org/web/packages/sf/vignettes/sf1.html Correção topológica de geometrias inválidas Linha com auto-interseção Polígono com auto-interseção Polígono com ”ponta”
  33. 33. Buracos órfãos (orphaned holes)
  34. 34. Correção topológica de geometrias inválidas bairros_sp <- as(bairros_abc_censo,"Spatial") clgeo_IsValid(bairros_sp) analise_topologica <- clgeo_CollectionReport(bairros_sp) clgeo_SummaryReport(analise_topologica) type valid issue_type rgeos_error : 20 Mode :logical GEOM_VALIDITY: 15 rgeos_validity: 15 FALSE:35 ORPHANED_HOLE: 20 NA's :169 TRUE :169 NA's :169 [1] FALSE Converte do formato sf para sp
  35. 35. View(analise_topologica) [1] 1 3 4 5 6 10 11 13 15 19 22 25 63 64 83 87 88 93 105 118 126 129 162 168 [25] 171 173 175 176 178 179 181 183 184 186 187 clgeo_SuspiciousFeatures(analise_topologica) Correção topológica de geometrias inválidas
  36. 36. Correção topológica de geometrias inválidas bairros_clean <- clgeo_Clean(bairros_sp) clgeo_IsValid(bairros_clean) bairros_sf <- st_as_sf(bairros_clean) plot(st_geometry(bairros_sf)) [1] TRUE Converte do formato sp para sf
  37. 37. Agregar ponderando pela área setores_abc_censo$pessoas_km2_sem_na <- replace_na(setores_abc_censo$pessoas_km2, 0) bairros_abc_censo_densidade <- st_interpolate_aw(setores_abc_censo["pessoas_k m2_sem_na"], to = bairros_sf, extensive = FALSE) View(bairros_abc_censo_densidade) Variável a agregar Camada com novas geometrias FALSE: agrega pela média (ex: densidade) TRUE: agrega pela soma (ex: população)
  38. 38. Agregar ponderando pela área plot(bairros_abc_censo_densidade["pessoas_km2_sem_na"])
  39. 39. Agregar ponderando pela área setores_abc_censo$domicilios_sem_na <- replace_na(setores_abc_censo$Domicilios,0) bairros_abc_censo_domicilios <- st_interpolate_aw(setores_abc_censo["domicilios_ sem_na"], to = bairros_sf, extensive = TRUE) View(bairros_abc_censo_domicilios) Variável a agregar Camada com novas geometrias FALSE: agrega pela média (ex: densidade) TRUE: agrega pela soma (ex: população)
  40. 40. Agregar ponderando pela área plot(bairros_abc_censo_domicilios["domicilios_sem_na"])
  41. 41. Atividade 2 A) Agregar a variável "Domicilios" por município (identificado pelo atributo CD_GEOCODM) e plotar um mapa pelo método de intervalos "pretty" B) Fazer a agregação ponderada pela area para porcentagem de cobertura de rede de esgoto ("rede_esg") pela área do município e plotar um mapa pelo método de intervalos iguais
  42. 42. Simplificação cartográfica Cecconi, A. and Galanda, M., 2002, December. Adaptive zooming in web cartography. In Computer Graphics Forum (Vol. 21, No. 4, pp. 787-799). Oxford, UK: Blackwell Publishing, Inc.
  43. 43. Escala -> Resolução Escala Resolução horizontal aproximada (m) Mapas Impressos Interpretação Digital Objeto Mínimo Detectável 1:1.000.000 200 500 1.000 1:450.000 90 225 450 1:250.000 50 125 250 1:100.000 30 50 100 1:50.000 10 25 50 1:25.000 5 12,5 25 1:10.000 2 5 10 IMHOF, E. Cartographic relief presentation. ESRI, 2007. TOBLER, Waldo. 1987. “Measuring Spatial Resolution”, Proceedings, Land Resources Information Systems Conference, Beijing, pp. 12-16. TOBLER, Waldo. 1988. “Resolution, Resampling, and All That”, pp. 129-137 of H. Mounsey and R. Tomlinson, eds., Building Data Bases for Global Science, London, Taylor and Francis
  44. 44. Simplificação cartográfica hidrografia_simplificada <- st_simplify(hidrografia_abc, dTolerance = 125, preserveTopology = TRUE) Distância mínima entre vértices Manter conexão entre elementos 125 metros = resolução para escala 1:250.000
  45. 45. par(mfrow=c(1,2)) plot(st_geometry(hidrografia_abc)) plot(st_geometry(hidrografia_simplificada)) par(mfrow=c(1,1)) Simplificação cartográfica 2 mapas lado a lado (1 linha e 2 colunas) Retorna para 1 mapa por tela
  46. 46. Atividade 3 Simplificar a camada agregada por municípios para escala 1:1.000.000. Plotar dois mapas, lado a lado, para comparar a camada original com a simplificada
  47. 47. Simplificação cartográfica library(rmapshaper) municipios_simplificado_ms <- ms_simplify(municipios_abc_censo, keep = 0.05) Mantém 5% dos vértices originais
  48. 48. par(mfrow=c(1,3)) plot(st_geometry(municipios_abc_censo)) plot(st_geometry(municipios_simplificado)) plot(st_geometry(municipios_simplificado_ms)) par(mfrow=c(1,1)) Simplificação cartográfica 3 mapas lado a lado (1 linha e 3 colunas) Retorna para 1 mapa por tela
  49. 49. Atividade 4 Analisar a correção topológica da camada municipios_simplificado_ms, e corrigir, se necessário
  50. 50. Análise de distância distancia_pocos_contaminacao <- st_distance(pocos_abc,contaminadas_abc) View(distancia_pocos_contaminacao) Áreas contaminadas Poços Grupos de 50 colunas
  51. 51. Buffer (zona de amortecimento) contaminadas_buff<- st_buffer(contaminadas_abc, 250) Raio do buffer Campbell, Jonathan E., and Michael Shin. Essentials of geographic information systems. Saylor books, 2011 https://saylordotorg.github.io/text_essentials-of-geographic-information-systems/s11-01-single-layer-analysis.html
  52. 52. Buffer (zona de amortecimento) plot(st_geometry(contaminadas_buff), col="red") plot(st_geometry(contaminadas_abc), pch=20, cex=0.5, col="pink", add=T)
  53. 53. Buffer (zona de amortecimento) View(contaminadas_buff)
  54. 54. Seleção espacial Quais poços estão dentro do buffer de áreas contaminadas? plot(st_geometry(pocos_abc), pch=20, cex=0.8, add=T)
  55. 55. https://scialert.net/fulltext/?doi=itj.2014.801.815 Consultas topológicas Touches Touches Touches
  56. 56. Consultas topológicas st_intersects() st_disjoint() st_touches() st_crosses() st_within() st_contains() st_contains_properly() st_overlaps() st_equals() st_covers() st_covered_by() st_equals_exact(x, y, par) st_is_within_distance(x, y, dist) Está no interior mas não toca as bordas Quase igual, com tolerância Se sobrepõe ou encosta de alguma maneira
  57. 57. Seleção espacial pocos_contaminacao <- st_intersects(pocos_abc, contaminadas_buff) View(pocos_contaminacao) Número do buffer de contaminação
  58. 58. Seleção espacial contaminacao <- st_is_within_distance(contaminadas_abc, pocos_abc, dist=250) View(contaminacao) Número do poço a 250 metros
  59. 59. Seleção espacial pocos_contaminados <- pocos_abc[contaminadas_buff, op=st_intersects] plot(pocos_contaminados,pch=20,cex=0.8,col="yellow", add=T)
  60. 60. Envoltória (convex hull) zona_pocos <- st_convex_hull(st_union(pocos_contaminados)) envoltória agrupa todos os elementos plot(st_geometry(zona_pocos), border="purple", lwd=3, add=T)
  61. 61. União de geometrias abc <- st_union(municipios_simplificado_ms) plot(st_geometry(abc), add=T)
  62. 62. Atividade 5 A) Fazer um buffer com a áreas de preservação permanente (APP) de 30 metros dos cursos de água B) Criar uma camada com os trechos de APPs potencialmente contaminados, que estão a 100 metros de áreas contaminadas C) Montar um mapa com as APPs totais em fundo verde e borda verde, e APPs potencialmente contaminadas com fundo vermelho e borda vermelha D) Fazer um polígono envolvente das APPs potencialmente contaminadas, e sobrepor ao mapa gerado na etapa anterior (C)
  63. 63. Sobreposição de Camadas (overlay)
  64. 64. Sobreposição de camadas bacia_tamanduatei <- read_sf("abc.gpkg", layer="bacia_tamanduatei") st_crs(bacia_tamanduatei)<-31983
  65. 65. Sobreposição de camadas plot(st_geometry(bacia_tamanduatei), col="pink") plot(st_geometry(setores_abc_censo),add=T)
  66. 66. Sobreposição de camadas setores_crop_tamanduatei <- st_crop(setores_abc_censo,bacia_tamanduatei) plot(st_geometry(bacia_tamanduatei), col="pink") plot(st_as_sfc(st_bbox(bacia_tamanduatei)), add=T) plot(st_geometry(setores_crop_tamanduatei), add=T) Retângulo envolvente Transforma retângulo em geometria espacial
  67. 67. Interseção de camadas https://desktop.arcgis.com/en/arcmap/latest/tools/analysis-toolbox/intersect.htm
  68. 68. Interseção de camadas https://desktop.arcgis.com/en/arcmap/10.3/tools/coverage-toolbox/how-intersect-works.htm
  69. 69. Interseção de camadas setores_tamanduatei <- st_intersection(setores_abc_censo,bacia_tamanduatei) plot(st_geometry(bacia_tamanduatei), col="pink") plot(st_geometry(setores_tamanduatei), add=T)
  70. 70. Interseção de camadas View(setores_tamanduatei) Atributos dos setores censitários Atributos da bacia
  71. 71. Diferença de camadas Campbell, Jonathan E., and Michael Shin. Essentials of geographic information systems. Saylor books, 2011 https://saylordotorg.github.io/text_essentials-of-geographic-information-systems/s11-geospatial-analysis-i-vector-o.html
  72. 72. Diferença de camadas setores_sem_tamanduatei <- st_difference(setores_abc_censo, bacia_tamanduatei) plot(st_geometry(setores_sem_tamanduatei)) plot(st_geometry(bacia_tamanduatei), col="pink", add=T)
  73. 73. Revendo os comandos Lovelace, Robin; Nowosad, J.; Muenchow, J. Geocomputation with R. CRC Press. 2019. https://geocompr.robinlovelace.net/geometric-operations.html
  74. 74. Anexar camadas setores_todos <- rbind(setores_tamanduatei, setores_sem_tamanduatei) plot(st_geometry(setores_todos)) Junta linhas (objetos), mas colunas devem ser iguais
  75. 75. Atividade 6 A) Carregue a camada da subbacia do rio dos Couros (bacia_couros) no geopackage “abc” e atribua a projeção Sirgas 2000 UTM 23S (EPSG 31983) B) Apague na camada da bacia do rio Tamanduateí, a área correspondente à sub-bacia do rio dos Couros C) Junte a camada construída em B com a subbacia do rio dos Couros, em uma única camada sf (dica: as colunas devem ser iguais) D) Faça um mapa com a bacia do rio Tamanduateí junto com a sub-bacia do Rio dos Couros
  76. 76. Pontos em Polígonos Centróide = centro geométrico, baricentro, centro de gravidade, centro de massa Média geométrica de todos os pontos (ou vértices) em um elemento https://en.wikipedia.org/wiki/Centroid#/media/File:Triangle.Centroid.svg
  77. 77. Pontos em Polígonos Centróide Média geométrica de todos os pontos (ou vértices) em um elemento http://93.187.166.52:8081/opengeo-docs/processing/processes/vector/centroid.html
  78. 78. Pontos em Polígonos Média geométrica de todos os pontos (ou vértices) em um elemento https://gis.stackexchange.com/questions/22739/finding-center-of-geometry-of-object
  79. 79. Centróide centroide_setor<-st_centroid(setores_abc_censo) plot(st_geometry(setores_abc_censo)) plot(st_geometry(centroide_setor), cex=0.4, col="blue", add=T)
  80. 80. Centróide View(centroide_setor) coord<-st_coordinates(centroide_setor) View(coord)
  81. 81. Centróide class(coord) coord<-as.data.frame((coord)) class(coord) centroide_setor$UTMX<-coord$X centroide_setor$UTMY<-coord$Y View(centroide_setor) [1] "matrix" [1] "data.frame"
  82. 82. Centróide http://93.187.166.52:8081/opengeo-docs/processing/processes/vector/centroid.html
  83. 83. Ponto interno ao polígono st_point_on_surface st_centroid http://www.h2gis.org/docs/dev/ST_PointOnSurface/
  84. 84. Ponto sobre polígono ponto_no_setor<- st_point_on_surface(setores_abc_censo) plot(st_geometry(setores_abc_censo)) plot(st_geometry(ponto_no_setor), cex=0.4, col="red", add=TRUE)
  85. 85. Atividade 7 Copiar as variáveis com as coordenadas X e Y para a camada sf "ponto_no_setor"
  86. 86. União espacial (spatial join) York, R. Spatial Joins (Chapter 6). 2018. https://slideplayer.com/slide/12316942/
  87. 87. União espacial (spatial join) contaminacao_social <- st_join(contaminadas_abc, setores_abc_censo, join = st_intersects, left=T) View(contaminacao_social) Elemento que vai receber atributos Elemento que cede atributos Consulta espacial T = Left Join (mantém todos elementos) F = Inner join (mantém apenas elementos recebem atributos)
  88. 88. Atividade 8 A) Fazer um inner join (opção left=FALSE), para trazer as informações de contaminação apenas para os poços que estão dentro do buffer de 250m das áreas contaminadas B) Plotar os poços totais do ABC em preto, sobrepondo os poços em que foi feito o inner join em vermelho
  89. 89. Ronald Fisher William Gosset “Student” Hurlbert, S.H., 1984. Pseudoreplication and the design of ecological field experiments. Ecological monographs, 54(2), pp.187-211. Amostragem
  90. 90. Amostragem mun_abc <- read_sf("abc.gpkg", layer="mun_abc") st_crs(mun_abc)<-31983 aleatorio <- st_sample(mun_abc, 20, type = "random") plot(st_geometry(mun_abc)) plot(st_geometry(aleatorio), pch=20, col="red", add=T) Amostras Tipo de amostragem
  91. 91. Amostragem hexagonal <- st_sample(mun_abc, 20, type = "hexagonal") plot(st_geometry(mun_abc)) plot(st_geometry(hexagonal), pch=20, col="blue", add=T) Amostras Tipo de amostragem
  92. 92. Atividade 9 Faça 2 mapas de 200 amostragens, no formato aleatório e hexagonal
  93. 93. Ronald Fisher William Gosset “Student” Hurlbert, S.H., 1984. Pseudoreplication and the design of ecological field experiments. Ecological monographs, 54(2), pp.187-211. Amostragem
  94. 94. Amostragem estratificada espacialmente library(spatialEco) mun_sp <- as(mun_abc,"Spatial") estratificado_sp <- sample.poly(mun_sp, n=10, type="random") estratificado_sf <- st_as_sf(estratificado_sp) Amostras por polígono Tipo de amostragem Converte para formato sp Converte para formato sf
  95. 95. Amostragem estratificada espacialmente plot(st_geometry(mun_abc)) plot(st_geometry(estratificado_sf), pch=20, col="green", add=T)
  96. 96. Atividade 10 Faça a amostragem estratificada espacialmente no formato hexagonal e compare com a estratificada aleatória
  97. 97. Para a próxima aula: Leitura dos capítulos 7 e 8 do livro CÂMARA, Gilberto; DAVIS, Clodoveu; MONTEIRO, Antônio Miguel Vieira. Introdução à ciência da geoinformação. 2001. http://www.dpi.inpe.br/gilberto/livro/introd/

×