Programa para vaculhar pastas e encontrar distancia entre cidades utilizando OSRM #1993
coordenacaoprojetoslz7-pixel
started this conversation in
Built with Kilo
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
import os
import re
import pandas as pd
from datetime import datetime, date # Adicionado date para data atual
import time
import requests # Para chamadas HTTP ao OSRM
Tentar importar bibliotecas de geolocalização
try:⚠️ Biblioteca geopy não encontrada. A funcionalidade de cálculo de distância não estará disponível.")
from geopy.geocoders import Nominatim
from geopy.exc import GeocoderTimedOut, GeocoderUnavailable
GEO_LIBS_AVAILABLE = True
except ImportError:
GEO_LIBS_AVAILABLE = False
print("
print(" Para habilitar, instale-a com: pip install geopy requests")
--- Configurações para Cálculo de Distância ---
CIDADE_ORIGEM_NOME = "Wenceslau Braz, Paraná, Brasil"
OSRM_SERVER_URL = "http://router.project-osrm.org" # Servidor público do OSRM
Cache para coordenadas e distâncias
coordenadas_cache = {}
distancias_cache_osrm = {}
def obter_coordenadas_osm(localizador, cidade_estado_base, tentativas_adicionais=None):
"""Tenta obter coordenadas, primeiro com cidade_estado_base, depois com tentativas_adicionais."""
tentativas = [cidade_estado_base]
if tentativas_adicionais:
tentativas.extend(tentativas_adicionais)
def calcular_distancia_osrm(coords_origem, coords_destino):
cache_key = (coords_origem, coords_destino)
if cache_key in distancias_cache_osrm:
return distancias_cache_osrm[cache_key]
def extrair_nome_cidade(texto_municipio_orgao):
try:
partes = texto_municipio_orgao.upper().split(" DE ", 1)
if len(partes) > 1:
nome_cidade_extraido = partes[1].strip()
return ' '.join(word.capitalize() for word in nome_cidade_extraido.split())
else:
return ' '.join(word.capitalize() for word in texto_municipio_orgao.strip().split())
except Exception:
return texto_municipio_orgao.strip()
def extrair_dados_pastas_osrm_filtrado(diretorio_base, arquivo_saida, cidade_origem_ref_nome):
dados_extraidos = []
padrao_pasta_edital = r"^([A-Z]+(?:\s[A-Z]+)*)\s+(\S+)\s+(.+?)\s+LZ7(?:\s+(\d{2}-\d{2}-\d{4})|\s+-\s+(\d{2}[.-]\d{2}(?:[.-]\d{4})?))?$"
data_hoje = date.today()
--- Configuração Principal ---
diretorio_licitacoes_usuario = "C:/Users/danie/Desktop/LZ7/1 - Editais Licitação"
diretorio_saida_excel = "C:/Users/danie/Desktop/LZ7/1 - Editais Licitação/Organizados"
nome_arquivo_excel_base = "levantamento_editais_osrm_filtrado_v5"
--- Execução ---
if name == "main":
# Gerar timestamp para execução e nome do arquivo
timestamp_execucao = datetime.now().strftime("%Y%m%d_%H%M%S")
print(f"\n🕒 Execução iniciada em: {datetime.now().strftime('%d/%m/%Y %H:%M:%S')}")
Beta Was this translation helpful? Give feedback.
All reactions