# cep_range
A biblioteca `cep_range` fornece funções relacionadas à obtenção de coordenadas geográficas, cálculo de distância entre dois pontos, obtenção de CEP a partir de coordenadas, busca de CEPs dentro de um raio especÃfico, outros.
**Funções:**
1. `validate_cep(cep)`: Função para validar um CEP que retornar um formato padrão "XXXXX-XXX".
2. `get_coordinates(cep)`: Função para obter as coordenadas geográficas (`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 página 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)`: Função para calcular a distância entre dois pontos geográficos. Obtém as coordenadas dos CEPs fornecidos usando a função `get_coordinates()`, converte as coordenadas para radianos e calcula a distância. O resultado é retornado em quilômetros (`unit='KM'`) ou metros (`unit='M'`). Se as coordenadas não forem encontradas para algum dos CEPs gera uma exceção `CoordinatesNotFoundError`.
4. `get_cep(latitude, longitude)`: Função para obter o CEP correspondente a um par de coordenadas geográficas (`latitude` e `longitude`). Utiliza Nominatim do Geopy para reverter a geocodificação e obter o CEP. Retorna o CEP se encontrado. Caso contrário, lança uma exceção indicando que não foi possÃvel converter as coordenadas em CEP. Infelizmente o Nominatim pode retorna dados imprecisos.
5. `ceps_range(raio_m, cep_c)`: Função para gerar uma lista de CEPs únicos dentro de um determinado raio (em metros) a partir de um CEP central.
**Bibliotecas Necessárias:**
- geopy.geocoders.Nominatim: Biblioteca que fornece uma interface para o serviço de geocodificação do Nominatim, usado para converter coordenadas em CEP.
- selenium.webdriver: Módulo utilizado para automatizar a interação 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 página.
- selenium.webdriver.support.ui.WebDriverWait: Classe utilizada para aguardar condições especÃficas de elementos da página.
- selenium.webdriver.support.expected_conditions
- math
- re
**Instalação**
```shell
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-lib",
"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/5a/1d/bf9848223170b65fad0de7a9ad170f747fe85ad1a9a6a5e2835b0c138268/cep-range-lib-0.0.1.tar.gz",
"platform": null,
"description": "# cep_range\n\nA biblioteca `cep_range` fornece fun\u00c3\u00a7\u00c3\u00b5es relacionadas \u00c3\u00a0 obten\u00c3\u00a7\u00c3\u00a3o de coordenadas geogr\u00c3\u00a1ficas, c\u00c3\u00a1lculo de dist\u00c3\u00a2ncia entre dois pontos, obten\u00c3\u00a7\u00c3\u00a3o de CEP a partir de coordenadas, busca de CEPs dentro de um raio espec\u00c3\u00adfico, outros.\n\n**Fun\u00c3\u00a7\u00c3\u00b5es:**\n\n1. `validate_cep(cep)`: Fun\u00c3\u00a7\u00c3\u00a3o para validar um CEP que retornar um formato padr\u00c3\u00a3o \"XXXXX-XXX\".\n\n2. `get_coordinates(cep)`: Fun\u00c3\u00a7\u00c3\u00a3o para obter as coordenadas geogr\u00c3\u00a1ficas (`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 p\u00c3\u00a1gina 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)`: Fun\u00c3\u00a7\u00c3\u00a3o para calcular a dist\u00c3\u00a2ncia entre dois pontos geogr\u00c3\u00a1ficos. Obt\u00c3\u00a9m as coordenadas dos CEPs fornecidos usando a fun\u00c3\u00a7\u00c3\u00a3o `get_coordinates()`, converte as coordenadas para radianos e calcula a dist\u00c3\u00a2ncia. O resultado \u00c3\u00a9 retornado em quil\u00c3\u00b4metros (`unit='KM'`) ou metros (`unit='M'`). Se as coordenadas n\u00c3\u00a3o forem encontradas para algum dos CEPs gera uma exce\u00c3\u00a7\u00c3\u00a3o `CoordinatesNotFoundError`.\n\n4. `get_cep(latitude, longitude)`: Fun\u00c3\u00a7\u00c3\u00a3o para obter o CEP correspondente a um par de coordenadas geogr\u00c3\u00a1ficas (`latitude` e `longitude`). Utiliza Nominatim do Geopy para reverter a geocodifica\u00c3\u00a7\u00c3\u00a3o e obter o CEP. Retorna o CEP se encontrado. Caso contr\u00c3\u00a1rio, lan\u00c3\u00a7a uma exce\u00c3\u00a7\u00c3\u00a3o indicando que n\u00c3\u00a3o foi poss\u00c3\u00advel converter as coordenadas em CEP. Infelizmente o Nominatim pode retorna dados imprecisos.\n\n5. `ceps_range(raio_m, cep_c)`: Fun\u00c3\u00a7\u00c3\u00a3o para gerar uma lista de CEPs \u00c3\u00banicos dentro de um determinado raio (em metros) a partir de um CEP central.\n\n**Bibliotecas Necess\u00c3\u00a1rias:**\n- geopy.geocoders.Nominatim: Biblioteca que fornece uma interface para o servi\u00c3\u00a7o de geocodifica\u00c3\u00a7\u00c3\u00a3o do Nominatim, usado para converter coordenadas em CEP.\n- selenium.webdriver: M\u00c3\u00b3dulo utilizado para automatizar a intera\u00c3\u00a7\u00c3\u00a3o 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 p\u00c3\u00a1gina.\n- selenium.webdriver.support.ui.WebDriverWait: Classe utilizada para aguardar condi\u00c3\u00a7\u00c3\u00b5es espec\u00c3\u00adficas de elementos da p\u00c3\u00a1gina.\n- selenium.webdriver.support.expected_conditions\n- math\n- re\n\n**Instala\u00c3\u00a7\u00c3\u00a3o**\n\n```shell\npip 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": "5a1dbf9848223170b65fad0de7a9ad170f747fe85ad1a9a6a5e2835b0c138268",
"md5": "b16f96e98fb292ec86500a736ea2756b",
"sha256": "4a438e3423073d3108ee3f31668160bf9952a9da1a3dfeb157e1cd8c638e6ede"
},
"downloads": -1,
"filename": "cep-range-lib-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "b16f96e98fb292ec86500a736ea2756b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4342,
"upload_time": "2023-07-05T17:06:53",
"upload_time_iso_8601": "2023-07-05T17:06:53.873480Z",
"url": "https://files.pythonhosted.org/packages/5a/1d/bf9848223170b65fad0de7a9ad170f747fe85ad1a9a6a5e2835b0c138268/cep-range-lib-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-05 17:06:53",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "cep-range-lib"
}