Aqueles que acompanham as venturas da capital gaúcha bem devem saber da polêmica Avenida Castelo Branco, que dá entrada à cidade, para quem vem da Região Metropolitana. Em 2014, a câmara de vereadores de Porto Alegre aprovou a mudança da Av. Castelo Branco para Av. da Legalidade e da Democracia. A Avenida da Legalidade, como ficou conhecida, durou pouco tempo: em 2018 a justiça considerou inválida a lei que alterou o nome da avenida e ela voltou a se chamar Castelo Branco, agora Av. Presidente Castelo Branco, como se querendo debochar da mudança anterior.
Na minha vivência na cidade, sempre reparei na quantidade de ruas e avenidas que homenageavam não somente os presidentes da ditadura militar, mas membros do exército em geral. A principal via do boêmio bairro da Cidade Baixa chama-se Rua General Lima e Silva; a avenida que liga a Protásio com a 24, Av. Coronel Lucas de Oliveira; um longo trecho da terceira perimetral, Av. Coronel Aparício Borges; no querido Bom Fim, General João Telles; no Centro Histórico, Gen. Vitorino, Gen. Andrade Neves, Gen. Câmara, Gen. Salustiano, Cel. Fernando Machado e tantos outros.
Parti então para a empreitada de classificar todas as ruas da cidade e entender quais os nomes que formam os logradouros de Porto Alegre. O resultado está no mapa abaixo. Para ver em mais detalhes, selecione “Abrir imagem em nova aba” e use o zoom.
Sobre o mapa
A tarefa foi mais difícil do que esperava. De imediato, nota-se que a maior parte das ruas têm nome de pessoas, cerca de 65%. O restante das ruas ou são “coisas”, como Av. Icaraí, Av. Ipiranga, etc. ou são ruas sem nome como Beco A, Rua 1, etc. Estas ruas sem nome concentram-se ou em aglomerados subnormais (favelas) ou em condomínios fechados. Por fim, temos ruas que têm nomes de outros lugares, como a Av. Nova York, Rua Europa, etc.
O exército realmente tem muitas ruas, em torno de 185, ou 3% do total; é mais do que o nome de ruas que têm os políticos (35) e até mesmo do que as figuras religiosas que têm 155. Há menos ruas com nomes de políticos do que eu esperava; as poucas ruas, contudo, costumam ser bastante importantes, como a Av. João Pessoa, Av. Getúlio Vargas e Av. Protásio Alves. Nossos padres, freis e papas têm muitas ruas, mas a maioria delas são pequenas; a exceção é a Av. Padre Cacique, na Zona Sul.
Como mencionei acima, o Centro Histórico concentra muitas ruas com nomes de generais, coroneis e marechais.
As ruas sem nome são bastante aglomeradas espacialmente. Na sua maioria, estas ruas são de condomínios fechados ou de aglomerados subnormais. A foto abaixo mostra a esquina da Rua C com a Rua Oito, no bairro Bom Jesus. As ruas em volta seguem o mesmo padrão: Rua 11, Rua Doze, Rua P, etc.
Algumas partes da cidade parecem temáticas. Na Zona Norte, por exemplo, no Bairro São Geraldo, há um enorme número de ruas contíguas com nomes de locais: Av. Pará, Av. Amazonas, Av. Bahia, Av. Ceará, Av. França, Av. Madrid, etc. No Partenon, a Rua Chile faz esquina com a R. Valparaíso e é paralela com a R. Buenos Aires.
Muitas ruas têm nomes de profissões, como R. Doutor Flores ou R. Professor Fitzgerald. A profissão mais comum é a de doutor (cerca de 120 ruas) seguida por professor (cerca de 80 ruas). Também temos bastante engenheiros, como na Av. Engenheiro Alfredo Corrêa Daudt. No meio das ruas temos até uma Av. Economista Nilo Wulff, no Bairro Restinga, que foi um dos criados do Conselho de Economia do Rio Grande do Sul. As ruas com nomes de profissão estão espalhadas por toda a cidade. No Bairro Tristeza, na Zona Sul, há várias delas reunidas, várias ruas com nome de Doutor.
Sobre fazer o mapa
Classificar o nome das ruas é uma tarefa nada trivial. Primeiro, porque as categorias que eu me propus a usar não são mututamente excludentes. A Av. Senador Salgado Filho, por exemplo, é nome de um município, refere-se a uma profissão (senador), é nome de um político e, de maneira geral, é nome de uma personalidade histórica.
A Av. Bento Gonçalves também é um pouco ambígua, afinal é o nome de um município importante; neste caso, contudo, tanto a avenida como a cidade homenageam Bento Gonçalves da Silva, tenente-coronel, líder da Revolução Farroupilha. Além disso, a Lei Ordinária No 1 de março de 1936, deixa evidente que o homenageado era o General. Infelizmente, são poucas as ruas e avenidas que estão propriamente documentadas online. Em alguns casos não há registros de quem era a pessoa homenageada ou há mesmo várias pessoas com nome similar.
Por fim, algumas ruas são simplesmente difíceis de classificar. A Travessa Azevedo, por exemplo. Quem terá sido este Azevedo? Na dúvida, ficou como personalidade histórica.
Para a minha surpesa algumas ruas tem nomes duplicados. A BR-290 que liga a cidade ao litoral tem o nome Estrada Marechal Osório no Google Maps, mas tem nome Rodovia Osvaldo Aranha no OpenStreetMaps. Até onde me lembro sempre ouvi as pessoas chamando ela de “freeway”. Não consegui encontrar algum tipo de material oficial na prefeitura para sanar a dúvida.
Não encontrei nenhum tipo de “dicionário” ou lista com personalidades gaúchas. Sem uma boa lista que junta nomes com descrições fica difícil aplicar algum tipo de metodologia que envolva aprendizado de máquina. A classificação foi feita com uso extensivo de regex; a revisão foi na base de tentativa e erro, pois há incontáveis exceções a todo tipo de regra. Na minha classificação as categorias “coringa” são “personalidade histórica” e “coisa”. Até por isso, estas são as duas categorias com maior chance de estar superestimadas.
Código
Como sempre, o código para fazer o mapa segue abaixo:
Code
# Classificar o nome das ruas de Poa #library(osmdata)library(sf)library(ggplot2)library(dplyr)library(stringr)library(ggtext)sysfonts::font_add("Gill Sans", "GillSans.ttc")showtext::showtext_auto()# Import Data -------------------------------------------------------------## geobr -------------------------------------------------------------------# City borderpoa <- geobr::read_municipality(4314902)## osmdata -----------------------------------------------------------------# Define bboxbbox <-getbb("Porto Alegre Brazil")# Base queryqr <-opq(bbox)# Add feature requests to query# All roadsqr_roads <-add_osm_feature(qr, key ="highway")# Only big roadsqr_big_streets <-add_osm_feature( qr,key ="highway",value =c("motorway", "primary", "motorway_link", "primary_link"))# Only medium roadsqr_med_streets <-add_osm_feature( qr,key ="highway",value =c("secondary", "tertiary", "secondary_link", "tertiary_link"))# Only small roadsqr_small_streets <-add_osm_feature( qr,key ="highway",value =c("residential", "living_street", "unclassified", "service","footway"))# Downloadroads <-osmdata_sf(q = qr_roads)roads <- roads$osm_linesroads <-st_transform(roads, crs =4674)roads <-st_join(roads, poa)roads <-filter(roads, !is.na(code_muni))big_streets <-osmdata_sf(q = qr_big_streets)med_streets <-osmdata_sf(q = qr_med_streets)small_streets <-osmdata_sf(q = qr_small_streets)#> Get street namessnames <- roads$name#> Remove duplicate names and missing valuessnames <-unique(snames)snames <-na.omit(snames)# Convert to tibbledictionary <-tibble(street_name = snames)# Streets - classify ------------------------------------------------------#> Group into categories: historical personalities, names of other cities or #> states, jobs, holiday, religious figure, army, nameless#> Get names of all cities and states in Brazilmuni <- sidrar::get_sidra(4709, geo ="City", variable =93)name_muni <- muni |> janitor::clean_names() |>filter(valor >1e5) |> tidyr::separate(municipio, into =c("name_muni", "abb"), sep =" - ") |>pull(name_muni) |>unique()state <- geobr::read_state()state_name <- state$name_statestate_lower <-c("Rio Grande do Sul", "Rio de Janeiro", "Rio Grande do Norte","Mato Grosso do Sul" )state_name <-c(state_name, state_lower)geonames <-c(name_muni, state_name)geostring <-paste(glue::glue("({geonames})"), collapse ="|")#> Common titles for army position, liberal professions, and religious#> personalitiesposto_exercito <-c("Marechal", "Almirante", "General", "Comandante", "Coronel", "Cabo","Capitão", "Brigadeiro", "Tenente", "(Castello Branco)","(Costa e Silva)", "(Ernesto Geisel)", "PM", "Major" )#> Common prefixes for job titlesprofissao <-c("Engenheir", "Doutor", "Profess", "Desembargador", "Economista", "Jornalista", "Escrivão", "Contabilista" )#> Common names for religious figuressantidade <-c("Frei", "Santo", "Santa", "São", "Padre", "Papa", "Reverendo")politico <-c("Vereador", "Deputado", "Governador", "Senador", "Presidente")#> Collapse stringsposto_exercito <-paste(posto_exercito, collapse ="|")profissao <-paste(profissao, collapse ="|")santidade <-paste(paste0(santidade, " "), collapse ="|")politico <-paste(politico, collapse ="|")# Proxy for closed condominiums / favelascardinais <-c("Um", "Dois", "Três", "Quatro", "Cinco", "Seis", "Sete", "Oito","Nove", "Dez", "Onze", "Doze", "Treze", "Catorze", "Quatorze","Quinze", "Dezesseis", "Dezesete", "Dezoito", "Dezenove", "Vinte","Vinte e Um", "Vinte e Dois", "Vinte e Três", "Vinte e Quatro","Vinte e Cinco", "Vinte e Seis", "Vinte e Sete", "Vinte e Oito","Vinte e Nove", "Trinta", "Quarenta", "Cinquenta", "Sessenta","Setenta", "Oitenta", "Noventa", "Cem" )cardinais <-paste(paste0("(Rua ", cardinais, ")"), collapse ="|")#> "nameless" streetsname_vias <-c("Alameda", "Avenida", "Acesso", "Beco", "Caminho", "Passagem", "Via", "Viela")rx_vias <-paste(name_vias, "[A-Z0-9]+[A-Z]?$")rua_sem_nome <-c("[0-9].+", rx_vias, cardinais)rua_sem_nome <-paste(glue::glue("({rua_sem_nome})"), collapse ="|")rua_sem_nome <-paste(rua_sem_nome, cardinais, sep ="|")dictionary <- dictionary |>mutate(class =case_when(str_count(street_name, "\\w+") >2~"Personalidade Histórica",str_count(street_name, "\\w+") <=2~"Coisa",TRUE~"Outro" ),class =case_when(str_detect(street_name, geostring) ~"Nome de Cidade/UF",str_detect(street_name, politico) ~"Político",str_detect(street_name, posto_exercito) ~"Exército",str_detect(street_name, profissao) ~"Profissão",str_detect(street_name, santidade) ~"Figura Religiosa",str_detect(street_name, "[0-9] de") ~"Feriado",str_detect(street_name, rua_sem_nome) ~"Rua sem nome",TRUE~ class ) )pers <-c("Carlos Gomes", "Protásio Alves", "Salgado Filho", "Mário Tavares Haussen","Donário Braga", "Joracy Camargo", "Goethe", "Mozart", "Schiller","Edgar Pires de Castro", "Plínio Brasil Milano", "Santos Dumont" )exercito <-c("Bento Gonçalves", "Luís Carlos Prestes", "Presidente Castello Branco","João Antônio da Silveira" )politicos <-c("Getúlio Vargas", "João Pessoa", "Protásio Alves", "Loureiro da Silva" )coisas <-c("Azenha", "Rua da Conceição", "Túnel da Conceição", "Elevada da Conceição","Viaduto da Conceição", "Ipiranga", "Beira Rio", "Rio Jacuí", " Banco","Lago das ", "Lago do", "Rio dos Frades", "Rio Pardo", "Rio Claro","Rio dos Sinos", "Rio Negro", "Rio Grande", "Rio Tejo", "Rio Maria","Rio Verde", "Rio Solimoes", "Rio Xingu", "Rio Tapajos", "Avenida da Cavalhada","Estrada do Varejão", "Estrada da Taquara", "Sarandi" )locais <-c("Chicago", "Madri", "Nova York", "Nova Zelândia", "Quito", "Brasil","Europa", "Estados Unidos", "Japão", "Itália", "Polônia", "Caracas","Buenos Aires")pers <-paste(glue::glue("({pers})"), collapse ="|")coisas <-paste(glue::glue("({coisas})"), collapse ="|")locais <-paste(glue::glue("({locais})"), collapse ="|")politicos <-paste(glue::glue("({politicos})"), collapse ="|")exercito <-paste(glue::glue("({exercito})"), collapse ="|")# Ajustes manuaisdictionary <- dictionary |>mutate(class =if_else(str_detect(street_name, pers), "Personalidade Histórica", class),class =if_else(str_detect(street_name, coisas), "Coisa", class),class =if_else(str_detect(street_name, locais), "Nome de Cidade/UF", class),class =if_else(str_detect(street_name, politicos), "Político", class),class =if_else(str_detect(street_name, exercito), "Exército", class) )dictionary |>count(class, sort =TRUE) |>mutate(share = n /sum(n) *100)# Streets ---------------------------------------------------------------s1 <- big_streets$osm_lines |>st_transform(crs =4674) |>left_join(dictionary, by =c("name"="street_name"))s2 <- med_streets$osm_lines |>st_transform(crs =4674) |>left_join(dictionary, by =c("name"="street_name"))s3 <- small_streets$osm_lines |>st_transform(crs =4674) |>left_join(dictionary, by =c("name"="street_name"))# Plot ------------------------------------------------------------------cores <-c("coisa"="#33a02c","exercito"="#b15928","feriado"="#fb9a99","religioso"="#e41a1c","nome_cidade"="#1f77b4","personalidade"="#ff7f00","politico"="#a6cee3","profissao"="#984ea3","sem_nome"="#e78ac3" )bg_color <-"#F5F5F5"p1 <-ggplot() +geom_sf(data =filter(s1, !is.na(class)),aes(color = class),linewidth =0.8,key_glyph = draw_key_rect ) +geom_sf(data =filter(s2, !is.na(class)),aes(color = class),key_glyph = draw_key_rect,linewidth =0.35 ) +geom_sf(data =filter(s3, !is.na(class)),aes(color = class),key_glyph = draw_key_rect,linewidth =0.15 ) +coord_sf(ylim =c(-30.124, -29.9691),xlim =c(-51.265, -51.135) ) +scale_colour_manual(name ="", values =unname(cores)) +labs(title ="**Origem do Nome de Ruas em Porto Alegre**",caption ="Fonte: OSM. Cores: ColorBrewer. Autor: @viniciusoike" ) +theme_void() +theme(plot.background =element_rect(fill = bg_color, colour = bg_color),panel.background =element_rect(fill = bg_color, colour = bg_color),#> Plot Marginplot.margin =margin(t =1.5, r =0.5, l =0.5, b =1, unit ="cm"),#> Textual elementstext =element_text(family ="Gill Sans", size =8),plot.title =element_markdown(family ="Gill Sans",size =20,hjust =0.5 ),panel.border =element_rect(colour ="gray20", fill ="transparent"),#> Legend legend.position =c(0.16, 0.8),#legend.position = "right",legend.title =element_blank(),legend.background =element_rect(fill = bg_color, colour = bg_color),legend.box.background =element_rect(fill = bg_color, colour = bg_color),legend.text =element_text(size =8),legend.margin =margin(t =0.5, b =0.5, unit ="cm") )