I created a GeoDataFrame with a Points geometry
column:
1. Create df
df = pd.DataFrame([[51.502687, -3.538329, 2242, 1, 47],
[52.699185, -0.050122, 870, 2, 35],
[51.574387, 0.397882, 651, 3, 47],
[51.43874, 0.395791, 625, 4, 35],
[51.23965, 0.561919, 614, 5, 36]],
columns = ["lat","long","num_of_trucks","performance","num_of_routes"]
)
df
2. Create gdf
from df
gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df["lat"],df["long"]),
crs={"init": "epsg:4326"})
gdf
3. Reproject to CRS that uses metres and calculate 10KM buffer_radius
around each Point
gdf.to_crs(epsg=3395,inplace=True)
#gdf.to_crs(epsg=3857,inplace=True)
#gdf.to_crs(epsg=27700,inplace=True)
gdf["buffer_radius"] = gdf.geometry.buffer(10000)
4. Change Geometry column to new buffer_radius
column
gdf = gdf.set_geometry('buffer_radius')
gdf.geometry.name
Out: 'buffer_radius'
The above process appeared to produce my desired GeoDataFrame gdf
with a new "geometry" column called buffer_radius
that contains Polygons.
I then wanted to plot these newly created Polygons, so first I converted the CRS of the buffer_radius
column:
5. Reproject to CRS that allows me to produce plot:
gdf.to_crs(epsg=4326,inplace=True)
6. Produce final plot:
I then tried to plot the polygons however it returned an empty plot:
gv.Polygons(gdf)
The fact that my plot returns empty made me wonder if it was a possible projection issue?
Does anyone have any idea what I am doing wrong here? Any thoughts or pointers would be massively appreciated.
Thanks
This is apparently an issue with
geoviews
, which instead of using the active geometry column uses the default column calledgeometry
. If you just override geometry column with your buffer (gdf["geometry"] = gdf.geometry.buffer(10000)
) or make sure that the dataframe you want to plot has the geometry you want in geometry column, it should work.