% @(#) $Id: intro.tex,v 1.39 2008/12/29 18:21:39 simoc Exp $

\section{Introduction}

%BEGINHTML <<this keyword marks parts of text to extract for HTML page>>
Mapyrus is software for
creating plots of points, lines, polygons and labels 
to PostScript (high resolution, up to A0 paper size),
Portable Document Format (PDF),
Scalable Vector Graphics (SVG) format
and web image output formats.

Mapyrus is open source software and is implemented entirely in Java
enabling it to run on a wide range of operating systems.

The software combines the following four features.

\begin{enumerate}
\item

A Logo or turtle graphics program.

An imaginary pen is moved around a page,
creating shapes that are drawn into an image file.
Reusable routines are built up using a BASIC-like language.
Branching and looping constructs enable complex shapes, symbols, patterns
and graphs to be be defined.

%ENDHTML
See Figure \ref{turtle}.

\begin{figure}[htb]
%BEGINHTML
%HTML <table><tr><td>
\includegraphics{turtle1.eps}
%HTML </td><td>
\includegraphics{turtle2.eps}
%HTML </td><td>
\includegraphics{turtle3.eps}
%HTML </td><td>
\includegraphics{turtle4.eps}
%HTML </td><td>
\includegraphics{turtle5.eps}
%HTML </td><td>
\includegraphics{turtle6.eps}
%HTML </td><td>
\includegraphics{turtle7.eps}
%HTML </tr>
%HTML <tr>
%HTML <td align="center"><a href="turtle1.svg">SVG</a>
%HTML <a href="turtle1.pdf">PDF</a></td>
%HTML <td align="center"><a href="turtle2.svg">SVG</a>
%HTML <a href="turtle2.pdf">PDF</a></td>
%HTML <td align="center"><a href="turtle3.svg">SVG</a>
%HTML <a href="turtle3.pdf">PDF</a></td>
%HTML <td align="center"><a href="turtle4.svg">SVG</a>
%HTML <a href="turtle4.pdf">PDF</a></td>
%HTML <td align="center"><a href="turtle5.svg">SVG</a>
%HTML <a href="turtle5.pdf">PDF</a></td>
%HTML <td align="center"><a href="turtle6.svg">SVG</a>
%HTML <a href="turtle6.pdf">PDF</a></td>
%HTML <td align="center"><a href="turtle7.svg">SVG</a>
%HTML <a href="turtle7.pdf">PDF</a></td>
%HTML </table>
%ENDHTML
\caption{Shapes, Symbols And Patterns}
\label{turtle}
\end{figure}

%BEGINHTML
\item

Reading and displaying of geographic information
system (GIS) datasets (including the OpenStreetMap project),
text files, or tables held in a relational database
(including spatially extended databases such as Oracle Spatial,
PostGIS and MySQL).

Drawing routines are applied to geographic data to produce annotated and
symbolized maps and graphs.  Attributes of the geographic data control
the color, size, annotation and other characteristics of the
appearance of the geographic data.
Scalebars, legends, coordinate grids and north arrows are also available.

%ENDHTML
See Figures \ref{mapview1}, \ref{mapview3}, \ref{mapview2} and
\ref{mapview4}.

\begin{figure}
%BEGINHTML
%HTML <table><tr><td>
\includegraphics{mapview1.eps}
%HTML </td>
%ENDHTML
\caption[Average Monthly Temperatures]{Average Monthly Temperatures of Australian Cities (degrees Celsius)}
\label{mapview1}
\end{figure}

\begin{figure}
%BEGINHTML
%HTML <td>
\includegraphics{mapview3.eps}
%HTML </td></tr>
%HTML <tr>
%HTML <td align="center"><a href="mapview1.svg">SVG</a>
%HTML <a href="mapview1.pdf">PDF</a></td>
%HTML <td align="center"><a href="mapview3.svg">SVG</a>
%HTML <a href="mapview3.pdf">PDF</a></td>
%HTML </tr>
%HTML </table>
%ENDHTML
\caption{Strip Map of Railways Lines in East Kent}
\label{mapview3}
\end{figure}

\begin{figure}
%BEGINHTML

%HTML <table><tr><td>
\includegraphics{mapview2.eps}
\includegraphics{mapview2legend.eps}
%HTML </td>
%ENDHTML
\vspace{1pt}
\includegraphics{mapview2scalebar.eps}
\includegraphics{mapview2north.eps}
\caption{Vegetation Classes}
\label{mapview2}
\end{figure}

\begin{figure}
%BEGINHTML
%HTML <td>
\includegraphics{mapview4.eps}
%HTML </td>
%HTML <tr>
%HTML <td align="center"><a href="mapview2.svg">SVG</a>
%HTML <a href="mapview2.pdf">PDF</a></td>
%HTML <td align="center"><a href="mapview4.svg">SVG</a>
%HTML <a href="mapview4.pdf">PDF</a></td>
%HTML </tr>
%HTML </table>
%ENDHTML
\caption{Inventory Levels at Warehouses}
\label{mapview4}
\end{figure}

%BEGINHTML

\item
Integration with the freely-available
Java Topology Suite
\footnote{Available from http://www.vividsolutions.com/JTS}.
This library provides geometric algorithms
such as buffering, point-in-polygon test and polygon intersection.

\item
Flexibility.  Running in one of three ways.

\begin{enumerate}
\item
As a stand-alone program for integration into
scripts and batch tasks (suitable for generating a one-off
map or a series of similar maps from a template
showing different areas, or using different criteria for each map).

\item
As a self-contained web server providing map and
graph images to a web-based application via HTTP requests.

\item
As a Java Servlet in a web server such as Apache Tomcat,
generating map and graph images in response to HTTP requests.

\end{enumerate}

\end{enumerate}

%ENDHTML

Please note that:

\begin{itemize}

\item
Mapyrus has no graphical user interface.
Commands are read from a text file prepared by the user.
Good user interfaces are
hard to design and everyone wants something slightly different.
Build a custom HTML or Java user interface on top of Mapyrus.

\item
Mapyrus cannot display three dimensional data and has nothing to do
with 3D.

\item
Mapyrus includes a sample set of about 100 ready-to-use shapes and patterns
for maps and charts (see Figure \ref{samplesymbols}
on page \pageref{samplesymbols}).
Icons found on the
internet are another good solution for display in image files.
For PostScript output, the resolution is higher and using characters
from a font such as ZapfDingbats produces better output.

\item
Mapyrus cannot reproject coordinate values in geographic data from
one projection to another.  However, this functionality
is available in spatial databases.
\end{itemize}

