Mostrando entradas con la etiqueta hipermapa. Mostrar todas las entradas
Mostrando entradas con la etiqueta hipermapa. Mostrar todas las entradas

domingo, 16 de marzo de 2014

Garmin y los BirdsEye JNX (3).

Hoy toca explicar un proceso alternativo para generar hipermapas JNX para los dispositivos Garmin compatibles (unidades más modernas y con firmware parcheado). Si en el post anterior vimos como hacerlos usando solamente Global Mapper y jnxCustomizer (hilo oficial), ahora usaremos además jnxmerge y JNXer, dos utilidades adicionales. Para compensar esa desventaja inicial de usar cuatro pasos en vez de dos, nuestro JNX resultante nos ocupará muchos menos megas de esta manera. La razón es que jnxCustomizer necesita para unir dos JNX que ambos tengan las mismas teselas, lo que nos obliga a generar los JNX topo con el mismo número de mosaicos que el JNX orto (que es el que realmente aumenta el peso final del archivo dada su resolución). Con jnxmerge esto no es necesario por lo que podemos generar los JNX topo sin la ortofoto de fondo, consiguiendo un gran ahorro de tamaño como veremos. Y, en cualquier caso, ¿no os gusta trastear como a mi? Jaja... Pues a trastear.
La primera parte (generar los JNX de las capas que queramos con Global Mapper) no difiere apenas del post anterior. Simplemente exportaremos la orto sola por un lado, y después los mapas topo sin la orto cargada. El ahorro de teselas es brutal (una ortofoto de unos 11000 mosaicos puede ocupar unos 60 en mapa topográfico para el mismo terreno), lo que se traduce en un menor peso global del JNX.
Una vez tenemos los tres JNX que queremos unir abrimos jnxmerge, una sencillísima utilidad para unirlos. De interfaz básica, pinchamos en open file 1 y seleccionamos el topo50; pinchamos en open file 2 seleccionando el topo25 y le damos a merge, dándole nombre y ubicación al nuevo JNX dos niveles. En breves segundos lo tendremos hecho. Como la interfaz de jnxmerge es tan básica que sólo permite cargar dos mapas, para unir el tercero repetimos la operación cargando esta vez el JNX unión de los dos topo anteriores, más la orto y volvemos a unirlos dándole nombre.
Pantalla resultante de la unión de los dos primeros jnx: topo50 y topo25.

El problema de jnxmerge es que nuestro JNX resultante tendrá los niveles al zoom que le de la gana y además genera un JNX versión 3, algo ya caduco que no entienden los nuevos firmwares de los dispositivos Garmin. Y para colmo jnxCustomizer no los puede cargar y actualizar (aunque en teoría está concebido para ambas versiones).
Error de jnxCustomizer al intentar abrir un jnx generado con jnxmerge.

Por ello necesitamos JNXer. Es JNXer un programilla mucho más atractivo visualmente; abrimos nuestro JNX de 3 niveles generado con jnxmerge (de nombre mapa3niveles). En la pantalla principal podemos movernos visualizando los distintos niveles así como información detallada de cada uno (mosaicos, draworder, nivel de zoom, etc...). Se observa como el DrawOrder es erróneo por completo (-1).

En la pantalla secundaria (Lista de Mapas) aún mucha más información. Aquí es donde cambiáremos los niveles de zoom de cada capa y actualizaremos el JNX a la versión 4. Después actualizaremos el mapa (UpdateMap) -el draworder cambiará a 30 y se mantendrán los zoom elegidos para cada nivel- y lo salvaremos (SaveMap). El programa salva por defecto añadiendo el sufijo _saved al nombre del archivo original.

Lamentablemente este archivo resultante sigue sin ser visible en BaseCamp, por lo que el último paso es cargarlo en jnxCustomizer 1.0.24 (la 1.0.28 no me lo ha hecho), activar las casillas de los niveles 1, 2 y 3 y guardarlo (el sufijo _new se añade al nombre del archivo original). Podemos añadir también el número de Grupo y su descripción para ir creando una familia de mapas que luego pueden encenderse o apagarse a la vez en nuestro gps.
Con esto nuestro JNX debería ser perfectamente visible en BaseCamp y en los dispositivos Garmin compatibles. ADVERTENCIA: ESTE PROCEDIMIENTO DE GENERAR JNX MULTINIVEL ES BASTANTE CAPRICHOSO E IMPREDECIBLE. ME HA PASADO DE TODO EN LAS PRUEBAS: DESDE QUE FUNCIONEN A LA PRIMERA, A QUE UNAS VECES SI, OTRAS NO O DEPENDA DEL ORDENADOR EN EL QUE TRABAJE. Así que tomaos esto como unas prácticas y no desesperéis tanto como yo sino os resulta, porque es para enloquecer.

Ayer me harté de hacer pruebas siguiendo EXACTAMENTE los pasos de este artículo y ninguna de las pruebas se veía en BaseCamp (Windows 7). Hoy acabo de hacer otra prueba siguiendo EXACTAMENTE los pasos de este artículo (Windows XP, no se si tendrá algo que ver...) y aquí os dejo las capturas. A la primera.
Topo50 a 1km de zoom
Topo25 a 300m de zoom

Ortofoto a 100m de zoom

De hecho este JNX elaborado de forma tan artesanal es perfectamente visible en Global Mapper, funcionando perfectamente los distintos niveles de zoom del hipermapa, como se ve en las siguientes capturas con su correspondiente nivel de zoom:
JNX elaborado según este artículo abierto en Global Mapper. Estructura del archivo en el Control Center.

Como veis, un proceso distinto, algo más laborioso pero con un resultado de un JNX mucho más ligero. Eso si es que funciona, claro... La decisión de cómo hacerlos es vuestra. Lo que parece que nunca falla es cargar en la carpeta BirdsEye un jnx individual de cada capa y que vayan entrando dependiendo del nivel de zoom configurado para cada uno.
Se agradecen comentarios de los resultados a los que probéis este sistema, que de editar el post con los nuevos descubrimientos siempre hay tiempo.


viernes, 14 de marzo de 2014

Garmin y los BirdsEye JNX (2).

Seguimos indagando en el complicado y caprichoso asunto de los JNX, el formato para introducir mapas raster en dispositivos Garmin compatibles, también conocido como BirdsEye. En este artículo nos proponemos crear un JNX de varios niveles, es decir, que contenga mapa topográfico y ortofoto y que, dependiendo del nivel de zoom se visualice el uno o el otro (hipermapa para los amigos). 
Este efecto se puede conseguir también con dos mapas individuales: un JNX de mapa topográfico con nivel de zoom 800 metros -por ejemplo-  y otro JNX de ortofoto con nivel de zoom 200 metros -por ejemplo-. Colocados ambos en la carpeta BirdsEye de nuestro Garmin se visualizará uno u otro cuando entremos en el nivel de zoom establecido. Pero ya puestos en harina, y dado que el formato BirdsEye lo permite, busquemos eso mismo en un único archivo.
Lo primero es preparar los jnx que vamos a necesitar con Global Mapper. Vamos a rizar el rizo y hacer un jnx de tres niveles: topo50, topo25 y orto. Como es fundamental que los tres mapas tengan la misma extensión de terreno (más exactamente el mismo número de mosaicos) para luego unirlos con éxito, os explico en un vídeo la manera infalible de recortar los tres mapas de un golpe:

Os recomiendo que no seleccionéis zonas demasiado extensas pues los tiempos de exportación y tamaños de los archivos se pueden disparar. Y si cada JNX se compone de x teselas, al unir los tres el resultado será de x por 3 teselas, con lo que podríamos superar el máximo de teselas permitidas para el JNX (unas 50000 sino recuerdo mal). De nuevo el probar varias veces es el mejor maestro. Preparamos una carpeta ("JNX Garmin" por ejemplo) para alojar las exportaciones y con los tres mapas activados y visibles (el topo50 en la capa superior) exportamos el JNX con los parámetros habituales y le llamamos mapa1 topo50. Os recomiendo también reducir la calidad de las teselas jpg a 75-80, pues la diferencia de calidad es poca y el peso en megas del JNX se reduce bastante.

A continuación "apagamos" el topo50 dejando visible el topo25 y volvemos a exportar a jnx (le llamo  mapa2 topo25). Y por último "apagamos" el topo25 dejando visible la orto y exportamos a JNX con nombre mapa3 orto.
Con nuestros tres JNX en nuestra carpeta abrimos el JNX Customizer (versión 1.0.24) y en el modo Batch, con la carpeta de nuestros mapas seleccionada en el árbol de carpetas, pinchamos en Cargar para que el programa nos muestre los JNX disponibles en esa carpeta. Debemos tener delante una pantalla como esta:

Se nos muestran los tres JNX generados (mapa1 topo50, mapa2 topo25 y mapa3 orto) con las características con las que Global Mapper ha exportado por defecto, esto es: draw order de 30, 11451 teselas de mosaico, y el número de niveles (1) y nivel de zoom de cada mapa (en este caso 80 metros para todos pues prima la orto que teníamos de fondo para conseguir en los tres JNX el mismo número de teselas). El nombre de los archivos JNX generados no es casualidad, pues tras 47000 pruebas y varios ataques de locura, descubrí que la unión de JNX sólo funciona bien si tenemos los mapas en el orden alfabético correcto (primero el topo50, luego el topo25 y luego la orto; sólo así jnxCustomizer asigna en nivel 1 al topo50, el 2 al topo25 y el 3 a la orto). Si habéis puesto unos nombres de archivo a los JNX que no corresponden alfabéticamente simplemente renombradlos con otros que cumplan el orden alfabético necesario.
Con los tres mapas seleccionados (marquita en el lado izquierdo) rellenamos las opciones de exportación: familia 15 "hipermapa 3 niveles" (o el nombre y la familia identificativos que queráis -dos dígitos-), nivel 0 a 3 kms (para el topo50), nivel 1 a 1,2 kms (para el topo25), y nivel 2 a 200 metros (para la orto). DrawOrder lo podemos dejar por defecto, pues en 30 es seguro que no tapa los mapas Garmin. Pinchamos en Unir mapas y se nos genera un nuevo JNX en la misma carpeta de nombre joinxxxxxx (siendo xxxxxx la fecha de generación del archivo).

Cerramos la ventana Batch y cargamos el nuevo JNX en la vista normal del Customizer para asegurarnos que contiene los parámetros deseados de niveles de zoom; si no es así (que no será pues un bug del programa pone el número 1 en todos los niveles) los cambiamos y guardamos. Aquí debo confesaros que, en mi maratón de prueba-error-prueba-error, muchos niveles de zoom no me han funcionado y luego no era capaz de ver el JNX en BaseCamp; por lo que hasta que sepa porqué (probablemente algo relacionado con el desfase entre zoom de BaseCamp y zoom del gps) he decidido poner los niveles 200 metros para la orto, 1,2 kms para el topo25, y 3 kms para el topo50. Aparte de que así me funciona, la verdad son niveles bastante razonables para un visionado decente. De cualquier forma lo mejor es que hagáis varias pruebas hasta dar con la combinación que más os satisfaga y funcione. También os comento que haciendo el proceso con jnxCustomizer 1.0.28 no me ha resultado  (vaya usted a saber por qué) y los JNX no se veían en BaseCamp, así que he trabajado con la versión 1.0.24.

Puede parecer un proceso algo complicado, pero os aseguro que la alternativa que conozco (usar aparte de jnxCustomizer, jnxmerge -para unir mapas- y JNXer -para rectificar niveles y la versión del JNX-) es aún peor, aunque JNXer me ha parecido un programa muy apañado y con bastante utilidad y tendríamos la ventaja de conseguir un JNX de mucho menos peso ya que jnxmerge no requiere el mismo número de teselas para unir los mapas con lo que los mapas topo constan de muy pocos mosaicos. Quizá en el próximo artículo os explique este otro sistema...
En la web de IOGREA, donde tenéis disponibles los JNX de toda España, también se explica el proceso que han seguido ellos, aunque parece que ese sistema se ha complicado bastante desde que las últimas versiones de MOBAC ya no traen acceso a los servidores con ortofotos. Probablemente no compense para nada elaborar uno mismo estos JNX teniéndolos en la web de IOGREA de toda España y por una simple donación simbólica (y seguro que mejor trabajados y mucho más maximizados en tamaño y rendimiento); pero entre la curiosidad de cómo hacerlos y que es bonito trastear, nació este tutorial.

Sólo nos resta pegar el nuevo JNX en la carpeta BirdsEye del dispositivo Garmin y arrancar BaseCamp para comprobar que todo ha salido bien. De nuevo os recuerdo que vuestras propias pruebas os llevarán a encontrar la combinación idónea (es muy posible que sea mejor bajar el zoom del topo50 a 2kms y el del topo25 a 800 metros, por ejemplo... O que queráis usar otro tipo de mapas, o más niveles, o menos...). Os dejo capturas:
Zoom a 3 kms mostrando el Topo50. Mapa cargado OSM España para BaseCamp.
Zoom a 300 metros mostrando el Topo25. Mapa cargado TopoHispania 2.04 para BaseCamp.
Zoom a 100 metros mostrando la ortofoto. Mapa cargado Topo España v5 PRO para BaseCamp.
Y, por supuesto, pasar el hipermapa JNX a un dispositivo Garmin real con firmware parcheado (yo trabajo con un pen drive emulando un Montana 650) para la última comprobación sobre el terreno. Ahí es donde comprobaréis cuales son los niveles de zoom que realmente van bien. Como datos específicos os diré que el JNX  de 3 niveles resultante de este artículo tiene una extensión de 19 kms cuadrados de terreno, 34353 teselas (11451x3), y exportado a una calidad de mosaico de 80, me ha salido con un peso de 200 megas. Usando el proceso con jnxmerge y JNXer se queda en la mitad.


domingo, 15 de diciembre de 2013

Hipermapas en CompeGPS.

Una de las utilidades más desconocidas para los que trabajamos bastante con CompeGPS es la posibilidad de utilizar hipermapas. Los hipermapas son la fusión de varios mapas en uno sólo, pero no una fusión de capas como vimos en algunos casos, de forma que algunos datos vectoriales se fusionaran con una ortofoto, por ejemplo. A mi entender la verdadera utilidad de estos hipermapas es que podemos elegir cual de ellos se visualizará a determinado nivel de zoom. Por ejemplo, cuando un mapa raster convencional alcanza un zoom de unos 2m/pixel y empieza a pixelarse (lógico pues no deja de ser una imagen como otra cualquiera),  sería ideal que a partir de ese zoom comience a verse la ortofoto de la misma zona, que son archivos pesados con una resolución muchísimo mayor.
CompeGPS tiene integrada en su programa de una manera sencilla esta posibilidad; también la explica de una manera más artesanal en este PDF que he visto sobre el tema y sobre la que luego volveremos. Primero os dejo el video del proceso normal para crear un hipermapa en CompeGPS:


Como habéis visto el hipermapa que hemos generado en el vídeo nos da error al intentar cargarlo de nuevo. Podria pensarse que no hemos pasado los mapas previos al formato raster de Compe (como dicen en el PDF de arriba); pero no, simplemente después de mucho curiosear en la estructura del archivo me he dado cuenta que CompeGPS no lo genera bien (desconozco si es problema de mi versión -7.4- o es un problema general del programa). Abrimos el hipermapa con un editor de texto (bloc de notas) y tenemos esto:

CompeGPS MAP File
<Header>
Version=2
VerCompeGPS=7.4
Projection=
Coordinates=1
Datum=WGS 84
</Header>
<HiperMapLayers>
  <HLayer File="0105c2-h30.ecw" MinZoomLevel="2.000"/>
  <HLayer File="barni orto.ecw" MaxZoomLevel="2.000"/>
</HiperMapLayers>

¿Qué se echa en falta? La línea Projection está vacía. La modificamos para que quede de la siguiente forma (ya que nuestros mapas están en proyección UTM, son de la zona 30 y del hemisferio Norte)

Projection=0,UTM,30,N,

Y lo volvemos a salvar. De esta forma al abrir el hipermapa en CompeGPS ya no os dará error y lo cargará con los mapas y el nivel de zoom que le hayamos especificado (incluso usando mapas en ecw directamente). Repito que no se si es problema mío o pasa en más versiones de Compe pero ahí queda el apaño. Así que si por lo que fuere no os funciona el sistema del vídeo de crear un hipermapa directamente desde Compe (que sería lo suyo), siempre podéis crear un archivo de texto, pegarle la estructura de líneas que detallo a continuación, modificar los parámetros a vuestro gusto, cambiarle la extensión de .txt a .imp y a funcionar.