diff --git a/geopandas/geodataframe.py b/geopandas/geodataframe.py index 3f0817d..26b0323 100644 --- a/geopandas/geodataframe.py +++ b/geopandas/geodataframe.py @@ -486,7 +486,7 @@ class GeoDataFrame(GeoPandasBase, DataFrame): g = self.groupby(by=by, group_keys=False)[self.geometry.name].agg(merge_geometries) # Aggregate - aggregated_geometry = GeoDataFrame(g, geometry=self.geometry.name) + aggregated_geometry = GeoDataFrame(g, geometry=self.geometry.name, crs=self.crs) # Recombine aggregated = aggregated_geometry.join(aggregated_data) diff --git a/geopandas/tests/test_dissolve.py b/geopandas/tests/test_dissolve.py index 45cc877..f013be3 100644 --- a/geopandas/tests/test_dissolve.py +++ b/geopandas/tests/test_dissolve.py @@ -51,6 +51,18 @@ class TestDataFrame(unittest.TestCase): self.assertTrue(test.geometry.name == 'myshapes') self.assertTrue(test.geom_almost_equals(self.first).all()) + @unittest.skipIf(str(pd.__version__) < LooseVersion('0.16'), pandas_0_15_problem) + def test_dissolve_retains_existing_crs(self): + assert self.polydf.crs is not None + test = self.polydf.dissolve('manhattan_bronx') + assert test.crs is not None + + @unittest.skipIf(str(pd.__version__) < LooseVersion('0.16'), pandas_0_15_problem) + def test_dissolve_retains_nonexisting_crs(self): + self.polydf.crs = None + test = self.polydf.dissolve('manhattan_bronx') + assert test.crs is None + @unittest.skipIf(str(pd.__version__) < LooseVersion('0.16'), pandas_0_15_problem) def test_first_dissolve(self): test = self.polydf.dissolve('manhattan_bronx')