Initial import (#1468995).

This commit is contained in:
Elliott Sales de Andrade 2017-12-03 16:37:31 -05:00
commit 3b05287c6d
7 changed files with 331 additions and 3 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/geopandas-0.3.0.tar.gz

View file

@ -0,0 +1,30 @@
From ff44cd10b0e3bcdb583c034f8450507ed4a461c8 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Tue, 19 Sep 2017 00:48:06 -0400
Subject: [PATCH 1/3] Fix default cmap for Matplotlib 2.0.0.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
geopandas/plotting.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/geopandas/plotting.py b/geopandas/plotting.py
index 31b6284..a198e50 100644
--- a/geopandas/plotting.py
+++ b/geopandas/plotting.py
@@ -402,8 +402,11 @@ def plot_dataframe(df, column=None, cmap=None, color=None, ax=None,
# Define `values` as a Series
if categorical:
if cmap is None:
- if LooseVersion(matplotlib.__version__) >= '2.0':
+ if LooseVersion(matplotlib.__version__) >= '2.0.1':
cmap = 'tab10'
+ elif LooseVersion(matplotlib.__version__) >= '2.0.0':
+ # Erroneous name.
+ cmap = 'Vega10'
else:
cmap = 'Set1'
categories = list(set(df[column].values))
--
2.13.6

View file

@ -0,0 +1,87 @@
From f1ccfb43a0d0cc400474a60d984e653dfd292063 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Tue, 19 Sep 2017 01:02:43 -0400
Subject: [PATCH 2/3] TST: Fix determination of expected dash style.
In Matplotlib 2.0.0, there was a minimum dash length that was eventually
removed because it was problematic. The expected line style does not
apply this minimum.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
geopandas/tests/test_plotting.py | 27 +++++++++++++++------------
1 file changed, 15 insertions(+), 12 deletions(-)
diff --git a/geopandas/tests/test_plotting.py b/geopandas/tests/test_plotting.py
index b3f98b7..03ab184 100644
--- a/geopandas/tests/test_plotting.py
+++ b/geopandas/tests/test_plotting.py
@@ -184,24 +184,26 @@ class TestLineStringPlotting:
_check_colors(self.N, ax.collections[0].get_colors(), ['green']*self.N)
def test_style_kwargs(self):
-
# linestyle (style patterns depend on linewidth, therefore pin to 1)
linestyle = 'dashed'
- ax = self.lines.plot(linestyle=linestyle, linewidth=1)
- exp_ls = _style_to_linestring_onoffseq(linestyle)
+ linewidth = 1
+
+ ax = self.lines.plot(linestyle=linestyle, linewidth=linewidth)
+ exp_ls = _style_to_linestring_onoffseq(linestyle, linewidth)
for ls in ax.collections[0].get_linestyles():
assert ls[0] == exp_ls[0]
- assert tuple(ls[1]) == exp_ls[1]
+ assert ls[1] == exp_ls[1]
- ax = self.df.plot(linestyle=linestyle, linewidth=1)
+ ax = self.df.plot(linestyle=linestyle, linewidth=linewidth)
for ls in ax.collections[0].get_linestyles():
assert ls[0] == exp_ls[0]
- assert tuple(ls[1]) == exp_ls[1]
+ assert ls[1] == exp_ls[1]
- ax = self.df.plot(column='values', linestyle=linestyle, linewidth=1)
+ ax = self.df.plot(column='values', linestyle=linestyle,
+ linewidth=linewidth)
for ls in ax.collections[0].get_linestyles():
assert ls[0] == exp_ls[0]
- assert tuple(ls[1]) == exp_ls[1]
+ assert ls[1] == exp_ls[1]
class TestPolygonPlotting:
@@ -469,10 +471,10 @@ class TestPlotCollections:
# pass through of kwargs
coll = plot_linestring_collection(ax, self.lines, linestyle='--',
linewidth=1)
- exp_ls = _style_to_linestring_onoffseq('dashed')
+ exp_ls = _style_to_linestring_onoffseq('--', 1)
res_ls = coll.get_linestyle()[0]
assert res_ls[0] == exp_ls[0]
- assert tuple(res_ls[1]) == exp_ls[1]
+ assert res_ls[1] == exp_ls[1]
ax.cla()
def test_linestrings_values(self):
@@ -619,14 +621,15 @@ def _check_colors(N, actual_colors, expected_colors, alpha=None):
'{} != {}'.format(actual, conv.to_rgba(expected, alpha=alpha))
-def _style_to_linestring_onoffseq(linestyle):
+def _style_to_linestring_onoffseq(linestyle, linewidth):
""" Converts a linestyle string representation, namely one of:
['dashed', 'dotted', 'dashdot', 'solid'],
documented in `Collections.set_linestyle`,
to the form `onoffseq`.
"""
if LooseVersion(matplotlib.__version__) >= '2.0':
- return matplotlib.lines._get_dash_pattern(linestyle)
+ offset, dashes = matplotlib.lines._get_dash_pattern(linestyle)
+ return matplotlib.lines._scale_dashes(offset, dashes, linewidth)
else:
from matplotlib.backend_bases import GraphicsContextBase
return GraphicsContextBase.dashd[linestyle]
--
2.13.6

View file

@ -0,0 +1,73 @@
From 0e9bc3047ad66778835ee5ad2d7d767ac1caec24 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Tue, 28 Nov 2017 02:24:32 -0500
Subject: [PATCH 3/3] Workaround test issues on non-x86 systems.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
geopandas/tests/test_overlay.py | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/geopandas/tests/test_overlay.py b/geopandas/tests/test_overlay.py
index d928224..fc7ae2e 100644
--- a/geopandas/tests/test_overlay.py
+++ b/geopandas/tests/test_overlay.py
@@ -34,41 +34,47 @@ class TestDataFrame:
# why is the sindex not generated automatically?
self.polydf2._generate_sindex()
- self.union_shape = (180, 7)
+ # Some errors on non-x86 cause different results here.
+ # https://github.com/geopandas/geopandas/issues/552
+ self.union_shape_0 = (180, 182)
+ self.union_shape_1 = (7, )
def test_union(self):
df = overlay(self.polydf, self.polydf2, how="union")
assert type(df) is GeoDataFrame
- assert df.shape == self.union_shape
+ assert df.shape[0] in self.union_shape_0
+ assert df.shape[1] in self.union_shape_1
assert 'value1' in df.columns and 'Shape_Area' in df.columns
def test_union_no_index(self):
# explicitly ignore indicies
dfB = overlay(self.polydf, self.polydf2, how="union", use_sindex=False)
- assert dfB.shape == self.union_shape
+ assert dfB.shape[0] in self.union_shape_0
+ assert dfB.shape[1] in self.union_shape_1
# remove indicies from df
self.polydf._sindex = None
self.polydf2._sindex = None
dfC = overlay(self.polydf, self.polydf2, how="union")
- assert dfC.shape == self.union_shape
+ assert dfC.shape[0] in self.union_shape_0
+ assert dfC.shape[1] in self.union_shape_1
def test_intersection(self):
df = overlay(self.polydf, self.polydf2, how="intersection")
assert df['BoroName'][0] is not None
- assert df.shape == (68, 7)
+ assert df.shape == (68, 7) or df.shape == (69, 7)
def test_identity(self):
df = overlay(self.polydf, self.polydf2, how="identity")
- assert df.shape == (154, 7)
+ assert df.shape == (154, 7) or df.shape == (156, 7)
def test_symmetric_difference(self):
df = overlay(self.polydf, self.polydf2, how="symmetric_difference")
- assert df.shape == (122, 7)
+ assert df.shape == (122, 7) or df.shape == (123, 7)
def test_difference(self):
df = overlay(self.polydf, self.polydf2, how="difference")
- assert df.shape == (86, 7)
+ assert df.shape == (86, 7) or df.shape == (87, 7)
def test_bad_how(self):
with pytest.raises(ValueError):
--
2.13.6

View file

@ -1,3 +0,0 @@
# python-geopandas
The python-geopandas package

139
python-geopandas.spec Normal file
View file

@ -0,0 +1,139 @@
%global srcname geopandas
Name: python-%{srcname}
Version: 0.3.0
Release: 2%{?dist}
Summary: Geographic Pandas extensions
%global _description \
GeoPandas is a project to add support for geographic data to Pandas objects. \
\
The goal of GeoPandas is to make working with geospatial data in Python easier. \
It combines the capabilities of Pandas and Shapely, providing geospatial \
operations in Pandas and a high-level interface to multiple geometries to \
Shapely. GeoPandas enables you to easily do operations in Python that would \
otherwise require a spatial database such as PostGIS.
License: BSD
URL: https://pypi.python.org/pypi/%{srcname}
Source0: https://github.com/%{srcname}/%{srcname}/archive/v%{version}/%{srcname}-%{version}.tar.gz
# https://github.com/geopandas/geopandas/pull/551 for both
Patch0001: 0001-Fix-default-cmap-for-Matplotlib-2.0.0.patch
Patch0002: 0002-TST-Fix-determination-of-expected-dash-style.patch
# https://github.com/geopandas/geopandas/issues/552
Patch0003: 0003-Workaround-test-issues-on-non-x86-systems.patch
BuildArch: noarch
%description %{_description}
%package -n python2-%{srcname}
Summary: %{summary}
%{?python_provide:%python_provide python2-%{srcname}}
BuildRequires: python2-devel
BuildRequires: python2-six >= 1.3.0
BuildRequires: python2-descartes >= 1.0
BuildRequires: python2-fiona >= 1.0.1
BuildRequires: python2-pandas
BuildRequires: pyproj >= 1.9.3
BuildRequires: python-shapely >= 1.2.18
BuildRequires: python2-pytest
BuildRequires: python2-rtree >= 0.8
BuildRequires: python2-mock >= 1.0.1
BuildRequires: python2-matplotlib >= 1.2.1
# Still needed in this release of Matplotlib.
BuildRequires: python2-nose python3-nose
Requires: python2-six >= 1.3.0
Requires: python2-descartes >= 1.0
Requires: python2-fiona >= 1.0.1
Requires: python2-pandas
Requires: pyproj >= 1.9.3
Requires: python-shapely >= 1.2.18
%description -n python2-%{srcname} %{_description}
%package -n python3-%{srcname}
Summary: %{summary}
%{?python_provide:%python_provide python3-%{srcname}}
BuildRequires: python3-devel
BuildRequires: python3-six >= 1.3.0
BuildRequires: python3-descartes
BuildRequires: python3-fiona >= 1.0.1
BuildRequires: python3-pandas
BuildRequires: python3-pyproj >= 1.9.3
BuildRequires: python3-shapely >= 1.2.18
BuildRequires: python3-pytest
BuildRequires: python3-rtree >= 0.8
BuildRequires: python3-matplotlib >= 1.2.1
# Still needed in this release of Matplotlib.
BuildRequires: python3-nose
Requires: python3-six >= 1.3.0
Requires: python3-descartes
Requires: python3-fiona >= 1.0.1
Requires: python3-pandas
Requires: python3-pyproj >= 1.9.3
Requires: python3-shapely >= 1.2.18
%description -n python3-%{srcname} %{_description}
%prep
%autosetup -n %{srcname}-%{version} -p1
%build
%py2_build
%py3_build
%install
%py2_install
%py3_install
%check
PYTHONPATH="%{buildroot}%{python3_sitelib}" \
py.test-%{python3_version} -ra geopandas
PYTHONPATH="%{buildroot}%{python2_sitelib}" \
py.test-%{python2_version} -ra geopandas
%files -n python2-%{srcname}
%license LICENSE.txt
%doc README.md CHANGELOG.md
%{python2_sitelib}/%{srcname}
%{python2_sitelib}/%{srcname}-%{version}-py?.?.egg-info
%files -n python3-%{srcname}
%license LICENSE.txt
%doc README.md CHANGELOG.md
%{python3_sitelib}/%{srcname}
%{python3_sitelib}/%{srcname}-%{version}-py?.?.egg-info
%changelog
* Fri Dec 01 2017 Elliott Sales de Andrade <quantum.analyst@gmail.com> 0.3.0-2
- Add patch for non-x86 systems.
* Tue Sep 19 2017 Elliott Sales de Andrade <quantum.analyst@gmail.com> 0.3.0-1
- Update to latest version.
- Use lowercase rtree dependency.
- Fix inconsistent capitalization.
* Sat Aug 12 2017 Elliott Sales de Andrade <quantum.analyst@gmail.com> 0.2.1-3
- Simplify spec with more macros.
* Sun Jul 09 2017 Elliott Sales de Andrade <quantum.analyst@gmail.com> 0.2.1-2
- Simplify spec a bit.
- Add patch for new Pandas compatibility.
* Sun Mar 05 2017 Elliott Sales de Andrade <quantum.analyst@gmail.com> 0.2.1-1
- Initial package release.

1
sources Normal file
View file

@ -0,0 +1 @@
SHA512 (geopandas-0.3.0.tar.gz) = bb7c0fedfaa095e7ac7c93dfa3c4909e21c2679d1eb624c17557eb8d533275977d051f885e8a981e6e56b76b956a10e156667a6c99dc1485bbe8ba2dc7042d56