Planteamiento
- Tengo la suerte de que la página de la DGT publica las imágenes de trafico de todos las carreteras que uso para llegar al trabajo
- La idea es usar estas las imágenes de las cámaras para evaluar el tráfico
- La primera parte del proyecto consistirá en guardar las imáges de las cámaras de tráfico de las carreteras por las que paso y luego poderlas visionar de manera que pueda ver fácilmente:
- RECOLECTOR DE IMAGENES
- Codificar un script que cada 1min haga una captura de las imagenes de la DGT.
- Como no se la cadencia de publicación de las imagenes hacer un diff de la imagen capturada con la anterior y si es la misma no la guardamos
- Para obtener las imagenes de la DGT voy a usar python, ejemplo
- Para guardar la imagen estoy pensando en usar SQLITE y el campo BLOB. Las imagenes son de 240x176 pixeles = 990KB. Aquí hay una referencia al campo BLOB de SQLITE. Ejemplos con python. Otro ejemplo específico de imagenes
- Implementar un servicio web que devuelva las imágenes por fecha.
- VISUALIZADOR DE IMAGENES
Implementacion
hg clone https://albaregar@bitbucket.org/albaregar/trafficjam
Servidor de images con Django
- Crear una aplicacion nueva: python manage.py startapp image_server
- Para probar añadir al fichero view.py añadir el siguiente método
from django.http import HttpResponse
def get_image_test(request):
filename = 'trafico.jpg'
image_file = open('/home/boundingbox/webapps/rpc/myproject/image_server/%s'%filename,'rb')
file_content = image_file.read()
response = HttpResponse(file_content, mimetype='image/jpeg')
response['Content-Disposition'] = 'inline; filename=%s'%filename
return response
- Para probar añadir al fichero url.py la siguiente línea
(r'^imageTest/$', 'myproject.image_server.views.get_image_test')
- Para acceder a la imagen:
A) http://rpc.boundingbox.es/imageTest/
B)<html><head<title>Test image server</title></head><body><img src="http://rpc.boundingbox.es/imageTest/"></body></html>
- Probar una función que devuelva una imagen dado el año, mes, dia. Añadir la siguiente linea a url.py
(r'^imageGet/(?P<year>\d\d)/(?P<month>\d\d)/(?P<day>\d\d)/$','myproject.image_server.views.get_image')
- Añadir la siguiente función a views.py
def get_image(request, year, month, day):
html = """
<html>
<body>Anio:%s Mes:%s Dia:%s</body>
</html>"""%(year, month, day)
return HttpResponse(html)
- Para comprobar que funciona
http://rpc.boundingbox.es/imageGet/10/09/20/
Cómo encontrar las cámaras
- Usar la página de la DGT para saber en qué carreteras hay cámaras y cúantas hay. El problema es que en esta página las cámaras se identifican por carretera y punto kilométrico lo cual hace un poco difícil situarlas en un mapa
- Usar la página de la guía repsol, la búsqueda por punto kilométrico y activando la capa de cámaras para poder localizar mejor la situación de las cámaras y ver si la cámara nos sirve. Usar el buscador de carreteras
- Usar google maps para sacar la posición GPS
Cómo servir ficheros css y javascript desde dentro de una aplicación de Django
Si la eficiencia no es una prioridad existe un modo sencillo que me viene de perlas.
Todo viene explicado en este link.