diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/pst-geo/pst-map2d.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-geo/pst-map2d.tex | 406 |
1 files changed, 406 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-geo/pst-map2d.tex b/Master/texmf-dist/doc/generic/pst-geo/pst-map2d.tex new file mode 100644 index 00000000000..9825d8376ad --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-geo/pst-map2d.tex @@ -0,0 +1,406 @@ +%% +%% This is file `pst-map2d.tex', +%% +%% IMPORTANT NOTICE: +%% +%% Package `pst-map2d.tex' +%% +%% Manuel Luque <Mluque5130@aol.com> (France) +%% Giuseppe Matarazzo <joematara@hotmail.com> (Italy) +%% Herbert Voss <voss@perce.de> (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-map2d' is a PSTricks package to create geographical objects +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\fileversion{1.05} +\def\filedate{2004/05/10} + +\message{`PST-map2d' v\fileversion, \filedate\space (ML/GM/HV)} + +\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 +% David Carlisle interface to the `keyval' package. +\input pst-key.tex +% +\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax + +\SpecialCoor +% +\define@key{psset}{path}{\edef\psk@WorldMap@Path{#1}} % chemin des données +\setkeys{psset}{path=data} +%\openin1=chemin.txt +%\read1 to \psk@WorldMap@Path +% +\define@key{psset}{level}{\edef\psk@WorldMap@level{#1}} +\setkeys{psset}{level=1} +% +\define@key{psset}{type}{\edef\psk@WorldMap@type{#1}} +\setkeys{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}{n}{\edef\psk@WorldMap@n{#1}} +\setkeys{psset}{n=1.77245} % sqrt(pi) % pour Collignon +% +\define@key{psset}{limiteL}{\edef\psk@WorldMap@limiteL{#1}} +\setkeys{psset}{limiteL=180} % longitude limite +% +\define@key{psset}{latitude0}{\edef\psk@WorldMap@latitudeO{#1}} +\setkeys{psset}{latitude0=45} % pour Bonne latitude 0 +% +\define@key{psset}{longitude0}{\edef\psk@WorldMap@longitudeO{#1}} +\setkeys{psset}{longitude0=0} % pour Bonne longitude 0 +% +\define@key{psset}{increment}{\edef\psk@WorldMap@increment{#1}} +\setkeys{psset}{increment=10} +% +\define@key{psset}{MapFillColor}{\edef\psk@WorldMap@Fillcolor{#1}} % couleur des continents +\setkeys{psset}{MapFillColor= 0.99 0.95 0.7 } +% +\newif\ifPst@WorldMap@capitals +\define@key{psset}{capital}[false]{\@nameuse{Pst@WorldMap@capitals#1}} +\setkeys{psset}{capital=false} +% +\newif\ifPst@WorldMap@city +\define@key{psset}{city}[false]{\@nameuse{Pst@WorldMap@city#1}} +\setkeys{psset}{city=false} +% +\newif\ifPst@WorldMap@Rivers +\define@key{psset}{rivers}[true]{\@nameuse{Pst@WorldMap@Rivers#1}} +\setkeys{psset}{rivers=true} +% +\newif\ifPst@WorldMap@Borders +\define@key{psset}{borders}[true]{\@nameuse{Pst@WorldMap@Borders#1}} +\setkeys{psset}{borders=false} +% +\newif\ifPst@WorldMap@maillage +\define@key{psset}{maillage}[true]{\@nameuse{Pst@WorldMap@maillage#1}} +\setkeys{psset}{maillage=true} +% +\newif\ifPst@WorldMap@Fill +\define@key{psset}{Fill}[true]{\@nameuse{Pst@WorldMap@Fill#1}} +\setkeys{psset}{Fill=true} +% +\newif\ifPst@WorldMap@USA +\define@key{psset}{USA}[false]{\@nameuse{Pst@WorldMap@USA#1}} +\setkeys{psset}{USA=false} +% +\newif\ifPst@WorldMap@AUS +\define@key{psset}{AUS}[false]{\@nameuse{Pst@WorldMap@AUS#1}} +\setkeys{psset}{AUS=false} +% +\newif\ifPst@WorldMap@MEX +\define@key{psset}{MEX}[false]{\@nameuse{Pst@WorldMap@MEX#1}} +\setkeys{psset}{MEX=false} +% +\def\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]{{% + \setkeys{psset}{#1}% + \begin@ClosedObj + \addto@pscode{% + \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 {0.5 0.8 0.8} def + Color setrgbcolor + 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 + fill + grestore + \fi + stroke + } forall + } def +\ifPst@WorldMap@Borders + border +\else + coasts +\fi +%/Color {0.5 0.8 0.5} def +/Color {\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 {0.5 0.8 0.8} def +lake + Draw +% les rivières +\ifPst@WorldMap@Rivers +/DrawRivers { + { +CalculsPoints +0 0 1 setrgbcolor +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(! + \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}{mapCountry}{\edef\psk@WorldMap@mapCountry{#1}} +\setkeys{psset}{mapCountry=all} +\define@key{psset}{nodeWidth}{\edef\psk@WorldMap@nodeWidth{#1}} +\setkeys{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 |