%% %% This is file `pst-mapII.tex', %% %% IMPORTANT NOTICE: %% %% Package `pst-map2dII.tex' %% %% Manuel Luque (France) %% Giuseppe Matarazzo (Italy) %% Herbert Voss (Germany) %% %% May 09, 2004 %% %% 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-map2dII' is a PSTricks package to create geographical objects %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname PSTMapTwoDII\endcsname \let\PSTMapTwoDIILoaded\endinput % Require PSTricks \ifx\PSTnodesLoaded\endinput\else\input pst-node.tex \fi \ifx\PSTXKeyLoaded\endinput\else\input pst-xkey.tex \fi % % \def\fileversion{0.83} \def\filedate{2009/08/28} \message{`PST-map2dII v\fileversion, \filedate\space (ML/GM/HV)} \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax \pst@addfams{pst-map2dII}% added 2005-09-29 hv \SpecialCoor % \define@key[psset]{pst-map2dII}{path}{\edef\psk@WorldMap@Path{#1}} % chemin des données \psset{path=data} % \define@key[psset]{pst-map2dII}{type}{\edef\psk@WorldMapII@type{#1}} \psset{type=1} \define@key[psset]{pst-map2dII}{increment}{\edef\psk@WorldMapII@increment{#1}} \psset{increment=10} % 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-map2dII}{n}{\edef\psk@WorldMap@n{#1}} \psset{n=1.77245} % sqrt(pi) % pour Collignon % \define@key[psset]{pst-map2dII}{limiteL}{\edef\psk@WorldMap@limiteL{#1}} \psset{limiteL=180} % longitude limite % \define@key[psset]{pst-map2dII}{limiteL}{\edef\psk@WorldMap@limiteL{#1}} \psset{limiteL=180} % longitude limite % \define@key[psset]{pst-map2dII}{latitude0}{\edef\psk@WorldMap@latitudeO{#1}} \psset{latitude0=45} % pour Bonne latitude 0 % \define@key[psset]{pst-map2dII}{longitude0}{\edef\psk@WorldMap@longitudeO{#1}} \psset{longitude0=0} % pour Bonne longitude 0 % \newif\ifPst@WorldMap@capitals \define@key[psset]{pst-map2dII}{capital}[false]{\@nameuse{Pst@WorldMap@capitals#1}} \psset{capital=false} % \newif\ifPst@WorldMap@city \define@key[psset]{pst-map2dII}{city}[false]{\@nameuse{Pst@WorldMap@city#1}} \psset{city=false} % \newif\ifPst@WorldMapII@Rivers \define@key[psset]{pst-map2dII}{rivers}[true]{\@nameuse{Pst@WorldMapII@Rivers#1}} \psset{rivers=false} % \newif\ifPst@WorldMapII@Borders \define@key[psset]{pst-map2dII}{borders}[true]{\@nameuse{Pst@WorldMapII@Borders#1}} \psset{borders=true} % \newif\ifPst@WorldMapII@maillage \define@key[psset]{pst-map2dII}{maillage}[true]{\@nameuse{Pst@WorldMapII@maillage#1}} \psset{maillage=true} % \newif\ifPst@WorldMapII@Europe \define@key[psset]{pst-map2dII}{europe}[true]{\@nameuse{Pst@WorldMapII@Europe#1}} \psset{europe=true} % \newif\ifPst@WorldMapII@Asia \define@key[psset]{pst-map2dII}{asia}[true]{\@nameuse{Pst@WorldMapII@Asia#1}} \psset{asia=false} % \newif\ifPst@WorldMapII@Africa \define@key[psset]{pst-map2dII}{africa}[true]{\@nameuse{Pst@WorldMapII@Africa#1}} \psset{africa=false} % \newif\ifPst@WorldMapII@namer \define@key[psset]{pst-map2dII}{namer}[true]{\@nameuse{Pst@WorldMapII@namer#1}} \psset{namer=false} % \newif\ifPst@WorldMapII@samer \define@key[psset]{pst-map2dII}{samer}[true]{\@nameuse{Pst@WorldMapII@samer#1}} \psset{samer=false} % \newif\ifPst@WorldMapII@all% hv 2004-05-05 \define@key[psset]{pst-map2dII}{all}[true]{% \psset{europe=true,asia=true,africa=true,namer=true,samer=true} } % \define@key[psset]{pst-map2dII}{level}{\edef\psk@WorldMapII@level{#1}}% hv 2004-05-05 \psset{level=5}% only every 5th data record % \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@WorldMapII@type\or % type 1 % hv 2004-05-04 /CoeffY {Coeff_mercatorY} def /CoeffX {Coeff_mercatorX} def /StartY -85 def \or % type 2 % hv 2004-05-04 /CoeffY {Coeff_simpleY} def /CoeffX {Coeff_simpleX} def /StartY -90 def \or % type 3 % hv 2004-05-04 /CoeffY {Coeff_lambertY} def /CoeffX {Coeff_lambertX} def /StartY -90 def \or % type 4 % hv 2004-05-04 /CoeffY {Coeff_sanson_flamsteedY} def /CoeffX {Coeff_sanson_flamsteedX} def /StartY -90 def \or % type 5 % hv 2004-05-04 /CoeffY {Coeff_cylindricalY} def /CoeffX {Coeff_cylindricalX} def /StartY -85 def \or % type 6 % hv 2004-05-04 /CoeffY {Coeff_babinetY} def /CoeffX {Coeff_babinetX} def /StartY -90 def \or % type 7 % hv 2004-05-04 /CoeffY {Coeff_collignonY} def /CoeffX {Coeff_collignonX} def /StartY -90 def \else % every other is type 8 % hv 2004-05-04 /CoeffY {Coeff_BonneY} def /CoeffX {Coeff_BonneX} def /StartY -90 def \fi /step \psk@WorldMapII@level\space def % hv 2004-05-04 /increment \psk@WorldMapII@increment\space def } % \newcount\TypeProjection \def\WorldMapII{\pst@object{WorldMapII}} \def\WorldMapII@i{{% \use@par% \begin@ClosedObj \addto@pscode{ \geo@variablesMap 1 setlinejoin 0 0 translate /xunit {\pst@number\psxunit\space mul 20 div } def /yunit {\pst@number\psyunit\space mul 20 div } def /limiteLongitude \psk@WorldMap@limiteL\space def % /CalculsPoints { /region exch def gsave newpath /nbr region length def % nombre de points region nbr 2 sub get /Y exch def region nbr 1 sub get /X exch def X CoeffX xunit Y CoeffY yunit moveto /ncount 0 def % hv 2004-05-04 nbr 2 sub -2 2 { /Counter exch def % hv 2004-05-04 /ncount ncount 1 add def % hv 2004-05-04 ncount step ge { % hv 2004-05-04 region Counter get /Y exch def region Counter 1 add get /X exch def X CoeffX xunit Y CoeffY yunit lineto /ncount 0 def % hv 2004-05-04 }{ /ncount ncount 1 add def } ifelse % hv 2004-05-04 } for } def % /CalculsPointsAsia { /region exch def gsave newpath /nbr region length def % nombre de points region nbr 2 sub get /Y exch def region nbr 1 sub get /X exch def X 0 le {/X X 360 add def} if X CoeffX xunit Y CoeffY yunit moveto /ncount 0 def % hv 2004-05-04 nbr 2 sub -2 2 { /Counter exch def % hv 2004-05-04 /ncount ncount 1 add def % hv 2004-05-04 ncount step ge { % hv 2004-05-04 region Counter get /Y exch def region Counter 1 add get /X exch def X 0 le {/X X 360 add def} if X CoeffX xunit Y CoeffY yunit lineto /ncount 0 def % hv 2004-05-04 }{ /ncount ncount 1 add def } ifelse % hv 2004-05-04 } for } def % /Draw { { CalculsPoints stroke } forall } def % /DrawAsia { { CalculsPointsAsia stroke } forall } def /DrawRivers { { CalculsPoints gsave 0 0 1 setrgbcolor stroke grestore } forall } def % /DrawRiversAsia { { CalculsPointsAsia gsave 0 0 1 setrgbcolor stroke grestore } forall } def /DrawBdy { { CalculsPoints gsave 1 0 0 setrgbcolor stroke grestore } forall } def \ifPst@WorldMapII@Europe (\psk@WorldMap@Path/europe-cil.dat) run europe-cil Draw \ifPst@WorldMapII@Rivers (\psk@WorldMap@Path/europe-riv.dat) run europe-riv DrawRivers \fi \ifPst@WorldMapII@Borders (\psk@WorldMap@Path/europe-bdy.dat) run europe-bdy DrawBdy \fi \fi % \ifPst@WorldMapII@Africa (\psk@WorldMap@Path/africa-cil.dat) run africa-cil Draw \ifPst@WorldMapII@Rivers (\psk@WorldMap@Path/africa-riv.dat) run africa-riv DrawRivers \fi \ifPst@WorldMapII@Borders (\psk@WorldMap@Path/africa-bdy.dat) run africa-bdy DrawBdy \fi \fi % \ifPst@WorldMapII@Asia (\psk@WorldMap@Path/asia-cil.dat) run asia-cil DrawAsia (\psk@WorldMap@Path/asia-isl.dat) run asia-isl Draw \ifPst@WorldMapII@Rivers (\psk@WorldMap@Path/asia-riv.dat) run asia-riv DrawRiversAsia \fi \ifPst@WorldMapII@Borders (\psk@WorldMap@Path/asia-bdy.dat) run asia-bdy DrawBdy \fi \fi \ifPst@WorldMapII@namer (\psk@WorldMap@Path/namer-cil.dat) run namer-cil Draw \ifPst@WorldMapII@Rivers (\psk@WorldMap@Path/namer-riv.dat) run namer-riv DrawRivers \fi \ifPst@WorldMapII@Borders (\psk@WorldMap@Path/namer-bdy.dat) run (\psk@WorldMap@Path/namer-pby.dat) run namer-bdy DrawBdy namer-pby DrawBdy \fi \fi \ifPst@WorldMapII@samer (\psk@WorldMap@Path/samer-cil.dat) run samer-cil Draw (\psk@WorldMap@Path/samer-arc.dat) run samer-arc DrawAsia \ifPst@WorldMapII@Rivers (samer-riv.dat) run samer-riv DrawRivers \fi \ifPst@WorldMapII@Borders (\psk@WorldMap@Path/samer-bdy.dat) run samer-bdy DrawBdy \fi \fi % \ifPst@WorldMapII@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 }\ignorespaces} % \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-map2dII}{mapCountry}{\edef\psk@WorldMap@mapCountry{#1}} \psset{mapCountry=all} \define@key[psset]{pst-map2dII}{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