Improvements:
- Significant performance improvement (around 10x) for
GeoDataFrame.iterfeatures
, which also improvesGeoDataFrame.to_file
(#864). - File IO enhancements based on Fiona 1.8:
- Support for writing bool dtype (#855) and datetime dtype, if the file format supports it (#728).
- Support for writing dataframes with multiple geometry types, if the file format allows it (e.g. GeoJSON for all types, or ESRI Shapefile for Polygon+MultiPolygon) (#827, #867, #870).
- Compatibility with pyproj >= 2 (#962).
- A new
geopandas.points_from_xy()
helper function to convert x and y coordinates to Point objects (#896). - The
buffer
andinterpolate
methods now accept an array-like to specify a variable distance for each geometry (#781). - Addition of a
relate
method, corresponding to the shapely method that returns the DE-9IM matrix (#853). - Plotting improvements:
- Performance improvement in plotting by only flattening the geometries if there are actually 'Multi' geometries (#785).
- Choropleths: access to all
mapclassify
classification schemes and addition of theclassification_kwds
keyword in theplot
method to specify options for the scheme (#876). - Ability to specify a matplotlib axes object on which to plot the color bar with the
cax
keyword, in order to have more control over the color bar placement (#894).
- Changed the default provider in
geopandas.tools.geocode
from Google (now requires an API key) to Geocode.Farm (#907, #975).
Bug fixes:
- Remove the edge in the legend marker (#807).
- Fix the
align
method to preserve the CRS (#829). - Fix
geopandas.testing.assert_geodataframe_equal
to correctly compare left and right dataframes (#810). - Fix in choropleth mapping when the values contain missing values (#877).
- Better error message in
sjoin
if the input is not a GeoDataFrame (#842). - Fix in
read_postgis
to handle nullable (missing) geometries (#856). - Correctly passing through the
parse_dates
keyword inread_postgis
to the underlying pandas method (#860). - Fixed the shape of Antarctica in the included demo dataset 'naturalearth_lowres' (by updating to the latest version) (#804).
Small bug-fix release for compatibility with the latest Fiona and PySAL releases:
- Compatibility with Fiona 1.8: fix deprecation warning (#854).
- Compatibility with PySAL 2.0: switched to
mapclassify
instead ofPySAL
as dependency for choropleth mapping with thescheme
keyword (#872). - Fix for new
overlay
implementation in case the intersection is empty (#800).
Improvements:
- Improved
overlay
function (better performance, several incorrect behaviours fixed) (#429) - Pass keywords to control legend behavior (
legend_kwds
) toplot
(#434) - Add basic support for reading remote datasets in
read_file
(#531) - Pass kwargs for
buffer
operation on GeoSeries (#535) - Expose all geopy services as options in geocoding (#550)
- Faster write speeds to GeoPackage (#605)
- Permit
read_file
filtering with a bounding box from a GeoDataFrame (#613) - Set CRS on GeoDataFrame returned by
read_postgis
(#627) - Permit setting markersize for Point GeoSeries plots with column values (#633)
- Started an example gallery (#463, #690, #717)
- Support for plotting MultiPoints (#683)
- Testing functionalty (e.g.
assert_geodataframe_equal
) is now publicly exposed (#707) - Add
explode
method to GeoDataFrame (similar to the GeoSeries method) (#671) - Set equal aspect on active axis on multi-axis figures (#718)
- Pass array of values to column argument in
plot
(#770)
Bug fixes:
- Ensure that colorbars are plotted on the correct axis (#523)
- Handle plotting empty GeoDataFrame (#571)
- Save z-dimension when writing files (#652)
- Handle reading empty shapefiles (#653)
- Correct dtype for empty result of spatial operations (#685)
- Fix empty
sjoin
handling for pandas>=0.23 (#762)
Improvements:
- Improve plotting performance using
matplotlib.collections
(#267) - Improve default plotting appearance. The defaults now follow the new matplotlib defaults (#318, #502, #510)
- Provide access to x/y coordinates as attributes for Point GeoSeries (#383)
- Make the NYBB dataset available through
geopandas.datasets
(#384) - Enable
sjoin
on non-integer-index GeoDataFrames (#422) - Add
cx
indexer to GeoDataFrame (#482) GeoDataFrame.from_features
now also accepts a Feature Collection (#225, #507)- Use index label instead of integer id in output of
iterfeatures
andto_json
(#421) - Return empty data frame rather than raising an error when performing a spatial join with non overlapping geodataframes (#335)
Bug fixes:
- Compatibility with shapely 1.6.0 (#512)
- Fix
fiona.filter
results when bbox is not None (#372) - Fix
dissolve
to retain CRS (#389) - Fix
cx
behavior when using index of 0 (#478) - Fix display of lower bin in legend label of choropleth plots using a PySAL scheme (#450)
Improvements:
- Complete overhaul of the documentation
- Addition of
overlay
to perform spatial overlays with polygons (#142) - Addition of
sjoin
to perform spatial joins (#115, #145, #188) - Addition of
__geo_interface__
that returns a python data structure to represent theGeoSeries
as a GeoJSON-likeFeatureCollection
(#116) anditerfeatures
method (#178) - Addition of the
explode
(#146) anddissolve
(#310, #311) methods. - Addition of the
sindex
attribute, a Spatial Index using the optional dependencyrtree
(libspatialindex
) that can be used to speed up certain operations such as overlays (#140, #141). - Addition of the
GeoSeries.cx
coordinate indexer to slice a GeoSeries based on a bounding box of the coordinates (#55). - Improvements to plotting: ability to specify edge colors (#173), support for
the
vmin
,vmax
,figsize
,linewidth
keywords (#207), legends for chloropleth plots (#210), color points by specifying a colormap (#186) or a single color (#238). - Larger flexibility of
to_crs
, accepting both dicts and proj strings (#289) - Addition of embedded example data, accessible through
geopandas.datasets.get_path
.
API changes:
- In the
plot
method, theaxes
keyword is renamed toax
for consistency with pandas, and thecolormap
keyword is renamed tocmap
for consistency with matplotlib (#208, #228, #240).
Bug fixes:
- Properly handle rows with missing geometries (#139, #193).
- Fix
GeoSeries.to_json
(#263). - Correctly serialize metadata when pickling (#199, #206).
- Fix
merge
andconcat
to return correct GeoDataFrame (#247, #320, #322).