This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
Kyle, Thanks for writing. Regarding the shift of barbs: based on a bit of testing this looks like something that CartoPy handles correctly, but somehow MetPy's station plot code breaks. Can you open an issue about this at: https://github.com/Unidata/MetPy/issues That way we can track it and try to get it fixed before the upcoming bug fix release. Regarding the use of PlateCarree for the "transform" argument: the transform argument is something we pass on to CartoPy. CartoPy uses the "transform" argument as the way for you to tell CartoPy how to interpret the x,y values that you are passing to plotting functions. So PlateCarree (or Geodetic) are required when your x,y values correspond to lon,lat values; the projection of the map (and all drawing on top of it) is done using the projection specified when creating the axis. It's possible to manually transform your lon/lat values into e.g. Lambert Conformal, and pass those to plotting functions. You'd then have to change the "transform" argument to Lambert Conformal (or leave it out altogether if it matches the projection of the axes). For barbs (and quiver), things get more complicated. The "transform" argument in this case not only specifies how to interpret the locations (x,y), but also defines the native coordinate system for the u,v vector components. Thus, it's probably easiest to use "transform" as PlateCarree() for station plot. Regardless, you're still getting the data plotted in the projection you requested, you're just using "transform" to specify what the native data coordinate system is. Ryan > Hello, > > I am currently trying to make an upper air map using Metpy's station plot > and using the Canadian RDPS model data as objective analysis overtop of > the data. I have been having issues with the projection using cartopy. I > have attached two images (one of the image I created and another from > the University of Wyoming) plus a test script I am using to generate > the map so you can see how things are being done. If you look at the > winds from my plot in contrast to the one from the University of Wyoming > in both Alaska and Labrad or you can see the winds are actually skewed > than the plot from the University of Wyoming. It seems as you move away > from the central longitude the winds become more skewed. Just wondering > why this is? Also why do we have to use the PlateCarree() projection > as our transform in the StationPlot() function? I have tried using the > same projection as what the map is being generated in (LambertConformal) > and all the stations plot overtop of each other at one point. I have also > tried changing projections but I keep ending up with the same issue. Any > advice or help with this would be much appreciated. Ticket Details =================== Ticket ID: BPA-530494 Department: Support Python Priority: Low Status: Closed =================== NOTE: All email exchanges with Unidata User Support are recorded in the Unidata inquiry tracking system and then made publicly available through the web. If you do not want to have your interactions made available in this way, you must let us know in each email you send to us.