\DocumentMetadata{} %% $Id: pst-knot-doc.tex 137 2009-10-08 18:15:14Z herbert $ \documentclass[fontsize=11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small, headinclude=false,footinclude=false,oneside]{pst-doc} \usepackage{pstricks,url} \usepackage{ragged2e,xspace} \usepackage{pst-geo} \usepackage{hvextern,graphicx} \let\GeoFileVersion\fileversion \def\PST{\texttt{PSTricks}\xspace} \def\PS{\texttt{PostScript}\xspace} \newcommand\PstMapTwoDPackage{\textsf{pst-geo}} \let\Parameter\texttt \psset{level=4,limiteL=190,path=data} \renewcommand\bgImage{\psset{xunit=0.75,yunit=0.75} \begin{pspicture}(-5,-5)(8,5) \WorldMap[type=4] \end{pspicture}}% \definecolor{ocean}{rgb}{0.5,0.8,0.8} \addbibresource{pst-geo-doc.bib} \def\textTT#1{\texttt{\detokenize{#1}}} \lstset{frame=} \begin{document} \setkeys{hv}{%moveToExampleDir,ExampleDir=Examples, showFilename,verbose,force=false, % progpath=/usr/local/texlive/current/bin/universal-darwin/ } \title{\texttt{pst-geo}} \subtitle{A PSTricks package for Geographical Projections\\Version \GeoFileVersion} \author{Manuel Luque \\ Herbert Voß} \docauthor{} \date{\today} \settitle \part{WorldMap 2D} \begin{abstract} We have set ourselves the goal of representing various cartographic projections of the Earth using PSTricks. This pst-geo extension concerns plane projections (Mercator, Lambert, cylindrical, etc.) and the three-dimensional representation of the Earth with several features that make its use pleasant (at least we hope so). Different possibilities allowing to choose the level of detail and the possible paths (cities, borders, rivers, etc.), will be detailed in the rest of the document. \end{abstract} \vfill Thanks to: Jon Krom; \clearpage \tableofcontents \section{The sources}\label{sources} \subsection{Mathematics} \begin{enumerate} \item Henri \textsc{Bouasse} : G\'eographie math\'ematique (1919), Delagrave. \item \url{http://mathworld.wolfram.com/topics/MapProjections.html} \end{enumerate} \subsection{The data} GLOBE Binaries DECODING : World Public Domain Dbase: F.Pospeschil, A.Rivera (1999) \url{ftp://ftp.blm.gov/pub/gis/wdbprg.zip} They were converted into a PostScript table, in degrees, using a small Pascal program (by Giuseppe Matarazzo) that is part of the distribution. \subsection{The precursor in PostScript} Bill \textsc{Casselman}: \url{http://www.math.ubc.ca/~cass/graphics/text/www/} Whose chapter 8 inspired the creation of the program for PSTricks. It deals with non-linear transformations and gives various examples including plane projections of the world map. It is a very nice work! \section{The different types of projections and the level of detail} \subsection{The different types of projections} There are, for the moment, 6 types of projections, which are parameterized as follows: \begin{center} \renewcommand\arraystretch{2} \begin{tabular}{|lcr|c|}\hline \multicolumn{3}{|c|}{paramètre}&type of projection\\ \hline type&=&1& Mercator\\ \hline type&=&2 & Lambert\\ \hline type&=&3 & simple\\ \hline type&=&4 & Sanson-Flamsteed\\ \hline type&=&5 & cylindrical\\ \hline type&=&6 & Babinet\\ \hline type&=&7 & Collignon\\ \hline type&=&8 & Bonne\\ \hline \end{tabular} \end{center} \subsection{The five levels in detail} \begin{center} \begin{tabular}{|lcr|c|}\hline \multicolumn{3}{|c|}{level}& characteristic\\ \hline level&=&1& very detailed\\ \hline level&=&2 & detailed\\ \hline level&=&3 & fairly detailed\\ \hline level&=&4 & moderately detailed\\ \hline level&=&5 & more schematic\\ \hline \end{tabular} \end{center} \subsection{The options} By default, only the contours of the coasts will be drawn. \begin{itemize} \item \Parameter{ilimiteL=180}: is the default absolute value, in degrees, of the longitude$(\pm 180)$. \item \Parameter{increment=10} : is the default value, in degrees, of the angular difference between two meridians or parallels. We can therefore set a smaller value in the case of a zoom. \item \Parameter{incrementX=10} Dito, but only for the $x$-coordinate. \item \Parameter{incrementY=10} Dito, but only for the $y$-coordinate. \item \Parameter{MapFillColor={[rgb]{0.99,0.95,0.7}}} : allows you to choose the fill color of the continents, in RGB mode. \item \Parameter{borders}: draw the borders of the countries. \item \Parameter{rivers}: allows you to draw rivers and streams. \item \Parameter{cities}: marks the capitals and major cities. \item \Parameter{capitals}: only capitals are positioned. \item \Parameter{maillage=false}: allows you to remove parallels and meridians. \item \Parameter{Fill=false} : surfaces are not colored. \item \Parameter{USA}, \Parameter{MEX}, \Parameter{=true} draw the states of the USA, Mexico and Australia respectively. \end{itemize} \clearpage ``Square'' 1° wide and 2° high. \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psframebox{% \psset{path=pst-geo/data, type=1, % Mercator projection unit=100mm, % Width of produced PDF. xunit=1,yunit=1} % Scaling Factors \begin{pspicture*}(-0.25,2.48)(0.6,3.35) \WorldMapII[rivers=false, linewidth=0.1\pslinewidth, level=1, maillage=true, incrementX=1, incrementY=2 ] \end{pspicture*}} \end{document} \end{externalDocument} \newpage ``Square'' 2° wide and 1° high. \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psframebox{% \psset{path=pst-geo/data } \psset{type=1} % Mercator projection \psset{unit=100mm} % Width of produced PDF. \psset{xunit=1,yunit=1} % Scaling Factors \begin{pspicture*}(-0.25,2.48)(0.6,3.35) \WorldMapII[rivers=false, linewidth=0.1\pslinewidth, level=1, maillage=true, increment=2, incrementY=1 ] \end{pspicture*}} \end{document} \end{externalDocument} \section{Instructions} \subsection{Mercator projection} Using the command is very simple: \verb|\WorldMap[maillage=false]| draws the Mercator projection, without the parallels and meridians. By default, the highest level of detail and the Mercator type projection have been chosen: \Parameter{[type=1,level=1]}. We will play on the units in order to adapt the drawing to the desired dimensions, with for example: \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{linewidth=0.75\pslinewidth, xunit=0.5cm,yunit=0.5cm, MapFillColor={[rgb]{0.5,0.8,0.5}}} \begin{pspicture}*(-9,-9)(10,9) \WorldMap[maillage=false] \end{pspicture} \end{document} \end{externalDocument} \clearpage The following script draws the Mercator projection, in landscape mode: \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo,graphicx} %StopVisiblePreamble \pagestyle{empty} \begin{document} \resizebox{\linewidth}{!}{% \begin{pspicture}*(-9,-9)(9,10) \rput{90}(0,0){\WorldMap[cities,USA,Australia,Mexico]} \end{pspicture}} \end{document} \end{externalDocument} \clearpage \subsection{Lambert Projection} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo,graphicx} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{xunit=0.75,yunit=0.75} \begin{pspicture}(-9,-4.5)(11,4.5) \WorldMap[type=2,cities] \end{pspicture} \end{document} \end{externalDocument} \clearpage \subsection{Simple Projection} \begin{externalDocument}[grfOptions={height=0.8\textheight}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \begin{pspicture}(-3,-9)(3,10) \rput{90}(0,0){\WorldMap[type=3,maillage]} \end{pspicture} \end{document} \end{externalDocument} \clearpage \subsection{Sanson-Flamsteed Projection } \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{xunit=0.75,yunit=0.75} \begin{pspicture}(-5,-5)(8,5) \WorldMap[type=4] \end{pspicture} \end{document} \end{externalDocument} \clearpage \subsection{Cylindrique Projection } \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo,graphicx} %StopVisiblePreamble \pagestyle{empty} \begin{document} \resizebox{\linewidth}{!}{% \begin{pspicture}*(-9,-9)(9.5,9) \WorldMap[type=5] \end{pspicture}} \end{document} \end{externalDocument} \clearpage \subsection{Babinet Projection} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{xunit=0.75,yunit=0.75} \begin{pspicture}(-9,-7)(10,7) \WorldMap[type=6] \end{pspicture} \end{document} \end{externalDocument} \clearpage \subsection{Collignon Projection} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{xunit=0.75,yunit=0.75} \begin{pspicture}(-9,-7)(10,7) \WorldMap[type=7] \end{pspicture} \end{document} \end{externalDocument} \clearpage \subsection{Bonne Projection} The reference latitude and longitude can be chosen with the parameters: \Parameter{latitude0=45} and \Parameter{longitude0=0}, which are the default values. \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \begin{pspicture}(-7,-10)(7,3) \WorldMap[type=8] \end{pspicture} \end{document} \end{externalDocument} \clearpage \section{How to zoom in on a given country or region} No specific command has been provided, but the following procedure: \begin{enumerate} \item Place a \textTT{showgrid} option after drawing the map, then locate the coordinates of the two opposite vertices of the rectangle in which the desired region will be included. \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{level=1,linewidth=0.5\pslinewidth, xunit=0.75,yunit=0.75} \begin{pspicture*}[showgrid](-9,-9)(10,9) \WorldMap[rivers,cities,USA,maillage=false] \psframe[linewidth=0.5mm,linecolor=red](-6.5,1)(-3,3) \end{pspicture*} \end{document} \end{externalDocument} \item For example, if we choose to represent the United States, the coordinates of the bottom-left and top-right corners will be: \textTT{(-6.5,1)(-3,3)} The enlargement will be obtained by changing the unit, a zoom will be obtained with: \psset{xunit=4,yunit=4}. Finally, the command will be written: \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{xunit=4,yunit=4, linewidth=1.25\pslinewidth} \begin{pspicture}*(-6.5,1)(-3,3) \WorldMap[rivers,cities,USA,maillage] \end{pspicture} \end{document} \end{externalDocument} \end{enumerate} \section{Downloading the files} The data (\textTT{wdb.zip}) is here: \url{http://melusine.eu.org/syracuse/mluque/mappemonde/} If you have not read the file README, the compilation is having trouble. You must indeed indicate the path of the data in the path variable. This variable contains the path of the data on my hard drive: \verb+path=C:/mappemonde/wdb+ Before \verb+\begin{document}+, you must indicate the one that corresponds to your configuration with a command of the type: \verb+\psset{path=C:/mappemonde/wdb}+ or modify it directly in the \verb+pst-geo.tex+. \part{WorldMap 2DII} In the continuity of \textsf{pst-map2d}, this solution proposes to use the geographic database: \textsf{CIA World DataBank II}, which can be found on \url{http://www.evl.uic.edu/pape/data/WDB/}. We will retrieve on this site all the data which weigh, compressed in \textsf{tgz} format, 30 MB and 121 MB once uncompressed. This gives an exceptional fineness of drawing, which obviously cannot be appreciated, not on the screen, but when printed, if possible with a laser printer! Obviously the calculation time is proportional to the size of the data to be processed. However, options allow to choose the representation of one continent or several. A powerful computer with a lot of RAM is therefore desirable. \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{xunit=5,yunit=5} \psframebox[framesep=0pt,linewidth=0.2mm,doubleline]{% \begin{pspicture}*(-0.5,1.70)(1.5,3)% \WorldMapII[Africa,increment=2] \end{pspicture}} \end{document} \end{externalDocument} \section{Data formatting} The data formatting has been done (\textTT{wdbII.zip}) on: \url{http://melusine.eu.org/syracuse/mluque/mappemonde/}. If you want to do it yourself, here are some instructions. To facilitate the work of PostScript and reduce the calculation time, the data \textTT{europe-cil_II.dat} etc. must be very slightly adapted with a text editor accepting large files. All the lines \textTT{segment ...} must be replaced by: \textsf{][\% segment...} For clarity, if the editor allows it, a line break will be inserted between the two brackets ] [. We will modify the beginning and end of the file thus obtained by placing at the beginning, in place of the first bracket ] : \verb|/europe-cil [| and at the end, we will add : \verb|] ] def| This example, valid for the file \textTT{europe-cil_II.dat}, must be repeated and adapted by modifying the names for all the other files. Giuseppe Matarazzo has developed a program to do this work automatically, it is part of the distribution. However, the work does not stop there! The data structure of the files \textTT{asia-cil_II.dat}, \textTT{asia-riv_II.dat} and \textTT{Southamerica-cil_II.dat} poses a problem. Let's start with the file that gives the most problems: \textTT{asia-cil_II.dat}. With your text editor, search and delete the segments: \begin{itemize} \item segment 7925 à segment 7957 \item segment 7966 \item segment 7968 à segment 7986 \item segment 8377 \item segment 8638 à segment 8641 \item segment 8645 à segment 8650 \item segment 8645 à segment 8650 \item segments 15 à segment 123 \end{itemize} Example: we will delete [ segment 7925 …] from one bracket to the other, including brackets. These missing parts are replaced by the file \textTT{asia-isl_II.dat} which is the concatenation of the previous ones. For the file \textTT{Southamerica-cil_II.dat}, delete the segments in the same way: \begin{itemize} \item segment 2166 \item segment 1948 \end{itemize} They will be replaced by the \textTT{Southamerica-arc_II.dat} file: there you have it! If you have not read the README file, the compilation must have been difficult. You must indeed indicate the path of the data in the path variable. This variable contains the path of the data on my hard drive: \verb|path=data| So before the \verb|\begin{document}|, you must indicate the one that corresponds to your configuration with a command of the type: \verb|\psset{path=data}| or modify it directly in the pst-mapII.tex file. \section{The Options} \subsection{The different types of projections} They are those seen with pst-map2d; here there is only one level of detail: so no choice possible. \begin{center} \renewcommand\arraystretch{2} \begin{tabular}{|l|c|}\hline \Parameter{type=1}& Mercator\\ \hline \Parameter{type=2} & Lambert\\ \hline \Parameter{type=3} & simple\\ \hline \Parameter{type=4} & Sanson-Flamsteed\\ \hline \Parameter{type=5} & cylindrical\\ \hline \Parameter{type=6} & Babinet\\ \hline \end{tabular} \end{center} \subsection{Options} The options here are limited to the choice of continents and rivers as well as the drawing or not of parallels and meridians. By default, all continents and rivers are drawn. \begin{itemize} \item \Parameter{Europe=false}: Europe is not drawn. \item \Parameter{Africa=false}: Africa is not drawn. \item \Parameter{Asia=false}: Asia is not drawn. \item \Parameter{Northamerica=false}: North America is not drawn. \item \Parameter{Southamerica=false}: South America is not drawn. \item \Parameter{rivers=false}: rivers are not drawn. \item \Parameter{borders=false}: borders are not drawn. \item \Parameter{cities=false}: cities are not placed. If cities: capitals and cities are placed (without the name). \item \Parameter{capitals}: only capitals are indicated. \item \Parameter{mesh=false}: parallels and meridians are not drawn. \item \Parameter{increment=10}: is the default value, in degrees, of the angular difference between two meridians or parallels. We can therefore set a smaller value in the case of a zoom. \item \Parameter{ilimiteL=180}: is the default absolute value, in degrees, of the longitude (±180). \end{itemize} \section{How to use it} I disabled the drawing of rivers and borders with the options: \begin{verbatim} rivers=false,borders=false \end{verbatim} In order to speed up the display. You are free to activate them by setting them to true \clearpage \subsection{Mercator} The following script draws the Mercator projection (which is the default type), in landscape mode: \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \makebox[\textwidth]{% \begin{pspicture*}(-9,-9)(9,10) \rput{90}(0,0){\WorldMapII[all,rivers=false,borders=false,linewidth=0.1\pslinewidth,level=75]} \end{pspicture*}} \end{document} \end{externalDocument} \clearpage \subsection{Lambert} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \makebox[\textwidth]{% \psset{xunit=0.75,yunit=0.75} \begin{pspicture}(-9,-5)(9,5) \WorldMapII[type=2,all,rivers=false,borders=false,linewidth=0.1\pslinewidth] \end{pspicture}} \end{document} \end{externalDocument} \begin{landscape} \subsection{Simple Projection} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} \definecolor{ocean}{rgb}{0.5,0.8,0.8} %StopVisiblePreamble \pagestyle{empty} \begin{document} \begin{pspicture*}(-9,-3)(9,3) \psframe*[linecolor=ocean](-9,-3)(9,3) \WorldMapII[type=3,all,maillage=false,rivers=false,borders=false,linewidth=0.1\pslinewidth] \end{pspicture*} \end{document} \end{externalDocument} \end{landscape} \subsection{Sanson-Flamsteed} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo,graphicx} %StopVisiblePreamble \pagestyle{empty} \begin{document} \resizebox{\linewidth}{!}{% \begin{pspicture*}(-10,-5)(10,5) \WorldMapII[type=4,all,rivers=false,borders=false,linewidth=0.1\pslinewidth] \end{pspicture*}} \end{document} \end{externalDocument} \clearpage \subsection{Projection cylindrique} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{xunit=0.5,yunit=0.5} \begin{pspicture}*(-9,-12)(9.5,14) \psframe(-9,-12)(9.5,14) \WorldMapII[type=5,all,linewidth=0.1\pslinewidth,rivers=false,borders=false] \end{pspicture} \end{document} \end{externalDocument} \clearpage \subsection{Babinet} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{xunit=0.75,yunit=0.75} \begin{pspicture*}(-10,-5)(10,5) \WorldMapII[type=6,all,rivers=false,borders=false,linewidth=0.1\pslinewidth] \end{pspicture*} \end{document} \end{externalDocument} \clearpage \subsection{Collignon} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo,graphicx} %StopVisiblePreamble \pagestyle{empty} \begin{document} \resizebox{\linewidth}{!}{% \psset{xunit=0.75,yunit=0.75} \begin{pspicture*}(-10,-5)(10,5) \WorldMapII[type=7,all] \end{pspicture*}} \end{document} \end{externalDocument} \clearpage \subsection{Bonne} The reference latitude and longitude can be chosen with the parameters: \Parameter{latitude0=45} and \Parameter{longitude0=0}, which are the default values. \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \begin{pspicture*}(-7,-10)(7,3) \WorldMapII[type=8,all] \end{pspicture*} \end{document} \end{externalDocument} \clearpage \section{How to zoom in on a given country or region} No specific command has been provided, but the following procedure: \begin{enumerate} \item Place a \verb|\psgrid| after drawing the map, then locate the coordinates of the two opposite vertices of the rectangle in which the desired region will be included. \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{linewidth=0.2\pslinewidth, xunit=0.75,yunit=0.75} \begin{pspicture*}[showgrid](-9,-9)(10,9) \WorldMapII[maillage=false,rivers=false,borders=false,all] \psframe[linewidth=0.5mm,linecolor=red](-6.5,1)(-3,3) \end{pspicture*} \end{document} \end{externalDocument} \item For example, if we choose to represent the United States, the coordinates of the bottom-left and top-right corners will be: (-6.5,1)(-3,3) The enlargement will be obtained by changing the unit, a ×4 zoom will be obtained with: \verb|\psset{xunit=4,yunit=4}|. Finally, the command will be written: \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{xunit=4,yunit=4,% zoom 4* linewidth=1.25\pslinewidth} \begin{pspicture}*(-6.5,1)(-3,3) \WorldMapII[Southamerica,Northamerica,Europe=false] \end{pspicture} \end{document} \end{externalDocument} \item For Japan, we will choose the frame \verb|(6.2,1.4)(7.6,2.8)| with a zoom of 10. We will only section Asia, all the others are false. \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psset{xunit=10,yunit=10, % zoom 10* linewidth=1.25\pslinewidth} \begin{pspicture}*(6.2,1.4)(7.6,2.8) \WorldMapII[Asia,increment=1] \end{pspicture} \end{document} \end{externalDocument} \end{enumerate} \part{Three dimensinal views} \newcommand\PstMapThreeDPackage{\textsf{pst-geo}} \psset{linewidth=0.2\pslinewidth,path=data,level=4} \section{Data} GLOBE Binaries DECODING : World Public Domain Dbase: F.Pospeschil, A.Rivera (1999) \url{ftp://ftp.blm.gov/pub/gis/wdbprg.zip} They were converted into a PostScript table, in degrees, using a small Pascal program (by Giuseppe Matarazzo) that is part of the distribution. \section{Parameters and options} \subsection{Parameters} \begin{itemize} \item \Parameter{PHI=49}: latitude of the point of view. \item \Parameter{THETA=0}: longitude of the point of view. \item \Parameter{Dobs=20}: distance of the observer from the center of the sphere. \item \Parameter{Decran=25}: distance of the projection screen from the observer. \item \Parameter{Radius=5}: radius of the sphere. \item \Parameter{increment=10}: angular difference, in degrees, between two parallels or two meridians. \item \Parameter{RotX=0}: the globe is rotated around the Ox axis and the new coordinates are recalculated; \item \Parameter{RotY=0}: the globe is rotated around the Oy axis and the new coordinates are recalculated; \item \Parameter{RotZ=0}: the globe is rotated around the Oz axis and the new coordinates are recalculated. \end{itemize} 𝑂𝑥𝑦𝑧 is the “absolute” reference frame in which the coordinates are defined. When \Parameter{RotX=0,RotY=0,RotZ=0}, $Oz$ coincides with the polar axis, the $Oxy$ plane is that of the equator and the $Ox$ axis corresponds to longitude 0. The values indicated are the default values. The image will be larger as the distance of the screen from the observer is greater. The distance values are in cm. \subsection{Options} \begin{itemize} \item \Parameter{MapFillColor=0.99 0.95 0.7}: allows you to choose the fill color of the continents, in RGB mode. \item \Parameter{gridmapcolor=0.5 0.5 0.5}: allows you to choose the canvas color in RGB mode. \item \Parameter{level=1}: high level of detail (value enabled by default). \item \Parameter{level=2}: medium level of detail, the world map is drawn very quickly. \item \Parameter{cities}: capitals and important cities are placed. \item \Parameter{capitals}: only capitals are indicated. \item \Parameter{maillage=false}: parallels and meridians are not drawn. \end{itemize} \clearpage \section{More Exemples} \psset{level=2} \subsection{The world map in its entirety} \subsubsection{Without cities} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=30,THETA=0,gridmapcolor=black]% \end{pspicture}} \end{document} \end{externalDocument} \clearpage \subsubsection{With cities} Here we see the rotation effect of the RotX=-60 parameter \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=50,THETA=0,cities,RotX=-60]% \end{pspicture}} \end{document} \end{externalDocument} \clearpage \subsection{Choosing the viewpoint} If we ignore the RotX, RotY and RotZ parameters, the viewpoint is determined by \verb+THETA+ and \verb+PHI+, i.e. by latitude and longitude. We must then choose the distance of the viewpoint \verb+Dobs+ and the position of the projection screen \verb+Decran+. For example, a view of the North Pole will be obtained with: \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=90,THETA=-50] \end{pspicture}} \end{document} \end{externalDocument} \clearpage For example, a view at the equator will be obtained with: \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=0,THETA=100,cities] \end{pspicture} \end{document} \end{externalDocument} \clearpage Here is a view of the Asian continent: \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=50,THETA=90,maillage=false,cities] \end{pspicture}} \end{document} \end{externalDocument} \clearpage \section{Zoom and animations} \subsection{Zoom} To zoom in on a part of the world map, simply move the observer closer to the sphere (not too much, it creates distortions) or move the projection screen away. We will go to \Parameter{level=1}. \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \psframebox[fillstyle=solid,fillcolor=black!30,linewidth=0.5pt]{% \begin{pspicture}*(-7,-4)(7,4) \WorldMapThreeD[PHI=48,THETA=30,cities,increment=5,Decran=48,level=1]% \end{pspicture}} \end{document} \end{externalDocument} \clearpage \subsection{Animations} To rotate the globe around the pole axis, we will vary \verb+THETA+ in a \verb+\multido+ loop. We will use one of the animation techniques already presented, for example on: \url{http://tug.org/mailman/htdig/pstricks/2002/000697.html}\\ \url{http://tug.org/mailman/htdig/pstricks/2002/000698.html}\\ \url{http://melusine.eu.org/syracuse/scripts/PST-anim/} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo,multido} %StopVisiblePreamble \pagestyle{empty} \begin{document} \multido{\iTheta=0+10}{18}{% \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}*(-7,-4)(7,4) \WorldMapThreeD[PHI=48,THETA=\iTheta,cities,increment=5,Decran=48,level=1]% \end{pspicture}}} \end{document} \end{externalDocument} We can create an animation consisting of a flyover of the globe by doing vary THETA and PHI as well as possibly the altitude of the observer. \section{Downloading the files} These are the same data files as pst-map2d (part of \textTT{wdb.zip}): \url{http://melusine.eu.org/syracuse/mluque/mappemonde/} If you have not read the file README of the pst-map2d documentation, the compilation will have trouble. You must indeed indicate the path of the data in the path variable. This variable contains the path of the data on my hard drive: \verb+path=C:/mappemonde/wdb+ So before the \verb+\begin{document}+, you must indicate the one that corresponds to your configuration with a command of the type: \verb+\psset{path=C:/mappemonde/wdb}+ or modify it directly in the \verb+pst-map3d.tex+ file. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3dII %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \part{3dII} \begin{quote} In the continuity of pst-geo, this solution proposes to use the geographic database: CIA World DataBank II, which can be found on \url{http://www.evl.uic.edu/pape/data/WDB/} to draw the world map in 3D. As we had already indicated in the previous package and if you have not done so, you will have to retrieve from this site all the data which weigh, compressed in tgz format, 30 MB and 121 MB once uncompressed. This gives an exceptional fineness of drawing! Obviously the calculation time is proportional to the size of the data to be processed. However, options allow you to choose the representation of one continent or several. A powerful computer with a lot of RAM is therefore desirable: for comfortable work 512 Mb seems ideal. However, if we limit ourselves to drawing certain parts of the world, the calculation time is very reasonable and a reduced memory is sufficient. \end{quote} \section{Data formatting} To facilitate the work of PostScript and reduce the calculation time, the data \textTT{europe-cil_II.dat} etc. must be very slightly adapted with a text editor accepting large files. All the lines \textTT{segment ...} must be replaced by \verb|][\% segment...| For clarity, if the editor allows it, we will insert a line break between the two brackets \textTT{] [}. We will modify the beginning and end of the file thus obtained by placing at the beginning, in place of the first bracket ] : \verb|/europe-cil_II [| and at the end, we will add : \verb|] ] def| We will save the file under the name \verb|europe-cil_II.dat|. This example, valid for the file \verb|europe-cil_II.dat|, must be repeated and adapted, by modifying the names, to all the other files. Giuseppe Matarazzo has developed a program to do this work automatically, it is part of the distribution (in case of problems please contact him). \section{An example: the Mediterranean region} It is obtained by the command: In which \textTT{PHI=40,THETA=15} set the latitude and longitude position of the point of view: on the map the point of corresponding geographic coordinates will be at the center; it is necessary, however, that the coordinates of the environment \verb+\begin{pspicture}*(-9,-4)(9,4)+ have a central symmetry. Decran=80 sets the distance from the projection screen of the image seen, the greater this distance, the larger the image obtained (the greater the zoom effect). \textTT{Asia,Africa,Northamerica=false,Southamerica=false} indicates the regions that will or will not be represented, Europe is there by default. increment=2 represents the angular difference, in degrees, between two parallels or two meridians. The explanations concerning these parameters will be developed in the following examples, as well as those of other parameters. \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \makebox[\textwidth]{% \begin{pspicture*}(-9,-4)(9,4) \WorldMapThreeDII[PHI=35,THETA=15,Decran=80,cities, Asia,Africa,rivers=false, linewidth=0.5pt,increment=5] \end{pspicture*}} \end{document} \end{externalDocument} \section{Parameters and options} \subsection{Parameters} \begin{itemize} \item \Parameter{PHI=49}: latitude of the viewpoint. \item \Parameter{THETA=0}: longitude of the viewpoint. \item \Parameter{Dobs=20}: distance of the observer from the center of the sphere. \item \Parameter{Decran=25}: distance of the projection screen from the observer. \item \Parameter{Radius=5}: radius of the sphere. \item \Parameter{increment=10}: angular difference, in degrees, between two parallels or two meridians. \item \Parameter{RotX=0}: the globe is rotated around the Ox axis and the new coordinates are recalculated; \item \Parameter{RotY=0}: the globe is rotated around the Oy axis and the new coordinates are recalculated; \item \Parameter{RotZ=0}: the globe is rotated around the Oz axis and the new coordinates are recalculated. \end{itemize} 𝑂𝑥𝑦𝑧 is the “absolute” reference frame in which the coordinates are defined. If \texttt{RotX=0,RotY=0,RotZ=0, Oz} coincides with the axis of the poles, the plane $Oxy$ is that of the equator and the axis 𝑂𝑥 corresponds to longitude 0. The values indicated are the default values. The image will be all the larger as the distance of the screen from the observer is large. The distance values are in cm. \subsection{ Options} \begin{itemize} \item \Parameter{Europe}: Europe is drawn (default). \item \Parameter{Africa=false}: Africa is not drawn. \item \Parameter{Asia=false}: Asia is not drawn. \item \Parameter{Northamerica=false}: North America is not drawn. \item \Parameter{Southamerica=false}: South America is not drawn. \item \Parameter{rivers=false }: rivers are not drawn. \item \Parameter{borders=false }: borders are not drawn. \item \Parameter{cities }: capitals and important cities are placed. \item \Parameter{capitals }: only capitals are shown. \item \Parameter{meaillage=false }: parallels and meridians are not drawn. \end{itemize} \section{The user manual} \subsection{The world map in its entirety} It is obviously possible, but the calculation time is high. It is better if you do not have a fast computer with a lot of RAM to disable the drawing of rivers and borders. By choosing the values of PHI and THETA we will fix the point of view. With the following scenario we place ourselves above the North Pole. \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \begin{pspicture*}(-7,-7)(7,7) \psframe*[linecolor=black!30](-7,-7)(7,7) \WorldMapThreeDII[PHI=80,THETA=-10,Decran=25,cities, Asia,Africa,Northamerica,Southamerica, rivers=false,borders=false,linewidth=0.5pt] \end{pspicture*} \end{document} \end{externalDocument} \clearpage The globe is rotated by −45° around $Ox$, in the $Oxyz$ frame the new coordinates are recalculated; the drawing of rivers and streams is deactivated. \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \begin{pspicture*}(-7,-7)(7,7) \psframe*[linecolor=black!30](-7,-7)(7,7) \WorldMapThreeDII[PHI=42,THETA=20,Decran=25,RotX=-45,cities, Asia,Africa,Northamerica,Southamerica, rivers=false,linewidth=0.5pt,borders=false] \end{pspicture*} \end{document} \end{externalDocument} \subsection{Visualizing a part of the globe} However, it is more interesting to use the package to make a close-up of a region of the globe. We will then deactivate the regions that are not represented, as we saw in the first example of presentation. \clearpage \subsubsection{France} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \begin{pspicture*}(-8,-8)(8,8) \WorldMapThreeDII[PHI=45,THETA=2,Decran=150,cities,% Asia=false,Africa=false,Southamerica,Europe,increment=2]% France \end{pspicture*} \end{document} \end{externalDocument} \clearpage \subsubsection{Central America} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \begin{pspicture*}(-8,-8)(8,8) \WorldMapThreeDII[PHI=15,THETA=-90,Decran=80,cities,% Asia=false,Africa=false,Southamerica,Europe=false,Northamerica,increment=2]% Mexico \end{pspicture*} \end{document} \end{externalDocument} \clearpage \subsubsection{Madagascar} \begin{externalDocument}[grfOptions={width=0.95\linewidth}, compiler=latex,code,frame=false,%mpwidth=0.6\linewidth, crop,cleanup,usefancyvrb=false,ext=tex,showFilename]{voss} \documentclass{article} %StartVisiblePreamble \usepackage{pst-geo} %StopVisiblePreamble \pagestyle{empty} \begin{document} \begin{pspicture*}(-5,-5)(5,5) \WorldMapThreeDII[PHI=-19,THETA=47.5,Decran=85,Dobs=15,cities, Asia=false,Africa,Southamerica=false,Europe=false,Northamerica=false,increment=2]% Madagascar \end{pspicture*} \end{document} \end{externalDocument} \section{Downloading files} \begin{itemize} \item Geographic data can be downloaded from: \url{http://www.evl.uic.edu/pape/data/WDB/} \item Files concerning the package on: \url{http://pageperso.aol.fr/manuelluque1/map3dII/doc-pst-map3dii.html} \end{itemize} %\clearpage %\section{List of all optional arguments for} %\xkvview{family=pst-geo,columns={key,type,default}} \bgroup \RaggedRight \nocite{*} \printbibliography \egroup %\printindex \end{document}