Skip to content

Commit

Permalink
[Feature]: Add code for basic Geocoder using FastAPI
Browse files Browse the repository at this point in the history
  • Loading branch information
wfpinedar committed Jan 28, 2024
1 parent ea8925e commit 5206e98
Show file tree
Hide file tree
Showing 11 changed files with 1,917 additions and 0 deletions.
Binary file added geocoder_api/.db
Binary file not shown.
6 changes: 6 additions & 0 deletions geocoder_api/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
__pycache__/
.venv/
*.pyc
.DS_Store
dist/
build/
13 changes: 13 additions & 0 deletions geocoder_api/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004

Copyright (C) [tu nombre] [año]

Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. You just DO WHAT THE FUCK YOU WANT TO.
54 changes: 54 additions & 0 deletions geocoder_api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# API de Geocodificación

## Descripción
Esta API de geocodificación proporciona un servicio para convertir direcciones en coordenadas geográficas (latitud y longitud). Basada en FastAPI y SQLite, permite a los usuarios consultar direcciones almacenadas en una base de datos y recibir sus coordenadas correspondientes.

## Instalación

### Requisitos Previos
- Python 3.8 o superior
- pip (gestor de paquetes de Python)

### Configuración del Entorno
Se recomienda usar un entorno virtual para instalar las dependencias. Para crear y activar un entorno virtual, ejecute:

```bash
python -m venv venv
source venv/bin/activate # En Windows use `venv\Scripts\activate`
```

### Instalación de Dependencias
Este proyecto utiliza Poetry para la gestión de dependencias. Instale Poetry y luego las dependencias del proyecto:

```bash
pip install poetry
poetry install
```
### Configuración de la Base de Datos
Antes de ejecutar la API, es necesario crear y poblar la base de datos SQLite. Ejecute el siguiente script para hacerlo:

```bash
python geocoder_api/crear_db.py
```

Asegúrese de tener el archivo CSV con los datos de geocodificación en la ruta correcta.

### Ejecución de la API

Para iniciar el servidor de la API, ejecute:

```
poetry run uvicorn main:app --reload
```

La API estará disponible en http://127.0.0.1:8000.

### Uso de la API

Para geocodificar una dirección, realice una solicitud GET a /geocodificar/ con el parámetro de dirección. Por ejemplo:

```
http://127.0.0.1:8000/geocodificar/?direccion=Tu+Direccion
```

O en su defecto ir a la ruta http://127.0.0.1:8000/docs en donde fastAPI dispone una documentación interactiva hecha con swagger.
Empty file.
25 changes: 25 additions & 0 deletions geocoder_api/geocoder_api/crear_db.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import sqlite3
import pandas as pd
# Leer el archivo CSV en un DataFrame
df = pd.read_csv('./geocoder_api/db_xample.csv', sep=';')

# Conectar a la base de datos SQLite (se crea si no existe)
conn = sqlite3.connect('.db')
cursor = conn.cursor()

# Crear tabla en la base de datos
cursor.execute('''
CREATE TABLE IF NOT EXISTS geocoding (
id INTEGER PRIMARY KEY,
direccion TEXT,
latitud REAL,
longitud REAL
)
''')

# Insertar datos del DataFrame en la tabla
df.to_sql('geocoding', conn, if_exists='replace', index=False)

# Cerrar la conexión a la base de datos
conn.close()
print("Base de datos creada y poblada con éxito.")
Loading

0 comments on commit 5206e98

Please sign in to comment.