Hacia tiempo que no entraba en digg.com y hoy tras consultar los “digeos” que hacían mis contactos en digg, me encontré con un post, que me ha aparecido muy interesante, algo que seguro usaré en algunos de mis proyectos futuros, y que me pareció interesante traducir y compartir aquí en LeeMiBlog.

IP - Pais. Geolocalizacion

En este post (que podéis ver el original en inglés aquí) se incluye una base de datos, para bajar gratuitamente ( es un fichero sql de texto, que generará las tablas con sus datos ), con las siguientes tablas:

  • cities: tabla de ciudades del mundo con los siguientes campos: país, región, latitud, longitud, número de IP de clase C.
  • fips_countries : Países del mundo con código y nombre.
  • fips_regions : Regiones del mundo por país.
  • ip_group_city : Localización de las direcciones por país, región, ciudad, código postal, latitud, y longitud.
  • ip_group_country : Localización de las direcciones por país sólo, base de datos más pequeña.

¿ Cómo usar esto ?

Digamos que una IP es A.B.C.D

ip = (A*256+B)*256+C

El último número D de la dirección no se usa.

Así, por ejemplo, si tienes la IP 74.125.45.100 (google), en la base de datos aparecerá como:

ip = (74*256+125)*256+45 = 4881709

Ahora para encontrarla en la base de datos, habrá que hacer algo como esto en MySQL:

SELECT * FROM ip_group_city where ip_start <= 4881709 order by ip_start desc limit 1;

El resultado de esta sentencia SQL sería:

ip_start|country_code|region_code|city|zipcode|latitude|longitude|4881664|US|CA|Mountain View|94043|37.4192|-122.057

¿ Cómo se puede conseguir si solo hay 1.2 millones de registros en la base de datos, y existen 10 veces más IPs?

Digamos que de la IP 74.125.0.XXX a la 74.125.32.XXX tienen la misma localización. No se almacena 32 veces la misma información, la base de datos hubiese sido enorme. Sólo se almacena la IP 74.125.32.XXX. El final del bloque is la siguiente fila en la tabla que sería 74.125.33.XXX.

Os podéis bajar la base de datos del siguiente enlace: Base de Datos con IPs para Geo-Localización





¿Te gusto la entrada? Compartela:

Etiquetas: ,

One Response


  1. daniel on 18 jun 2011

    buen dia e buscado esta base de datos y no la encuentro tu link esta caido me la podiras pasar por correo o arreglar el link porfavor


Leave your comment