Search code examples
pythongeocartopy

Draw a map of a specific country with cartopy?


I have tried this example from the Cartopy gallery, which works fine. But how do I focus on another country, i.e. show only Germany?

example of US map

I've tried some coordinates on the extend() method, but I didn't manage to get to look it like the US map. Or do I have to modify the shape file?


Solution

  • Using the Global Administrative Areas dataset at http://www.gadm.org/country, just download the Germany dataset and use cartopy's shapereader (in the same way as is done in the linked example).

    A short-self contained example:

    import cartopy.crs as ccrs
    import cartopy.io.shapereader as shpreader
    import matplotlib.pyplot as plt
    
    # Downloaded from http://biogeo.ucdavis.edu/data/gadm2/shp/DEU_adm.zip
    fname = '/downloads/DEU/DEU_adm1.shp'
    
    adm1_shapes = list(shpreader.Reader(fname).geometries())
    
    ax = plt.axes(projection=ccrs.PlateCarree())
    
    plt.title('Deutschland')
    ax.coastlines(resolution='10m')
    
    ax.add_geometries(adm1_shapes, ccrs.PlateCarree(),
                      edgecolor='black', facecolor='gray', alpha=0.5)
    
    ax.set_extent([4, 16, 47, 56], ccrs.PlateCarree())
    
    plt.show()
    

    Output from code

    HTH