How to choose between different kinds of map projections

We will now take a look at an equal area projection, as follows:

# Equal Area Projection
m = Basemap(projection='hammer',lon_0=0)
setup_map(m)
plt.show()

The following map projection will not distort the sizes of objects, but may distort the shapes of them. This is the so-called hammer projection. This is no longer a square grid, but the area of the circles is the same regardless of latitude; their shape, however, is not. We see here that some of them have become elliptical. There are some map projections that do a decent job, but it's not metrically possible to get perfectly conformal and perfectly equal area mount projection.

In this hammer projection, we see that, compared to the Mercator projection, the country of Greenland is tiny compared to the blown-up size it had before. Antarctica, instead of spanning almost a quarter of the map, is relegated to a small island in the South, as it actually is on the surface of the globe:

If we do not want to plot the whole surface of the earth but just focus on a region, we can use maps to plot a small region. Hence, here, we use a conformal projection called lcc with a width of 5 x 106 meters.

The width and height keyword arguments are given in meters. Let's take a look at the region covering latitude 1 to latitude 2 and centered on longitude 0. So, 0 is a center and lat_1 and lat_2 are the edges:

# Just plotting a region
m = Basemap(width=5e6,height=4e6,projection='lcc',
lat_1=45.,lat_2=55,lat_0=49.5,lon_0=8.7, resolution='l')
m.drawcoastlines()
m.fillcontinents(color='coral',lake_color='aqua')
# draw parallels and meridians.
m.drawparallels(np.arange(-90.,120.,30.))
m.drawmeridians(np.arange(0.,420.,60.))
m.drawmapboundary(fill_color='aqua')
plt.show()

When we run the preceding code, we get the following plot of Europe:

There are about 24 different kinds of projections available in basemap, but the ones that we've discussed so far are the most important.

We will look at one more kind of projection. These are projections that give you a perspective of the Earth that you would get from space. The simplest one is the orthographic projection, as shown here:

# Orthographic projection
m = Basemap(projection='ortho',lon_0=10,lat_0=20)
setup_map(m)
plt.show()

The output of the preceding code is as follows:

The preceding diagram shows a view of the globe that we would get from an arbitrarily distant observer, so there's none of the distortion that you get from being close to the surface. We see that Tissot is perfect on this projection, as we are dealing with an actual sphere of projection, and not trying to unroll the surface of this sphere. This is the only kind of projection that actually preserves both area and shape, as we are no longer trying to convolve the Earth's spherical surface onto some sort of flat plane.

We can also take the geos projection, which is the view that a geostationary satellite would get, as follows:

# Geostationary projection
m = Basemap(projection='geos',lon_0=-79.5)
setup_map(m)
plt.show()

Hence, preceding the equator at moderate distance there is a projection effect, but if we really want to take a look from an arbitrary distance above the Earth's surface, there is the nearsighted projection, called the nsper projection, as shown here:

# Near-Sided perspective projection
m = Basemap(projection='nsper',lon_0=-114, lat_0=51, satellite_height=4e8)
setup_map(m)
plt.show()

When we run the preceding code, we see that our view is centered on Calgary in Canada. We have placed the satellite at a height of 400,000 kilometers, which is the distance to the Moon:

We would see the distance of the moon right above Calgary. As this is a projection that has perspective, we can zoom in. So, we see how the globe would look when the satellite_height= '4e7'.

We can also get a higher resolution image by inserting resolution= 'l' into our projection code, allowing us to take a look at what the Earth's surface would look like from the International Space Station (ISS). We can also see, at this height, that we don't actually get to see the entire surface of the Earth, as seen in the following output:

# Near-Sided perspective projection
m = Basemap(projection='nsper',lon_0=-114, lat_0=51,
satellite_height=4e5, resolution='l')
setup_map(m)
plt.show()

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset