Setting the projection of a tile source

I’d really like to plot some data using a geostationary projection with Esri earth imagery.

I can do that just fine with the default GOOGLE_MERCATOR projection used by geoviews.

import geoviews as gv
from geoviews import opts
import cartopy.crs as ccrs
gv.extension('bokeh')

tiles = gv.tile_sources.EsriImagery()

data = [[ -86.21487 ,   37.04926 ],[ -83.344385,   33.918137],[ -75.6106  ,   38.6539  ],[-122.633579,   41.726892],[-122.480487,   43.744352],[ -82.53532 ,   37.4826  ],[-100.76821 ,   46.825425],[-119.8284  ,   34.44551 ],[ -71.423705,   41.49511 ],[-109.455315,   47.048537],[ -98.391403,   29.529432],[ -90.160477,   38.612034],[ -77.54817 ,   43.14618 ],[ -84.36625 ,   39.2787  ],[ -80.420833,   40.445278],[ -95.38769 ,   29.81453 ],[-112.00264 ,   33.41046 ],[ -80.243995,   40.268963],[ -80.80116 ,   41.23172 ],[ -79.863572,   40.43743 ]]

tiles * gv.Points(data).opts(color='red', width=400)

That gives a plot with the points in the correct location. I can’t post the plot because I’m a new user and can only put one plot. You’ll have to plot that yourself.

Now, if I try changing the projection of the tile source, I get this thing.

geo = ccrs.Geostationary(central_longitude=-100)
geostationary = gv.tile_sources.EsriImagery(projection=geo)

geostationary * gv.Points(data).opts(color='red', width=400, projection=geo)

What am I doing wrong?

Were you able to project the tiles? I am trying to do the same thing now :slight_smile:

Sadly, no.

If I’m understanding your problem correctly, is this the solution? It worked for me when having to change the Tiles’ map projection to Orthographic. See the example just before the “Plotting data” section.

https://geoviews.org/user_guide/Working_with_Bokeh.html

I believe there’s a work around here: