miércoles, 24 de septiembre de 2014

Convertir fichero KML a PLT y GPX II

https://drive.google.com/file/d/0B0wjloS-L7fxbzBnQ2RMZlcxNUU
Hasta el momento, lo que he logrado ver, es que las coordenadas en un fichero kml  son una serie de ternas de números (-6.0906000,43.0571700,1200) separadas por un espacio. Cada terna está formada por la longitud (-6.0906000), la latitud (43.0571700) y la altitud, separadas por comas, en una única línea. El principal problema a la hora de convertir esas coordenadas es que cada coordenada no está en una línea distinta, todas ellas están en la misma línea. Aunque oziexplorer permite abrir el fichero KML y salvarlo como PLT o como GPX, yo no conozco ninguna aplicación que trasforme el camino seguido a wpt o a ruta.
 He preparado tres métodos para introducir esos saltos de línea y un libro excel que convierte el formato kml a los formatos que utilizan Oziexplorer y Garmin (GPX).

  • Actualmente sigo utilizando windows XP y office 2003. Puede que con otra configuración los siguientes pasos funcionen de manera diferente, o no funciones.
  • Aunque hay varios editores de texto que pueden valernos, yo utilizo el que todos los usuarios de windows tenemos, el Bloc de notas (notepad). 
  • Utilizo excel, pero puede ser muy interesante tener instalado open office o libre office.
  • Abrimos con el bloc de notas el fichero kml. Buscamos, estan al final, la línea con las coordenadas. Nos quedamos solo con las coordenadas. Salvamos como texto.
  • Abrimos un libro excel en blanco, escribimos, en cualquier celda =caracter(10). Nos sale un carácter inidentificable.
  • En el bloc de notas de las coordenadas elegimos Edición->Reemplazar. Buscamos los espacios en blanco, un golpe al espaciador. En reemplazar ponemos el carácter 10, para ello vamos a la celda en donde hemos escrito =caracter(10), copiamos y situados en Reemplazar pegamos ese valor con ctrl+V. Si además de el carácter 10 aparecen unas comillas, las eliminamos. Reemplazamos todo.
  • Guardamos como TXT. 
  • Abrimos ese fichero con excel, bien desde el propio excel, bien mediante el botón derecho del ratón con "Abrir con" y seleccionando excel.

Segundo método: 

  • Nos quedamos solo con las coordenadas.
  • Reemplazamos los espacios por "<br>".
  • Salvamos como HTM.
  • Damos un doble click sobre el fichero. Se abre con el explorador.
  • Copiamos del explorador a excel.
Tercer método:

  • Consiste en crear una tabla HTM.
  • Nos quedamos solo con las coordenadas.
  • Trasformamos esa línea en una tabla HTM. Pra ello:
  • Reemplazamos los espacios en blanco por </tr><tr><td>
  • Antes de las coordenadas escribimos <table><tr><td>
  • Después de las coordenadas escribimos </table>
  • Guardamos como HTM
  • Abrimos ese fichero con excel, bien desde el propio excel, bien mediante el botón derecho del ratón con "Abrir con" y seleccionando excel.
  • Las coordenadas ocupan una sola columna. Para pasarlas a varias columnas utilizo, seleccionando toda la columna, Datos->Texto en Columnas. Indicamos que la coma funciona como separador y que todos los campos son campos de texto. Procedemos.
  • Los distintos formatos, tanto el de Oziexplorer como el de Garmin, son sencillos, no necesitan grandes explicaciones. Concatenando textos llegamos a ellos (columnas de la E a la H de la hoja Kml-Plt1)
  • En este caso utilizo tres variables con nombre, Comillas = Caracter(34), NL (nueva línea) =Caracter(10) y PaM, factor conversión, de metros a pies, 3,3333333
  • de Kml a PLT (Ozi): =$C2&","&$B2&",0,"&ENTERO($D2*PaM)
  • De Kml a Wpt (Ozi): =$F2&",P"&$F2&","&$C2&","&$B2&",,"&$D2&",,,,,,,"&",P"&$F2&",,,,"&ENTERO($D2*PaM)
  • De Kml a ruta GPX: ="<rtept lat="&Comillas&$C2&Comillas&" lon="&Comillas&$B2&Comillas&">"&NL&"<ele>"&$D2&"</ele>"&NL&" <sym>Waypoint</sym>"&NL&"</rtept>"
  • De Kml a wpt GPX: ="<wpt lat="&Comillas&$C2&Comillas&" lon="&Comillas&$B2&Comillas&">"&NL&"<ele>"&$D2&"</ele>"&NL&" <sym>Waypoint</sym>"&NL&"</wpt>"
  • Arrastramos y completamos todas las coordenadas.
  • Ponemos, tanto en Oziexplorer como en MapSource, el datum a WGS84.
  • Creamos y salvamos, en Oziexplorer, un fichero plt (track) y un fichero wpt.
  • Creamos y salvamos un fichero con un par de puntos para los wpt y un fichero con una ruta con esos dos puntos en MapSource. Salvamos como GPX.
  • Editamos, se puede utilizar cualquier editor de textos, el fichero plt. Borramos los puntos del camino (son muy fáciles de identificar, están al final). Copiamos los puntos creados en el fichero excel, columna E (sin la cabecera, a partir de E2). Los pegamos en el fichero PLT y salvamos. Comprobamos, con ozi, que funcionan.
  • Editamos, se puede utilizar cualquier editor de textos, el fichero wpt. Borramos los puntos (son muy fáciles de identificar, están al final). Copiamos los puntos creados en el fichero excel, columna G (sin la cabecera, a partir de G2). Los pegamos en el fichero wpt y salvamos. Comprobamos, con ozi, que funcionan.
  • Por lo que yo he visto oziexplorer es muy flexible con los errores pero MapSource es todo lo contrario, es muy poco flexible, rechaza el mas mínimo error. Hay que tener mucho cuidado al editar un fichero GPX.
  • En los ficheros GPX eliminamos los wpt y los puntos de la ruta y los sustituimos por las valores calculados en la columna H para la ruta y la columna I para los wpt.
  • Los wpt están al principio, no están incluidos entre etiquetas y con los datos que les pasamos basta. <wpt lat="42.9791983" lon="-6.1071474"><ele>1200</ele><sym>Waypoint</sym></wpt>
  • Las rutas están incluidas entre las etiquetas <rte> y </rte>, sustituimos los puntos por los creados, columna H (sin la cabecera, nos daría un error) <rtept lat="42.9791983" lon="-6.1071474"><ele>1200</ele><sym>Waypoint</sym></rtept>


Conversión de De PLT a GPX
Conversión de GPX a PLT
http://ellibrosobreexcelquenoescribirenunca.blogspot.com.es/2011/11/de-gpx-plt.html
http://ellibrosobreexcelquenoescribirenunca.blogspot.com.es/2011/11/de-gpx-plt-ii.html
http://ellibrosobreexcelquenoescribirenunca.blogspot.com.es/2011/11/de-gpx-plt-iii.html











      viernes, 5 de septiembre de 2014

      Cálculo del area de un polígono irregular

      Libro Excel

      Este libro excel, hay que descargarlo, permite calcular el área de un polígono irregular mediante el método de dividirlo en triángulos. El área de cada triángulo la calculo utilizando el teorema del coseno para calcular la altura del triángulo. De momento no presenta la gráfica del polígono, solo calcula el área.

      • Calculo el ángulo, en radianes con :=(ACOS((A3*A3+B3*B3-C3*C3)/(2*A3*B3)))
      • La altura se calcula con =A3*SENO(D3).
      • El área resultante de cada triángulo es =($H3*$B3)/2



      ¿Como utilizar el libro?


      • Dibujamos a mano alzada la parcela, mas o menos con la forma real de la parcela. 
      • Sobre el plano dividimos en triángulos.
      • Si es preciso colocamos en el terreno señales desde  donde y hasta donde medir.
      • Después de esta división en triángulos se mide, sobre el terreno, los tres lados de cada triángulo. 
      • Esos valores los llevamos a la hoja excel, solo hay una en el libro, columnas D1,L y D2. Automáticamente sale el área del triangulo en la columna I. 
      • Se necesita una fila por triangulo. 
      • Si fuese necesario habría que repetir o arrastrar la fila 3 hasta completar o igualar el número de  filas con el número de triángulos.
      • La suma de áreas está en I1. Suma desde I3 a I22. Como es lógico se debe adaptar a cada necesidad.

      lunes, 1 de septiembre de 2014

      Área de un cuadrado irregular


      Libro excel
      El otro día nos surgió la necesidad de conocer el área de una parcela, una antigua era de un pueblo castellano. En una de las entradas anteriores de este blog explico como se puede medir una superficie situando dos focos y midiendo desde esos focos a los vértices. El método utilizado para medir la era es una versión reducida del anterior, solo hay que hacer cinco medidas, pero solo vale para cuadriláteros cuyas diagonales sean interiores (mas o menos con la forma del cuadrilátero inferior). Para cuadriláteros con diagonales externas el método vale pero el área de los dos triángulos formados se resta en vez de sumarse. Es como en mi entrada anterior dedicada a este tema es un método gráfico reconvertido a excel. Desde los extremos de la diagonal trazamos con un compás  las circunferencias de radio L2 y L3. La intersección de las circunferencias nos da el vértice superior. Si repetimos la operación para L1 y L4 obtenemos el vértice inferior.
       La diagonal está en este caso es el eje X, según el dibujo.
       Con un dibujo similar a este, dibujado a mano alzada, medimos, y anotamos los valores medidos, los cuatro lados y la diagonal. Llevamos los valores medidos a la hoja "Area". 
      Con esta posición se ve claramente que el cuadrilátero se puede dividir en dos triángulos de los que conocemos, o para ser exactos, podemos conocer todos los parámetros que nos dan su área. El área del triangulo superior es D*H1/2. El área del triangulo inferior es D*H2/2 (valor absoluto de H2, sin signo).El área del cuadrilátero es la suma del área de los dos triángulos, D*(H1+H2)/2. La cuestión ahora es cuanto valen, o como calculamos, H1 y H2. 

      Los valores H1 y H2 se pueden calcular aplicando el teorema del coseno o, como en este caso, utilizando la formula de la circunferencias con radio l2 y l3 (o l4 y l1). 
      • X^2+Y^2=L_2^2 =>Y^2=L_2^2-X^2
      • (X-D)^2+Y^2=L_3^2 =>Y^2=L_3^2-(X-D)^2
      • Como las Y son iguales: L_2^2-X^2=L_3^2-(X-D)^2
      • Despejando X_1=(D^2+L_2^2-L_3^2)/(2*D)
      • De manera similar: X_2=(D^2+L_1^2-L_4^2)/(2*D)
      • Llevando X_1 a la fórmula inicial calculamos Y, que es igual a H_1. Por tanto H_1=RAIZ((L_2^2-X_1^2))
      • De manera similar, H_2=-RAIZ(L_1^2-x_2^2), incluyendo el signo.
      Todo esto es, desde el punto de vista de las matemáticas,  o relativamente sencillo o relativamente complejo, según la soltura matemática de cada cual, pero hacerlo "a mano" siempre es un poco lioso, lo ideal es utilizar una hoja de cálculo, en este caso Excel.

      • Además de calcular las dimensiones, el área, de la parcela, roto y traslado la gráfica con el fin de que cada cual la pueda ver desde el punto de vista que prefiera.
      • La rotación consiste en dejar uno de los lados sobre el eje X.
      • Una vez conocidas las coordenadas de los vértices calcular el ángulo que forma un lado con el eje x es tan sencillo como dividir el incremento de y por el incremento de x entre los vértices de un lado. Esto nos da la tangente y con ATAN calculamos el ángulo en radianes (=ATAN(($F3-$F2)/($D3-$D2))
      • El nuevo valor de x, conocido el giro, es =D2*COS(Alfa)+F2*SENO(Alfa)
      • El de y es : =F2*COS(Alfa)-D2*SENO(Alfa)
      • Donde Alfa es el ángulo seleccionado por el desplegable.
      • Por último calculo los cuatro ángulos formados por los cuatro lados. Para el cálculo de los ángulos utilizo el teorema del coseno.




      Utilizo los siguientes variables y rangos con nombre:

      Alfa=Era!$G$8
      Alfas=Era!$G$2:$G$6
      Ang=Aux!$B$1:$B$5
      D=Era!$B$1
      Eje=Era!$G$7
      H_1=RAIZ((L_2^2-X_1^2))
      H_2=-RAIZ(L_1^2-x_2^2)
      L_1=Era!$B$2
      L_2=Era!$B$3
      L_3=Era!$B$4
      L_4=Era!$B$5
      MaxX=MAX(Era!$D$2:$D$6)
      MaxY=MAX(Era!$F$2:$F$6)
      X_1=(D^2+L_2^2-L_3^2)/(2*D)
      X_2=(D^2+L_1^2-L_4^2)/(2*D)


      El libro excel no está protegido ni explicado, si alguien quiere utilizarlo solamente, los datos, diagonal y lados , se escriben en la hoja "Area"  y directamente presenta el  resultado en esa misma hoja. La forma, aproximada, de la parcela está en el gráfico Plano(2). Esta hoja presenta un desplegable que permite seleccionar el eje que va sobre el eje x.