pymappu Package

pymappu Package

__main__ Module

Punto de entrada del programa

app Module

class pymappu.app.App(input_coordinates_order, path_ends_placemark_merge, merge_limit, icon_urls)

Clase que describe la aplicación

Parameters:
  • input_coordinates_order (str) -- Orden de las coordenadas. 'lat_lon' para (Latitud, Longitud) o 'lon_lat' para (Longitud, Latitud)
  • path_ends_placemark_merge (bool) -- Se juntan los extremos del path con un placemark si la distancia entre ellos es menor que merge_limit. Para ello, se recoloca el placemark en la primera coordenada del path. La idea detrás de esta opción es que el creador de las coordenadas quería, en efecto, situar uno exactamente encima del otro, pero, por imprecisiones de la interfaz gráfica del programa usado, ha quedado involuntariamente una pequeña distancia entre ambos. Para calcular la distancia, el módulo geopy utiliza por defecto la fórmula de Vincenty (con el elipsoide 'WGS-84'). Es muy precisa, pero muy costosa computacionalmente. Por ello, he utilizado la de Harvesine, menos precisa pero veloz. He hecho unas pruebas rápidas y la diferencia para distancias pequeñas (menos de 1 km), que es nuestro caso, era de entre 0.17 y 0.25 por ciento, unas cantidades totalmente aceptables en este programa.
  • merge_limit (float) -- Radio dentro del cual los extremos del path buscan puntos para mezclar.
  • icon_urls (str list) -- Iconos que el usuario quiera especificar para PATH_START_POINT, PATH_END_POINT, ATTRACTION_POINT y ADDITION_POINT
Returns:

Una instancia de la clase App.

parse(rule, text)

Función principal que parsea las instrucciones del usuario. Generada por Yapps2

Parameters:
  • rule (str) -- La regla que sirve como punto de entrada de la gramática. En mi caso, 'expr'.
  • text (str) -- Las instrucciones del usuario.
Returns:

Yapps2 devuelve a través de wrap_error_reporter la función llamada (en mi caso, _AppParser.expr())

app_parser Module

app_scanner Module

document Module

class pymappu.document.Document

Bases: xml.dom.minidom.Document

Clase que representa el documento KML a generar.

append_doc_elem_child(node)
Parameters:node -- Elemento de la clase placemark.Placemark que será añadido a <Document>
Returns:void
write_file(filename)

Escritura del fichero KML con codificación utf-8

Parameters:filename -- nombre del fichero
Returns:void

glob Module

Variables globales del programa

path Module

class pymappu.path.Path(lineStringPlacemarkParameters)

Bases: pymappu.placemark.Placemark

Path es un <LineString> contenido en un <placemark.Placemark>. Se denomina "Path" en la interfaz gráfica de Google Earth, y "Line" en Maps.

class Parameters(name, description, coordinates_list, placemark_type)

Bases: pymappu.placemark.Parameters

Los mismos parámetros que la clase padre, más uno nuevo, coordinate_list

classmethod Path.create_path_ends_points(paths_ends_list, point_placemark_parameters_list)

Este método pone incondicionalmente (siempre) puntos al final y principio del path. :param paths_ends_list: Lista con los extremos de todos los paths :type paths_ends_list: Lista de tuplas de tuplas tal que así:

[
    (
        (path1_principio_lon, path1_principio_lat), (path1_final_lon, path1_final_lat)
    )
    (
        (path2_principio_lon, path2_principio_lat), (path2_final_lon, path2_final_lat)
    )
    ...
]
Parameters:point_placemark_parameters_list -- instancia de la clase point.Point.Parameters
Returns:void
classmethod Path.merge_path_ends_with_nearby_points(paths_ends_list, point_placemark_parameters_list)

Este método pone puntos al final y principio del path siempre que estén a un radio menor que Path._merge_limit :param paths_ends_list: Lista con los extremos de todos los paths :type paths_ends_list: Lista de tuplas de tuplas tal que así:

[
    (
        (path1_principio_lon, path1_principio_lat), (path1_final_lon, path1_final_lat)
    )
    (
        (path2_principio_lon, path2_principio_lat), (path2_final_lon, path2_final_lat)
    )
    ...
]
Parameters:point_placemark_parameters_list -- instancia de la clase point.Point.Parameters
Returns:void

placemark Module

class pymappu.placemark.Placemark(placemarkParameters)

Bases: xml.dom.minidom.Element

https://developers.google.com/kml/documentation/kmlreference#placemark
A Placemark is a Feature with associated Geometry => Geometry puede ser Point, LineString, LinearRing, Polygon, MultiGeometry, Model, gx:Track, gx:MultiTrack.

Como se puede ver arriba, el significado de "Placemark" es más abierto en la documentación de KML que en las interfaces gráficas de Google Maps y Earth, donde se denomina "Placemark" (dibujado por defecto como un globo en Maps y una chincheta en Earth) a lo que en la documentación sería un <Point> contenido en un <Placemark>. Utilizo la clase Placemark con esa idea más amplia de la documentación.

Parameters:placemarkParameters (Placemark.Parameters) -- Objeto de la clase Placemark.Parameters que contiene nombre, descripción y tipo.
Returns:instancia de clase Placemark

placemarks Module

Placemarks utilizados en el programa: varios tipos de puntos y path.

point Module

class pymappu.point.Point(pointPlacemarkParameters)

Bases: pymappu.placemark.Placemark

Point es un <Point> contenido en un <placemark.Placemark>. Por defecto, está dibujado como un globo en Google Maps y como una chincheta en Earth.

class Parameters(name, description, coordinates, placemark_type)

Bases: pymappu.placemark.Parameters

Los mismos parámetros que la clase padre, más uno nuevo, coordinates

styles Module

Estilos para cada uno de los elementos de placemarks.py

tokens Module

Tokens que utilizarán el scanner y el parser.

pymappu.tokens.getMarkType(token)

Algunos de los tokens empiezan por verbos: draw en DRAW_PATH, put en PUT_ATTRACTION_POINT y PUT_ADDITION_POINT. Esto quiere decir que son comandos. Estos comandos realizan acciones sobre lo que he llamado objetos Geometry: line_strings y PointTypes (ATTRACTION_POINT, ADDITION_POINT, PATH_START_POINT, PATH_END_POINT). La función getMarkType establece la correspondencia entre los comandos y los Geometry.

Puede parecer que esta distinción nos complica la vida, pero enriquece al programa con significado sintáctico.

Parameters:token (str) -- Un token que sea un comando (PUT_ADDITION_POINT, PUT_ADDITION_POINT, DRAW_PATH)
Returns:El elemento de la clase Geometry sobre el que actúa el comando especificado en token