Abreviações nos nomes de vias no OSM

Srs,

Mais um “projeto” em andamento, correndo em paralelo com o do Transporte Público daqui da RMR.

Há alguns dias, discutimos na lista sobre o conserto dos nomes das ruas de Recife.

Inicialmente minha reclamação era a falta das qualificadoras Rua, Avenida, etc, mas notei que também existe outro problema, que é o uso das abreviações, R., Av., Trav, etc.

Até para ganhar experiência com os padrões do OSM, resolvi tentar consertar isso.

Como o JOSM, ou o iD não permitem replace no texto do mapa, só search, me restava tentar fazer isso externamente, via um editor de textos, por exemplo.

Imaginei inicialmente o procedimento a seguir :

-baixar uma área do mapa no OSM pelo JOSM
-salvar como .OSM
-atualizar num editor externo
-reabrir o arquivo atualizado no JOSM
-fazer o upload

Os problemas encontrados neste procedimento incluem :

-O JOSM não permite baixar grandes pedaços do mapa, portanto teria que repetir à exaustão o processo, controlando o que já foi feito para evitar retrabalho.

  • Processo lento demais, e não passível de automatização ( para mim, pelo menos )
  • Ter que inserir action=“modify” em cada objeto atualizado, para permitir o upload.

Como dizem que a preguiça é a mãe da invenção, e eu sou muito preguiçoso, digo, inventivo, resolvi tentar automatizar o máximo possível este processo, daí consegui o seguinte :

Primeiro eu precisava obter o mapa de Pernambuco atualizado, pois aqui é que eu estou concentrando as ações ( lembro que todo o processo pode ser replicado para o resto do Brasil, com poucas alterações ), então fiz o seguinte :

  1. download do mapa Brasil, a partir do geofabrik ( pode ser feito de maneira gráfica, mas indico um comando para permitir criar um script )

    wget http://download.geofabrik.de/south-america/brazil-latest.osm.bz2 -O ./mapa_brasil/brazil-latest.osm.bz2

  2. extrair no mapa acima o mapa de onde pretendo trabalhar, para isso precisava dos boundaries dos estados, consegui aqui :

    http://goo.gl/V1t0BL

  3. o comando para gerar o arquivo pernambuco.osm :

    bzcat ./mapa_brasil/brazil-latest.osm.bz2 | ./osmconvert - -B=./boundaries/pernambuco.poly -o=./pernambuco/pernambuco.osm

Pronto, agora com o arquivo do que quero, preciso atualizá-lo, para isso fiz :

  1. atualizar o arquivo propriamente dito :

    ./osmupdate ./pernambuco/pernambuco.osm ./pernambuco/new_pe.osm --day -B=./boundaries/pernambuco.poly

  2. garantir que na pasta do mapa, sempre se possa rodar um script para atualizar o mapa a partir da última versão atualizada e não a partir do mapa extraído do brazil-latest.osm

    rm ./pernambuco/old_pernambuco.osm
    mv ./pernambuco/pernambuco.osm ./pernambuco/old_pernambuco.osm
    mv ./pernambuco/new_pe.osm ./pernambuco/pernambuco.osm

  3. Extrair do arquivo somente o que pretendo alterar, isso dimunui o tamanho do arquivo, facilitando o trabalho.

    osmosis
    –read-xml ./pernambuco/pernambuco.osm
    –tf accept-ways highway=*
    –tf accept-ways name=*
    –tf reject-relations
    –used-node idTrackerType=Dynamic
    –write-xml ./pernambuco/entrada.osm

  4. Agora comecemos o trabalho em si, como já sou velho para aprender novos truques, me virei com o sed mesmo. Aqui só me preocupei com as abreviações no início dos nomes das vias, a primeira linha é um LTRIM na tag name.

    sed -e ‘s:v=" +:v=":Ig’
    -e ‘s:"R. *|"R :"Rua :Ig’
    -e ‘s:"av. *|"av :"Avenida :Ig’
    -e ‘s:"Estdr. *|"Estdr :"Estrada :Ig’
    -e ‘s:"Estr. *|"Estr :"Estrada :Ig’
    -e ‘s:\btv. *|\btv :Travessa :Ig’
    -e ‘s:\btrav. *|\btrav\b:Travessa :Ig’ < ./pernambuco/entrada.osm > ./pernambuco/validado.osm

  5. Depois de gerar um arquivo atualizado, extrair dele só o que foi alterado, no formato já pronto para upload.

    osmosis
    –read-xml file=“./pernambuco/validado.osm”
    –read-xml file=“./pernambuco/entrada.osm”
    –derive-change
    –write-xml-change file=“./pernambuco/mudou.osc”

  6. Só falta fazer o upload, aqui eu prefiro abrir o arquivo no JOSM para rodar o validador e resolver possíveis conflitos, mas pode-se fazer o upload direto, só não pesquisei ainda o comando osmosis para isso.

Adianto que identifiquei outro padrão a se consertar mas não sei como, é o caso das Travessas numeradas, exemplos:

<tag k="name" v="2° Travessa Golfinho"/>
<tag k="name" v="2 Travessa Teófilo de Melo"/>
<tag k="name" v="3ª Rua do Colégio"/>
<tag k="name" v="3a Travessa Amador Meira"/>

Alguem me diz como fazer ?

É isso.

Só não fiz o upload do changeset ainda para que antes o processo seja analisado por todos.

Fiquem a vontade para indicar erros, possibilidades de melhoria, performance, etc, e acréscimo de qualificadoras, as que inclui foram as que vi no arquivo daqui de Pernambuco.

Att,

Marcelo Pereira

Belo tutorial :slight_smile:

Você já está incluindo o action=“modify” nesse procedimento, ou isso não é necessário?

Nunca vi nomes de ruas numeradas dessa forma, talvez valha a pena visitar alguma(s) para entender como está na placa.

[]s

Nighto,

O formato .OSC ( http://goo.gl/f8ojy8 ) já foi feito para identificar mudanças ao se comparar dois .OSM, como um diff.

Aqui muitas vezes é dificil até ver as placas com nomes de ruas, dirá as travessas, a não ser procurando pelo G Streets, só confiando na prefeitura mesmo, ou fazendo survey.

Mas de todo jeito, existe alguma “regra” sobre esses números ? Alguma padronização ? Veja que mostrei 4 casos diferentes, talvez adotar um só.

Estou há dias querendo te ajudar com essa questão. Lendo por altos, só queria informar uma coisa: nenhum sistema faz upload de arquivos .osc. Você teria que gerar um arquivo .osm com o atributo action=modify nos elementos a serem alterados. É justamente isso que impede você de usar uma ferramenta como sed (senão já teria te recomendado isso desde o começo). :-/

OSC = OSM Change File (serve apenas para baixar a descrição de um changeset, contém apenas os elementos alterados e não o conjunto todo)
OSM = OSM File (serve para guardar dados e marcar alterações nos dados)

Fernando,

Fui atrás de reler o que tinha pesquisado sobre o OSC, e realmente encontrei apenas referência ao que vc citou, para realizar uploads com esse arquivo encontrei informações nebulosas.

Mas de todo modo, e contrariando o senso comum, resolvi continuar nos testes, até para ver se conseguia indentificar uma maneira de salvar o trabalho que tinha feito até agora.

Pois bem, de posse do .OSC gerado pela diferença dos dois .OSMs, antes e depois da passagem pelo sed, abri o danado com o JOSM.

Primeiro como o arquivo não tem os nodes, somente os ways, nada é renderizado pelo JOSM, só aparece um retângulo gigantesco, como se tivéssemos aberto o planeta todo e mais alguma coisa, porém este retângulo está vazio.

Porém o JOSM identifica os elementos, os ways que sobraram, e pasme, vc consegue fazer o upload desse arquivo, o porquê realmente não sei.

Como prova de conceito, eu fiz o upload das modificações de apenas 2 ways, ruas que eu conheço e sei como estavam escritas com abreviações.

Funcionou.

O changeset é o http://www.openstreetmap.org/changeset/19908374 , caso estejam interessados em verificar.

Compartilhei o arquivo .osc pelo dropbox ( https://www.dropbox.com/s/wd10qeix3djxu2k/mudou.osc )

Gostaria que vcs analisassem o caso, e me dissessem se isso pode ser usado.

Até parece que descobri um bug no JOSM !

Att,

Marcelo Pereira

Diário de Bordo,

Mais um comportamento adverso do .OSC no JOSM, a validação não funciona. Até roda, mas não indica nada, deve ser por conta da falta de nodes.

Rodei o script no mapa de Pernambuco e encontrei 1.472 vias que satisfaziam às condições do sed.

Aproveitei e rodei um spell check para identificar os erros mais grosseiros, basicamente tipográficos.

E aí ? Faço o upload ou não ?

Att,

Marcelo Pereira

Bom,

pelo changeset de teste, me parece razoável.

Talvez você possa fazer um processo, digamos, semi-automático, gerando um .osc a cada 20 vias ou algo assim, subir um a um e verificar por erros a cada upload.

Quanto à numeração das travessas, realmente não sei dizer. Aqui no RJ nunca vi disso, é sempre “Travessa Fulano de Tal” ou “Travessa X”. Nunca vi o número antes, seja cardinal ou ordinal.

[]s

Nighto,

Quanto à questão de validar os dados, consegui outro workaround, foi só fazer o update do arquivo OSC pelo JOSM , e após isso foi possível rodar a validação.

Mas não mexi nisso, mesmo tendo recebido msgs de erro, pois não tinham a ver com o que eu tinha alterado, e sim erros dos ways originais. E além disso quis manter o universo do changeset o mais próximo possível da ideia original, que foi a de subsituir algumas abreviações.

Acabei de fazer o upload e foi gerado o changeset 19922341 ( com o usuário trevorinserts )

Só para constar, neste changeset eu substituí as abreviações de Rua, Avenida, Travessa e Estrada ( as que identifiquei ) pelas suas versões por extenso. ( foram 1472 ways alterados )

Além disso, eu rodei o spell check no arquivo OSC para corrigir alguns erros mais “salientes”.

A partir de agora , devo reutilizar o procedimento para fazer o mesmo com outras abreviações mais comuns.

Lembro que usei o boundary de Pernambuco, mas se ninguem se opor, posso rodá-lo nos outros estados.

Vou tentar manter aqui um histórico do que for sendo feito.

Att,

Marcelo Pereira

Excelente, Marcelo. Poderia rodar o mesmo aqui no Rio? Uma das coisas que eu sempre faço nos changesets que monitoro (RMRJ) é verificar a presença de nomes abreviados, mas é bastante possível (diria até provável) que eu tenha deixado algo passar. Além do que, é muito melhor fazer automaticamente que manualmente. :slight_smile:

[]s
Arlindo

Oi Arlindo,

Fiz algumas alterações no script ( principalmente adicionando regras de substituição ) e rodei no mapa do Rio.

Neste link ( https://www.dropbox.com/s/0zxudn4uimmumt9/riodejaneiro.zip ) vc encontra 2 arquivos, o .OSC e um .TXT que traz a saída de um diff, mostrando o que foi alterado.

Além das substituições, rodei um spell check no arquivo OSC, por isso ele pode estar ligeiramente diferente do que aponta o diff.

Segue código do script que rodei, atualizado :


#!/bin/bash

# extraindo do mapa brazil o estado 
echo extraindo RJ do mapa brazil

bzcat ./mapa_brasil/brazil-latest.osm.bz2 | ./osmconvert - -B=./boundaries/rio_de_janeiro.poly -o=./riodejaneiro/riodejaneiro.osm

echo atualizando o mapa
# 1 passo, atualizar o riodejaneiro.osm
./osmupdate ./riodejaneiro/riodejaneiro.osm ./riodejaneiro/new_pe.osm --day -B=./boundaries/rio_de_janeiro.poly

echo extraindo do mapa estadual somente os ways para processamento

# 2 extrair ways para alteração

osmosis --read-xml ./riodejaneiro/riodejaneiro.osm  --tf accept-ways highway=*  --tf accept-ways name=*  --tf reject-relations  --used-node idTrackerType=Dynamic  --write-xml ./riodejaneiro/entrada.osm 
	
echo Inicio processamento 

# 3 processar arquivo

sed -e '

# espaços no inicio e no fim das tags

	s/=" */="/Ig
	s/\(.\) *"/\1"/Ig

# espaços duplos, espaços triplos...

	 s/\(".*\)\s\{2,\}\(.*\)/\1 \2/Ig

# incluindo "-" nos nomes de estradas com espaço entre as letras e os números

	 s/\(\b[a-z]\{2\}\) \([0-9]\{3\}\)/\1-\2/Ig

# qualificadoras das vias
	
	 s/\bav\b[.,:]\? \?\|\bAvda\b[.,:]\? \?\|[^.]\bA\. \?V \?\. /Avenida /Ig
	 s/"al\b[.,:]\?[^-] \?\|"alam\b[.,:]\? \?/"Alameda /Ig
	 s/\bbc\b[.,:]\? \?/Beco /Ig
	 s/\bestr\b[.,:]\? \?\|\bEstdr\b[.,:]\? \?/Estrada /Ig
	 s/\bjd\b[.,:]\? \?/Jardim /Ig
	 s/\blad\b[.,:]\? \?\|\bld\b[.,:]\? /Ladeira /Ig
	 s/\bLrg\b[.,:]\? \?/Largo /Ig
	 s/\bLot\b[.,:]\?[^"] \?/Lotaemento /Ig
	 s/\bPte\b[.,:]\? \?/Ponte /Ig
	 s/\bp[cç][a]\?\b[.,:]\? \?/Praça /Ig
	 s/\bpq\b[.,:]\? \?/Parque /Ig
	 s/"r[ua]\?\b[.,:]\? \?/"Rua /Ig
	 s/\brod\b[.,:]\? \?/Rodovia /Ig
	 s/"tr[va]\?\b[.,:]\? \?\|"tv[a]\?\b[.,:]\? \?/"Travessa /Ig
	 s/"vd\b[.,:]\? \?\|"viad\b[.,:]\? \?/"Viaduto /Ig

# abreviações gerais

	 s/\bAgro\b[.,:]\? \?/Agrônomo /Ig
	 s/\bAlm\b[.,:]\? \?/Almirante /Ig
	 s/\bApst\b[.,:]\? \?/Apóstolo /Ig
	 s/\bBrg\b[.,:]\? \?\|\bBrig\b[.,:]\? \?/Brigadeiro /Ig
	 s/\bBr\.[^-] \?/Barão /Ig
	 s/\bCap\b[.,:]\?[^"] \?/Capitão /Ig
	 s/\bCb\b[.,:]\? \?/Cabo /Ig
	 s/\bComend\b[.,:]\? \?\|\bCdor\b[.,:]\? \?/Comendador /Ig
	 s/\bCel\b[.,:]\? \?/Coronel /Ig
	 s/\bCia\b[.,:]\? \?/Companhia /Ig
	 s/\bCient\b[.,:]\? \?/Cientista /Ig
	 s/\bCj\b[.,:]\? \?\|\bConj\b[.,:]\? \?/Conjunto /Ig
	 s/\bCmte\b[.,:]\? \?/Comandante /Ig
	 s/\bCons\b[.,:]\? \?\|\bCnso\b[.,:]\? \?/Conselheiro /Ig
	 s/\bDel\. \?/Delegado /Ig
	 s/\bDept\b[.,:]\? \?\|\bDep\b[.,:]\? \?/Deputado /Ig
	 s/\bDes\b[.,:]\? \?\|\bDesemb\b[.,:]\? \?/Desembargador /Ig
	 s/\bDa\. \?/Dona /Ig
	 s/\bDq\b[.,:]\? \?/Duque /Ig
	 s/\bDra\b[.,:]\?[^-] \?/Doutora /Ig
	 s/\bDr\b[.,:]\?[^-] \?/Doutor /Ig
	 s/\bEnfa\b[.,:]\? \?\|\bEnf\b[.,:]\? \?/Enfermeira /Ig
	 s/\bEnfo\b[.,:]\? \?/Enfermeiro /Ig
	 s/\bEng\b[.,:]\? \?/Engenheiro /Ig
	 s/\bEstud\b[.,:]\? \?/Estudante /Ig
	 s/\bExp\b[.,:]\? \?\|\bExped\b[.,:]\? \?/Expedicionário /Ig
	 s/\bFarm\b[.,:]\? \?/Farmacêutico /Ig
	 s/\bFaz\b[.,:]\? \?/Fazenda /Ig
	 s/\bFr\b[.,:] \?/Frei /Ig
	 s/\bGal\b[.,:]\? \?\|\bGen\b[.,:]\? \?/General /Ig
	 s/\([^.]\)\bGov\b[.,:]\? \?/\1Governador /Ig
	 s/\bIma\b[.,:]\? \?/Irmã /Ig
	 s/\bImo\b[.,:]\? \?/Irmão /Ig
	 s/\bInsp\b[.,:]\? \?/Inspetor /Ig
	 s/\bJorn\b[.,:]\? \?/Jornalista /Ig
	 s/\bJr\b[.,:]\? \?/Júnior /Ig
	 s/\bMte\b[.,:]\? \?/Monte /Ig
	 s/\bMto\b[.,:]\? \?/Maestro /Ig
	 s/\bMaj\b[.,:]\? \?\|\bMj\b[.,:]\?[^-"] \?/Major /Ig
	 s/\bMal\b[.,:]\? \?/Marechal /Ig
	 s/\bMin\b[.,:]\? \?/Ministro /Ig
	 s/\bMq\b[.,:]\? \?/Marquês /Ig
	 s/\bMqa\b[.,:]\? \?/Marquesa /Ig
	 s/\bMns\b[.,:]\? \?\|\bMons\b[.,:]\? \?/Monsenhor /Ig
	 s/\bMun\b[.,:]\? \?\|\bMunic\b[.,:]\? \?/Municipal /Ig
	 s/\bnsa\b[.,:]\? \?\|\bNssa\b[.,:]\? \?/Nossa /Ig
	 s/\bNs\b[.,:][^-"] \?\|\bN S\b[.,:]\? \?\|\bN Sra\b[.,:]\? \?/Nossa Senhora /Ig
	 s/\bPe\b[.,:]\?[^-"] \?/Padre /Ig
	 s/\bPion\b[.,:]\? \?/Pioneiro /Ig
	 s/\bPiona\b[.,:]\? \?/Pioneira /Ig
	 s/\bPnt\b[.,:]\? \?/Pintor /Ig
	 s/\bPoe\b[.,:]\? \?/Poeta /Ig
	 s/\bPref\b[.,:]\? \?/Prefeito /Ig
	 s/\bPcza\b[.,:]\? \?/Princesa /Ig
	 s/\bPresb\b[.,:]\? \?/Presbítero /Ig
	 s/\bPres\b[.,:]\? \?\|\bPresid\b[.,:]\? \?/Presidente /Ig
	 s/\bProfa\b[.,:]\? \?\|\bProfª\b[.,:]\? \?\|\bPrfa\b[.,:]\? \?/Professora /Ig
	 s/\bProf\b[.,:]\? \?\|\bPrf\b[.,:]\? \?/Professor /Ig
	 s/\bProm\b[.,:]\? \?/Promotor /Ig
	 s/\bPr\b[.,:]\?[^-"] \?\|\bPst\b[.,:]\? \?/Pastor /Ig
	 s/\bQuim\b[.,:]\? \?/Químico /Ig
	 s/\bRad\b[.,:]\? \?/Radialista /Ig
	 s/\bReg\b[.,:]\? \?/Regente /Ig
	 s/\bRep\b[.,:]\? \?/República /Ig
	 s/\bRev\b[.,:]\? \?/Reverendo /Ig
	 s/\bSen\b[.,:]\?[^-"] \?/Senador /Ig
	 s/\bSold\b[.,:]\? \?\|\bSd\b[.,:] \?/Soldado /Ig
	 s/\bSgto\b[.,:]\? \?\|\bSrg\b[.,:]\? \?/Sargento /Ig
	 s/\bSra\b[.,:]\? \?/Senhora /Ig
	 s/\bSr\b[.,:]\?[^-"] \?/Senhor /Ig
	 s/\bSta\b[.,:]\? \?/Santa /Ig
	 s/\bSto\b[.,:]\? \?/Santo /Ig
	 s/\bStos\b[.,:]\? \?/Santos /Ig
	 s/\bTen\b[.,:]\? \?\|\bTte\b[.,:]\? \?/Tenente /Ig
	 s/\bVer\b[.,:]\? \?/Vereador /Ig
	 s/\bVisc\b[.,:]\? \?/Visconde /Ig

	'  < ./riodejaneiro/entrada.osm > ./riodejaneiro/validado.osm

echo Passo criando o OSC 

# 4 criar um changeset com o que foi alterado para upload

osmosis  --read-xml file="./riodejaneiro/validado.osm"  --read-xml file="./riodejaneiro/entrada.osm"  --derive-change  --write-xml-change file="./riodejaneiro/mudou.osc"

diff -y --suppress-common-lines ./riodejaneiro/entrada.osm ./riodejaneiro/validado.osm > ./riodejaneiro/mudou.txt
	


Att Marcelo

Valeu Marcelo.

Não rodei o código ainda, nem analisei o arquivo que vc forneceu, mas batendo o olho no código vi que tem um typo aqui:

s/\bLot\b[.,:]\?[^"] \?/Lotaemento /Ig

Outra coisa, essa regra está procurando pela string “da” no meio da string ou só no começo? (Imagino que seja no meio, do contrário ele não acharia “Rua Da. Fulana” por exemplo). Mas do jeito que está, se eu entendi direito (meu regex está bem enferrujado!) ele pode gerar muitos falsos positivos, tipo (nome fictício, não consegui pensar em nenhum exemplo) “rua da alegria” virando “rua dona alegria”…

s/\bDa\. \?/Dona /Ig

O restante do script me parece correto. Vou analisar com calma os arquivos e respondo depois. Valeu!! :slight_smile:

[]s

Arlindo,

Realmente tinha um erro no Lotaemento. consertei aqui no meu script atualizado. Obrigado.

Como sempre rodo o spell check no texto final antes de fazer upload, eu acabo corrigindo esse erro em tempo.

Quanto ao

o backslash seguido do ponto “.” faz com que ele só pegue o “Da” seguido de ponto, assim ele não gera o falso positivo indicado, a não ser que estivesse escrito “Rua Da. Fulana”, ao invés de “Rua Da Fulana”.

E o “\b” é para indicar word boundaries, ou seja em qq lugar do texto.

Tenho rodado o script em outros estados e em todos eles acaba aparecendo um outro falso positivo, que redunda em aperfeiçoamento do script.

Abaixo segue versão mais atual que estou usando, neste acrescentei parametros , para não ter que reescrever sempre que mudar o nome do estado.


#!/bin/bash

# recebe 2 parametros

# 1 - nome do estado
# 2 - flag indicando se precisa extrair o mapa do brazil-latest e atualizar (1) ou só rodar o sed (2)

if [ ! -d "$1" ]; then
mkdir $1
fi

if  [ $2 -eq 1 ] ; then 

# extraindo do mapa brazil o estado 
echo extraindo $1 do mapa brazil

 bzcat ./mapa_brasil/brazil-latest.osm.bz2 | ./osmconvert - -B=./boundaries/$1.poly -o=./$1/$1.osm

echo atualizando o mapa de $1
# 1 passo, atualizar o paraiba.osm
 ./osmupdate ./$1/$1.osm ./$1/new_$1.osm --day -B=./boundaries/$1.poly

 rm ./$1/old_$1.osm
 mv ./$1/$1.osm ./$1/old_$1.osm
 mv ./$1/new_$1.osm ./$1/$1.osm

echo extraindo do mapa estadual somente os ways para processamento

# 2 extrair ways para alteração

 osmosis --read-xml ./$1/$1.osm  --tf accept-ways highway=*  --tf accept-ways name=*  --tf reject-relations  --used-node idTrackerType=Dynamic  --write-xml ./$1/entrada.osm 

fi
	
echo Inicio processamento 

# 3 processar arquivo

 sed -e '


# incluindo "-" nos nomes de estradas com espaço entre as letras e os números

	 s/\(\b[a-z]\{2\}\) \([0-9]\{3\}\)/\1-\2/Ig

# qualificadoras das vias
	
	 s/\bav\b[.,:]\? \?\|\bAvda\b[.,:]\? \?\|[^.]\bA\. \?V \?\. /Avenida /Ig
	 s/"al\b[.,:]\?[^-] \?\|"alam\b[.,:]\? \?/"Alameda /Ig
	 s/\bbc\b[.,:]\?[^"] \?/Beco /Ig
	 s/\bestr\b[.,:]\? \?\|\bEstdr\b[.,:]\? \?/Estrada /Ig
	 s/\bjd\b[.,:]\? \?/Jardim /Ig
	 s/\blad\b[.,:]\? \?\|\bld\b[.,:]\? /Ladeira /Ig
	 s/\bLrg\b[.,:]\? \?/Largo /Ig
	 s/\bLot\b[.,:]\?[^"] \?/Loteamento /Ig
	 s/\bPte\b[.,:]\? \?/Ponte /Ig
	 s/\bp[cç][a]\?\b[.,:]\? \?/Praça /Ig
	 s/\bpq\b[.,:]\? \?/Parque /Ig
	 s/"r[ua]\?\b[.,:]\? \?/"Rua /Ig
	 s/\brod\b[.,:]\? \?/Rodovia /Ig
	 s/"tr[va]\?\b[.,:]\? \?\|"tv[a]\?\b[.,:]\? \?/"Travessa /Ig
	 s/"vd\b[.,:]\? \?\|"viad\b[.,:]\? \?/"Viaduto /Ig

# abreviações gerais

	 s/\bAgro\b[.,:]\? \?/Agrônomo /Ig
	 s/\bAlm\b[.,:]\? \?/Almirante /Ig
	 s/\bApst\b[.,:]\? \?/Apóstolo /Ig
	 s/\bBrg\b[.,:]\? \?\|\bBrig\b[.,:]\? \?/Brigadeiro /Ig
	 s/\bBr\.[^-] \?/Barão /Ig
	 s/\bCap\b[.,:]\?[^"] \?/Capitão /Ig
	 s/\bCb\b[.,:]\? \?/Cabo /Ig
	 s/\bComend\b[.,:]\? \?\|\bCdor\b[.,:]\? \?/Comendador /Ig
	 s/\bCel\b[.,:]\? \?/Coronel /Ig
	 s/\bCia\b[.,:]\? \?/Companhia /Ig
	 s/\bCient\b[.,:]\? \?/Cientista /Ig
	 s/\bCj\b[.,:]\? \?\|\bConj\b[.,:]\? \?/Conjunto /Ig
	 s/\bCmte\b[.,:]\? \?/Comandante /Ig
	 s/\bCons\b[.,:]\? \?\|\bCnso\b[.,:]\? \?/Conselheiro /Ig
	 s/\bDel\. \?/Delegado /Ig
	 s/\bDept\b[.,:]\? \?\|\bDep\b[.,:]\? \?/Deputado /Ig
	 s/\bDes\b[.,:]\? \?\|\bDesemb\b[.,:]\? \?/Desembargador /Ig
	 s/\bDa\. \?/Dona /Ig
	 s/\bDq\b[.,:]\? \?/Duque /Ig
	 s/\bDra\b[.,:]\?[^-] \?/Doutora /Ig
	 s/\bDr\b[.,:]\?[^-] \?/Doutor /Ig
	 s/\bEnfa\b[.,:]\? \?\|\bEnf\b[.,:]\? \?/Enfermeira /Ig
	 s/\bEnfo\b[.,:]\? \?/Enfermeiro /Ig
	 s/\bEng\b[.,:]\? \?/Engenheiro /Ig
	 s/\bEstud\b[.,:]\? \?/Estudante /Ig
	 s/\bExp\b[.,:]\? \?\|\bExped\b[.,:]\? \?/Expedicionário /Ig
	 s/\bFarm\b[.,:]\? \?/Farmacêutico /Ig
	 s/\bFaz\b[.,:]\? \?/Fazenda /Ig
	 s/\bFr\b[.,:] \?/Frei /Ig
	 s/\bGal\b[.,:]\? \?\|\bGen\b[.,:]\? \?/General /Ig
	 s/\([^.]\)\bGov\b[.,:]\? \?/\1Governador /Ig
	 s/\bIma\b[.,:]\? \?/Irmã /Ig
	 s/\bImo\b[.,:]\? \?/Irmão /Ig
	 s/\bInsp\b[.,:]\? \?/Inspetor /Ig
	 s/\bJorn\b[.,:]\? \?/Jornalista /Ig
	 s/\bJr\b[.,:]\? \?/Júnior /Ig
	 s/\bMte\b[.,:]\? \?/Monte /Ig
	 s/\bMª\b[.,:]\? \?/Maria /Ig
	 s/\bMto\b[.,:]\? \?/Maestro /Ig
	 s/\bMaj\b[.,:]\? \?\|\bMj\b[.,:]\?[^-"] \?/Major /Ig
	 s/\bMal\b[.,:]\? \?/Marechal /Ig
	 s/\bMin\b[.,:]\? \?/Ministro /Ig
	 s/\bMq\b[.,:]\? \?/Marquês /Ig
	 s/\bMqa\b[.,:]\? \?/Marquesa /Ig
	 s/\bMns\b[.,:]\? \?\|\bMons\b[.,:]\? \?/Monsenhor /Ig
	 s/\bMun\b[.,:]\? \?\|\bMunic\b[.,:]\? \?/Municipal /Ig
	 s/\bnsa\b[.,:]\? \?\|\bNssa\b[.,:]\? \?/Nossa /Ig
	 s/\bNs\b[.,:][^-"] \?\|\bN S\b[.,:]\? \?\|\bN Sra\b[.,:]\? \?/Nossa Senhora /Ig
	 s/\bPe\b[.,:]\? \?/Padre /Ig
	 s/\bPion\b[.,:]\? \?/Pioneiro /Ig
	 s/\bPiona\b[.,:]\? \?/Pioneira /Ig
	 s/\bPnt\b[.,:]\? \?/Pintor /Ig
	 s/\bPoe\b[.,:]\? \?/Poeta /Ig
	 s/\bPref\b[.,:]\? \?/Prefeito /Ig
	 s/\bPcza\b[.,:]\? \?/Princesa /Ig
	 s/\bPresb\b[.,:]\? \?/Presbítero /Ig
	 s/\bPres\b[.,:]\? \?\|\bPresid\b[.,:]\? \?/Presidente /Ig
	 s/\bProfa\b[.,:]\? \?\|\bProfª\b[.,:]\? \?\|\bPrfa\b[.,:]\? \?/Professora /Ig
	 s/\bProf\b[.,:]\? \?\|\bPrf\b[.,:]\? \?/Professor /Ig
	 s/\bProm\b[.,:]\? \?/Promotor /Ig
	 s/\bPr\b[.,:]\?[^-"] \?\|\bPst\b[.,:]\? \?/Pastor /Ig
	 s/\bQuim\b[.,:]\? \?/Químico /Ig
	 s/\bRad\b[.,:]\? \?/Radialista /Ig
	 s/\bReg\b[.,:]\? \?/Regente /Ig
	 s/\bRep\b[.,:]\? \?/República /Ig
	 s/\bRev\b[.,:]\? \?/Reverendo /Ig
	 s/\bSen\b[.,:]\?[^-"] \?/Senador /Ig
	 s/\bSold\b[.,:]\? \?\|\bSd\b[.,:] \?/Soldado /Ig
	 s/\bSgto\b[.,:]\? \?\|\bSrg\b[.,:]\? \?/Sargento /Ig
	 s/\bSra\b[.,:]\? \?/Senhora /Ig
	 s/\bSr\b[.,:]\?[^-"] \?/Senhor /Ig
	 s/\bSta\b[.,:]\? \?/Santa /Ig
	 s/\bSto\b[.,:]\? \?/Santo /Ig
	 s/\bStos\b[.,:]\? \?/Santos /Ig
	 s/\bTen\b[.,:]\? \?\|\bTte\b[.,:]\? \?/Tenente /Ig
	 s/\bVer\b[.,:]\? \?/Vereador /Ig
	 s/\bVisc\b[.,:]\? \?/Visconde /Ig

# espaços no inicio e no fim das tags

	s/=" */="/Ig
	s/\(.\) *"/\1"/Ig

# espaços duplos, espaços triplos...

	 s/\b \+\b/ /g

	'  < ./$1/entrada.osm > ./$1/validado.osm

echo Passo criando o OSC 

# 4 criar um changeset com o que foi alterado para upload

 osmosis  --read-xml file="./$1/validado.osm"  --read-xml file="./$1/entrada.osm"  --derive-change  --write-xml-change file="./$1/mudou.osc"

 diff -y --suppress-common-lines ./$1/entrada.osm ./$1/validado.osm > ./$1/mudou.txt
	

Atualizando,

Além do mapa do RJ que foi enviado para o Nighto analizar, já fiz upload dos seguintes estados :

  • Amapá
  • Acre
  • Sergipe
  • Rondonia
  • Piaui
  • Roraima
  • tocantins
  • Alagoas
  • Maranhão
  • Rio Grande do Norte
  • Paraiba
  • Ceará
  • Amazonas
  • Bahia
  • Pará
    E é claro, Pernambuco

Vou dar continuidade com os outros.

Se alguem quiser que eu envie para análise antes, é só me avisar.

Depois posto os números dos changesets de cada upload feito.

Att

Marcelo Pereira

Marcelo,

dei uma lida rápida no arquivo .txt com as mudanças, parece que apenas dois casos não foram corrigidos pelo script:

    <tag k="name" v="R. Capto. Benedito Lacerda"/>	      |	    <tag k="name" v="Rua Capto. Benedito Lacerda"/>
    <tag k="name" v="R Ns Senhora de Lourdes"/>		      |	    <tag k="name" v="Rua Ns Senhora de Lourdes"/>
    <tag k="name" v="R. D. Pedro I"/>			      |	    <tag k="name" v="Rua D. Pedro I"/>

Esse caso aqui deu problema:

    <tag k="name" v="Rua Ten-Cel Amado"/>		      |	    <tag k="name" v="Rua Tenente -Coronel Amado"/>

Este é um caso de falso positivo:

    <tag k="name" v="Ferrovia Cia. Est. de Eng. de Transp. Lo |	    <tag k="name" v="Ferrovia Companhia Est. de Engenheiro de
    <tag k="name" v="Ferrovia Cia. Est. de Eng. de Transp. Lo |	    <tag k="name" v="Ferrovia Companhia Est. de Engenheiro de

E estas tem de ser corrigidas manualmente:

    <tag k="name" v="Acesso  Reserva Biológica  (ENTRADA PROI |	    <tag k="name" v="Acesso  Reserva Biológica (ENTRADA PROIB
    <tag k="name" v="R. VIsconde de Araxá"/>		      |	    <tag k="name" v="Rua VIsconde de Araxá"/>
    <tag k="name" v="R. NATANAEL RIBEIRO DE ALMEIDA"/>	      |	    <tag k="name" v="Rua NATANAEL RIBEIRO DE ALMEIDA"/>
    <tag k="name" v="AV. DO CONTORNO"/>			      |	    <tag k="name" v="Avenida DO CONTORNO"/>
    <tag k="name" v="Rua Ld. do Castro"/>		      |	    <tag k="name" v="Rua Ladeira do Castro"/>
    <tag k="ref" v="BR 116;BR-116"/>			      |	    <tag k="ref" v="BR-116;BR-116"/>
    <tag k="ref" v="BR 116;BR-116"/>			      |	    <tag k="ref" v="BR-116;BR-116"/>
    <tag k="ref" v="BR 116;BR-116"/>			      |	    <tag k="ref" v="BR-116;BR-116"/>
    <tag k="ref" v="BR 116;BR-116"/>			      |	    <tag k="ref" v="BR-116;BR-116"/>
    <tag k="ref" v="BR 116;BR-116"/>			      |	    <tag k="ref" v="BR-116;BR-116"/>
    <tag k="name" v="Rua dos Ac. R. Ns. Aparecida"/>	      |	    <tag k="name" v="Rua dos Ac. R. Nossa Senhora Aparecida"/

[]s

Quer que eu olhe os .txt dos outros estados também? Outro par de olhos pode ajudar a localizar problemas.

[]s
Arlindo

Oi Arlindo,

Obrigado pela minuciosa revisão.

A cada vez que rodo o script, sempre altero algum detalhe, e isso explica parte dos erros que vc encontrou. E sempre revejo manualmente o resultado, por isso, mesmo que apareca “Ferrovia Companhia Est. de Engenheiro de…” no arquivo .txt, no .osc eu, ou apaguei a linha, ou consertei o nome.

Além disso, quando eu identificava falsos positivos, eu, ou consertava o script, ou mesmo tirava a linha, se via que geraria mais trabalho manual do que automático, a exemplo do “cia”, que tirei do script.

Um exemplo é o “R.” para rua, só identifico no início do texto, pois existem inúmeras vias redigidas com abreviações de nomes próprios e sempre vai aparecer um erro do tipo “Rua Benedito Rua Barbosa”, no lugar de “Rua Benedito R. Barbosa”, é por isso que não trato o “D.” de D. Pedro I .

Além disso existem abreviações que não consigo identificar, como a que vc mostrou “capto”, que eu imagino ser Capitão, mas não tenho certeza. Um exemplo pior é o caso de “pass.”, significa o que ? Passagem, Passeio, Passarela ?

Uma coisa que aprendi usando o script é que existem casos de falsos positivos causados não pelo script e sim por uma erro de digitação de quem nomeou a via, ou uma coincidêcia, como o caso de “TV Asa Branca”, mudei para “Travessa Asa Branca”, mas parece que era a Transmissora de TV mesmo, e aí não tem o que fazer sem conhecer localmente o mapa, para sanar os problemas.

Vale lembrar que não me propus a corrigir TODAS as abreviações, acho que isso nem é possível, mas a lista pode e deve aumentar, só é preciso que eu saiba qual é a abreviação e o que ela significa.

Se vc tiver outros exemplos, por favor me avise, assim posso incluir no script e testar.

Existem outros padrões que podem ser revistos nos nomes das vias, como mudar de maiúsculas ou minúsculas para capitalizado, mas isso eu não domino, e é sujeito a muito falso positivo, por conta das abreviações tipo RFFSA, ou como tenho exemplo aqui em recife, IPSEP, que é um nome de bairro e tb de um hospital do estado.

Vou publicar no próximo post uma lista dos changesets e dos arquivos .osc e .txt gerados pelo script, assim como a versão mais atual dele, assim quem quiser pode adicioinar outras características.

Agradeço mais uma vez a análise.

Att,

Marcelo Pereira

Seguem os changesets do estados que já fiz upload

http://www.openstreetmap.org/changeset/19961996 - Pernambuco
http://www.openstreetmap.org/changeset/19999989 - Paraíba
http://www.openstreetmap.org/changeset/20002820 - Amazonas
http://www.openstreetmap.org/changeset/20003697 - Amapa
http://www.openstreetmap.org/changeset/20004056 - Roraima
http://www.openstreetmap.org/changeset/20019554 - Acre
http://www.openstreetmap.org/changeset/20021664 - Para
http://www.openstreetmap.org/changeset/20024890 - Rondonia
http://www.openstreetmap.org/changeset/20025031 - Maranhao
http://www.openstreetmap.org/changeset/20025168 - Piaui
http://www.openstreetmap.org/changeset/20025280 - Tocantins
http://www.openstreetmap.org/changeset/20025615 - Ceara
http://www.openstreetmap.org/changeset/20040170 - Rio Grande do Norte
http://www.openstreetmap.org/changeset/20040729 - Alagoas
http://www.openstreetmap.org/changeset/20040970 - Sergipe
http://www.openstreetmap.org/changeset/20043102 - Bahia
http://www.openstreetmap.org/changeset/20043402 - Pernambuco
http://www.openstreetmap.org/changeset/20057937 - Mato Grosso

Segue link com os arquivos .txt e .osc de cada estado enviado para o OSM:

https://www.dropbox.com/s/0ewzpqt2truqq8b/txts%20e%20osc%20dos%20estados.zip

Abaixo transcrevo o código mais atual do script, só o conteúdo do sed, que é o que importa


 sed -e '


# incluindo "-" nos nomes de estradas com espaço entre as letras e os números

	 s:\(\b[a-z]\{2\}\) \([0-9]\{3\}\)\b[^"/]:\1-\2:Ig

# qualificadoras das vias
	
	 s/\bav\b[.,:]\?[^"-] \?\|\bAvda\b[.,:]\? \?\|[^.]\bA\. \?V \?\. /Avenida /Ig
	 s/"al\b[.,:]\?[^"-] \?\|"alam\b[.,:]\? \?/"Alameda /Ig
	 s/\bbc\b[.,:]\?[^"] \?/Beco /Ig
	 s/\bestr\b[.,:]\? \?\|\bEstdr\b[.,:]\? \?/Estrada /Ig
	 s/\bjd\b[.,:]\? \?/Jardim /Ig
	 s/\blad\b[.,:]\? \?\|\bld\b[.,:]\? /Ladeira /Ig
	 s/\bLrg\b[.,:]\? \?/Largo /Ig
	 s/\bLot\b[.,:]\?[^"] \?/Loteamento /Ig
	 s/\bPte\b[.,:]\? \?/Ponte /Ig
	 s/\bp[cç][a]\?\b[.,:]\? \?/Praça /Ig
	 s/\bpq\b[.,:]\? \?/Parque /Ig
	 s/"r[ua]\?\b[.,:]\? \?/"Rua /Ig
	 s/\brod\b[.,:]\? \?/Rodovia /Ig
	 s/"tr[va]\?\b[.,:]\? \?\|"tv[a]\?\b[.,:]\? \?\|"trav[v]\?\b[.,:]\? \?/"Travessa /Ig
	 s/"vd\b[.,:]\? \?\|"viad\b[.,:]\? \?/"Viaduto /Ig

# abreviações gerais

	 s/\bAgro\b[.,:]\? \?/Agrônomo /Ig
	 s/\bAlm\b[.,:]\? \?/Almirante /Ig
	 s/\bApst\b[.,:]\? \?/Apóstolo /Ig
	 s/\bBrg\b[.,:]\? \?\|\bBrig\b[.,:]\? \?/Brigadeiro /Ig
	 s/\bBr\.[^-] \?/Barão /Ig
	 s/\bCap\b[.,:]\?[^"] \?/Capitão /Ig
	 s/\bCb\b[.,:]\? \?/Cabo /Ig
	 s/\bCon\b[.,:]\? \?/Cônego /Ig
	 s/\bComend\b[.,:]\? \?\|\bCdor\b[.,:]\? \?/Comendador /Ig
	 s/\bCel\b[.,:]\? \?/Coronel /Ig
	 s/\bCia\b[.,:]\? \?/Companhia /Ig
	 s/\bCient\b[.,:]\? \?/Cientista /Ig
	 s/\bCj\b[.,:]\? \?\|\bConj\b[.,:]\? \?/Conjunto /Ig
	 s/\bCmte\b[.,:]\? \?/Comandante /Ig
	 s/\bCons\b[.,:]\? \?\|\bCnso\b[.,:]\? \?/Conselheiro /Ig
	 s/\bDel\. \?/Delegado /Ig
	 s/\bDept\b[.,:]\? \?\|\bDep\b[.,:]\? \?/Deputado /Ig
	 s/\bDes\.[d]\?or\b[.,:]\? \?\|\bDes\b[.,:]\? \?\|\bDesemb\b[.,:]\? \?/Desembargador /Ig
	 s/\bDa[.ª] \?/Dona /Ig
	 s/\bDq\b[.,:]\? \?/Duque /Ig
	 s/\bDra\b[.,:]\?[^-] \?/Doutora /Ig
	 s/\bDr\b[.,:]\?[^-] \?/Doutor /Ig
	 s/\bEnfa\b[.,:]\? \?\|\bEnf\b[.,:]\? \?/Enfermeira /Ig
	 s/\bEnfo\b[.,:]\? \?/Enfermeiro /Ig
	 s/\bEng\b[.,:]\? \?/Engenheiro /Ig
	 s/\bEstud\b[.,:]\? \?/Estudante /Ig
	 s/\bExp\b[.,:]\? \?\|\bExped\b[.,:]\? \?/Expedicionário /Ig
	 s/\bFarm\b[.,:]\? \?/Farmacêutico /Ig
	 s/\bFaz\b[.,:]\? \?/Fazenda /Ig
 	 s/\bFco\b[.,:]\? \?/Francisco /Ig
	 s/\bFr\b[.,:] \?/Frei /Ig
	 s/\bGal\b[.,:]\? \?\|\bGen\b[.,:]\? \?/General /Ig
	 s/\([^.]\)\bGov\b[.,:]\? \?/\1Governador /Ig
	 s/\bIma\b[.,:]\? \?/Irmã /Ig
	 s/\bImo\b[.,:]\? \?/Irmão /Ig
	 s/\bInsp\b[.,:]\? \?/Inspetor /Ig
	 s/\bJorn\b[.,:]\? \?/Jornalista /Ig
	 /user=/! s/\bJr\b[.,:]\? \?/Júnior /Ig
	 s/\bMte\b[.,:]\? \?/Monte /Ig
	 s/\bMª\b[.,:]\? \?/Maria /Ig
	 s/\bMto\b[.,:]\? \?/Maestro /Ig
	 s/\bMaj\b[.,:]\? \?\|\bMj\b[.,:]\?[^-"] \?/Major /Ig
	 s/\bMal\b[.,:]\?[^-] \?/Marechal /Ig
	 s/\bMin\b[.,:]\? \?/Ministro /Ig
	 s/\bMq\b[.,:]\? \?/Marquês /Ig
	 s/\bMqa\b[.,:]\? \?/Marquesa /Ig
	 s/\bMns\b[.,:]\? \?\|\bMons\b[.,:]\? \?/Monsenhor /Ig
	 s/\bMun\b[.,:]\? \?\|\bMunic\b[.,:]\? \?/Municipal /Ig
	 s/\bnsa\b[.,:]\? \?\|\bNssa\b[.,:]\? \?/Nossa /Ig
	 s/\bNs\b[.,:][^-"] \?\|\bN S\b[.,:]\? \?\|\bN Sra\b[.,:]\? \?/Nossa Senhora /Ig
	 s/\bPe\b[.,:]\?[^"-] \?/Padre /Ig
	 s/\bPion\b[.,:]\? \?/Pioneiro /Ig
	 s/\bPiona\b[.,:]\? \?/Pioneira /Ig
	 s/\bPnt\b[.,:]\? \?/Pintor /Ig
	 s/\bPoe\b[.,:]\? \?/Poeta /Ig
	 s/\bPref\b[.,:]\? \?/Prefeito /Ig
	 s/\bPcza\b[.,:]\? \?/Princesa /Ig
	 s/\bPresb\b[.,:]\? \?/Presbítero /Ig
	 s/\bPres\b[.,:]\? \?\|\bPresid\b[.,:]\? \?/Presidente /Ig
	 s/\bProfa\b[.,:]\? \?\|\bProfª\b[.,:]\? \?\|\bPrfa\b[.,:]\? \?/Professora /Ig
	 s/\bProf\b[.,:º]\? \?\|\bPrf\b[.,:]\? \?/Professor /Ig
	 s/\bProm\b[.,:]\? \?/Promotor /Ig
	 s/\bPr\b[.,:]\?[^-"] \?\|\bPst\b[.,:]\? \?/Pastor /Ig
	 s/\bQuim\b[.,:]\? \?/Químico /Ig
	 s/\bRad\b[.,:]\? \?/Radialista /Ig
	 s/\bReg\b[.,:]\? \?/Regente /Ig
	 s/\bRep\b[.,:]\? \?/República /Ig
	 s/\bRev\b[.,:]\? \?/Reverendo /Ig
	 s/\bSen\b[.,:]\?[^-"] \?/Senador /Ig
	 s/\bSold\b[.,:]\? \?\|\bSd\b[.,:] \?/Soldado /Ig
	 s/\bSgto\b[.,:]\? \?\|\bSrg\b[.,:]\? \?/Sargento /Ig
	 s/\bSra\b[.,:]\? \?/Senhora /Ig
	 s/\bSr\b[.,:]\?[^-"] \?/Senhor /Ig
	 s/\bSta\b[.,:]\? \?/Santa /Ig
	 s/\bSto\b[.,:]\? \?/Santo /Ig
	 s/\bStos\b[.,:]\? \?/Santos /Ig
	 s/\bTen\b[.,:]\? \?\|\bTte\b[.,:]\? \?/Tenente /Ig
	 s/\bVer\b[.,:]\? \?/Vereador /Ig
	 s/\bVisc\b[.,:]\? \?/Visconde /Ig

# espaços no inicio e no fim das tags

	s/=" */="/Ig
	s/\(.\) *"/\1"/Ig

# espaços duplos, espaços triplos...

	 s/\b \+\b/ /g

	' 

Segue link com os arquivos .txt e .osc de cada estado enviado para o OSM:

https://www.dropbox.com/s/0ewzpqt2truqq8b/txts%20e%20osc%20dos%20estados.zip

Abaixo transcrevo o código mais atual do script, só o conteúdo do sed, que é o que importa


 sed -e '


# incluindo "-" nos nomes de estradas com espaço entre as letras e os números

	 s:\(\b[a-z]\{2\}\) \([0-9]\{3\}\)\b[^"/]:\1-\2:Ig

# qualificadoras das vias
	
	 s/\bav\b[.,:]\?[^"-] \?\|\bAvda\b[.,:]\? \?\|[^.]\bA\. \?V \?\. /Avenida /Ig
	 s/"al\b[.,:]\?[^"-] \?\|"alam\b[.,:]\? \?/"Alameda /Ig
	 s/\bbc\b[.,:]\?[^"] \?/Beco /Ig
	 s/\bestr\b[.,:]\? \?\|\bEstdr\b[.,:]\? \?/Estrada /Ig
	 s/\bjd\b[.,:]\? \?/Jardim /Ig
	 s/\blad\b[.,:]\? \?\|\bld\b[.,:]\? /Ladeira /Ig
	 s/\bLrg\b[.,:]\? \?/Largo /Ig
	 s/\bLot\b[.,:]\?[^"] \?/Loteamento /Ig
	 s/\bPte\b[.,:]\? \?/Ponte /Ig
	 s/\bp[cç][a]\?\b[.,:]\? \?/Praça /Ig
	 s/\bpq\b[.,:]\? \?/Parque /Ig
	 s/"r[ua]\?\b[.,:]\? \?/"Rua /Ig
	 s/\brod\b[.,:]\? \?/Rodovia /Ig
	 s/"tr[va]\?\b[.,:]\? \?\|"tv[a]\?\b[.,:]\? \?\|"trav[v]\?\b[.,:]\? \?/"Travessa /Ig
	 s/"vd\b[.,:]\? \?\|"viad\b[.,:]\? \?/"Viaduto /Ig

# abreviações gerais

	 s/\bAgro\b[.,:]\? \?/Agrônomo /Ig
	 s/\bAlm\b[.,:]\? \?/Almirante /Ig
	 s/\bApst\b[.,:]\? \?/Apóstolo /Ig
	 s/\bBrg\b[.,:]\? \?\|\bBrig\b[.,:]\? \?/Brigadeiro /Ig
	 s/\bBr\.[^-] \?/Barão /Ig
	 s/\bCap\b[.,:]\?[^"] \?/Capitão /Ig
	 s/\bCb\b[.,:]\? \?/Cabo /Ig
	 s/\bCon\b[.,:]\? \?/Cônego /Ig
	 s/\bComend\b[.,:]\? \?\|\bCdor\b[.,:]\? \?/Comendador /Ig
	 s/\bCel\b[.,:]\? \?/Coronel /Ig
	 s/\bCia\b[.,:]\? \?/Companhia /Ig
	 s/\bCient\b[.,:]\? \?/Cientista /Ig
	 s/\bCj\b[.,:]\? \?\|\bConj\b[.,:]\? \?/Conjunto /Ig
	 s/\bCmte\b[.,:]\? \?/Comandante /Ig
	 s/\bCons\b[.,:]\? \?\|\bCnso\b[.,:]\? \?/Conselheiro /Ig
	 s/\bDel\. \?/Delegado /Ig
	 s/\bDept\b[.,:]\? \?\|\bDep\b[.,:]\? \?/Deputado /Ig
	 s/\bDes\.[d]\?or\b[.,:]\? \?\|\bDes\b[.,:]\? \?\|\bDesemb\b[.,:]\? \?/Desembargador /Ig
	 s/\bDa[.ª] \?/Dona /Ig
	 s/\bDq\b[.,:]\? \?/Duque /Ig
	 s/\bDra\b[.,:]\?[^-] \?/Doutora /Ig
	 s/\bDr\b[.,:]\?[^-] \?/Doutor /Ig
	 s/\bEnfa\b[.,:]\? \?\|\bEnf\b[.,:]\? \?/Enfermeira /Ig
	 s/\bEnfo\b[.,:]\? \?/Enfermeiro /Ig
	 s/\bEng\b[.,:]\? \?/Engenheiro /Ig
	 s/\bEstud\b[.,:]\? \?/Estudante /Ig
	 s/\bExp\b[.,:]\? \?\|\bExped\b[.,:]\? \?/Expedicionário /Ig
	 s/\bFarm\b[.,:]\? \?/Farmacêutico /Ig
	 s/\bFaz\b[.,:]\? \?/Fazenda /Ig
 	 s/\bFco\b[.,:]\? \?/Francisco /Ig
	 s/\bFr\b[.,:] \?/Frei /Ig
	 s/\bGal\b[.,:]\? \?\|\bGen\b[.,:]\? \?/General /Ig
	 s/\([^.]\)\bGov\b[.,:]\? \?/\1Governador /Ig
	 s/\bIma\b[.,:]\? \?/Irmã /Ig
	 s/\bImo\b[.,:]\? \?/Irmão /Ig
	 s/\bInsp\b[.,:]\? \?/Inspetor /Ig
	 s/\bJorn\b[.,:]\? \?/Jornalista /Ig
	 /user=/! s/\bJr\b[.,:]\? \?/Júnior /Ig
	 s/\bMte\b[.,:]\? \?/Monte /Ig
	 s/\bMª\b[.,:]\? \?/Maria /Ig
	 s/\bMto\b[.,:]\? \?/Maestro /Ig
	 s/\bMaj\b[.,:]\? \?\|\bMj\b[.,:]\?[^-"] \?/Major /Ig
	 s/\bMal\b[.,:]\?[^-] \?/Marechal /Ig
	 s/\bMin\b[.,:]\? \?/Ministro /Ig
	 s/\bMq\b[.,:]\? \?/Marquês /Ig
	 s/\bMqa\b[.,:]\? \?/Marquesa /Ig
	 s/\bMns\b[.,:]\? \?\|\bMons\b[.,:]\? \?/Monsenhor /Ig
	 s/\bMun\b[.,:]\? \?\|\bMunic\b[.,:]\? \?/Municipal /Ig
	 s/\bnsa\b[.,:]\? \?\|\bNssa\b[.,:]\? \?/Nossa /Ig
	 s/\bNs\b[.,:][^-"] \?\|\bN S\b[.,:]\? \?\|\bN Sra\b[.,:]\? \?/Nossa Senhora /Ig
	 s/\bPe\b[.,:]\?[^"-] \?/Padre /Ig
	 s/\bPion\b[.,:]\? \?/Pioneiro /Ig
	 s/\bPiona\b[.,:]\? \?/Pioneira /Ig
	 s/\bPnt\b[.,:]\? \?/Pintor /Ig
	 s/\bPoe\b[.,:]\? \?/Poeta /Ig
	 s/\bPref\b[.,:]\? \?/Prefeito /Ig
	 s/\bPcza\b[.,:]\? \?/Princesa /Ig
	 s/\bPresb\b[.,:]\? \?/Presbítero /Ig
	 s/\bPres\b[.,:]\? \?\|\bPresid\b[.,:]\? \?/Presidente /Ig
	 s/\bProfa\b[.,:]\? \?\|\bProfª\b[.,:]\? \?\|\bPrfa\b[.,:]\? \?/Professora /Ig
	 s/\bProf\b[.,:º]\? \?\|\bPrf\b[.,:]\? \?/Professor /Ig
	 s/\bProm\b[.,:]\? \?/Promotor /Ig
	 s/\bPr\b[.,:]\?[^-"] \?\|\bPst\b[.,:]\? \?/Pastor /Ig
	 s/\bQuim\b[.,:]\? \?/Químico /Ig
	 s/\bRad\b[.,:]\? \?/Radialista /Ig
	 s/\bReg\b[.,:]\? \?/Regente /Ig
	 s/\bRep\b[.,:]\? \?/República /Ig
	 s/\bRev\b[.,:]\? \?/Reverendo /Ig
	 s/\bSen\b[.,:]\?[^-"] \?/Senador /Ig
	 s/\bSold\b[.,:]\? \?\|\bSd\b[.,:] \?/Soldado /Ig
	 s/\bSgto\b[.,:]\? \?\|\bSrg\b[.,:]\? \?/Sargento /Ig
	 s/\bSra\b[.,:]\? \?/Senhora /Ig
	 s/\bSr\b[.,:]\?[^-"] \?/Senhor /Ig
	 s/\bSta\b[.,:]\? \?/Santa /Ig
	 s/\bSto\b[.,:]\? \?/Santo /Ig
	 s/\bStos\b[.,:]\? \?/Santos /Ig
	 s/\bTen\b[.,:]\? \?\|\bTte\b[.,:]\? \?/Tenente /Ig
	 s/\bVer\b[.,:]\? \?/Vereador /Ig
	 s/\bVisc\b[.,:]\? \?/Visconde /Ig

# espaços no inicio e no fim das tags

	s/=" */="/Ig
	s/\(.\) *"/\1"/Ig

# espaços duplos, espaços triplos...

	 s/\b \+\b/ /g

	' 

Marcelo, gostaria de revisar o Rio Grande do Sul antes do seu upload. Eu acho que, ao fazer a substituição em todas as tags (e não somente em tags de nomes de ruas, que exigiria outra abordagem para filtrar e manipular os dados), você vai acabar substituindo mais coisas do que deveria. Provavelmente são poucos os erros introduzidos, mas podem ser importantes.