Saturday, June 29, 2013

Haciendo un XML con python.




Cómo crear un xml con python, de forma rápida
y sencilla, la mejor librería que se adapta a eso es:

lxml
ElementTree está genial, sin embargo
al momento de crearlo, lo generaba en
una sola línea :-/ lxml utiliza ElementTree
y un poco más :) Esta librería me permitió
 añadir nueva línea para cada tag,
de forma que quedara legible e identado. 
Resultado: GitHub Python Script
Comentadas están algunas otras que probé
pero su forma de crear el XML no se ajustaba a lo
que necesitaba.

Para formatear un XML, no muy grande:
http://www.freeformatter.com/xml-formatter.html

Enlaces de Referencia:
http://effbot.org/zone/element.htm
http://www.boddie.org.uk/python/XML_intro.html
http://docs.python.org/2/library/xml.etree.elementtree.html
http://luisartola.com/software/2010/easy-xml-in-python/
http://wiki.python.org/moin/PythonXml
http://docs.python.org/3.4/library/xml.etree.elementtree.html#module-xml.etree.ElementTree

Element Tree example:
http://pymotw.com/2/xml/etree/ElementTree/create.html
Este está completo, sobre lxml:
http://infohost.nmt.edu/tcc/help/pubs/pylxml/web/index.html

Friday, June 14, 2013

Haciendo un mapa con D3,



1 - Buscar los datos límitrofes del mapa. (En mi caso, esto lo quiero hacer para Venezuela y Argentina) tomé los datos de un archivo shapefile:

sitio que tiene estos datos: http://www.gadm.org/country
ó acá: http://www.naturalearthdata.com

de acá tomé el de argentina ya que el de IGN tenía un detalle con la provincia tierra del fuego.

Otra herramienta para hacer mapas sencillos: sin mucha animación es:jvectormap.com
realmente sencillos pero fácil de usar.

Y esta librería es más sencilla todavía solo importar y usar, solo viene con mapas de usa y por regiones, mundial, sur américa, y europa.

Argentina: IGN AR

Tomé los shapefile y los llevé al formato geoJson con FWTools. instalarlas en linux y en la ventana es bastante sencillo. Y con la línea de comando:
ogr2ogr -f geoJSON provincias.geojson provincias.shp
En caso de los archivos de venezuela el que posee extensión  
ogr2ogr -f geoJSON estados.geojson estados.shx
2 - Convertir Archivos geoJSON a TopoJSON.
3 - Usar D3.
Antes de hacer copy and paste de los ejemplos,
 y luego no entender porque tienes una patalla 
en blanco mejor entender que elementos componen 
un mapa en d3 (requeridos) y que cosas son 
opcionales que permiten personalizar.
De la imagen anterior, todo mapa en d3 tiene un
 "path" (generador de ruta) o una "projection" 
(proyección) son requeridas.
PROJECTIONS: esto permite que coordenadas esféricas
 sean proyectadas a un plano cartesiano. Siendo esto
 necesario para mostrar figuras esféricas en un plano 
2D. En las visualizaciones 3D esto no sería necesario.
PATH:  Toma las figuras geométricas proyectadas en 2D 
y las formatea correctamente para el formato SVG ó CANVAS.

STREAMS: para computarizar áreas proyectadas, 
centroides, límites consistentes a la geometría 
mostrada, y puede incluso filtrar fíguras geometricas 
dependiendo de la escala.

Un ejemplo de Mapas con D3: La Nación Censo AR
Otro ejemplo pero seguro no el mejor código, 
lo veo y sé que hay formas de mejorarlo:
Mapa Argentina 

Convertir GeoJson a TopoJson, una ayudaita para recordar :)


Desde Microsoft:
Gracias a que hicieron unos msi, el proceso es realmente simple.

1 - Descargar node: NodeJs
2 - Luego desde la consola "cmd", de win, hacer: npm install -g topojson
3 - Desde la línea de comando:   topojson -o provincias.topojson provincias.geojson
tomado de: Wiki TopoJson

Y listo para usar con D3.

Desde linux:

pacman -S nodejs 

¡El resto es igual! 

PD: acá está el resultado luego  de largo trabajo con Js, mapa Argentina

Saturday, June 8, 2013

python, virtualenv y no hay problema!




Instalar virtualenv.

pip install virtualenv

por el gestor de paquetes.
python2-virtualenv-clone
python2-virtualenv

Creando un entorno virtual.

mkdir ~/virtualenvs/blog/
virtualenv ~/virtualenvs/blog/ --no-site-packages -p /usr/bin/python2virtualenv --no-site-packages nombreEntorno : Esta opcion hace que el entorno virtual se instale sin tomar en cuenta los paquetes del sistema operativo.

virtualenv --python=python3.1 nombreEntorno: Para que use un python específico.

Listar los ambientes virtualenvs.

   Porque menciono esto ya que la costumbre de usar rvm o perlbrew es poder listar las diferentes versiones del lenguaje que ya tengo instalada, por lo que no existe una única forma de hacer esto, ya que esto NO te instala diferentes versiones de python en tu SO, sino crea entornos virtuales para cada aplicación haciendo más limpia su implementación, por ejemplo tengo en mi SO dos versiones de python, puedo instalar estas dos versiones en mi ambiente local. Lo más recomendable es hacer un directorio donde almacenar todos los entornos virtuales.
Activando el entorno virtual.

cd ~/virtualenvs/mysite.com
source bin/activate


Desactivando el entorno virtual (Dejar de usar el python local). 

deactive 

Como funciona un entorno virtual.
Cuando uno crea un entorno, dentro del mismo se crean tres carpetas:

bin: cuando uno tiene el entorno activado, y ejecuta un comando como python, pip o easy_install, se ejecuta alguno de los binarios que se encuentran en esa carpeta, en vez de ejecutar los del sistema.
include: es simplemente un link al a los archivos de la instalación de Python.

Un link a algunos archivos de Python. En este caso a los .py
Una carpeta, site-packages, que es donde se instalan los paquetes cuando uno usa pip o easy_install

lib: esta es otra carpeta importante. Al igual que include tiene una carpeta llamada python pero a diferencia de include, esta no es una link a la carpeta de Python. La carpeta tiene dos cosas importantes:

Instalar Modulos en el entorno virtual.

pip install psycopg2

pip install numpy

pip install rpy2


Usando un wrapper para agilizar la utilización del entorno virtual.

usar: http://virtualenvwrapper.readthedocs.org/en/latest/


Servidor que contiene binarios no oficiales para python y windows

http://www.lfd.uci.edu/~gohlke/pythonlibs/


Referencias de:
 

Un tutorial genial para instalar virtualenv y como funciona:
https://wiki.archlinux.org/index.php/Python_VirtualEnv

referencia al titulo: http://www.youtube.com/watch?v=21fRA1VrLPo :)

adorable  alf