jump to navigation

Categorización en QGIS 07.8.15

Posted by Migsar in Computación, GIS, Tecnología.
Tags: , , , , , , , ,
add a comment

Objetivos:

  1. Categorizar una capa vectorial para convertirla en raster
  2. Realizar comparaciones en la calculadora raster

Para esto hemos seleccionado tres capas vectoriales:

  • Polígonos de localidades urbanas (INEGI → Geografía → Marco geoestadístico → Polígonos de localidades urbanas).
  • Isotermas medias anuales (Conabio → Portal de geoinformación → Climatología → Temperatura → Isotermas medias anuales)
  • Precipitación media anual (Conabio → Portal de geoinformación → Climatología → Precipitación → Precipitación media anual)

La idea es poder responder preguntas como las siguientes:

  • ¿Existe una ciudad en la republica en que llueva demasiado y sea fría?
  • ¿En qué ciudad podría vivir si no me gusta la lluvia y me gusta el calor?
  • ¿Cuál sería una buena ciudad para un invernadero, con clima cálido y lluvioso todo el año?
  • ¿Existe alguna ciudad templada en Durango?

Por supuesto, hay cierto grado de subjetividad en esto, para unos caluroso puede ser frío para otros, igual sucede con la humedad, es por eso que es importante saber categorizar.

Lo primero es reproyectar las capas, el INEGI usa un sistema raro ITRF92, seguramente habrá razones de peso para haberlo escogido pero si el GPS usa WGS84, prefiero este último. Lo mejor es crear una nueva carpeta con el nombre del sistema y guardar ahí nuestras capas reproyectadas, de paso podemos usar nombres menos crípticos.

Empecemos con las localidades urbanas, podríamos hacer simplemente una capa que dijera si es localidad urbana o no, pero es mejor ponerla por estados. La tarea es bastante sencilla, la tabla de atributos tiene un atributo llamado CVE_ENT, es decir, clave de entidad, sin embargo, necesitamos que sea entero, así que creamos un nuevo atributo llamado “estado”, con valor numérico.

  1. Abrir tabla de atributos de localidades urbanas.
  2. Activar el modo de edición (ícono de lápiz a la izquierda) y abrir calculadora de campos (ícono de abaco a la derecha).
  3. Escribir en el espacio para el valor to_int(“CVE_ENT”).

tut001

tut002

to_int() es una función que trabaja sobre el campo contenido entre paréntesis y convierte su valor en entero. Ahora necesitamos convertirlo a imagen, para esto usamos la función rasterize en el menú de raster → conversion y en el campo de atributo de campo usamos “estado”. No hay que olvidar guardar la tabla de atributos y salir del modo de edición antes de hacer esto.

Puede que se vea todo obscuro, eso es a causa del estilo, es necesario usar SingleBand Pseudocolor y crear 33 valores, el del 0 ponerlo transparente, que es el espacio vacío, podemos si sabemos que trabajaremos mucho con imágenes del INEGI cambiar los nombres de las clases y guardar el estilo. Al convertir nuestros vectores en imágenes perdimos la información asociada a los polígonos pero ganamos la facilidad de hacer ciertas comparaciones.

tut003

Ya tenemos nuestra capa raster con las localidades urbanas por estado, ahora necesitamos algo similar on las otras dos capas. Como se mencionó anteriormente, frío, templado y caluroso son un poco relativos y es en esa categorización en la que radica la fuerza de la calculadora de campos. Empecemos con la temperatura, en Conabio aparecen las isotermas en categorías desde -2 hasta más de 28 grados Celsius, los intervalos no son regulares, algunos son de dos, otros de tres y algunos bastante ambiguos, como el de menor a -2 grados y el de mayor a 28 grados. Para mí el frío empieza abajo de los 14 grados, incluso podría ser 12, pero para fines del tutorial queda en 14 y el calor empieza en 24, es decir, tenemos sólo tres categorías, frío, templado y calor, dejaremos en una cuarta las que mencioné como ambiguas. Esto se hace también con la calculadora de campos pero ahora utilizaremos la estructura CASE. Al abrir las tablas de atributos notamos que ya tienen cierta clasificación, incluso uno de los atributos puede convertirse a número de modo similar al anterior, sin embargo, se trata de proponer nuestro criterio de temperaturas.

  1. Abrir tabla de atributos de localidades urbanas.
  2. Activar el modo de edición (ícono de lápiz a la izquierda) y abrir calculadora de campos (ícono de abaco a la derecha).
  3. Escribir en el espacio para el valor:

CASE
WHEN ( "TA_RANGO" = 'DE -2 A 5' OR "TA_RANGO" = 'DE 5 A 6' OR "TA_RANGO" = 'DE 6 A 8' OR "TA_RANGO" = 'DE 8 A 10' OR "TA_RANGO" = 'DE 10 A 12' OR "TA_RANGO" = 'DE 12 A 14' ) THEN 1
WHEN ( "TA_RANGO" = 'DE 14 A 16' OR "TA_RANGO" = 'DE 16 A 18' OR "TA_RANGO" = 'DE 18 A 20' OR "TA_RANGO" = 'DE 20 A 22' OR "TA_RANGO" = 'DE 22 A 24') THEN 2
WHEN ( "TA_RANGO" = 'DE 24 A 26' OR "TA_RANGO" = 'DE 26 A 28') THEN 3
ELSE 0
END

tut004

Puede parecer demasiado complejo, sin embargo, es bastante fácil de escribir con la ayuda de la calculadora de campos porque al dar doble click en la estructura CASE ELSE la copia en la pantalla y para la variable al dar click aparece en la ventana de la extrema derecha la opción de elegir los valores únicos, que también al dar doble click copia automáticamente al editor. Además, en tiempo y procesamiento la demanda a la computadora es mucho menor que con otras operaciones.

Para la lluvia haremos exactamente lo mismo, como tengo menos idea de que cantidad sea correcta, pero me gustan los días lluviosos de vez en cuando diremos que de 0 a 400mm es seco, de 400 a 1500 es agradable y más de 1200 es locura. El punto de aquí no es establecer un criterio científico sino saber categorizar. Podemos ver que para la precipitación existe el valor Cov_id que corresponde a los rangos, en este caso usaremos ese para agruparlos, usaremos una notación un poco diferente, pues está permitido poner más de una vez el mismo resultado en el when y a algunos les parecerá más claro así:

CASE
WHEN "COV_ID" IS 1 THEN 1
WHEN "COV_ID" IS 2 THEN 1
WHEN "COV_ID" IS 3 THEN 2
WHEN "COV_ID" IS 4 THEN 2
WHEN "COV_ID" IS 5 THEN 2
WHEN "COV_ID" IS 6 THEN 2
ELSE 3
END

Aquí podemos ver varias cosas, la primera es que si quisieramos la misma categoría podríamos hacer el raster directamente con “COV_ID” pero la técnica es útil incluso para reagrupar datos que ya están categorizados, la segunda, es que este método es mucho más legible que el anterior y, finalmente, que si no hay posibilidades de un dato fuera del rango se puede usar else para evitar comparaciones, en este caso no puede llover menos de 0mm y todo lo que sea mayor que “COV_ID” = 6 es locura, no hace falta escribirlo.

Al convertir a raster decidí utilizar resolución de 6000 pixels cuadrados, es necesario entender que el crecimiento del tamaño es cuadrático, es decir, para 3000 pixels el tamaño de la imagen sería de 3000 x 3000 x 1 byte = 9000000 bytes = 9Mb, para 6000 pixels se convierte en 6000 x 6000 x 1 byte = 36000000 bytes = 36Mb, así, duplicar el lado hace que el tamaño crezca cuatro veces. Por supuesto esto es el peso de una imagen sin compresión con 1 sóla banda de color de 1 byte.

Para saber el nombre de las ciudades tendría que tenerse activada la capa vectorial y verlo, pero para responder las preguntas se usa la calculadora raster, creando una nueva capa de máscara. La calculadora raster funciona con operaciones lógicas.

tut008tut007tut009

¿Existe una ciudad en la republica en que llueva demasiado y sea fría?

Localidad > 0
Precipitación = Diluvio (3)
Temperatura = Frío(1)

("localidadesUrbanasPorEstado@1" > 0) AND ("isotermas@1" = 1) AND ("precipitacion@1"=3)

tut010

El mapa parece obscuro pero al cambiar el estilo para que el valor 0 sea negro y el 1 blanco se ven un par de puntitos:
Tenejapa, en Chiapas
Tetelzingo, Acajete, Tlacolulan, Huayacocotla en Veracruz

Los Reyes, Santa Ana Tzacuala, Zacualtipán, Tianguistengo y Xochicoatlán en Hidalgo
Honey en Puebla

¿En qué ciudad podría vivir si no me gusta la lluvia y me gusta el calor?

Localidad > 0
Precipitación = Seco (1)
Temperatura = Caliente(3)

("localidadesUrbanasPorEstado@1" > 0) AND ("isotermas@1" = 3) AND ("precipitacion@1"=1)

Salieron menos de las que uno pensaría, pero un poco más que en el anterior, la más grande es Los Mochis en Sinaloa, le sigue Ciudad Obregon en Sonora y, aunque parezca extraño también hay en el sur, Progreso y Chicxulub en Yucatán.

¿Cuál sería una buena ciudad para un invernadero, con clima cálido y lluvioso todo el año?

Localidad > 0
Precipitación = Diluvio (3)
Temperatura = Caliente(3)

("localidadesUrbanasPorEstado@1" > 0) AND ("isotermas@1" = 3) AND ("precipitacion@1"=3)

Con lluvia y calurosas hay muchas en el sur de la república, entre las más grandes están Veracruz, Coatzacoalcos, Minatitlán y Villahermosa, San Juan Bautista Tuxtepec, Playa del Carmen y Cozumel.

¿Existen ciudades templadas o frías en Durango?

Localidad = Durango(10)
Temperatura = Fría(1)
Temperatura = Templada(2)

Aquí se utiliza un truco, un poco largo, pero necesario a falta de condicionales:

(("localidadesUrbanasPorEstado@1" = 10) AND ("isotermas@1" = 1))*1 + (("localidadesUrbanasPorEstado@1" = 10) AND ("isotermas@1" = 2))*2

Existen dos ciudades frías en Durango, El Salto y La Ciudad (ambas se ven muy pequeñas pero el INEGI las considera ciudades, también pueden ser cabeceras municipales) y varias templadas, entre ellas la capital, Victoria de Durango, y Gomez Palacio/Lerdo.
Las operaciones binarias generan valores 0 para falso y 1 para verdadero, al hacer la suma funciona como un OR lógico. Además para que tome valores diferentes de 0 se multiplican los resultados verdaderos de la operación binaria por el valor que se desea que tome, que puede ser una variable.

Anuncios

Sobre Google y sus decisiones… El caso de Android Lollipop 25.7.15

Posted by Migsar in Tecnología, Vida.
Tags: , , , , , , , , , , , , , , , , , , ,
add a comment

Es un post que llevo un tiempo pensando, no exactamente en Android, o en la nueva versión, sino en la esencia. Es bastante común el abuso de poder en las grandes empresas, en cualquier ramo, incluso las que suponemos necesarias, como el gobierno, o las no lucrativas. Es por eso que quiero dedicar este post a una ruta ya bastante transitada pero que no por eso deja de ser muy atractiva para las empresas, y que, pese a los supuestos cambios de paradigma, sucede una y otra vez, con un matiz particular en las empresas de tecnologías de la información, tocará a cada quien juzgar y decidir que hacer, sin embargo, aclarar que no es algo individual, el comportamiento de masas tiene grandes consecuencias al definir las posibilidades individuales.

Nota: Sí sólo están interesados en la parte de Android y no en todo el discurso relacionado pasen a los dos últimos párrafos.

Pienso que en México somos particularmente propensos a considerar esos fenómenos como ajenos a nuestra esfera de acción e inmutables, pero espero que cambie algún día. Esa falta de confianza en el poder del individuo para cambiar las cosas y en los derechos del individuo como cliente han hecho que tengamos un pésimo sistema de gobierno, más allá de los políticos en los mecanismos para obtener un servicio, en la calidad del servicio mismo, en la claridad con la que explican las cosas, exigir los supuestos derechos es una lucha contra sistemas de ocultamiento u ofuscación tanto impresos como digitales, contra jerarquías y prejuicios y contra protocolos y servicios que sirven para obtener recursos individuales pero nunca consideran la satisfacción del usuario; también han hecho que tengamos empresas como las controladoras de las telecomunicaciones en México: Telmex de América Móvil y ligada a la familia Slim, Izzi Telecom, antes Cablevisión, de Grupo Televisa ligado a la familia Azcárraga, Totalplay de Grupo Salinas y Axtel ligada a la familia Zambrano. Parece que no tiene que ver, pero aunque se crea que México es una cosita subdesarrollada si se compara con Estados Unidos o algunos países de Europa, las prácticas son las mismas, los abusos son los mismos, la diferencia, y no en mucho grado, son los ciudadanos y que tan permisivos son, con las empresas y con el gobierno que respalda las empresas. Tengo un particular enojo con las empresas de comunicaciones en México por el mal servicio que prestan, pero espero convencer en los próximos párrafos que no se trata de un enojo o capricho.

Volviendo al tema, todo empezó con una pequeña empresa de software llamada Microsoft, que creció y creció por un manejo muy inteligente, un modelo de cobro bastante innovador y una política muy particular: la palabra clave es especificidad, no especialización, ver que usuarios dan más dinero, particularmente si comparten la filosofía de vida, favorecerlos y considerarlos en la toma de desiciones sobre el desarrollo y mantener al resto moderadamente felices para evitar competencia, es decir, no perder usuarios, pero fortalecer a los poderosos. Como es de pensar, el modelo no podía durar para siempre, empezaron a tomarse acciones contra monopolio (no en México, el gobierno sigue felizmente casado con Microsoft) y se obligó a la empresa a incluir competidores para balancear la competencia y favorecer a los usuarios. Lo curioso es que algunas de las empresas que criticaban el monopolio son perfectos modelos actuales de un comportamiento similar. Después surgieron otras empresas que lograron cierta importancia pero no estaban en el momento justo, como Yahoo y Twitter y finalmente surgieron otros pesos pesados: Facebook y Google.

En el 2014 el 90% de las ganancias de Google se debió a los anuncios, su portal de búsqueda es universal, mataron un servicio excelente en términos de rentabilidad financiera autónoma, YouTube, pero lo convirtieron en un zombie generador de ingresos por anuncios y, de modo similar, crearon un servicio de email que tiene sólo como objetivo secundario la satisfacción del cliente, por supuesto hablo de Gmail, su primer objetivo es hacer estudios de mercado bastante específicos, anónimos si se quiere pero demasiado específicos. Entre sus bajas secundarias también se encuentra Blogger, que no es particularmente importante, pero le tenía mucho cariño. El modelo de Twitter es bastante similar, no sé si por ser la ruta inherente a este tipo de empresas o por análisis del comportamiento de Google, pero a fin de cuentas, cada vez son servicios más ajenos al usuario y a su círculo, no puedo decir que no sean personalizados porque hacen un excelente análisis de comportamiento y ofrecen al usuario lo que cree que quiere y a lo que tiene mayor propensión a hacerse adicto, es decir, sí son hechos a la medida y sí satisfacen al usuario, aparentemente, pero curiosamente es una característica que comparten más con drogas y vicios que con otras cosas consideradas más importantes como educación y salud. Un punto a favor de estas tres empresas, el usuario generalmente es bastante ingrato y no tiene idea de lo que quiere, por lo tanto se requieren métricas que digan si lo que el usuario dice que quiere es realmente lo que quiere en base a su comportamiento, al final, el usuario se vuelve una célula en un continuo de marcas y empresas.

A estas alturas es válido preguntar por qué aparece Android Lollipop en el título. La verdad es que fue el detonante, y creo que el papel de Google ha sido preponderante por lo que tiene todo el derecho de aparecer solo en el título, pero hay algunas cosas de Android que me parecen bastante alarmantes que mencionaré a continuación. Llevo un par de días con Android Lollipop, la primera de las cosas que uno nota al instalarlo es que se ve muy chic, pero ya no es nada intuitivo, claro que si se quiere ver el círculo, el triángulo y el cuadro tiene alguna similitud con la función que pretenden, pero ahí termina la cosa. La teoría es que el alfabeto moderno se creó a partir de marcas cuneiformes sumerias, que estaban, a su vez, basadas en pictogramas que representaban acciones, más que sílabas y palabras, fue una evolución lenta y un descubrimiento continuo, por supuesto, el poderoso se impuso, desconocemos quien era pero seguro hubo competidores no tan afortunados; con Google sucede lo mismo, pero sólo necesitaron CINCO versiones o etapas. La pantalla de entrada de texto no tiene ya áreas delimitadas para un caracter específico, claro, Google en algún lado tiene el mapeo de coordenadas a valor, pero para que ofrecerlo al usuario si como sea la ignorancia es dicha y los que compran los celulares más nuevos y gastan más en ellos seguro ya están tan familiarizados con la tecnología que no parece un cambio notable. La pantalla de inicio es más simbólica, pero no necesariamente mejor, al jugar un poco con el desbloqueo y demás uno se da cuenta que los símbolos, de acuerdo a la filosofía Google de Material Design, indican movimiento y dirección, más que posición, en realidad el teléfono lo que busca son gestos (gestures), patrones de movimiento que predicen lo que el usuario quiere hacer y son más flexibles que rutas específicas con posiciones fijas. Inicialmente el gusto por las computadoras se debía a su capacidad de ser objetivas, lamentablemente, esa objetividad no es humana y se han invertido billones de dólares y muchas horas hombre en desarrollar inteligencia artificial, redes neuronales, reconocimiento de patrones, y otras tantas cosas que hacen a los dispositivos parecer mucho más humanos pero ser mucho menos precisos. El control de volumen y encendido, y los botones asociados, la justificación, seguramente la misma: usabilidad e intuición. Por supuesto, todos hemos leído la historia del hombre de negocios en el concierto de Nueva York y como la alarma de su celular (que hasta donde tengo entendido no era Android) arruinó su reputación, y la moraleja aquí es la siguiente, si los que no tienen lógica son demasiados, hay que cambiar la lógica; para mí una alarma que se puede esconder no es más que un reloj, pero es mucho más común, supongo, que los usuarios hagan cosas tan importantes que quieran callar totalmente el celular por un periodo de tiempo ajustable o indefinidamente (posiblemente se te olvide que lo callaste indefinidamente y no suene la alarma que te lo recordaría, así que en próximas versiones esperemos que también haya prioridades en las alarmas y que sea super divertido intentar recordar el desmadre que vamos creando); tampoco veo el sentido de cambiar el botón de apagado a sólo apagado si era estándar y bastante práctico una configuración rápida en un sólo botón, ahora se necesitan tres y todavía tengo perdida la función de modo de avión en manera rápida.

Sé que ya es mucho y para terminar mencionaré que Chrome, que no es indispensable en Android pero que está desarrollado por Google y algo de comunicación interna deberá de haber entre los equipos de desarrollo, te avisa al terminar la actualización de Android que ahora funciona mejor, las tabs están en el área de aplicaciones abiertas, cada una como aplicación separada. Ignorando que una queja de Chrome para escritorio es que consume demasiados recursos, está la cuestión de que la función es opcional y podría preguntar en lugar de imponer. A mí me parece muy incómodo tener todas esas aplicaciones abiertas, siempre tengo tabs para guardar información que no quiero poner en favoritos y que no quiero perder al cerrar el navegador, una especie de término medio y no sé si exista, pero al menos no lo encuentro nada intuitivo, una forma de cerrar todas las tabs juntas sin perder la información. En fin, no es que tengamos muchas opciones, ¿suena familiar la historia?

Una breve introducción a la programación de QGIS 17.7.15

Posted by Migsar in Computación, GIS, Tecnología.
Tags: , , , , , , , , , , ,
add a comment

A continuación explico de manera breve los aspectos básicos de programación de QGIS. Es un error creer que se tiene que entender todo a la primera. La mayoría de los conceptos se verán a profundidad gradualmente al ser necesarios para el desarrollo de plugins, sin embargo, es bueno tener un panorama general que sirva como marco de referencia para los nuevos conocimientos.

QGIS

QGIS es un programa pensado para computadoras de escritorio que permite utilizar Sistemas de Información Geográfica, desde la visualización hasta la creación, edición y el posterior procesamiento o análisis. Es compatible con los formatos de otros programas comerciales y puede trabajar tanto con datos raster (imágenes) como con datos vectoriales.

C++

Es un lenguaje compilado, es el lenguaje en el que QGIS está escrito. Por ser compilado se necesita una versión diferente del programa o plugin para distintos tipos de computadora. Además, es mucho menos amigable que Python para los programadores principiantes. La interfaz gráfica de QGIS se hizo en C++ mediante una librería llamada Qt que se distribuye de manera libre, esta librería tiene una serie de componentes visuales que permiten crear programas, éstos van desde las distintas ventanas y cuadros de diálogo hasta las áreas para imágenes y botones. Es posible agregar plugins a QGIS escritos en C++, lamentablemente no se trata del lenguaje de programación más popular porque tiene una forma de escribir estricta y a veces complicada. Afortunadamente existe una capa en Python que permite utilizar los componentes de la interfaz gráfica sin programar en C++, ocultando las funciones originales con funciones de Python.

Python

Es un lenguaje de programación interpretado, es decir, el programa que lo interpreta (entiende) es diferente para cada plataforma pero los programas escritos en Python son exactamente iguales en todas las computadoras, lo que es una ventaja al escribir y compartir código. Es el lenguaje preferido en el ámbito científico porque es bastante flexible, con una estructura amigable y con manejo incluido de números complejos. QGIS tiene una interfaz en Python desde la que es posible controlar prácticamente todos los aspectos de la aplicación. Lleva tiempo conocer la estructura de objetos que la compone (en la próxima sección se habla al respecto) y pienso que esto es una de las barreras más comunes que enfrentan los usuarios que quieren empezar a utilizar la parte programática de QGIS, pues incluso es difícil empezar a buscar la información en la documentación referente a los distintos componentes.

Programación Orientada a Objetos

Existen libros en donde está muy bien explicada la programación orientada a objetos (recomendar uno) pero se tratará aquí de manera muy superficial para ubicarnos en el contexto necesario para empezar a programar plugins de QGIS. Generalmente se aborda el problema programando con clases y objetos reales y simulando su comportamiento y características, no obstante, creo que así es difícil percibir como se relaciona con un programa de cómputo. Es necesario empezar con ese ejemplo, pero no dejarlo ahí sino aterrizarlo en nuestra materia.

Primero los conceptos, existen tres que me parecen indispensables: objeto, propiedad y método. Existen otros conceptos que son básicos en un tratamiento computacional riguroso, pero que no mencionaremos aquí hasta que sean necesarios. La programación se trata de abstraer la realidad y general modelos, que consideran sólo las características que nos interesan.

Objeto

Si se considera de manera abstracta (indefinida, en el sentido del artículo indefinido en el lenguaje) se llama clase. Las clases representan componentes u objetos, por ejemplo, manzanas, patos, coches, plumas, etc. Estos objetos en el mundo real tienen ciertas características, como el sabor, color o funcionamiento. Es necesario incluirlas en nuestro modelo, aunque hay que tener cuidado de no incluir las características que complicarían innecesariamente el análisis. Las características se dividen en propiedades y métodos, la división es muy tenue y suele depender de los criterios del programador aunque existen ciertos parámetros considerados universales en la decisión.

Propiedad

Se refiere a características pasivas e inmutables por sí mismas. Por ejemplo, el color o el sabor de una manzana, el color o el tamaño de un pato o la velocidad máxima de un coche. En general se trata de datos descriptivos del objeto.

Método

Se refiere a posibilidades de acción o cambio, es decir, características activas. La manzana no tiene ninguna característica de este tipo a diferencia del pato, que puede hacer ruido, caminar, volar o nadar, si es hembra puede poner huevos, etc. El coche puede arrancar, detenerse, acelerar, frenar, abrir las puertas, la cajuela, cambiar de velocidad, etc. En general se trata de funciones, es decir, modificadores de los datos del objeto.

Algunas reflexiones sobre los objetos

Las definiciones anteriores quedarán claras con el uso y es importante saber que en programación siempre hay más de una forma de hacer las cosas, no existen formas incorrectas en términos generales sino que dependiendo del contexto hay formas que ofrecen ventajas sobre otras. Lo que para una persona puede parecer una función para otra puede parecer un dato, por ejemplo, con el pato, uno puede pensar que tiene tres métodos de desplazamiento: caminar, nadar y volar; alguien más puede decir que solo existe un método, desplazar y que el tipo de desplazamiento es una propiedad que puede tomar los valores caminar, nadar o volar. Las dos formas son válidas y la correcta dependerá del procesamiento que se necesite después, quizá solo es importante saber el estudio de las rutas migratorias y no importa el tipo de desplazamiento sino el origen y destino, por lo que resulta complicado escribir tres métodos y es necesario saber la posición espacial del pato, sin embargo, puede ser que se esté estudiando el metabolismo del pato y su consumo calórico diario, en este caso se requeriría una propiedad adicional que se refiera a la energía del pato pero además, no importa ni el origen ni el destino sino el tiempo que el pato pasa desplazándose y el consumo energético relacionado a cada forma por lo que tres métodos separados se vuelven la mejor alternativa. Pueden existir objetos sin propiedades ni métodos pero su utilidad es bastante limitada (o nula).

Ahora daremos un salto a lo abstracto, objetos propiedades y métodos en los programas de computadora. En esencia se trata de lo mismo, la ventana del programa es nuestro objeto padre (o madre) y tiene propiedades, como el tamaño horizontal y el tamaño vertical y métodos, como crear, cerrar, minimizar o detectar si el usuario hace click o mueve el mouse sobre ella. Las cosas se complican un poco si tenemos muchos botones como sucede en cualquier programa moderno, además de la pantalla de captura o visualización y los menús desplegables. Una forma de abordar el problema sería crear muchas funciones para cada uno de los elementos, pero rápidamente nos cansaremos de repetir código y veremos que surgen muchas generalidades, todos los botones se comportan de un modo similar, pueden parecer ligeramente presionados cuando el mouse está sobre ellos y completamente presionados cuando se les hace click, además, se trata de objetos dentro del objeto principal. Lo más fácil es decir que el objeto ventana contiene otros objetos más pequeños, cada uno con métodos y propiedades propios, una forma de representar esto es mediante una estructura de árbol invertida en la que la ventana principal está hasta arriba y los objetos descienden jerárquicamente, pues así como los botones son objetos también lo son los menús y las barras de herramientas; los primeros contienen opciones que pueden ser seleccionadas y las segundas contienen íconos que representan acciones.

APIs

Se conoce como API al conjunto de objetos disponibles para interactuar con una aplicación o biblioteca, el término significa Application Programming Interface, es decir, Interfaz de Programación de la Aplicación. El API es un término muy importante y con el que hay que familiarizarse pues es lo que se busca siempre que se quiere empezar a programar con alguna aplicación o librería en particular. En el caso de QGIS nos tendremos que familiarizar con dos APIs, uno para la parte visual y otro para el procesamiento de datos correspondiente a los sistemas de información geográfica.

Qt

Se mencionó anteriormente que Qt es una biblioteca de componentes (es común aunque semánticamente incorrecto llamar librería a la biblioteca por la similitud con library en inglés, yo uso intercambiablemente los dos términos y no me parece grave hacerlo siempre que se tenga claro el concepto de programación asociado). Se utilizará la documentación de Qt para todo lo que tenga que ver con la interfaz gráfica de QGIS, ya que los componentes no son particulares de QGIS sino generales a cualquier programa que use Qt.

La documentación se encuentra en:

http://doc.qt.io/qt-4.8/

Casi al final de la página aparece Qt API.

QGIS

El API de QGIS hace referencia a las funciones de C++, sin embargo, es accesible desde Python mediante el objeto iface, que se refiere a la interfaz de QGIS disponible para los plugins. Su documentación se encuentra en:

http://qgis.org/api/2.8/index.html

En ambos casos la documentación puede parecer abrumadora al inicio pero con el uso se irá aclarando.

Sobre los sistemas de información geográfica 17.7.15

Posted by Migsar in Computación, GIS, Tecnología.
Tags: , , , ,
add a comment

Hace una semana creé una nueva página en este blog sobre sistemas de información geográfica, ayer escribí un poco acerca de algunos términos de moda relacionado a esto y de la importancia de educar respecto a estos temas. Hace unos momentos inventé una nueva categoría para estos posts y a continuación pienso decir como empezó todo esto. Es un post algo largo y tiene muchos datos personales, si no les interesa eso posiblemente pueden ver otros posts sobre el tema que serán de naturaleza más técnica.

Siempre me han interesado los datos geográficos, se puede ver en la sección de hostales y sitios para acampar en México, que he tenido un poco descuidada pero lleva ya varios años. A inicios del 2014 empecé a vislumbrar mi propia empresa, en abril renuncié a mi trabajo y empecé a trabajar en mis ideas, todavía no he podido terminar el producto, pero debo decir que he avanzado bastante y adelantando un poco, se trataba de un sistema para mensajería georeferenciada; la idea ha ido cambiando un poco pero la esencia sigue siendo la misma, empezar a utilizar la ubicación como elemento rector de aplicaciones móviles y no sólo como atributo opcional informativo, es decir, empezar a permitir al usuario tomar muchas decisiones basándose en su punto en la tierra. Descubrí que la empresa tenía muchísimos aspectos y que hacer una empresa solo era muy difícil pues perdía más tiempo en cosas de logística, publicidad y relaciones públicas que en el desarrollo de mi producto (sé que no era el modo correcto de empezar pero en ese entonces nadie me lo dijo y la verdad es que aún creo que los cursos para emprender que están tan de moda no son muy útiles si se analizan los casos de éxito y los testimonios de empresarios exitosos). Para octubre estaba ya sin dinero para seguir así que volví a buscar trabajo y encontré en una empresa bastante grande relacionada con restaurantes, ahí me tocó entre otras tareas programar un par de cosas relacionadas con Google Maps, áreas de reparto, direcciones de tránsito y ubicaciones. Descubrí que todo eso se hacía muy empíricamente, es decir, existen formas mucho más eficientes de hacerlo. En abril de 2015 dejé de trabajar en esa empresa y volví a trabajar en mi proyecto, la experiencia me hizo decidir cambiar radicalmente como estaba manejando las coordenadas geográficas y empecé a meterme mucho más en el tema.

Por azares del destino me enteré de un diplomado sobre sistemas de información geográfica con open source, parecía caído del cielo, pues siempre he sido gran partidario de los sistemas libres y era justo lo que estaba explorando, en julio de este año empezó el diplomado y está por concluir. Creo que este diplomado ha sido una gran experiencia, he conocido a gente muy capaz y con una gran vocación docente, descubrí que había muchas más aplicaciones de las que había pensado inicialmente y en campos demasiado variados, desde procesos electorales, estudios políticos, ciencias forenses, geografía, biología, estudios de impacto ambiental, etcétera. Creo que falta un poco de detalle en algunos aspectos técnicos de los SIG, pero me parece que en parte es porque se trata de un diplomado y hay limitantes de tiempo, es decir, aclaro que no creo que el no ser ingeniero o científico (en el sentido de físico, matemático o afines) sea excusa para ignorar estos aspectos. También me molesto un poco, ver que algunas personas, afortunadamente una minoría, ve el movimiento open source como una alternativa para los pobres, creyendo que tiene más defectos que el software propietario y que se usa cuando no se puede pagar el otro, sin apreciar todas las ventajas que ofrece para el usuario dispuesto, como el contar con una comunidad que apoya por convicción y no por lograr una venta, que tiene conocimiento científico bastante avanzado y que muchas veces va mucho más adelante que la alternativa comercial aunque requiere una curva de aprendizaje más pronunciada. Finalmente, respecto a este último punto, el diplomado estaba pensado para usuarios finales y no para desarrolladores pero creo que la diferencia debe ser muy sutil y específicamente se refiere a la disposición para intentar las cosas, sin embargo, debo adminir que hace mucha falta información sobre programación para este tipo de sistemas y es lo que me he dado a la tarea de mejorar. Por un lado quiero que exista más información en español, creo que es un grave error de estrategia el no saber inglés, y que se pierden de muchos documentos excelentes pero la realidad es que en México somos bastante apáticos en este sentido.

Empezaré con una serie de posts introductorios, no van orientados al usuario básico, sino al que quiere aprender un poco más sobre el sistema y programar soluciones a la medida. El software sobre el que escribiré es QGIS, que es un excelente Sistema de Información Geográfica de código abierto, pero muchos de los principios son generales, y por lo que tengo entendido Python es uno de los lenguajes más usados para análisis espacial por lo que varias de las cosas serán aplicables a otros programas. Pienso que habrá tres tipos de posts:

  • Información sobre la estructura de QGIS y su uso para desarrollo.
  • Guías para resolver problemas sobre programación en QGIS.
  • Algoritmos particulares de análisis geoespacial.

Estaré encantado de recibir retroalimentación sobre estos temas o ideas sobre posts que les gustaría leer.

GIS, Open Data y Smart Cities no son nada sin ciudadanos inteligentes 17.7.15

Posted by Migsar in Cultura, Ideas, Tecnología, Vida.
Tags: , , , , , , ,
add a comment

Como pongo los términos en inglés para permitir comunicación con el resto del mundo, los explicaré primero.

GIS – Sistemas de Información Geográfica. Se refiere a los sistemas para generación, análisis, distribución y representación de datos geoespaciales.

Open Data – Datos abiertos. La traducción literal no dice mucho, en particular se trata de datos del gobierno, producidos por o para el gobierno y que por ser pagados con el dinero de la población deberían de estar disponibles para ellos, es decir, nosotros.

Smart Cities – Ciudades inteligentes. Muy relacionado a lo anterior y a un término que también está de moda, IoT (Internet of Things); se trata de ciudades que disponen de conectividad muy amplia y de cada vez más dispositivos que aprovechan esta conectividad en beneficio del usuario, la infraestructura produce datos (abiertos) que pueden ser procesados e interpretados para facilitar la toma de decisiones respecto a movilidad, uso y disponibilidad de servicios. Todo esto reduce los costos y desperdicios al incrementar la eficiencia brindando al usuario un servicio mucho más personalizado.

Ahora viene lo interesante. ¿Qué significa todo esto para la población? Estos términos se han puesto de moda en los últimos años y siempre hay muchas personas interesadas en dedicarse a la tecnología, pero también hay muchas interesadas en aprovecharse de la tecnología, no en un sentido ético, sino utilizando ciertos términos para obtener recursos y crear proyectos poco útiles y bastante lucrativos. Existen muchos intermedios, por ejemplo, personas con las mejores intenciones pero sin una preparación técnica adecuada, y por último, personas que podrían mejorar su calidad de vida si supieran utilizar mejor la tecnología pero que ignoran completamente la existencia de la misma. En una ciudad como la Ciudad de México, todo esto se junta y genera un caos, minando aún más la ya deteriorada calidad de vida de sus habitantes, pues los recursos, que por regla son escasos para satisfacer las demandas de la población, se desperdician o se ocupan en proyectos extremadamente lucrativos para unos cuantos que ofrecen un beneficio social ilusorio.

Y no es para desanimarse, sino para educarse, siendo conscientes de que es muy difícil en una cultura con los valores actuales. No me desviaré en el tema de los valores más allá de mencionar que habría que meditar un poco sobre la jerarquía de valores en México, en particular sobre los medios y los fines, pues creo que cuando el ser político, académico o narcotraficante son simples medios para llegar a los mismo fines, no es extraño que un porcentaje similar tenga preferencia por cada una de las opciones.

Los tres términos en el título se pueden unir fácilmente, las ciudades inteligentes funcionan a partir de una cantidad enorme de datos, la mayoría provenientes del espacio público y generalmente gestionados por el gobierno, es decir, datos abiertos. Todos estos datos se refieren a puntos específicos de la ciudad, con coordenadas geográficas definidas y representan estados o posibilidades de acción de los objetos en estas ubicaciones, no es fácil manejar datos con coordenadas, pues en general se necesitan transformaciones para saber la distancia entre los valores obtenidos en el GPS del celular, pues están en grados, minutos y segundos. Como no es fácil manejar estos datos se creó un sofware especializado para hacerlo y, justamente, se trata de los sistemas de información geográfica.

La generación de todos estos datos no es algo nuevo, en México se creó el INEGI en 1983 y desde entonces se obtenían datos bastante precisos sobre ciertas características del territorio y de la población, CFE también generaba muchos datos con un enfoque a la creación de infraestructura y al desarrollo de labores de ingeniería. El servicio meteorológico nacional también lleva bastante tiempo operando y siempre ha tomado mediciones referenciadas a la ubicación geográfica de cada estación. Sin embargo, si hay un cambio muy importante, antes no era posible transmitir toda esa información de manera sencilla a todo mundo, y mucho menos procesarla para todo mundo. Ahora lo es. El procesamiento sigue siendo complicado, pero gracias a internet puede hacerse en centros de cómputo especializados (tanto en universidades como en centros de procesamiento empresariales) y transmitirse casi instantáneamente hasta el usuario. El problema es que siguen siendo muy pocos los usuarios potenciales de estos datos, los beneficios sociales se anuncian para toda la población y en algunos casos puede que sea así, pero la brecha de conocimiento necesaria para la utilización de estos datos y la producción de información a partir de ellos se limita a pocas empresas con la visión y el conocimiento necesario y esto se traduce en datos de mala calidad para el grueso de la población que satisfacen la necesidad teórica pero no factual.

El problema de capacidad se refiere no sólo a los datos sino a las formas de explotación, por ejemplo, la mayoría de los servicios de ubicación y direcciones que usamos actualmente se basan en información que el INEGI tenía desde hace mucho tiempo, sobre calles, puntos de interés, rutas y caminos, etcétera, no obstante, en muchos casos sigue siendo más sencillo obtenerla de empresas privadas que ya hicieron un preprocesamiento que intentar obtenerlo del INEGI. Y si el INEGI no ha mejorado lo suficiente (creo que últimamente ha mejorado mucho) es porque los usuarios no se lo exigimos, y muchas veces no lo exigimos porque no sabemos que es posible, y no sabemos que es posible porque no sabemos que podemos hacer con los datos y, por lo tanto, nunca nos preocupamos de ordenarlos para facilitar su obtención ni de darles formato que facilite el procesamiento.

Creo que con el nacimiento del término Ciudad Inteligente, todo se ha vuelto más complejo, por un lado, se presume mucho la infraestructura de datos que se tiene, y es posible presumirla porque nadie la usa, es bonito tenerla porque nos hace competitivos a nivel internacional, merecedores de reconocimientos y premios, pero no se traduce en un beneficio para la población, por supuesto, es mejor esto que nada, pero no por eso es bueno. Existe mucha información sobre el país, pero su distribución es arbitraria, como lo es su formato, no existe un directorio eficiente de la información que se dispone porque no existe un uso concebido para la misma. Creo que es bastante claro que se llega una y otra vez a circulos viciosos, en donde la población es un factor clave, y no se trata de un fenómeno nuevo, el oro y el petróleo estuvieron ahí desde siempre (para fines prácticos) pero no fue hasta que cada cultura le atribuyó un valor que se hizo lo posible por extraerlos, este valor siempre fue ligado al conocimiento y al uso, la riqueza no existe sin el contexto necesario para su valorización y esto está sucediendo en el país con los datos abiertos, mientras no se utilicen cabalmente por la población son sólo un costo asociado al almacenamiento y la infraestructura para la adquisición desde el punto de vista de infraestructura pública, y son un beneficio para los pocos organismos privados con la capacidad de explotarlos, siendo esto bastante contrario a la idea de beneficio social con la que se anuncian en medios de comunicación y en campañas políticas.

INEGI y la utilidad de la información 02.5.14

Posted by Migsar in Cultura, Tecnología.
Tags: , , , , ,
add a comment

Hago este post con la idea de presentar los problemas que he encontrado durante el desarrollo mi actual proyecto, que requiere datos específicos sobre sectores comerciales particulares en el Distrito Federal, en México. El INEGI (Instituto Nacional de Estadística y Geografía) realiza periodicamente muchas clases de censos, entre los que se encuentran los censos de población y vivienda y los censos económicos, para la realización de estos censos se basa en cuestionarios, que están disponibles en Internet, del mismo modo que se supone que están todos los datos recabados, lamentablemente no todo está disponible en línea aún y algunas cosas ya no están en forma impresa.

Creo que la información es indispensable para cualquier empresa exitosa, en todas las fases de su desarrollo, desde la planeación hasta el procesamiento de datos de operación para la retroalimentación y los ajustes, en este sentido el INEGI es la organización encargada de obtener y distribuir los datos en México, y tiene una muy grande cantidad de datos sobre muy diversos temas, sin embargo, a mis ojos, un problema muy grave, es el acceso a la información. En este caso no se trata de que el acceso esté restringido, sino de que la facilidad para encontrar la información no existe, por lo que muchas veces se redescubre el hilo negro al volver a generar datos que ya existían pero que no se puede saber que existen a menos que uno esté bastante involucrado con la generación de esos datos o que pierda mucho tiempo navegando en la inmensa telaraña que es el sitio del INEGI, no me malentiendan, creo que poco a poco se ha avanzado, el sitio está bien hecho respecto a navegación y es bastante funcional, técnicamente hablando, además de la evidente ventaja de la consulta interactiva de datos a través de Internet, el problema es que no hay un índice claro para su utilización y si existe está inmerso dentro del laberinto del sitio y no es tan visible como debería de ser.

Para muestra un par de situaciones, muchas veces las consultas realizadas se obtienen con la entidad, el municipio y la localidad en clave y la clave no está en el paquete o documento generado, al buscar en Google se obtiene una liga al Catálogo de entidades federativas, municipios y localidades, al darle click a consulta se accede a una forma que en la esquina inferior derecha tiene la opción de descarga de catálogos predefinidos, si uno decide bajarlos en formato zip, se da cuenta que los archivos de datos están en formato .dbf que es una extensión usada por dBase y que no es aceptada automáticamente por los sistemas operativos, se puede suponer que los que utilicen estos datos serán gente con cierto perfil especializado, pero creo que es una suposición que restringe el acceso a los datos por lo que no es propia para un instituto público, por otro lado, se podría poner una guía sencilla de como abrir los archivos y lo mejor sería ofrecer los archivos en varios formatos. Dejando a un lado estos archivos por un momento, si se decide hacer la consulta y se hace la selección correcta de opciones, que no siempre es intuitiva, se obtiene una tabla con la información. Incluso, en la mayoría de los casos, habría sido mucho más sencillo poner una liga a un documento en pdf que se encuentra en Estadística → Aspectos Normativos y Metodológicos → Clasificaciones y Catálogos → Geográficos → Clasificación de entidades, municipios y países, quizá sea muy propia esta organización del sitio para un especialista pero definitivamente puedo decir que intuitiva no es, y además, no sale entre las primeras búsquedas en Google.

Segunda situación, fui a un Centro de Información del INEGI con la intención de obtener unos mapas de las redes de comunicación y curvas de nivel de los estados de Baja California y Baja California Sur, la persona que me atendió, muy amablemente, me indicó que posiblemente la información que buscaba se encontraba en un condensado estatal, al buscarlo encontró el de Baja California Sur, pero no el de Baja California. Efectivamente se trataba de la información que buscaba, lamentablemente, el condensado que faltaba no estaba disponible pues está planeado que desparezca esa parte de almacén y que toda la información se obtenga en línea, según me explicó; es una idea que me parece excelente, pero al llegar a mi casa y buscar el otro condensado estatal me encuentro con la simpática leyenda que dice que actualmente sólo 22 de los 32 condensados estatales se encuentran disponibles en línea, ninguno de los tres que me interesan está en línea, incluido el del Distrito Federal. De igual manera, no todas las cartas topográficas se encuentran actualmente disponibles en Internet.

Por último, dentro de los Censos Económicos se encuentra una lista del número de plazas y centros comerciales por entidad federativa, indica que para el Distrito Federal se tienen 332 plazas y centros comerciales, pero no encontré en el documento los parámetros que definen en que punto un grupo de locales comerciales se convierten en una plaza o centro comercial, tampoco encontré en Internet el listado de los 332 centros comerciales, al parecer esta información puede obtenerse en un centro de consulta, espero que así sea, pero resulta contrario a lo que me informó el personal cuando fui a uno, sobre que toda la información estará disponible en internet.

En fin, me parece muy importante aclarar que lo que critico no es la labor del INEGI, que me parece muy buena, sino que el acceso a la información a veces no se trata de libertad o censura, sino de facilitar que la información sea útil, a través de la difusión de lo que está disponible sin suposiciones acerca del perfil del usuario al que va dirigido pues el hacer esta suposición segrega a un número de usuarios que quizá no sea tan grande pero que quizá podría cambiar favorablemente las cosas pues la mayor parte de los casos de cambios sustanciales en una industria o sector se hacen por gente que no está tan involucrada por el sector y no tiene los bloqueos culturales propios del mismo. Si el INEGI intenta informar a toda la población creo que debería buscar un mecanismo de clasificación que sea intuitivo para la mayoría, definitivamente los usuarios más especializados se adaptarán, pero lo contrario no es tan sencillo que suceda.

Hardware Revenge 26.12.12

Posted by Migsar in Computación, Tecnología.
Tags: , ,
add a comment

De un tiempo para acá cada vez he oído más sobre emprendedores que se dedican al hardware, además surgen incubadoras orientadas a hardware como HAXLR8R, cada vez más personas se interesan en aplicaciones como Arduino y en pequeños proyectos de hardware. Creo que gran parte de esto es consecuencia del uso masivo de smartphones y dispositivos móviles, sin embargo, es muy interesante ver que surgen pequeñas aplicaciones que jamás se hubieran pensado. Para alguien como yo, que disfruta de las historias de ciencia ficción, cree en la inteligencia artificial y la simbiosis entre natural y artificial mediante el uso de cualquier tipo de tecnología para incrementar las capacidades humanas, esto es el inicio de una etapa bastante interesante, pues los precios bajan y la disponibilidad aumenta, permitiendo una distribución del conocimiento que antes no se podía dar.

adafruit

Este post se trata sobre el hardware, en particular sobre dos sitios bastante interesantes para hobbistas, el primero es Adafruit Industries, un sitio creado por una estudiante de electrónica del MIT que se convirtió en industria gracias a los tutoriales publicados, el segundo es MaKey MaKey, un sitio un poco más limitado en alcance, pero no por eso menos interesante, se trata de un pequeño dispositivo que convierte a cualquier cosa que conduzca electricidad en un teclado, es muy divertido ver todos los videos que suben los usuarios sobre como utilizar el circuito.

makeymakey

Raspberry Pi 26.12.12

Posted by Migsar in Computación, Tecnología.
Tags: , , ,
add a comment

spriteRaspberryPi¿Alguna vez has pensado en comprar una computadora por menos de $1000? Sí tu respuesta fue afirmativa continua leyendo, pues tal vez estás en tu día de suerte.

Raspberry Pi es una iniciativa para hacer una computadora especialmente barata que permita que gente con pocos recursos la adquiera, en particular niños, y que puedan aprender a programar en ella, se trata de una organización dedicada a la caridad, sin embargo, gran parte de su éxito se debe a hobbistas que encuentran en esta mini computadora una tarjeta de pruebas bastante accesible y poderosa.

Entonces, ¿qué es Raspberry Pi? El procesador del sistema es un SoC Broadcom BCM2835, que contiene un CPU ARM1176JZFS con punto flotante corriendo a 700Mhz y un GPU Videocore 4. El GPU soporta reproducción con calidad BluRay usando H.264 a 40MBits/s. Tiene un núcleo 3D que se accesa mediante las bibliotecas OpenGL ES2.0 y OpenVG. Existen dos modelos, el A y el B, el primero tiene 256 Mb de RAM y un puerto USB, el segundo tiene 512 Mb de RAM, incluye dos puertos USB y un puerto Ethernet. el precio es de $25 y $35 respectivamente.

Un pro, o contra, según se vea, es que sólo se distribuye a través de Premier Farnell/Element 14 o RS Components, los dos entregan a todo el mundo, pero el precio mencionado no incluye impuestos ni costos de envío. Toda la información la obtuve del sitio de Raspberry Pi.

Como en todo, hay letras pequeñas, en este caso, la computadora no incluye gabinete, ni adaptador para la corriente (que no importa mucho porque es con USB y actualmente todos los celulares traen uno) ni tarjeta de memoria (que sí importa porque es el disco duro de la computadora y, por lo tanto, necesaria para el booteo). Además existen muchos periféricos que se le pueden adaptar

De ojos y colores – Parte II 02.4.12

Posted by Migsar in Arte, Computación, Fotografía, Tecnología.
Tags: , , , , , , , , , , , , , , ,
add a comment

Espacio RGB

Como se mencionó anteriormente su nombre viene de los colores primarios que utiliza: rojo, verde y azul. Un color en RGB se representa por una tercia de valores de 8 bits, uno por cada canal, es decir, uno por color, algunas veces se usa un cuarto canal llamado alfa, que se refiere a la transparencia. Un número binario de ocho digitos puede representar 28 valores (256 tomando en cuenta el 0), esto nos da una combinación de 2563 = 16 777 216 colores. Algunas veces los colores se pueden normalizar, es decir, se dividen entre el valor máximo para expresarlos como porcentaje (1 es 100 %, 0.5 es 50 %, etc.) o expresarse cada componente en sistema hexadecimal (16 símbolos, los primeros 10 son iguales a los del decimal y el resto son las primeras seis letras del alfabeto: A, B, C, D, E y F).

Espacios de color perceptualmente uniforme

Existe un grave problema con los espacios RGB y CMYK cuando es importante tomar en cuenta la forma en que el ser humano percibe los colores, son espacios no uniformes. Se considera un espacio perceptualmente uniforme cuando la distancia entre dos puntos de color (las componentes de cada color se pueden considerar coordenadas por lo que es posible representar cada color en un espacio tridimensional) en cualquier parte del espacio corresponde a la diferencia perceptual entre esos dos colores para la visión humana. En el caso del espacio RGB dos colores distintos separados por una distancia fija en diversas partes del espacio no tienen la misma diferencia perceptual, esto quiere decir que dos colores que para el ser humano son muy parecidos en el espacio RGB a veces estarán juntos y a veces muy separados, o que dos colores que no se parezcan para nosotros pueden estar muy próximos en el espacio RGB. Por ejemplo, en el cubo RGB existe la misma distancia entre el cyan y el azul que entre el azul y el negro, y para un ser humano el azul se parece mucho más al cyan que al negro, y el amarillo y el rojo están separados por esa misma distancia. Una forma alternativa de definir los colores es mediante matices, que es la cantidad de color que se tiene, también se usan algunos matices primarios rojo, verde, azul, magenta y amarillo, hablamos de matices cuando decimos que un color es azulado, verdoso o rojizo. El blanco, el negro y los grises no son considerados matices, así que podemos tener colores cromáticos (contienen matiz) y acromáticos (no contienen matiz) .

Espacio HSV

El primer espacio perceptualmente uniforme es el HSV (otra vez por las siglas en inglés: Hue, Saturation, Value que se traduce como Matiz, Saturación y Valor), al valor también se le conoce como intensidad y a veces podemos encontrar escrito HSI. El matiz es la propiedad de color de la luz, es decir, el componente cromático, que también puede considerarse una característica de la superficie reflejante o transmisora de la luz, por ejemplo, una manzana refleja el matiz rojo. La saturación es la cantidad de matiz que se tiene en un color dado, los grises carecen de matices, así que su saturación es igual a cero. El brillo (L), intensidad (I) o valor (V) indica que tan brillante es un color, es decir, cuanta luz se transmite o se refleja, esto es proporcional a la energía electromagnética irradiada por el objeto.

Como se mencionó antes, el ser humano percibe el color a través de los conos, que requieren más energía que los bastones, por lo que la luminosidad es esencial para que veamos el color, una forma graciosa de imaginar esto es pensar en la misma manzana roja en un cuarto totalmente obscuro, no sólo no veremos el rojo, sino que tampoco veremos la manzana, aunque sepamos que está y es roja, en este caso el matiz y la saturación existen pero la intensidad es cero por lo que se ve negro.

Espacio CIELAB

El espacio CIELAB fue desarrollado en los años setenta como un estandar internacional por la CIE (Commission International de l’éclairage – Comisión Internacional de la iluminación). La distancia entre dos puntos en el espacio CIELAB corresponde a la diferencia perceptual entre los dos colores para el sistema de visión humano. Este espacio es muy útil en técnicas de análisis de color y aplicaciones en las que se requiere que las computadoras interpreten el color de manera similar a como lo vería un ser humano, sin embargo no es un espacio de color tan difundido entre usuarios ordinarios.

De ojos y colores – Parte I 02.4.12

Posted by Migsar in Arte, Computación, Fotografía, Tecnología.
Tags: , , , , , , ,
add a comment

Este es el primero de dos posts que pondré sobre el color, inicialmente pensaba ponerlos en uno solo pero es algo largo más imágenes.

Este post es sobre colores y las formas que usamos para representarlos, no se trata de un punto de vista experto sino de una muy breve introducción, se basa en información que aparece en el tercer capítulo de Image Processing: Principles & Applications, de Tinku Acharya y Ajoy K. Ray publicado por Wiley. El color es muy importante para el ser humano, su percepción afecta nuestro estado de ánimo y su importancia es tal que gran numero de expresiones en nuestro lenguaje se basan en características que asociamos con colores. Es común que en la escuela nos digan que es una onda y que veamos el espectro completo en una gráfica con información sobre los extremos de nuestra percepción, pero creo que es una idea bastante vaga, aquí intento resolver esas dudas, poniendo un poquito de biología, un poquito de física y un énfasis particular en su representación, algo que me parece muy útil con las nuevas tecnologías y que es bastante sencillo de entender y utilizar.

Lo primero es decir que el ser humano se entera del color a través de los ojos, y de sus limitaciones técnicas dependen las nuestras. La señal visual se transmite de la retina al cerebro humano a mediante cerca de millón y medio de neuronas vía los nervios ópticos. Dentro de la retina existen dos clases de fotoreceptores, los bastones y los conos, los primeros se encargan de registrar la intensidad, no son sensibles a los colores sino a la cantidad de luz, por lo que no se volverán a mencionar por aquí, es curioso mencionar que en condiciones de poca luz sólo funcionan los bastones por lo que nuestra visión es en blanco y negro. Es importante introducir dos términos empleados en lo relativo a la visión: visión escotópica (etimológicamente viene de skotos – obscuridad y opia – relativo a la vista, es una visión monocromática), que se refiere a la visión con niveles muy bajos de iluminación, y visión fotópica (etimológicamente foto – luz) que se refiere a la visión en condiciones de buena iluminación… existe un tercer término que se llama visión mesópica y es un punto intermedio entre las dos ya mencionadas.

Los conos son los que captan el color, y se subdividen de acuerdo al tono que registran, generalmente se dice que existen conos para rojo, verde y azul, en realidad nuestro sistema de vista no es tan equilibrado y percibe mucho mejor el verde que el resto de los colores, las longitudes de onda que registran los conos son 430 nm 530 nm y 560 nm, que son respectivamente violeta, azul-verde y amarillo-verde, por lo tanto es recomendable referirse a los conos de longitud de onda corta, media y larga en lugar de conos de rojo, verde y azul. Dependiendo de la estimulación que reciben los conos el ser humano puede percibir colores que van desde los 400 nm (violeta) hasta los 770 nm (rojo). Ahora que se han mencionado las longitudes de onda, podemos hablar de una función relaciona la sensibilidad del ojo humano con las distintas longitudes de onda de los colores, esta función se conoce como respuesta espectral, para el ojo humano el pico de sensibilidad de la visión fotópica se da en 555 nm (en la visión escotópica es de 507 nm), el color verde va desde los 520 hasta los 570 nm, por lo que se puede ver que en ambos tipos de visión somos más sensibles al verde, el azul va de 450 a 490 nm y el rojo de 630 a 740 nm.

Ahora que hemos descrito nuestro principal sensor podemos pasar a hablar de la señal sentida, es decir, el color. Existen muchas formas de clasificarlo en varios espacios de color, la primera forma es la asociada a los pigmentos, pues se utiliza en los medios impresos y en tejidos, en en este caso los colores primarios son los que nos enseñan desde el kinder: rojo, azul y amarillo (CMYK por los nombres de los colores en inglés: Cyan, Magenta, Yellow, blacK), sin embargo esto es cierto para combinaciones substractivas; para combinaciones aditivas, como las luces y la pantalla de la computadora, los colores primarios son rojo, verde y azul (RGB por los nombres de los colores en inglés: Red, Green, Blue). Con el auge de las computadoras se hizo bastante más común el oir hablar del espacio RGB y con internet y los sitios web todavía más.