Let’s use a real-world example of surface velocity data from Joughin et al (2010) (see exact reference below), sub-sampled at lower resolution for testing purposes. They are obviously projection coordinates. 2-dimensional longitude and latitude coordinates are also present in the dataset. “grid_mapping” is a string which points to another variable in the dataset, here “mapping”. This is according to CF-conventions. mapping is a dummy variable whose attributes contain the information needed to define a coordinate reference system. We can use matplotlib’s contourf to get a feeling for what that all mean. Below using regular x1, y1 grid, in the projection plane. The polar stereographic projection (top) represent real distances in kilometers because points are projected on a plane close to the region of interest (Greenland). In the longitude / latitude (or geodetic) (bottom) coordinate system horizontal distances are exagerated toward the pole. This is clearly visible on this figure. All projection classes defined in dimarray inherit from :class:cartopy.crs.CRS. A few common transformations have a Cartopy equivalent, and are defined as subclass, where possible. So that it is also possible to directly provide a cartopy class (for user more familiar with cartopy than with CF-conventions). Note also that any such class has a proj4_init attribute (see cartopy’s doc and source code) which is passed to PROJ.4 when performing the actual transformations: In some cases they are no cartopy pre-defined classes, nor dimarray. If you figure out which PROJ.4 parameters should be used, it is possible to initialize a :class:dimarray.geo.crs.Proj4 class with a PROJ.4 string, still as a subclass of cartopy’s CRS. The dimarray.geo.get_crs() function takes these various conventions and return the matching CRS instance. So in summary transformations between coordinate reference systems are performed using cartopy’s CRS subclasses. The result is always a regular dimarray. It is also possible to perform vector transformation (wrapper around cartopy.crs.CRS.transform_vectors() method) Transforming vectors in longitude latitude coordinates does not make much sense because the angles cannot be conserved. Let’s rather use a polar stereographic projection focused on the north-east side of Greenland. Source.