%% %% This is file `pst-map2d.tex', %% %% IMPORTANT NOTICE: %% %% Package `pst-map2d.tex' %% %% Manuel Luque (France) %% Giuseppe Matarazzo (Italy) %% Herbert Voss (Germany) %% %% September 26, 2008 %% %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN archives %% in directory macros/latex/base/lppl.txt. %% %% DESCRIPTION: %% `pst-map2d' is a PSTricks package to create geographical objects %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname PSTMaptwod\endcsname \let\PSTMaptwodLoaded\endinput % Require PSTricks \ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi \ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi \ifx\PSTXKeyLoaded\endinput\else\input pst-xkey\fi % \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax \pst@addfams{pst-map2d}% added 2004-09-29 hv % \def\fileversion{1.10} \def\filedate{2009/08/28} \message{`PST-map2d' v\fileversion, \filedate\space (ML/GM/HV)} % \SpecialCoor % \define@key[psset]{pst-map2d}{path}{\edef\psk@WorldMap@Path{#1}} % chemin des données \psset{path=data} %\openin1=chemin.txt %\read1 to \psk@WorldMap@Path % \define@key[psset]{pst-map2d}{level}{\edef\psk@WorldMap@level{#1}} \psset{level=1} % \define@key[psset]{pst-map2d}{type}{\def\psk@WorldMap@type{#1}} \psset{type=1} % type=1 ==> Mercator % type=2 ==> Lambert % type=3 ==> simple % type=4 ==> Sanson-Flamsteed % type=5 ==> cylindrical % type=6 ==> Babinet % type=7 ==> Collignon % type=8 ==> Bonne \define@key[psset]{pst-map2d}{n}{\def\psk@WorldMap@n{#1}} \psset{n=1.77245} % sqrt(pi) % pour Collignon % \define@key[psset]{pst-map2d}{limiteL}{\def\psk@WorldMap@limiteL{#1}} \psset{limiteL=180} % longitude limite % \define@key[psset]{pst-map2d}{latitude0}{\def\psk@WorldMap@latitudeO{#1}} \psset{latitude0=45} % pour Bonne latitude 0 % \define@key[psset]{pst-map2d}{longitude0}{\def\psk@WorldMap@longitudeO{#1}} \psset{longitude0=0} % pour Bonne longitude 0 % \define@key[psset]{pst-map2d}{increment}{\def\psk@WorldMap@increment{#1}} \psset{increment=10} % \define@key[psset]{pst-map2d}{MapFillColor}{\pst@getcolor{#1}\psk@WorldMap@Fillcolor} % couleur des continents \psset{MapFillColor={[rgb]{0.99, 0.95, 0.7}}} \define@key[psset]{pst-map2d}{SeaFillColor}{\pst@getcolor{#1}\psk@WorldMap@Seacolor} % sea color \psset{SeaFillColor={[rgb]{0.5, 0.8, 0.8}}} \define@key[psset]{pst-map2d}{LakeFillColor}{\pst@getcolor{#1}\psk@WorldMap@Lakecolor} % lake color \psset{LakeFillColor={[rgb]{0.2, 0.2, 0.9}}} \define@key[psset]{pst-map2d}{RiverFillColor}{\pst@getcolor{#1}\psk@WorldMap@Rivercolor} % river color \psset{RiverFillColor={[rgb]{0, 0, 1}}} % %\define@boolkey[psset]{pst-3dplot}[Pst@]{Debug}[true]{}% \newif\ifPst@WorldMap@capitals \define@key[psset]{pst-map2d}{capital}[false]{\@nameuse{Pst@WorldMap@capitals#1}} \psset{capital=false} % \define@boolkey[psset]{pst-map2d}[Pst@WorldMap@]{city}[false]{} \psset{city} % \newif\ifPst@WorldMap@Rivers \define@key[psset]{pst-map2d}{rivers}[true]{\@nameuse{Pst@WorldMap@Rivers#1}} \psset{rivers} % \newif\ifPst@WorldMap@Borders \define@key[psset]{pst-map2d}{borders}[true]{\@nameuse{Pst@WorldMap@Borders#1}} \psset{borders=false} % \define@boolkey[psset]{pst-map2d}[Pst@WorldMap@]{maillage}[true]{} \psset{maillage} % \define@boolkey[psset]{pst-map2d}[Pst@WorldMap@]{Fill}[true]{} \psset{Fill} % \define@boolkey[psset]{pst-map2d}[Pst@WorldMap@]{USA}[false]{} \psset{USA=false} % \define@boolkey[psset]{pst-map2d}[Pst@WorldMap@]{AUS}[false]{} \psset{AUS=false} % \define@boolkey[psset]{pst-map2d}[Pst@WorldMap@]{MEX}[false]{} \psset{MEX=false} % \def\geo@variablesMap{% /Coeff_mercatorY {2 div 45 add dup sin exch cos div ln 57.2958 mul} def % Mercator /Coeff_simpleY {1 mul} def % simple /Coeff_lambertY {sin 57.2958 mul} def % Lambert /Coeff_sanson_flamsteedY {1 mul} def % Sanson_Flamstead /Coeff_cylindricalY { dup sin exch cos div 57.2958 mul} def % Cylindrical /Coeff_babinetY { sin 2 sqrt mul 57.2958 mul} def % Babinet /n \psk@WorldMap@n\space def /Coeff_collignonY { 0 ge { 1 2 sqrt 90 Y sub 2 div sin mul sub 57.2958 mul n mul} { 1 2 sqrt 90 Y add 2 div sin mul sub 57.2958 mul n mul neg} ifelse }def % Collignon /Coeff_BonneY {pop /RHO l0 dup cos exch sin div Y neg l0 add 57.2958 div add def /Theta Y cos X L0 sub mul RHO div def Theta cos RHO mul neg 57.2958 mul}def % Bonne % /Coeff_mercatorX {1 mul} def % Mercator /Coeff_simpleX {1 mul} def % simple /Coeff_lambertX {1 mul} def % Lambert /Coeff_sanson_flamsteedX {Y cos mul} def % Sanson_Flamstead /Coeff_cylindricalX { 1 mul } def % Cylindrical /Coeff_babinetX { 2 mul 2 sqrt mul 3.1415926 div Y cos mul} def % Babinet /Coeff_collignonX { 2 mul 2 sqrt mul 90 Y abs sub 2 div sin mul n div} def % Collignon /l0 \psk@WorldMap@latitudeO\space def /L0 \psk@WorldMap@longitudeO\space def /Coeff_BonneX { pop /RHO l0 dup cos exch sin div Y neg l0 add 57.2958 div add def /Theta Y cos X L0 sub mul RHO div def Theta sin RHO mul 57.2958 mul } def % Bonne \ifcase\psk@WorldMap@type\or /CoeffY {Coeff_mercatorY} def /CoeffX {Coeff_mercatorX} def /StartY -85 def \or /CoeffY {Coeff_simpleY} def /CoeffX {Coeff_simpleX} def /StartY -90 def \or /CoeffY {Coeff_lambertY} def /CoeffX {Coeff_lambertX} def /StartY -90 def \or /CoeffY {Coeff_sanson_flamsteedY} def /CoeffX {Coeff_sanson_flamsteedX} def /StartY -90 def \or /CoeffY {Coeff_cylindricalY} def /CoeffX {Coeff_cylindricalX} def /StartY -85 def \or /CoeffY {Coeff_babinetY} def /CoeffX {Coeff_babinetX} def /StartY -90 def \or /CoeffY {Coeff_collignonY} def /CoeffX {Coeff_collignonX} def /StartY -90 def \or /CoeffY {Coeff_BonneY} def /CoeffX {Coeff_BonneX} def /StartY -90 def \fi% /step \psk@WorldMap@level\space def % hv 2004-05-04 } \newcount\TypeProjection \def\WorldMap{\pst@object{WorldMap}} \def\WorldMap@i{\@ifnextchar[{\WorldMap@do}{\WorldMap@do[]}} \def\WorldMap@do[#1]{{% \psset{#1}% \begin@ClosedObj \addto@pscode{% \geo@variablesMap (\psk@WorldMap@Path/river.dat) run (\psk@WorldMap@Path/pcoast.dat) run (\psk@WorldMap@Path/pisland.dat) run (\psk@WorldMap@Path/pborder.dat) run (\psk@WorldMap@Path/plake.dat) run (\psk@WorldMap@Path/usa.dat) run (\psk@WorldMap@Path/aus.dat) run (\psk@WorldMap@Path/mex.dat) run 1 setlinejoin 0 0 translate /xunit {\pst@number\psxunit\space mul 20 div }def /yunit {\pst@number\psyunit\space mul 20 div }def /increment \psk@WorldMap@increment\space def /limiteLongitude \psk@WorldMap@limiteL\space def % \ifPst@WorldMap@Fill gsave newpath /X limiteLongitude neg def /Y StartY def X CoeffX xunit Y CoeffY yunit moveto StartY 2 StartY neg {% /Y exch def X CoeffX xunit Y CoeffY yunit lineto } for /X limiteLongitude def StartY neg -2 StartY { /Y exch def X CoeffX xunit Y CoeffY yunit lineto } for closepath % /Color {\psk@WorldMap@Seacolor} def % Color setrgbcolor \pst@usecolor\psk@WorldMap@Seacolor fill grestore \fi /CalculsPoints { /region exch def newpath /nbr region length def % nombre de régions region 0 get aload pop /Y exch def /X exch def X CoeffX xunit Y CoeffY yunit moveto /ncount 0 def % hv 2004-05-04 0 1 nbr 1 sub { /ncount ncount 1 add def % hv 2004-05-04 region exch get aload pop ncount step mod 0 eq nbr ncount sub 0 lt or { % hv 2004-05-04 /Y exch def /X exch def X CoeffX xunit Y CoeffY yunit lineto }{ pop pop } ifelse % hv 2004-05-04 } for } def % /Draw { { CalculsPoints \ifPst@WorldMap@Fill closepath % Colour in earth's surfaces gsave % Color setrgbcolor Color fill grestore \fi stroke } forall } def \ifPst@WorldMap@Borders border \else coasts \fi /Color { \pst@usecolor\psk@WorldMap@Fillcolor } def Draw islands Draw \ifPst@WorldMap@MEX mexico Draw \fi \ifPst@WorldMap@USA usa Draw \fi \ifPst@WorldMap@AUS australia Draw \fi /Color { \pst@usecolor\psk@WorldMap@Lakecolor } def lake Draw % les rivières \ifPst@WorldMap@Rivers /DrawRivers { { CalculsPoints \pst@usecolor\psk@WorldMap@Rivercolor stroke } forall } def % river DrawRivers \fi % \ifPst@WorldMap@maillage % meridiens limiteLongitude neg increment limiteLongitude {% for X /X exch def newpath /Y StartY def X CoeffX xunit StartY CoeffY yunit moveto StartY increment 10 div StartY neg { % for Y /Y exch def X CoeffX xunit Y CoeffY yunit lineto } for gsave % 11 janvier 2004 X 0 eq {1 0 0 setrgbcolor}{0.2 setgray} ifelse % 0.25 setlinewidth stroke grestore } for % parallèles StartY increment StartY neg {% for Y /Y exch def newpath /X limiteLongitude neg def X CoeffX xunit Y CoeffY yunit moveto limiteLongitude neg increment 10 div limiteLongitude { % for X /X exch def X CoeffX xunit Y CoeffY yunit lineto } for % 11 janvier 2004 Y 0 eq {1 0 0 setrgbcolor}{0.2 setgray} ifelse % 0.25 setlinewidth stroke } for \fi /DrawCitys { /CITY exch def /Rayon exch def /nbr CITY length def % nombre de villes 0 1 nbr 1 sub { /compteur exch def CITY compteur get aload pop /X exch def /Y exch def gsave 1 0 0 setrgbcolor newpath X CoeffX xunit Y CoeffY yunit Rayon 0 360 arc closepath fill grestore } for } def \ifPst@WorldMap@city % les capitales (\psk@WorldMap@Path/c-cap.dat) run 1.5 % rayon du point citycapitals DrawCitys % les autres villes (\psk@WorldMap@Path/c-sub.dat) run 0.5 % rayon du point CitySub DrawCitys \fi \ifPst@WorldMap@capitals % les capitales (\psk@WorldMap@Path/c-cap.dat) run 1.5 citycapitals DrawCitys \fi }% \end@ClosedObj }} % \def\pnodeMap(#1,#2)#3{% hv 2004-05-09 \pst@killglue \pnode(! \geo@variablesMap /Y #2 def /X #1 def X CoeffX 20 div Y CoeffY 20 div){#3}% } % %------------------- hv 2004-05-08 ---------------------- \def\psNodeLabelStyle{} \define@key[psset]{pst-map2d}{mapCountry}{\edef\psk@WorldMap@mapCountry{#1}} \psset{mapCountry=all} \define@key[psset]{pst-map2d}{nodeWidth}{\edef\psk@WorldMap@nodeWidth{#1}} \psset{nodeWidth=1mm} \newpsstyle{psNodeMapStyle}{fillstyle=solid,fillcolor=red} % \def\mapput{\@ifnextchar[{\mapput@i}{\mapput@i[90]}} \def\mapput@i[#1](#2,#3){\@ifnextchar[{\mapput@iii[#1](#2,#3)}{\mapput@ii[#1](#2,#3)}} \def\mapput@ii[#1](#2,#3)#4{\mapput@iii[#1](#2,#3)[#4]{#4}} \def\mapput@iii[#1](#2,#3)[#4]#5{% \@ifnextchar[{\mapput@iv[#1](#2,#3)[#4]#5}{\mapput@iv[#1](#2,#3)[#4]#5[\@empty]}} \def\mapput@iv[#1](#2,#3)[#4]#5[#6]{{% % [angle](longitude,lattitude)[node name]{node label}[country] \def\pst@tempb{all} \ifx\pst@tempb\psk@WorldMap@mapCountry \mapput@v[#1](#2,#3)[#4]{#5} \else \def\pst@tempb{#6} % \typeout{Compare \pst@tempb{} with \psk@WorldMap@mapCountry} \ifx\pst@tempb\psk@WorldMap@mapCountry \mapput@v[#1](#2,#3)[#4]{#5} \fi% \fi% }} \def\mapput@v[#1](#2,#3)[#4]#5{{% \pnodeMap(#2,#3){#4} % \typeout{Node: #4} \pst@dima=\psk@WorldMap@nodeWidth \pscircle[style=psNodeMapStyle](#4){\pst@dima} \pscircle*(#4){0.5\pst@dima} \uput{1.2\pst@dima}[#1](#4){{\psNodeLabelStyle #5}}% }} %------------------- hv 2004-05-08 ---------------------- % \catcode`\@=\PstAtCode\relax \endinput