Repository: ARM-DOE/ACT

Issue:
geodisplay.py projection not working with any other options but the default
While using the GeographicPlotDisplay function when trying to use other cartopy projections the map extent changes or no data appears. 

The default is PlateCarree and works fine but when trying to use a Mercator projection the data shows up but the map extent is changed. 
![image](https://user-images.githubusercontent.com/21142062/71207275-1e657780-226c-11ea-9727-05912f50922c.png)

When using a LambertConformal projection the extent appears to be off since no features appear that were suppose to be plotted.
![image](https://user-images.githubusercontent.com/21142062/71207609-ddba2e00-226c-11ea-95d6-6df6f5b587ef.png)





Discussion:
According to error when running projection=ccrs.LambertConformal():

"TypeError: Cannot label gridlines on a LambertConformal plot.  Only PlateCarree and Mercator plots are currently supported."

I've updated the code to only attempt to add labels to PlateCarree and Mercator, but still add gridlines. It's still not doing what I would want. We may need to look elsewhere for a plotting library.

LambertConformal:
![LambertConformal](https://user-images.githubusercontent.com/8261054/83295515-53c3a900-a1ac-11ea-9414-04d61130d930.png)

Mercator:
![Mercator](https://user-images.githubusercontent.com/8261054/83295544-60e09800-a1ac-11ea-9b93-6a067a2934e5.png)


Resolving patch:
diff --git a/act/plotting/GeoDisplay.py b/act/plotting/GeoDisplay.py
--- a/act/plotting/GeoDisplay.py
+++ b/act/plotting/GeoDisplay.py
@@ -71,8 +71,9 @@ def geoplot(self, data_field=None, lat_field='lat',
             to create label from long_name and units.
         title : str
             Plot title.
-        projection : str
-            Project to use on plot.
+        projection : cartopy.crs object
+            Project to use on plot. See
+            https://scitools.org.uk/cartopy/docs/latest/crs/projections.html
         plot_buffer : float
             Buffer to add around data on plot in lat and lon dimension.
         stamen : str
@@ -204,14 +205,19 @@ def geoplot(self, data_field=None, lat_field='lat',
                 ax.text(location[0], location[1], label, color='black')
 
         if gridlines:
-            gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=True,
-                              linewidth=1, color='gray', alpha=0.5,
-                              linestyle='--')
-            gl.xlabels_top = False
-            gl.ylabels_left = True
-            gl.xlabels_bottom = True
-            gl.ylabels_right = False
-            gl.xlabel_style = {'size': 6, 'color': 'gray'}
-            gl.ylabel_style = {'size': 6, 'color': 'gray'}
+            if projection == ccrs.PlateCarree() or projection == ccrs.Mercator:
+                gl = ax.gridlines(crs=projection, draw_labels=True,
+                                  linewidth=1, color='gray', alpha=0.5,
+                                  linestyle='--')
+                gl.xlabels_top = False
+                gl.ylabels_left = True
+                gl.xlabels_bottom = True
+                gl.ylabels_right = False
+                gl.xlabel_style = {'size': 6, 'color': 'gray'}
+                gl.ylabel_style = {'size': 6, 'color': 'gray'}
+            else:
+                # Labels are only currently supported for PlateCarree and Mercator
+                gl = ax.gridlines(draw_labels=False, linewidth=1, color='gray',
+                                  alpha=0.5, linestyle='--')
 
         return ax


Test patch: