Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Add additional shapes on a GeoPandas matplotlib
I have some GIS data that I'm trying to plot with Python. One feature at a time works fine,[1] but I'd like to have two (or multiple) datasets on the same map.
import matplotlib
import geopandas as gpd
import contextily as ctx
points = gpd.read_file('points.geojson')
points = points.to_crs('EPSG:4326')
# Snipped a bunch of filtering/adjustment here.
ax = points.plot(figsize=(15, 15), markersize=20)
ctx.add_basemap(ax, crs=points.crs, source=ctx.providers.CartoDB.Positron)
# Can I add some other shapes before the render?
I'm pretty comfortable with slippy maps on Leaflet, but I'm trying to get these[2] as single rendered images.
-
Credit to Using Jupyter Notebook as GIS on Geo.rocks. ↩︎
-
There will eventually be several map renders. ↩︎
1 answer
Apparently, it doesn't take much to add another set of features. You create the axes first and refer to them when plotting additional shapes. Adapted from GeoPandas' geocoding example.
import matplotlib
import matplotlib.pyplot as plt # Don't forget this import
import geopandas as gpd
import contextily as ctx
points = gpd.read_file('points.geojson')
points = points.to_crs('EPSG:4326')
# Snipped a bunch of filtering/adjustment here.
fig, ax = plt.subplots(figsize=(15, 15))
points.plot(ax=ax, markersize=20)
shapes.plot(ax=ax, linewidth=3)
ctx.add_basemap(ax, crs=points.crs, source=ctx.providers.CartoDB.Positron)
fig.savefig('render.png')

0 comment threads