Skip to main content

Print countries in ASCII Art based on Natural Earth shape files.

Project description

      db       .M"""bgd   .g8"""bgd `7MMF'`7MMF'    `7MMM.     ,MMF'                   
     ;MM:     ,MI    "Y .dP'     `M   MM    MM        MMMb    dPMM                     
    ,V^MM.    `MMb.     dM'       `   MM    MM        M YM   ,M MM   ,6"Yb. `7MMpdMAo. 
   ,M  `MM      `YMMNq. MM            MM    MM        M  Mb  M' MM  8)   MM   MM   `Wb 
   AbmmmqMA   .     `MM MM.           MM    MM        M  YM.P'  MM   ,pm9MM   MM    M8 
  A'     VML  Mb     dM `Mb.     ,'   MM    MM        M  `YM'   MM  8M   MM   MM   ,AP 
.AMA.   .AMMA.P"Ybmmd"    `"bmmmd'  .JMML..JMML.    .JML. `'  .JMML.`Moo9^Yo. MMbmmd'  
                                                                              MM       
                                                                            .JMML.     

Print countries in ASCII Art

Natural Earth

Code Style: Black License Python Version GitHub tag (latest SemVer) Travis (.com) branch

          *-------*                                       $-------$                     
         /......./                                       /       /                      
        *......./                                       $       /                       
        *......*                                        $      $                        
       *........*------*                               $        $------$                
       *...............*                               $               $                
      *...............*                               $               $                 
      *...............*                               $               $                 
       \............./                                 \             /                  
        *.........../                                   $           /                   
        |..........*                                    |          $                    
        *.**........*--*                                $ $$        $--$                
         *  *...........*                                $  $           $               
            *...........*                                   $           $               
   *       *.............\                         $       $             \              
*-/.\      *-*............\                     $-/ \      $-$            \             
 |...**       *--*.........\                     |   $$       $--$         \            
 |.....*          \.........*-*                  |     $          \         $-$         
*--*../            *......*...*                 $--$  /            $          $         
    **              United Kingdom                  $$              United Kingdom      
                    *.....*....*                                    $          $        
                    *...........\                                   $           \       
             *-----*.............*                           $-----$             $      
            *....................*                          $                    $      
            *.....................*-*                       $                     $-$   
             \.......................*-*                     \                       $-$
              *........................|                      $                        |
            **......................../*                    $$                        /$
          **.........................*                    $$                         $  
           *---*.....................|                     $---$                     |  
                *....................|                          $                    |  
               /.....................**                        /                     $$ 
             **..............*--*..**                        $$              $--$  $$   
           **......*-*.*----*    **                        $$      $-$ $----$    $$     
          /..\..../   *                                   /  \    /   $                 
         *.** *--*                                       $ $$ $--$                      
         **                                              $$                             

You can print any country with asciimap for which a Geometry exists (currently 177 countries).

Dependencies

For asciimap to work you need the python bindings for GDAL and GDAL itself installed. I experienced problems installing the python bindings into a virtualenv, so I recommend installing the system packages.

Arch

pacman -Sy gdal python-gdal

Debian/Ubuntu

apt-get update
apt-get install gdal-bin libgdal-dev python3-gdal

Installation

PyPi

Installation with pip is straightforward:

sudo pip install asciimap

Git

Installation with git from master branch:

git clone git@github.com:MaelStor/asciimap.git
cd asciimap
git checkout master
In userspace

Install in user space with:

pip install --user .
System

Install system wide with:

sudo pip install .

Usage

usage: asciimap [-h] [--fill FILL] [--empty EMPTY] [--outside OUTSIDE]
                [--height HEIGHT] [--width WIDTH] [--blur BLUR]
                [--method {full,f,dynamic,d,height,h,width,w}]
                [--surface SURFACE] [--negative] [--benchmark] [--stats]
                country

Print countries in ASCII Art

positional arguments:
  country               Select country by ISO 3166-1 alpha-2 codes. For a
                        complete list of ISO A2 codes use 'list' as argument

optional arguments:
  -h, --help            show this help message and exit
  --fill FILL, -f FILL  Single character marking the edges of the land surface
  --empty EMPTY, -e EMPTY
                        The character to use for the land surface
  --outside OUTSIDE, -o OUTSIDE
                        Single character marking the outside surface
  --height HEIGHT, -i HEIGHT
                        Height of the map as integer
  --width WIDTH, -w WIDTH
                        Width of the map as integer
  --blur BLUR, -b BLUR  Add blur to radius and inflate the surface by double
                        value
  --method {full,f,dynamic,d,height,h,width,w}, -m {full,f,dynamic,d,height,h,width,w}
                        Change rendering method
  --surface SURFACE, -s SURFACE
                        Choose a surface by number or 'all'
  --negative, -n        Print the negative
  --benchmark, -t       Print execution times of methods along with the map.
                        Can be give multiple times to increase verbosity.
  --stats, -x           Print statistics

List all countries and ISO 3166-1 alpha-2 codes with 'list'

Examples

$ asciimap it
                  *-*                                                           
              *--*   \                                                          
              /       *---*                                                     
         *---*            |                                                     
*    *--*               *-|                                                     
*---*                 **  *                                                     
 |                   /                                                          
 *                  *                                                           
*                   |                                                           
 \                  *                                                           
 *\   *---*          *                                                          
   \ /     **        *                                                          
   **        \        **                                                        
              *         \*                                                      
              |          \                                                      
              *           \                                                     
               \    Italy  \                                                    
                \           \                                                   
                 **          \                                                  
                   \          **                                                
                    **          *--*                                            
                      *-*         \                                             
                         **        *-*                                          
        **                 **         **                                        
      */  \                  **         \*                                      
      |    *                   \      *----*                                    
      |    *                    \    /    *-*                                   
      |   *                      \  *                                           
      |   |                       \  \                                          
      *  /*                        *  **                                        
       **                          |  /                                         
                                   | /                                          
                                   |/                                           
                                  *|                                            
                      *-*   *---* **                                            
                      |  *-*    *                                               
                      *-*      *                                                
                         *--*  |                                                
                             *-|                                                
                               *                                                
$ asciimap no
                       *------------*                                           
            *-*   *---*   |-----------*                                         
          **   *-*     \--/                                                     
            **          /*                                                      
              **      **    *--*                                                
                **   /        **                                                
                  *--*                                                          










                                  *--------*                                    
                             ** **   /---\  \                                   
                        *----* /    /     *--*                                  
                  Norway  /   *-----*                                           
                    *-* **                                                      
                  *-/                                                           
                ** /                                                            
               /  /                                                             
              /  /                                                              
             /  /                                                               
           **  /                                                                
          /  *-*                                                                
        **  *                                                                   
      **    *                                                                   
   *-*     *                                                                    
 **        *                                                                    
*           *                                                                   
|           |                                                                   
|           |                                                                   
*           *                                                                   
 *      *--*                                                                    
 *    **                                                                        
  *--*                                                                          

You can print a country looking like a negative with

$ asciimap --surface 1 fr --negative
..............................**................................................
............................     ...............................................
............................        ............................................
...........................          ...........................................
...........................            .........................................
........................                .  .....................................
............ ........                        ...................................
............   ...                             .................................
.............                                     ..............................
.............                                           ........................
....    .....                                            .......................
*                                                       ........................
|                                                       ........................
|                                                      .........................
*                                                      .........................
....                                                   .........................
........                                           .  ..........................
.........                                           ............................
...........                                       ..............................
............                                     ...............................
.............                  France           ................................
..............                                  ................................
...............                                    .............................
...............                                     ............................
...............                                     ............................
...............                                     ............................
...............                                      ...........................
...............                                     ............................
...............                                     ............................
...............                                     ............................
...............                                     ............................
...............                                      ...........................
..............                                         .........................
..............                                         .........................
.............                                         ..........................
.............                           ....        ............................
..............                      ............................................
.................                  .............................................
.....................  ..          .............................................
............................*----*..............................................

or if you want the borders showed:

$ asciimap --surface 1 --outside '.' fr
..............................**................................................
............................*/  \...............................................
............................/    *-*............................................
...........................*        \...........................................
...........................*         **.........................................
........................*-*            \.**.....................................
............*........*-*                *  **...................................
............*-*...*-*                        **.................................
.............| *-*                             *-*..............................
.............|                                    *----*........................
....*--*.....*                                          *.......................
*--*    *---*                                          *........................
|                                                      *........................
|                                                     *.........................
*--*                                                  |.........................
....*--*                                           *  *.........................
........\                                         *.**..........................
.........**                                       **............................
...........\                                     /..............................
............\                                   /...............................
.............\                 France          *................................
..............\                                *................................
...............*                                *-*.............................
...............|                                   *............................
...............|                                   |............................
...............|                                   *............................
...............|                                    *...........................
...............|                                   *............................
...............|                                   |............................
...............|                                   |............................
...............|                                   *............................
...............*                                    \...........................
..............*                                      \*.........................
..............*                                       *.........................
.............*                          *--*        **..........................
.............*                      *--*....*------*............................
..............*-*                  /............................................
.................*--*  **         *.............................................
.....................**..*-*      *.............................................
............................*----*..............................................

Fillings can be combined. If you want to fill the land surface with ., everything outside the land surface with ~ and corners with ^ use:

$ asciimap nz --outside '~' --empty '.' --fill '^'
~~~~~~~~~~~~~~~~~~~~^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~|\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~^.^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~\..^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~\.^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~\.^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~\|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~|\~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~^./.^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~^..^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~|...\~~~~~^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~|....^---^.|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~|..........|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~^..........^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~/........^-^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~^/......../~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~^\.......^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~^^.....|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^....^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~|...^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~^~~~~~~~^...^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~^/.\~~^~~^.../~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~/...^-^~~^..^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~/..New Zealand~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~^.......^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~^....../~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~/....../~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~/....../~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~/......^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~^^.......|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~^^.......^-^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~^^.......^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~^^........^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~/..........^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~^^..........^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~^............^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~^.........../~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^.........../^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^---^.....^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~^---^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Advanced usage

Some advanced usage with command-line tools. The picture in the title was produced with

$ asciimap gb --height 30 --width 35 | paste - <(asciimap gb --height 30 --width 35 --fill "$")

another example with 'paste' and usage of 'blur':

$ asciimap -b 0 jp -i 30 -w 30 | paste - <(asciimap -b 2.0 jp -i 30 -w 30)
                                                     *        
                       *                           */ **      
                       |\                          /    *--*  
                       / **  *                    /         \ 
                      /    \-*                   /           *
                    **     /*                   *            |
                   *  *-* /                     |            |
                   *-*   *                      |            *
                                                |           / 
                    *-*                         |         **  
                    | |                         |        /    
                    | |                         *       *     
                    * |                        /        *     
                   *  *                     *-*        *      
                   * *                     /   Japan   *      
                Japan                  *--*           *       
                *    *               **               |       
             *-*    *               /                 |       
            *       |              /                  *       
        *-* *       *            **                  *        
     *-*  \*  *----*            *                    *        
    // \ / | /                  |                 *-*         
  *-/ \ /* **                   *              *-*            
 / \  |-*                        *         *--*               
**  * *                          |       **                   
  \/                             *      /                     
  |*                              \    /                      
  *                                *--*                       
$ asciimap au --blur 0.1 --empty '.' --method full
                                                         **                     
                                      *-*                /\                     
                                  *--*...*----*         *..*                    
                                 /..........|           |..*                    
                        *---*   /...........|           |...**                  
                       /.....*-*............*           *.....\*                
                      /......................*-*       *.......\                
                  *--*..........................*-*    *........*               
                  /................................*--*.........|               
                 /..............................................*               
                /................................................**             
           *---*...................................................*-*          
     *----*...........................................................\         
   **..................................................................\        
 */.....................................................................**      
 /........................................................................\     
*..........................................................................**   
 *...........................................................................\  
*.........................................Australia...........................* 
 *............................................................................| 
 *............................................................................* 
  \............................................................................*
   *...........................................................................*
   *..........................................................................* 
    \...........................*--*..........................................| 
     *...................*-----*    *---*.....................................* 
     *................*-*                \......*...........................**  
    /........*-------*                    \...** *........................./    
   *-\....*-*                              *-*  /*......................../     
      *--*                                     ** \....................../      
                                                   \....................*       
                                                    \...................|       
                                                     *-*............*---*       
                                                        *----------*            


                                                              **   *-*          
                                                               |--*..*          
                                                               *...**           
                                                                *-*             

Sometimes a country has more than one land surface (or more precise: Polygons) defined, what scrambles the surface of interest when printing all surfaces:

$ asciimap --surface all --method full ru --fill "'"
                                                  '          '                  
                                                             '                  
                                                              '                 

                                                              ''                
                                                     '      ''  '      '        
                                                    '      /    |               
                                                    '     '     '      '        
                                                       '  '      '--'  |        
                                                   '   |-'          \  '\       
                                                    \  | '           ''  \'     
                                                     \ |/                 \   ' 
                                              ''     '-| '                 '-' '
'                                              \'  ''  \ '                     |
|'                                              \ /     '                      |
'|                                             ' /                             |
 '                                             |/                              |
                                               |                               |
                                               |                               '
                                               '             Russia        '  / 
                                              '                           / ''  
                                              |                        '-'      
                                              |                       '    '    
                                              |                       |    |    
                                              '                       '    |    
                                               '       '             '     |    
                                            '  |      / '            '     |    
                                               |     '  '          '  \    '    
                                               '   ' '   \        ' '  '        
                                                ' ' '     \ ' '   | |  '        
                                                ' '        ' ' \ /' | '         
                                                 '         '    '   ' |         
                                                 |                   \|         
                                                 ''                   |         
                                                / |                   |         
                                               '  '                   '         
                                               '-'                   '          
                                                 \'                  '          
                                                  |                             
                                                  '                             

To overcome the bias you can just render the big land surface for example with:

$ asciimap --surface 1 --method height ru --fill "'" 
                                                                              ''
                                                                    '--------' |
                                                                '--'           |
                                                          '----'               |
                                              '--'  '     /                    |
                                             /  \  ' '---'                     |
                                           ''    ' |                           |
                                            \    | '                           |
 '-------'                           '---'   '   |  '                          |
  |       '--'    '-'     '---------'     '-'    '\ '                          |
  '    '-'    '   /\   '-'                      '  /                           |
   '  '   '--'  ''  '-'                         ' /                            |
   |   '      ''                                 '                             |
   |   '   '-'                                                                 |
   '    '-'                                                                    |
    '                                                                          |
   /                                                                     Russia|
 ''                                                                            |
  '                                                                            |
'/                                                                             |
'                                                                              |
 \                                                                             |
 '-'                                                                           |
    \                                     '----'                               |
    '\                               '---'      '-----'                        |
      \                             '                  \                       |
     '-\                  ''        |                   \                     /|
        \               ''  '-----' '                    '---'               / '
         '--'         ''           '                          ''    '-------'   
             \       /                                          '--'        '   
              '     '                                                           
              '      \                                                          
             /        \                                                         
            /         ''                                                        
          ''         /                                                          
            '-'     /                                                           
               '---' \                                                          
                    '-'                                                         
                      '                                                         

what cuts off the eastern part of Russia. To print the whole surface:

$ asciimap --surface 1 --method width --height 20 ru --fill "'"
                                       '---'                                    
                               '------'    \                                    
                      ''    '-'             '-------'      ''                   
                     ' | '-'                         '----'  '------'           
 '--'           ' ''  /' /                                           '---' '---'
 |  '-'  ' '---' '  '-' /                                                 '    |
 ' /   '' '            '                                                       |
  / '-'                                                             ' '     '--'
 /                                   Russia                     '  / \ '---'    
'                                                          '---' ''   /         
'\                                                       ''         '-'         
  \               '----' '                              '          ' |          
   \        '    /      ' \          '           '-'     ''        '-'          
    ''    '' '---'         '-'   '--' '--'   '' /   \      '                    
      '  '                    '-'         '-'  '     \ '  '                     
      |  '                                            ' \ '                     
      |   '                                             |/                      
      '--'                                            '-'                       
          '                                                                     

To find the right surface you have to try around a bit. I'm working on a better solution.

Performance

Rendering and printing time depends on the size of the resulting map. Rendering and printing a country with 40x80 (h x w) usually takes about 0.1 - 0.3 seconds on a 2-core system. Rendering is implemented to use parallel processes and reduces computation time on multicore systems.

$ asciimap de --benchmark
...

parse_undefined_countries         0.0000 s
_get_boundaries                   0.0000 s
__init__                          0.0007 s
_sum_h_step (render)              0.0001ps
_create_intersection (render)     0.0615ps
_sum_w_step (render)              0.0014ps
_contains (render)                0.0023ps
render (render_parallel)          0.1113ps
render_parallel                   0.1025 s
is_border                         0.0175 s
is_vertical                       0.0020 s
is_horizontal                     0.0018 s
is_negativ_diagonal               0.0021 s
is_positiv_diagonal               0.0014 s
print_map                         0.0414 s
------------------------------------------
Sum                               0.1695 s

There's no noticeable difference anymore between printing a high polygon and a low polygon country due to improvements of the rendering algorithm.

$ asciimap ca -t
...

_get_boundaries                   0.0001 s
__init__                          0.0056 s
_sum_h_step (render)              0.0001ps
_create_intersection (render)     0.0925ps
_sum_w_step (render)              0.0020ps
_contains (render)                0.0038ps
render (render_parallel)          0.1612ps
render_parallel                   0.1028 s
is_border                         0.0209 s
is_vertical                       0.0041 s
is_horizontal                     0.0040 s
is_negativ_diagonal               0.0030 s
is_positiv_diagonal               0.0029 s
print_map                         0.0602 s
------------------------------------------
Sum                               0.2037 s

You can run asciimap with --benchmark if you want to know execution times of all used methods. Times for each method add up in case a method/function is called multiple times. Methods with a super method (in brackets) are already considered in the Sum so they aren't added. Methods with a ps suffix (parallel seconds) are executed parallel so the time has to be divided by worker count.

Statistics

Statistics are shown with --stats (or -x) along the resulting map and benchmarking results.

$ asciimap ca -x -t
                                                       *--* *----*
                                             *---------    -      ---*
                                         *--/  | -             --*
                                         *-  -- / |        ---*
                          **     *--* **   /---\ / -     -*
                          *              */     / | |   /
                 *--*       **      *-*  |--*  /   -   /
                     *---------*    *-* **  *---------*
               *--*
               |   --* *      * *   *-*  *--*  **  *-* *-*
              *---* \ - ----* |-|   *--\      *  --   -   -*
                     \       -  |       \--*   *-- --  --   --*
        *-* * *       | -   --- ---*  ** \ |      |  |/  *-    --*
*-------   - - ------- | | |   |          | -* *  |--|     |--  |
|                       -   \ / --------* |   -| /- -*    **  |  ---*
|                            -           -      -/ /         /    -----*
|                                               / \         *    |   /
|                                             -*  |--*   **  *-   --/
|                                          --*    *            *-* |*
|                                         *            * *---*     *
*-                                    Canada             *    --*
  *---                                   *                |     |    *
      \                                   \              *       \  /|
       \                                   \              |       --  \
        *-                                  ---*          |            \
          |                                     -*       /              \
         *-                                       --*   *                --*
       *   \                                        |   |                   *
            |                                        \  |                 --|
            | -                                       --           ------*  *
            *\ |--------------------------                       -\        /
              **                          *------               /  \*     * --*
                                                 *-            | \- |     *---\
                                                   *-          |  | |          *
                                                     |     ----*  *- ---*
                                                     |  --*         **
                                                     |-*
                                                    **

vertical resolution             1.10437101598869746866
horizontal resolution           1.10437101598869746866
Height                                              38
Width                                               80
number of points                                   794
number of polygons                                  30
number of parallel processes                         5

_get_boundaries                   0.0001 s
__init__                          0.0055 s
_sum_h_step (render)              0.0000ps
_create_intersection (render)     0.1122ps
_sum_w_step (render)              0.0021ps
_contains (render)                0.0038ps
render (render_parallel)          0.1860ps
render_parallel                   0.1025 s
is_border                         0.0162 s
is_vertical                       0.0033 s
is_horizontal                     0.0033 s
is_negativ_diagonal               0.0024 s
is_positiv_diagonal               0.0023 s
print_map                         0.0475 s
------------------------------------------
Sum                               0.1832 s

This helps figuring out which surface to print. After trying around the big land surface of Canada is --surface 1.

$ asciimap ca -x -t -s 1
                                          *-*
         ** *  *                          *- \
*--------  - -- ------*                     | \ *   *--*
|                      -*   *  *----*   ** /   -|  /   *
|                        --- --      ---  -      -----*
|                                                 /
|                                              --*
|                                            -*
|                                           /              *
|                                          |               |----*
*-- --                                     *               |     -*
   *  \                                   |                |      |    **
       \                            Canada -*              *       ----  *
        *-                                   \ *            |            |
          |                                   - -*          |             \
          |                                       ----*   *-               --*
          *                                           |   |                   \
           \                                          |   |                    *
            \                                          \  |                  -*
             *--                                        --           -------*
                *---------------------------                       -\
                                            *------               /  \-*
                                                   *--           | *- |
                                                      \          |   | \   *
                                                       |     ----*   *  --*
                                                       |  --*         **
                                                       |-*
                                                      **

vertical resolution             1.06642999999999998906
horizontal resolution           1.06642999999999998906
Height                                              29
Width                                               80
number of points                                   274
number of polygons                                   1
number of parallel processes                         5

_get_boundaries                   0.0001 s
__init__                          0.0072 s
_sum_h_step (render)              0.0001ps
_create_intersection (render)     0.0535ps
_sum_w_step (render)              0.0016ps
_contains (render)                0.0028ps
render (render_parallel)          0.1234ps
render_parallel                   0.1025 s
is_border                         0.0174 s
is_vertical                       0.0029 s
is_horizontal                     0.0045 s
is_negativ_diagonal               0.0023 s
is_positiv_diagonal               0.0022 s
print_map                         0.0500 s
------------------------------------------
Sum                               0.1892 s

This reduces the amount of polygons to 1 and the number of points to 247 and speeds up the rendering a little bit. This is only noticeable when printing with higher width or height values.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asciimap-0.2.0.tar.gz (237.7 kB view hashes)

Uploaded Source

Built Distribution

asciimap-0.2.0-py3-none-any.whl (228.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page