
138
|
Chapter 3, Mapping Your World
#29 Plot Arbitrary Points on a World Map
HACK
Note that there’s nothing particularly Perl-ish about our script. The same
technique should be easy to implement in any language. In fact, in “Plot
Points on an Interactive Map Using DHTML”
[Hack #41], we’ll show off the
exact same technique in JavaScript, with a few added wrinkles.
Running the Code
Here’s a sample run of plot_points.pl, run on the Pathfinder image from the
flatplanet gallery and fed points for London, New York, and Tokyo. You can
hit Ctrl-D after you’re done entering points by hand. Figure 3-29 shows the
result:
$ perl plot_points.pl PathfinderMap.jpg three_cities.jpg
51 0
40 -74
35 140
Of course, if you have a file full of points, you can just use shell redirection
to dump the list right into the script. If the file contains other things, such as
labels for each point, that’s okay, so long as the first two decimal numbers
on each line are the latitude and longitude, respectively. For example, sup-
pose you have a tab-separated file of the world’s 7,000 largest cities, sorted
by population, in a file called cities.txt:
place name country current population latitude longitude
Mumbai India 12383146 18.96° 72.82°
Buenos Aires Argentina 12116379 -34.61° -58.37°
"Karāchi" Pakistan 10537226 24.86° 67.01°
Figure 3-29. London, New York, and Tokyo, plotted on an Equidistant Cylindrical world
map