Fundamentos Teóricos del Centro Medio

El Centro Medio (Mean Center) es el algoritmo espacial más básico, equivalente al "promedio" estadístico aplicado a la geografía. Su objetivo es identificar el punto geográfico (centro de gravedad) que minimiza la suma de las distancias al cuadrado hacia todos los puntos del conjunto. Matemáticamente, se calcula promediando las coordenadas X (longitud) y las coordenadas Y (latitud) por separado.

Como el promedio regular, este cálculo es sensible a valores atípicos (outliers). Puede aplicarse en 3D (Z) y afinarse usando "pesos" ponderados (ej: poblaciones o volúmenes de compra), así como calcularse por categorías para obtener múltiples centros de un conjunto de datos.

Lógica y Pseudocódigo

Consideremos el caso de un grupo de amigos en posiciones en la ciudad que buscan encontrarse en un punto óptimo de desplazamiento. La lógica requiere iterar por cada ubicación, sumar todas las coordenadas (X y Y), y finalmente dividirlas entre el número de ubicaciones.

Implementación Básica en Python

A continuación, implementamos el algoritmo de forma manual utilizando Python puro, iterando las coordenadas de una lista de ubicaciones. Aunque es ideal para aprender la lógica básica, para conjuntos grandes no es lo más eficiente computacionalmente.

Python
# Coordenadas de las casas (Latitud, Longitud)
casas_amigos = [
    [4.6097, -74.0817],
    [4.6200, -74.0900],
    [4.5900, -74.0700],
    [4.6100, -74.0800],
    [4.6300, -74.1000]
]

suma_total_x = 0
suma_total_y = 0
cantidad_amigos = len(casas_amigos)

for amigo in casas_amigos:
    # Asumiendo posición 0 es latitud (X) y 1 es longitud (Y) para el ejemplo
    x = amigo[0]
    y = amigo[1]
    suma_total_x += x
    suma_total_y += y

centro_x = suma_total_x / cantidad_amigos
centro_y = suma_total_y / cantidad_amigos

print("Centro Medio:", centro_x, centro_y)

Implementación Avanzada y Visualización con Pandas y Matplotlib

Para simplificar el proceso y preparar los datos de forma escalable (simulando atributos SIG), empleamos pandas. El punto del centro medio se puede calcular rápidamente aplicando el método .mean() directamente sobre las columnas correspondientes del DataFrame.

Para la visualización, utilizamos matplotlib.pyplot. Superponemos las ubicaciones originales como un gráfico de dispersión regular (scatter azul) y destacamos el centro medio (en rojo con forma de estrella) para identificar visiblemente el centro de gravedad o equilibrio del grupo.

Python
import pandas as pd
import matplotlib.pyplot as plt

datos = {
    'Amigo': ['Juan', 'Ana', 'Pedro', 'Carolina', 'Beto'],
    'Latitud': [4.6097, 4.6200, 4.5900, 4.6100, 4.6300],
    'Longitud': [-74.0817, -74.0900, -74.0700, -74.0800, -74.1000]
}

df = pd.DataFrame(datos)

# Cálculo vectorizado con Pandas
centro_lat = df['Latitud'].mean()
centro_lon = df['Longitud'].mean()

print("Centro Medio (Pandas):", centro_lat, centro_lon)

# Visualización
plt.scatter(df['Longitud'], df['Latitud'], c='blue', label='Amigos')
plt.scatter(centro_lon, centro_lat, c='red', marker='*', s=200, label='Centro Medio')
plt.legend()
plt.title('Ubicación Óptima de Encuentro')
plt.grid(True)
plt.show()