Construindo sobre o trabalho anterior usando um notebook ArcGIS Pro para ETL dos dados do Overture Maps Foundation no ArcGIS, este post analisa o tema Addresses do Overture Map Foundation, tanto como uma camada pronta para mapa quanto como um localizador de geocodificação com capacidade de subendereço. No momento da escrita, os dados estão em versão alpha, mas você pode conferir com o notebook ArcGIS Pro (no download do post), que está configurado para extrair os pontos de endereço na Califórnia, EUA - pouco mais de 14 milhões de feições. Aqui estão eles, com metadados também criados pelo notebook:
14 milhões de pontos de endereço na Califórnia
Existem muitos usos para os pontos de endereço (camada do mapa, feições próximas, junção de feições, fonte de geometria para edição...), mas um que quero destacar, e que é mencionado pela Overture como um fluxo de trabalho alvo, é a geocodificação - transformar detalhes de endereço em localizações no mapa, como você vê aqui para o endereço "1000 Pine Ave Unit 109 Redlands CA 92373".
Geocodificação com Overture Addresses
Sempre parece mágico que você possa converter um dialeto local de endereço em uma coordenada, e embora existam algumas "lacunas" por país no tema Addresses atual, onde os dados de um país estão populados eles são completos e mantidos mensalmente. Vamos ver como acessar os dados!
SpoilerNota: Os produtos de geocodificação da Esri, como o ArcGIS World Geocoding Service, podem conter os mesmos dados de referência que o tema Addresses da Overture.
Estou usando um notebook ArcGIS Pro 3.5, utilizando apenas os módulos padrão do runtime, incluindo DuckDB. A Overture oferece os dados como arquivos GeoParquet em armazenamento hive S3 (significando que o conjunto lógico único de endereços existe como um número arbitrário de arquivos parquet individuais que você especifica como um caminho glob (curinga), assim neste SQL enviado ao DuckDB:
select * from read_parquet('s3://overturemaps-us-west-2/release/2025-09-24.0/theme=addresses/type=address/*.parquet',filename=false, hive_partitioning=1)O notebook descobre automaticamente o caminho para os dados mais recentes.
Como estamos interessados apenas em um subconjunto dos dados disponíveis de endereços, fornecemos uma cláusula "where" no notebook que filtra quais registros ler; aqui está a minha para obter apenas dados da Califórnia:
where country = 'US' and address_levels[1].value = 'CA' and number is not null and street is not null
Você notará um termo que consulta uma coluna struct, address_levels, que é um array baseado em 1 com até três valores de zona em tamanho decrescente, como província, cidade, bairro. Isso varia por país e cabe a você descobrir. Poucos países usam todos os três níveis. De fato, algumas colunas podem não estar populadas, seja porque os dados não estão disponíveis do contribuinte ou são não usados no país, por exemplo postal_city ou postcode.
No notebook, o array address_levels é reordenado do formato avô-pai-filho na fonte para filho-pai-avô nos dados de saída, pois é assim que os endereços são tipicamente fornecidos, das áreas menores para as maiores; por exemplo "380 New York St Redlands CA 92373".
Deixo você explorar o notebook para outros detalhes; por exemplo, uma caixa delimitadora ao redor de cada ponto de endereço é calculada para proporcionar uma experiência de zoom mais utilizável ao localizar um endereço. O notebook criará um localizador na pasta principal do seu projeto ou o reconstruirá com novos dados se já existir. Para usar a opção reconstruir, primeiro remova o localizador existente do seu projeto para liberar bloqueios nos arquivos. Leva cerca de 45 minutos para processar os dados da Califórnia, incluindo uma etapa de ~5 minutos onde os campos street, unit e zone são padronizados em caixa - por questão estética:
Padronização da caixa dos campos textuais
Quando você chegar à célula que cria ou reconstrói o localizador, a menos que esteja nos EUA você vai querer substituir o código por algo destinado ao seu país. O código da célula foi construído copiando o comando Python de uma execução manual do Create Locator para dentro da célula; você pode fazer o mesmo.
Por favor comente neste post com quaisquer observações ou perguntas.