%% $Id: pst-geo-doc.tex 918 2014-05-19 12:32:37Z herbert $ \documentclass[11pt,french,BCOR10mm,DIV12,bibliography=totoc,parskip=false, smallheadings, headexclude,footexclude,oneside]{pst-doc} \usepackage[utf8]{inputenc} \usepackage{pstricks,url} \usepackage{ragged2e,xspace} \usepackage{pst-geo} \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{}% \definecolor{ocean}{rgb}{0.5,0.8,0.8} \begin{document} \title{\texttt{pst-geo}} \subtitle{A PSTricks package for Geographical Projections\\Version \GeoFileVersion} \author{Manuel Luque \\ Herbert Voß} \docauthor{} \date{\today} \maketitle \part{WorldMap 2D} \begin{abstract} Nous sommes fix\'es pour objectif de repr\'esenter à l'aide PSTricks, diverses projections cartographiques du globe terrestre. Cette extension \PstMapTwoDPackage{} concerne les projections planes (Mercator, Lambert, cylindrique etc.) et de la repr\'esentation en trois dimensions du globe terrestre avec plusieurs fonctionnalit\'es qui rendent son utilisation agr\'eable (tout au moins nous l'esp\'erons). Diff\'erentes possibilit\'es permettant de choisir le niveau du d\'etail et les trac\'es possibles (villes, fronti\`eres, rivi\`eres etc.), vont \^etre d\'etaill\'ees dans la suite du document. \end{abstract} \tableofcontents \section{Les sources\label{sources}} \subsection{Pour la partie math\'ematique} \begin{enumerate} \item Henri \textsc{Bouasse} : G\'eographie math\'ematique (1919), Delagrave. \item \url{http://mathworld.wolfram.com/topics/MapProjections.html} \end{enumerate} \subsection{Les donn\'ees} GLOBE Binaries DECODING : World Public Domain Dbase : F.Pospeschil, A.Rivera (1999) \url{ftp://ftp.blm.gov/pub/gis/wdbprg.zip} Elles ont \'et\'e converties sous forme de tableau PostScript, en degr\'es, gr\^ ace à un petit programme en pascal (de Giuseppe Matarazzo) qui fait partie de la distribution. \subsection{Le pr\'ecurseur en postscript} Bill \textsc{Casselman} : \url{http://www.math.ubc.ca/~cass/graphics/text/www/} Dont le chapitre 8 a inspir\'e la r\'ealisation du programme pour PSTricks. Il traite des transformations non linéaires et donne divers exemples dont les projections planes de la mappemonde. C'est un très beau travail ! \section{Les diff\'erents types de projections et le niveau de d\'etail} \subsection{Les différents types de projections} Il y a, pour l'instant, 6 types de projections, lesquelles se paramètrent de la manière suivante : \begin{center} \renewcommand\arraystretch{2} \begin{tabular}{|lcr|c|}\hline \multicolumn{3}{|c|}{paramètre}&type de 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{Les cinq niveaux des d\'etails} \begin{center} \begin{tabular}{|lcr|c|}\hline \multicolumn{3}{|c|}{niveau de détail}& caractèristique\\ \hline level&=&1& très détaillé\\ \hline level&=&2 & détaillé\\ \hline level&=&3 & assez détaillé\\ \hline level&=&4 & moyennement détaillé\\ \hline level&=&5 & très schématique\\ \hline \end{tabular} \end{center} \subsection{Les options} On ne tracera, par défaut, que le contours des côtes. \begin{itemize} \item \Parameter{ilimiteL=180} : est la valeur absolue par défaut, en degrés, de la longitude $(\pm 180)$. \item \Parameter{increment=10} : est la valeur par défaut, en degrés, de l'écart angulaire entre deux méridiens ou parallèles. On pourra donc fixer une valeur plus petite dans le cas d'un zoom. \item \Parameter{MapFillColor={[rgb]{0.99,0.95,0.7}}} : permet de choisir la couleur de remplissage des continents, en mode RGB. \item \Parameter{borders} : on dessine les frontières des pays. \item \Parameter{rivers} : permet de dessiner les fleuves et les rivières. \item \Parameter{cities} : marque les capitales et les principales villes. \item \Parameter{capitals} : on ne positionne que les capitales. \item \Parameter{maillage=false} : permet de supprimer les parallèles et les méridiens. \item \Parameter{Fill=false} : les surfaces ne sont pas coloriées. \item \Parameter{USA}, \Parameter{MEX}, \Parameter{=true} dessinent respectivement les états des \textsc{USA}, du Mexique et de l'Australie. \end{itemize} \clearpage \section{Mode d'emploi} \subsection{Projection de Mercator} L'utilisation de la commande est très simple : \Parameter{$\backslash$WorldMap[maillage=false]} dessine la projection de Mercator, sans les parallèles et les méridiens. Par défaut, c'est le niveau de détail le plus élevé et la projection type Mercator qui ont été choisis : \Parameter{[type=1,level=1]}. On jouera sur les unités afin d'adapter le dessin aux dimensions souhaitées, avec par exemple~: \begin{lstlisting} \psset{linewidth=0.75\pslinewidth} {\psset{xunit=0.5,yunit=0.5} \begin{pspicture}*(-9,-9)(10,9) \WorldMap[maillage=false] \end{pspicture}} \end{lstlisting} qui permet d'obtenir la projection de Mercator suivante : \begin{center} \psset{linewidth=0.75\pslinewidth} {\psset{xunit=0.5,yunit=0.5} \psset{MapFillColor={[rgb]{0.5,0.8,0.5}}} \begin{pspicture}*(-9,-9)(10,9) \WorldMap[maillage=false] \end{pspicture}} \end{center} \clearpage Le script suivant dessine la projection de Mercator, en mode paysage : \begin{lstlisting} \begin{pspicture}*(-9,-9)(9,10) \rput{90}(0,0){\WorldMap[cities,borders]} \end{pspicture} \end{lstlisting} \resizebox{\linewidth}{!}{% \begin{pspicture}*(-9,-9)(9,10) \rput{90}(0,0){\WorldMap[cities,USA,Australia,Mexico]} \end{pspicture}} \subsection{Projection de Lambert} \begin{lstlisting} {\psset{xunit=0.75,yunit=0.75} \begin{pspicture}(-9,-4.5)(9.5,4.5) \WorldMap[type=2,cities] \end{pspicture}} \end{lstlisting} \begin{center} {\psset{xunit=0.75,yunit=0.75} \begin{pspicture}(-9,-4.5)(9.5,4.5) \WorldMap[type=2,cities] \end{pspicture}} \end{center} \subsection{Projection simple} \begin{lstlisting} \begin{pspicture}(-3,-9)(3,10) \rput{90}(0,0){\WorldMap[type=3,maillage]} \end{pspicture} \end{lstlisting} \begin{center} \begin{pspicture}(-3,-9)(3,10) \rput{90}(0,0){\WorldMap[type=3,maillage]} \end{pspicture} \end{center} \subsection{Projection Sanson-Flamsteed} \begin{lstlisting} \psset{xunit=0.75,yunit=0.75} \begin{pspicture}(-5,-5)(8,5) \WorldMap[type=4] \end{pspicture} \end{lstlisting} \begin{center} \psset{xunit=0.75,yunit=0.75} \begin{pspicture}(-5,-5)(8,5) \WorldMap[type=4] \end{pspicture} \end{center} \subsection{Projection cylindrique} \begin{lstlisting} \begin{pspicture}*(-9,-9)(9.5,9) \WorldMap[type=5] \end{pspicture} \end{lstlisting} \resizebox{\linewidth}{!}{% \begin{pspicture}*(-9,-9)(9.5,9) \WorldMap[type=5] \end{pspicture}} \subsection{Projection de Babinet} \begin{center} {\psset{xunit=0.75,yunit=0.75} \begin{pspicture}(-9,-7)(10,7) \WorldMap[type=6] \end{pspicture}} \end{center} \subsection{Projection de Collignon} \begin{center} {\psset{xunit=0.75,yunit=0.75} \begin{pspicture}(-9,-7)(10,7) \WorldMap[type=7] \end{pspicture}} \end{center} \clearpage \subsection{Projection de Bonne} On peut choisir la latitude et la longitude de référence avec les paramètres : \Parameter{latitude0=45} et \Parameter{longitude0=0}, qui sont les valeurs par défaut. \begin{center} \begin{pspicture}(-7,-10)(7,3) \WorldMap[type=8] \end{pspicture} \end{center} \clearpage \section{Comment faire un zoom sur un pays ou une région donnée} Il n'a pas été prévu de commande particulière, mais la procédure suivante : \begin{enumerate} \item Placer un option \verb+showgrid+ après le tracé de la carte, puis repérer les coordonnées des deux sommets opposés du rectangle dans lequel sera inclus la région souhaitée. \begin{center} \psset{level=1,linewidth=0.5\pslinewidth} \psset{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{center} \item Par exemple, si nous choisissons de représenter les \'Etats-Unis les coordonnées des coins bas-gauche et haut-droit seront : \verb+(-6.5,1)(-3,3)+ L'agrandissement sera obtenu en changeant d'unité, un zoom $\times4$ s'obtiendra avec : \verb+\psset{xunit=4,yunit=4}+. Finalement la commande s'écrira : \begin{lstlisting} \psset{level=1,linewidth=0.5\pslinewidth} \psset{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{lstlisting} \begin{center} \psset{xunit=4,yunit=4}% zoom 4* \psset{linewidth=1.25\pslinewidth} \begin{pspicture}*(-6.5,1)(-3,3) \WorldMap[rivers,cities,USA,maillage] \end{pspicture} \end{center} \end{enumerate} \section{Téléchargement des fichiers} Le fichier des données (\texttt{wdb.zip}) est sur : \url{http://melusine.eu.org/syracuse/mluque/mappemonde/} Si vous n'avez pas lu le fichier \verb+A LIRE+, la compilation a du mal se passer. Il faut en effet indiquer le chemin des données dans la variable \verb+path+. Cette variable contient le chemin des données sur mon disque dur : \verb+path=C:/mappemonde/wdb+ Il faut donc avant le \verb+\begin{document}+, indiquer celui qui correspond à votre configuration avec une commande du type : \verb+\psset{path=C:/mappemonde/wdb}+ ou bien le modifier directement dans le fichier \verb+pst-geo.tex+. Il est prévu la création d'un CR-ROM contenant toutes données, il sera gravé et fourni gratuitement par Giuseppe à tous ceux qui lui en feront la demande. \part{WorldMap 2DII} Dans la continuité de \textsf{pst-map2d}, cette solution se propose d'utiliser la base de données géographiques : \textsf{CIA World DataBank II}, que l'on trouvera sur \url{http://www.evl.uic.edu/pape/data/WDB/}. On récupérera sur ce site toutes les données qui pèsent, compressées au format \textsf{tgz}, 30~Mo et 121~Mo une fois décompactées. Cela donne une finesse de tracé exceptionnelle, qui évidemment ne peut-être appréciée, non pas sur l'écran, mais à l'impression, si possible avec une imprimante laser ! \'Evidemment le temps de calcul est proportionnel à la taille des données à traiter. Cependant des options permettent de choisir la représentation d'un continent ou plusieurs. Un ordinateur puissant avec beaucoup de mémoire vive est donc souhaitable. \begin{center} \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{center} \section{La mise en forme des données} La mise en forme des données a été effectuée (\textsf{wdbII.zip}) sur : \url{http://melusine.eu.org/syracuse/mluque/mappemonde/}. Si vous souhaitez le faire vous-même, voici quelques indications. Pour faciliter le travail de PostScript et diminuer le temps de calcul les données \verb|europe-cil_II.dat| etc. doivent être très légèrement adaptées avec un éditeur de texte acceptant les fichiers lourds. Tous les lignes \textsf{segment ...} doivent être remplacées par : \textsf{][\% segment...}. Pour la clarté, si l'éditeur le permet on insérera un saut de ligne entre les deux crochets \textsf{] [}. On modifiera le début et la fin du fichier ainsi obtenu plaçant au début, à la place du premier crochet~] : \verb|/europe-cil [| et à la fin, on rajoutera : \verb|] ] def| Cet exemple valable pour le fichier \verb|europe-cil_II.dat| doit être répété et adapté en modifiant les noms à tous les autres fichiers. Giuseppe Matarazzo a mis au point un programme permettant de faire ce travail automatiquement, il fait partie de la distribution. Cependant le travail ne s'arrête pas là ! La structure des données des fichiers \verb|asia-cil_II.dat|, \verb|asia-riv_II.dat| et \verb|Southamerica-cil_II.dat| pose problème. Commençons par le fichier qui donne le plus de soucis : \verb|asia-cil_II.dat|. Avec un votre éditeur de textes rechercher puis supprimez les 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} Exemple : on supprimera [ segment 7925 \ldots ] d'un crochet à l'autre, crochets compris. Ces parties manquantes sont remplacées par le fichier \verb|asia-isl_II.dat| qui est la concaténation des précédents. Pour le fichier \verb|Southamerica-cil_II.dat|, supprimez de même les segments : \begin{itemize} \item segment 2166 \item segment 1948 \end{itemize} Ils seront remplacés par le fichier \verb|Southamerica-arc_II.dat| : voilà vous êtes arrivés au bout de vos peines ! Si vous n'avez pas lu le fichier \verb+A LIRE+, la compilation a du mal se passer. Il faut en effet indiquer le chemin des données dans la variable \verb+path+. Cette variable contient le chemin des données sur mon disque dur : \verb+path=data+ Il faut donc avant le \verb+\begin{document}+, indiquer celui qui correspond à votre configuration avec une commande du type : \verb+\psset{path=data}+ ou bien le modifier directement dans le fichier \verb+pst-mapII.tex+. \section{Les options} \subsection{Les différents types de projections} Ils sont ceux vus avec \textsf{pst-map2d} ; ici il n'y a qu'un seul niveau de détail : donc pas de choix 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{Les options} Les options se résument ici aux choix des continents et aux fleuves ainsi qu'au dessin ou non des parallèles et méridiens. Par défaut tous les continents et fleuves sont tracés. \begin{itemize} \item \Parameter{Europe=false} : l'Europe n'est pas dessinée. \item \Parameter{Africa=false} : l'Afrique n'est pas dessinée. \item \Parameter{Asia=false} : l'Asie n'est pas dessinée. \item \Parameter{Northamerica=false} : l'Amérique du Nord n'est pas dessinée. \item \Parameter{Southamerica=false} : l'Amérique du Sud n'est pas dessinée. \item \Parameter{rivers=false} : les rivières ne sont pas dessinées. \item \Parameter{borders=false} : les frontières ne sont pas tracées. \item \Parameter{cities=false} : les villes ne sont pas placées. Si \Parameter{cities} : les capitales et les villes sont placées (sans le nom). \item \Parameter{capitals} : les capitales sont seules indiquées. \item \Parameter{maillage=false} : les parallèles et méridiens ne sont pas tracés. \item \Parameter{increment=10} : est la valeur par défaut, en degrés, de l'écart angulaire entre deux méridiens ou parallèles. On pourra donc fixer une valeur plus petite dans le cas d'un zoom. \item \Parameter{ilimiteL=180} : est la valeur absolue par défaut, en degrés, de la longitude $(\pm 180)$. \end{itemize} \section{Le mode d'emploi} \textbf{J'ai désactivé le tracé des fleuves et des frontières avec les options :} \begin{verbatim} rivers=false,borders=false \end{verbatim} \textbf{Afin d'accélérer l'affichage. Libre à vous des les activer en les plaçant à \texttt{true}} \subsection{Mercator} Le script suivant dessine la projection de Mercator (qui est le type par défaut), en mode paysage : \begin{verbatim} \hbox{\hspace{-3cm}% \begin{pspicture}*(-9,-9)(9,10) \rput{90}(0,0){\WorldMapII[all,level=75]} \end{pspicture}} \end{verbatim} \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*} } \subsection{Projection de Lambert} \begin{verbatim} \begin{pspicture*}(-9,-5)(9,5) \WorldMapII[type=2,all] \end{pspicture*} \end{verbatim} \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}} } \begin{landscape} \subsection{Projection simple} \begin{verbatim} \begin{pspicture*}(-9,-3)(9,3) \psframe*[linecolor=ocean](-9,-3)(9,3) \WorldMapII[type=3,maillage=false,all] \end{pspicture*} \end{verbatim} \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{landscape} \subsection{Projection Sanson-Flamsteed} \begin{verbatim} \begin{pspicture*}(-10,-5)(10,5) \WorldMapII[type=4,all] \end{pspicture*} \end{verbatim} \begin{center} \resizebox{\linewidth}{!}{% \begin{pspicture*}(-10,-5)(10,5) \WorldMapII[type=4,all,rivers=false,borders=false,linewidth=0.1\pslinewidth] \end{pspicture*}} \end{center} \clearpage \subsection{Projection cylindrique} \begin{verbatim} \psset{xunit=0.5,yunit=0.5} \begin{pspicture}*(-9,-12)(9.5,14) \psframe(-9,-12)(9.5,14) \WorldMapII[type=5,all] \end{pspicture} \end{verbatim} {\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}} \clearpage \subsection{Projection de Babinet} \begin{verbatim} {\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{verbatim} {\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*}} \clearpage \subsection{Projection de Collignon} \begin{center} \resizebox{\linewidth}{!}{% \psset{xunit=0.75,yunit=0.75} \begin{pspicture*}(-10,-5)(10,5) \WorldMapII[type=7,all] \end{pspicture*}} \end{center} \clearpage \subsection{Projection de Bonne} On peut choisir la latitude et la longitude de référence avec les paramètres : \Parameter{latitude0=45} et \Parameter{longitude0=0}, qui sont les valeurs par défaut. \begin{center} \begin{pspicture*}(-7,-10)(7,3) \WorldMapII[type=8,all] \end{pspicture*} \end{center} \clearpage \section{Comment faire un zoom sur un pays ou une région donnée} Il n'a pas été prévu de commande particulière, mais la procédure suivante : \begin{enumerate} \item Placer un \verb+\psgrid+ après le tracé de la carte, puis repérer les coordonnées des deux sommets opposés du rectangle dans lequel sera inclus la région souhaitée. \begin{center} \psset{linewidth=0.2\pslinewidth} \psset{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{center} \item Par exemple, si nous choisissons de représenter les \'Etats-Unis les coordonnées des coins bas-gauche et haut-droit seront : \verb+(-6.5,1)(-3,3)+ L'agrandissement sera obtenu en changeant d'unité, un zoom $\times4$ s'obtiendra avec : \verb+\psset{xunit=4,yunit=4}+. Finalement la commande s'écrira : \begin{verbatim} \begin{center} \psset{xunit=4,yunit=4}% zoom 4* \psset{linewidth=1.25\pslinewidth} \begin{pspicture*}(-6.5,1)(-3,3) \WorldMapII[Southamerica,Northamerica,Europe=false] \end{pspicture*} \end{center} \end{verbatim} \begin{center} \psset{xunit=4,yunit=4}% zoom 4* \psset{linewidth=1.25\pslinewidth} \begin{pspicture}*(-6.5,1)(-3,3) \WorldMapII[Southamerica,Northamerica,Europe=false] \end{pspicture} \end{center} \item Pour le Japon, on choisira le cadre \verb+(6.2,1.4)(7.6,2.8)+ avec un zoom$\times10$. On ne sectionnera que \texttt{Asia}, tous les autres sont à \texttt{false}. \begin{center} \psset{xunit=10,yunit=10}% zoom 10* \psset{linewidth=1.25\pslinewidth} \begin{pspicture}*(6.2,1.4)(7.6,2.8) \WorldMapII[Asia,increment=1] \end{pspicture} \end{center} \end{enumerate} \part{Three dimensinal views} \newcommand\PstMapThreeDPackage{\textsf{pst-geo}} \psset{linewidth=0.2\pslinewidth,path=data,level=4} \section{Les données\label{datas}} GLOBE Binaries DECODING : World Public Domain Dbase : F.Pospeschil, A.Rivera (1999) \url{ftp://ftp.blm.gov/pub/gis/wdbprg.zip} Elles ont \'et\'e converties sous forme de tableau PostScript, en degr\'es, gr\^ ace à un petit programme en pascal (de Giuseppe Matarazzo) qui fait partie de la distribution. \section{Les paramètres et les options} \subsection{Les paramètres} \begin{itemize} \item \Parameter{PHI=49} : latitude du point de vue. \item \Parameter{THETA=0} : longitude du point de vue. \item \Parameter{Dobs=20} : distance de l'observateur par rapport au centre de la sphère. \item \Parameter{Decran=25} : distance de l'écran de projection par rapport à l'observateur. \item \Parameter{Radius=5} : rayon de la sphère. \item \Parameter{increment=10} : écart angulaire, en degrés, entre deux parallèles ou deux méridiens. \item \Parameter{RotX=0} : on fait tourner le globe terrestre autour de l'axe \textsf{Ox} et on recalcule les nouvelles coordonnées ; \item \Parameter{RotY=0} : on fait tourner le globe terrestre de l'axe \textsf{Oy} et on recalcule les nouvelles coordonnées ; \item \Parameter{RotZ=0} : on fait tourner le globe terrestre autour de l'axe \textsf{Oz} et on recalcule les nouvelles coordonnées. \end{itemize} $Oxyz$ est le repère ``\textit{absolu}'' dans lequel les coordonnées sont définies. Lorsque \Parameter{RotX=0,RotY=0,RotZ=0}, $Oz$ coïncide avec l'axe des pôles, le plan $Oxy$ est celui de l'équateur et l'axe $Ox$ correspond à la longitude 0. Les valeurs indiquées sont les valeurs par défaut. L'image sera d'autant plus grande que la distance de l'écran par rapport à l'observateur sera grande. Les valeurs des distances sont en \textsf{cm}. \subsection{Les options} \begin{itemize} \item \Parameter{MapFillColor=0.99 0.95 0.7 } : permet de choisir la couleur de remplissage des continents, en mode RGB. \item \Parameter{gridmapcolor=0.5 0.5 0.5 } : permet de choisir la couleur du canevas en mode RGB. \item \Parameter{level=1} : niveau de détail élevé (valeur activée par défaut). \item \Parameter{level=2} : niveau de détail moyen, la mappemonde est dessinée très rapidement . \item \Parameter{cities} : les capitales et les villes importantes sont placées. \item \Parameter{capitals} : seules les capitales sont indiquées. \item \Parameter{maillage=false} : les parallèles et méridiens ne sont pas tracés. \end{itemize} \clearpage \section{Divers exemples} \psset{level=2} \subsection{La mappemonde dans sa totalité} \subsubsection{Sans les villes} \begin{verbatim} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=30,THETA=0]% \end{pspicture}} \end{verbatim} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=30,THETA=0,gridmapcolor=black]% \end{pspicture}} \clearpage \subsubsection{Avec les villes} On voit ici l'effet de rotation du paramètre \verb+RotX=-60+ \begin{verbatim} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=50,THETA=0,cities,RotX=-60]% \end{pspicture}} \end{verbatim} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=50,THETA=0,cities,RotX=-60]% \end{pspicture}} \clearpage \subsection{Le choix du point de vue} Si l'on fait abstraction des paramètres \verb+RotX+, \verb+RotY+ et \verb+RotZ+, le point de vue est déterminé par \verb+THETA+ et \verb+PHI+, c'est-à-dire par la latitude et la longitude. Il faut ensuite choisir la distance du point de vue \verb+Dobs+ et la position de l'écran de projection \verb+Decran+. Par exemple une vue du Pôle Nord sera obtenue avec : \begin{verbatim} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=90,THETA=-50] \end{pspicture}} \end{verbatim} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=90,THETA=-50] \end{pspicture}} \clearpage Par exemple une vue au niveau de l'équateur sera obtenue avec : \begin{verbatim} \begin{pspicture}(-5,-5)(5,5) \WorldMapThreeD[PHI=0,THETA=100,cities] \end{pspicture} \end{verbatim} \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=0,THETA=100,cities] \end{pspicture} \clearpage Voici une vue du continent asiatique \begin{verbatim} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=50,THETA=90,maillage=false,cities] \end{pspicture}} \end{verbatim} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}(-7,-7)(7,7) \WorldMapThreeD[PHI=50,THETA=90,maillage=false,cities] \end{pspicture}} \clearpage \section{Zoom et animations} \subsection{Zoom} Pour faire un zoom sur une partie de la mappemonde, il suffit de rapprocher l'observateur de la sphère (pas trop cela crée des distorsions) ou bien d'éloigner l'écran de projection. On passera au \Parameter{level=1}. \begin{verbatim} \begin{center} \psframebox[fillstyle=solid,fillcolor=black!30]{% \begin{pspicture}*(-7,-4)(7,4) \WorldMapThreeD[PHI=48,THETA=30,cities,increment=5,Decran=48,level=1] \end{pspicture} \end{center} \end{verbatim} \begin{center} \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{center} \clearpage \subsection{Animations} Pour faire tourner le globe autour de l'axe des pôles, on fera varier \verb+THETA+ dans une boucle \verb+\multido+. On utilisera l'une des techniques d'animation déjà présentées, par exemple sur : \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{verbatim} \begin{center} \hbox{\hspace{-2cm} \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{center} \end{verbatim} On pourra créer une animation consistant en un survol du globe en faisant varier \verb+THETA+ et \verb+PHI+ ainsi qu'éventuellement l'altitude de l'observateur. \section{Téléchargement des fichiers} Ce sont les mêmes fichiers de données que \verb+pst-map2d+ (une partie de \texttt{wdb.zip}) : \url{http://melusine.eu.org/syracuse/mluque/mappemonde/} Si vous n'avez pas lu le fichier \verb+A LIRE+ de la documentation de \verb+pst-map2d+, la compilation a du mal se passer. Il faut en effet indiquer le chemin des données dans la variable \verb+path+. Cette variable contient le chemin des données sur mon disque dur : \verb+path=C:/mappemonde/wdb+ Il faut donc avant le \verb+\begin{document}+, indiquer celui qui correspond à votre configuration avec une commande du type : \verb+\psset{path=C:/mappemonde/wdb}+ ou bien le modifier directement dans le fichier \verb+pst-map3d.tex+. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3dII %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \par{3dII} \begin{quote} Dans la continuité de \textsf{pst-geo}, cette solution se propose d'utiliser la base de données géographiques : \textsf{CIA World DataBank II}, que l'on trouvera sur \url{http://www.evl.uic.edu/pape/data/WDB/} pour dessiner la mappemonde en 3D. Comme nous l'avions déjà signalé dans le précédent package et si vous ne l'avez pas fait, il faudra récupérera sur ce site toutes les données qui pèsent, compressées au format \textsf{tgz}, 30~Mo et 121~Mo une fois décompactées. Cela donne une finesse de tracé exceptionnelle ! \'Evidemment le temps de calcul est proportionnel à la taille des données à traiter. Cependant des options permettent de choisir la représentation d'un continent ou plusieurs. Un ordinateur puissant avec beaucoup de mémoire vive est donc souhaitable : pour un travail confortable 512~Mb semble l'idéal. Cependant si on se limite au dessin de certaines parties du monde, le temps de calcul est très raisonnable et une mémoire réduite suffisante. \end{quote} \section{La mise en forme des données} Pour faciliter le travail de PostScript et diminuer le temps de calcul les données \verb|europe-cil_II.dat| etc. doivent être très légèrement adaptées avec un éditeur de texte acceptant les fichiers lourds. Tous les lignes \texttt{segment ...} doivent être remplacées par : \verb|][\% segment...| Pour la clarté, si l'éditeur le permet on insérera un saut de ligne entre les deux crochets \texttt{] [}. On modifiera le début et la fin du fichier ainsi obtenu plaçant au début, à la place du premier crochet~] : \verb|/europe-cil_II [| et à la fin, on rajoutera : \verb|] ] def| On enregistrera le fichier sous le nom \verb|europe-cil_II.dat|. Cet exemple valable pour le fichier \verb|europe-cil_II.dat| doit être répété et adapté, en modifiant les noms, à tous les autres fichiers. Giuseppe Matarazzo a mis au point un programme permettant de faire ce travail automatiquement, il fait partie de la distribution (en cas de problèmes veuillez le contacter). \section{Un exemple : la région méditerranéenne} Elle s'obtient par la commande : \begin{verbatim} \WorldMapThreeDII[PHI=40,THETA=15,Decran=80,increment=2,% Asia,Africa,Northamerica=false,Southamerica=false]% \end{verbatim} Dans laquelle \texttt{PHI=40,THETA=15} fixent en latitude et longitude la position du point de vue : sur la carte le point de coordonnées géographiques correspondantes sera au centre ; il est nécessaire cependant, que les coordonnées de l'environnement \verb+\begin{pspicture}*(-9,-4)(9,4)+ possèdent une symétrie centrale. \texttt{Decran=80} fixe la distance de l'écran de projection de l'image vue, plus cette distance sera grande et plus l'image obtenue (plus l'effet de zoom) sera grande. \texttt{Asia,Africa,Northamerica=false,Southamerica=false} indique les régions qui seront ou non représentées, \texttt{Europe} y est par défaut. \texttt{increment=2} représente l'écart angulaire, en degrés, entre deux parallèles ou deux méridiens. Les explications concernant ces paramètres vont être développées dans les exemples suivants, ainsi que celles d'autres paramètres. \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*}} \section{Les paramètres et les options} \subsection{Les paramètres} \begin{itemize} \item \Parameter{PHI=49} : latitude du point de vue. \item \Parameter{THETA=0} : longitude du point de vue. \item \Parameter{Dobs=20} : distance de l'observateur par rapport au centre de la sphère. \item \Parameter{Decran=25} : distance de l'écran de projection par rapport à l'observateur. \item \Parameter{Radius=5} : rayon de la sphère. \item \Parameter{increment=10} : écart angulaire, en degrés, entre deux parallèles ou deux méridiens. \item \Parameter{RotX=0} : on fait tourner le globe terrestre autour de l'axe \textsf{Ox} et on recalcule les nouvelles coordonnées ; \item \Parameter{RotY=0} : on fait tourner le globe terrestre de l'axe \textsf{Oy} et on recalcule les nouvelles coordonnées ; \item \Parameter{RotZ=0} : on fait tourner le globe terrestre autour de l'axe \textsf{Oz} et on recalcule les nouvelles coordonnées. \end{itemize} $Oxyz$ est le repère ``\textit{absolu}'' dans lequel les coordonnées sont définies. Si \Parameter{RotX=0,RotY=0,RotZ=0}, $Oz$ coïncide avec l'axe des pôles, le plan $Oxy$ est celui de l'équateur et l'axe $Ox$ correspond à la longitude 0. Les valeurs indiquées sont les valeurs par défaut. L'image sera d'autant plus grande que la distance de l'écran par rapport à l'observateur sera grande. Les valeurs des distances sont en \textsf{cm}. \subsection{Les options} \begin{itemize} \item \Parameter{Europe} : l'Europe est dessinée(par défaut). \item \Parameter{Africa=false} : l'Afrique n'est pas dessinée. \item \Parameter{Asia=false} : l'Asie n'est pas dessinée. \item \Parameter{Northamerica=false} : l'Amérique du Nord n'est pas dessinée. \item \Parameter{Southamerica=false} : l'Amérique du Sud n'est pas dessinée. \item \Parameter{rivers=false} : les rivières ne sont pas dessinées. \item \Parameter{borders=false} : les frontières ne sont pas dessinées. \item \Parameter{cities} : les capitales et les villes importantes sont placées. \item \Parameter{capitals} : seules les capitales sont indiquées. \item \Parameter{maillage=false} : les parallèles et méridiens ne sont pas tracés. \end{itemize} \section{Le mode d'emploi} \subsection{La mappemonde dans sa totalité} C'est évidemment possible, mais le temps de calcul est élevé .Il vaut mieux si on ne possède pas un ordinateur rapide avec beaucoup de mémoire vive désactiver le tracé de fleuves et des frontières. En choisissant les valeurs de \Parameter{PHI} et \Parameter{THETA} on fixera le point de vue. Avec le scénario suivant on se place au-dessus du pôle Nord. \begin{verbatim} \WorldMapThreeDII[PHI=80,THETA=-10,Decran=25,cities, Asia,Africa,Northamerica,Southamerica, rivers=false,borders=false,linewidth=0.5pt] \end{verbatim} \begin{center} \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{center} \clearpage Avec les paramètres : \begin{verbatim} \WorldMapThreeDII[PHI=80,THETA=-10,Decran=25,cities, Asia,Africa,Northamerica,Southamerica, rivers=false,borders=false,linewidth=0.5pt]% \end{verbatim} On tourne le globe terrestre de $\mathrm{-45^o}$ autour de $Ox$, dans le repère $Oxyz$ les nouvelles coordonnées sont re-calculées ; le dessin des fleuves et rivières est désactivé. \begin{center} \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{center} \subsection{Visualiser une partie du globe terrestre} Il est cependant plus intéressant de servir du package pour faire un gros plan d'une région du globe. On désactivera alors les régions qui ne sont pas représentées, comme nous l'avons vu dans le premier exemple de présentation. \clearpage \subsubsection{La France} \begin{verbatim} \begin{pspicture}*(-8,-8)(8,8) \WorldMapThreeDII[PHI=45,THETA=2,Decran=150,cities, Asia,Africa=false,Southamerica,Europe,increment=2]% France \end{pspicture} \end{verbatim} \begin{center} \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{center} \clearpage \subsubsection{L'Amérique centrale} \begin{verbatim} \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{verbatim} \begin{center} \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{center} \clearpage \subsubsection{Madagascar} \begin{verbatim} \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{verbatim} \begin{center} \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{center} \section{Téléchargement des fichiers} \begin{itemize} \item Les données géographiques sont à télécharger sur : \url{http://www.evl.uic.edu/pape/data/WDB/} \item Les fichiers concernant le package sur : \url{http://pageperso.aol.fr/manuelluque1/map3dII/doc-pst-map3dii.html} \end{itemize} \section{Appel à collaboration} Il reste beaucoup de choses à faire\ldots par exemple placer, en option, le nom des villes, les degrés de méridiens et parallèles etc. Par conséquent, si ce sujet vous intéresse et si vous souhaitez compléter et améliorer ces package : \texttt{pst-geo}, n'hésitez pas à vous manifester\ldots \clearpage \section{List of all optional arguments for \texttt{pst-geo}} \xkvview{family=pst-geo,columns={key,type,default}} \bgroup \raggedright \nocite{*} \bibliographystyle{plain} \bibliography{\jobname} \egroup \printindex \end{document}