# cep_range
A biblioteca `cep_range` fornece funcoes relacionadas a obtencao de coordenadas geograficas, calculo de distancia entre dois pontos, obtencao de CEP a partir de coordenadas, busca de CEPs dentro de um raio especifico, outros.
**Funcoes:**
1. `validate_cep(cep)`: Funcao para validar um CEP que retornar um formato padrao "XXXXX-XXX".
2. `get_coordinates(cep)`: Funcao para obter as coordenadas geograficas (`latitude` e `longitude`) a partir de um CEP. Utiliza o Selenium para abrir o Google Maps, inserir o CEP na barra de pesquisa, aguardar o carregamento da pagina e extrair as coordenadas da URL. Retorna as coordenadas como uma tupla `(latitude, longitude)`. Se as coordenadas não forem encontradas, gera uma mensagem de erro.
3. `calculate_distance(cep_1, cep_2, unit)`: Funcao para calcular a distancia entre dois pontos geográficos. Obtém as coordenadas dos CEPs fornecidos usando a funcao `get_coordinates()`, converte as coordenadas para radianos e calcula a distancia. O resultado e retornado em quilometros (`unit='KM'`) ou metros (`unit='M'`). Se as coordenadas nao forem encontradas para algum dos CEPs gera uma excecao `CoordinatesNotFoundError`.
4. `get_cep(latitude, longitude)`: Funcao para obter o CEP correspondente a um par de coordenadas geograficas (`latitude` e `longitude`). Utiliza Nominatim do Geopy para reverter a geocodificacao e obter o CEP. Retorna o CEP se encontrado. Caso contrario, lança uma excecao indicando que nao foi possivel converter as coordenadas em CEP. Infelizmente o Nominatim pode retorna dados imprecisos.
5. `ceps_range(raio_m, cep_c)`: Funcao para gerar uma lista de CEPs unicos dentro de um determinado raio (em metros) a partir de um CEP central.
**Bibliotecas Necessarias:**
- geopy.geocoders.Nominatim: Biblioteca que fornece uma interface para o servico de geocodificacao do Nominatim, usado para converter coordenadas em CEP.
- selenium.webdriver: Módulo utilizado para automatizar a interacao com um navegador web, usado para capturar dados de (`latitude` e `longitude`) de forma precisa.
- selenium.webdriver.common.by: 'By' Utilizada para localizar elementos em uma pagina.
- selenium.webdriver.support.ui.WebDriverWait: Classe utilizada para aguardar condicoes especificas de elementos da pagina.
- selenium.webdriver.support.expected_conditions
- math
- re
**Instalacao:**
```
pip install cep-range
```
Exemplos:
```python
import cep_range
ceps_raio_500m = cep_range.ceps_range(500, '01153-000')
# output = ['01155-020', '01154-020', '01234-001', '01150-000', '01151-000', '01156-001', '01155-010', '01152-000', '01155-040', '01232-010', '01155-030', '01154-030', '01155-060', '01156-030', '01233-060', '01154-000', '01150-001', '01231-010', '01155-000', '01235-000', '01154-010']
distancia = cep_range.calculate_distance('01150-000', '01154-010', 'm')
# output = 829.704
coordenadas = cep_range.get_coordinates('01154-010')
# output = (-23.5290645, -46.6634956)
```
Raw data
{
"_id": null,
"home_page": "",
"name": "cep-range",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "cep coordenadas geograficas enderecos postalcode address",
"author": "Gabriel Gontijo",
"author_email": "gontijogabr@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/f9/6f/23646a0a8d8327e21eb0cb8443120af76e6ce3808ba7a5a00d9e01d73314/cep-range-0.0.1.tar.gz",
"platform": null,
"description": "# cep_range\n\nA biblioteca `cep_range` fornece funcoes relacionadas a obtencao de coordenadas geograficas, calculo de distancia entre dois pontos, obtencao de CEP a partir de coordenadas, busca de CEPs dentro de um raio especifico, outros.\n\n**Funcoes:**\n\n1. `validate_cep(cep)`: Funcao para validar um CEP que retornar um formato padrao \"XXXXX-XXX\".\n\n2. `get_coordinates(cep)`: Funcao para obter as coordenadas geograficas (`latitude` e `longitude`) a partir de um CEP. Utiliza o Selenium para abrir o Google Maps, inserir o CEP na barra de pesquisa, aguardar o carregamento da pagina e extrair as coordenadas da URL. Retorna as coordenadas como uma tupla `(latitude, longitude)`. Se as coordenadas n\u00c3\u00a3o forem encontradas, gera uma mensagem de erro.\n\n3. `calculate_distance(cep_1, cep_2, unit)`: Funcao para calcular a distancia entre dois pontos geogr\u00c3\u00a1ficos. Obt\u00c3\u00a9m as coordenadas dos CEPs fornecidos usando a funcao `get_coordinates()`, converte as coordenadas para radianos e calcula a distancia. O resultado e retornado em quilometros (`unit='KM'`) ou metros (`unit='M'`). Se as coordenadas nao forem encontradas para algum dos CEPs gera uma excecao `CoordinatesNotFoundError`.\n\n4. `get_cep(latitude, longitude)`: Funcao para obter o CEP correspondente a um par de coordenadas geograficas (`latitude` e `longitude`). Utiliza Nominatim do Geopy para reverter a geocodificacao e obter o CEP. Retorna o CEP se encontrado. Caso contrario, lan\u00c3\u00a7a uma excecao indicando que nao foi possivel converter as coordenadas em CEP. Infelizmente o Nominatim pode retorna dados imprecisos.\n\n5. `ceps_range(raio_m, cep_c)`: Funcao para gerar uma lista de CEPs unicos dentro de um determinado raio (em metros) a partir de um CEP central.\n\n**Bibliotecas Necessarias:**\n- geopy.geocoders.Nominatim: Biblioteca que fornece uma interface para o servico de geocodificacao do Nominatim, usado para converter coordenadas em CEP.\n- selenium.webdriver: M\u00c3\u00b3dulo utilizado para automatizar a interacao com um navegador web, usado para capturar dados de (`latitude` e `longitude`) de forma precisa.\n- selenium.webdriver.common.by: 'By' Utilizada para localizar elementos em uma pagina.\n- selenium.webdriver.support.ui.WebDriverWait: Classe utilizada para aguardar condicoes especificas de elementos da pagina.\n- selenium.webdriver.support.expected_conditions\n- math\n- re\n\n**Instalacao:**\n```\n pip install cep-range\n```\n\nExemplos:\n```python\n import cep_range\n\n ceps_raio_500m = cep_range.ceps_range(500, '01153-000')\n # output = ['01155-020', '01154-020', '01234-001', '01150-000', '01151-000', '01156-001', '01155-010', '01152-000', '01155-040', '01232-010', '01155-030', '01154-030', '01155-060', '01156-030', '01233-060', '01154-000', '01150-001', '01231-010', '01155-000', '01235-000', '01154-010']\n\n distancia = cep_range.calculate_distance('01150-000', '01154-010', 'm')\n # output = 829.704\n\n coordenadas = cep_range.get_coordinates('01154-010')\n # output = (-23.5290645, -46.6634956)\n```",
"bugtrack_url": null,
"license": "MIT License",
"summary": "",
"version": "0.0.1",
"project_urls": null,
"split_keywords": [
"cep",
"coordenadas",
"geograficas",
"enderecos",
"postalcode",
"address"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f96f23646a0a8d8327e21eb0cb8443120af76e6ce3808ba7a5a00d9e01d73314",
"md5": "0269ac7a73d8df725e2b2f1568ed9a9b",
"sha256": "7040579a71a83a6f7dc8264c7014b32934970840192813c64f23e1123810b9b6"
},
"downloads": -1,
"filename": "cep-range-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "0269ac7a73d8df725e2b2f1568ed9a9b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4166,
"upload_time": "2023-07-05T18:17:00",
"upload_time_iso_8601": "2023-07-05T18:17:00.809838Z",
"url": "https://files.pythonhosted.org/packages/f9/6f/23646a0a8d8327e21eb0cb8443120af76e6ce3808ba7a5a00d9e01d73314/cep-range-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-05 18:17:00",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "cep-range"
}