mirror of
https://github.com/wassname/geopandas.git
synced 2026-09-10 12:00:21 +08:00
BUG: Check that set_geometry will set valid geometry column
This commit is contained in:
committed by
Kelsey Jordahl
parent
24bfe85976
commit
bb4b7f68db
@@ -11,7 +11,7 @@ import fiona
|
||||
import numpy as np
|
||||
from pandas import DataFrame, Series
|
||||
from shapely.geometry import mapping
|
||||
|
||||
from shapely.geometry.base import BaseGeometry
|
||||
from geopandas import GeoSeries
|
||||
from geopandas.plotting import plot_dataframe
|
||||
import geopandas.io
|
||||
@@ -114,7 +114,7 @@ class GeoDataFrame(DataFrame):
|
||||
elif isinstance(col, (list, np.ndarray)):
|
||||
level = col
|
||||
elif hasattr(col, 'ndim') and col.ndim != 1:
|
||||
raise ValueError("Must pass array with one dimension only")
|
||||
raise ValueError("Must pass array with one dimension only.")
|
||||
else:
|
||||
try:
|
||||
level = frame[col].values
|
||||
@@ -132,10 +132,13 @@ class GeoDataFrame(DataFrame):
|
||||
del frame[to_remove]
|
||||
|
||||
if isinstance(level, GeoSeries) and level.crs != crs:
|
||||
# avoids caching issues/crs sharing issues
|
||||
# Avoids caching issues/crs sharing issues
|
||||
level = level.copy()
|
||||
level.crs = crs
|
||||
|
||||
# Check that we are using a listlike of geometries
|
||||
if not all(isinstance(item, BaseGeometry) for item in level):
|
||||
raise TypeError("Input geometry column must contain valid geometry objects.")
|
||||
frame[geo_column_name] = level
|
||||
frame._geometry_column_name = geo_column_name
|
||||
frame.crs = crs
|
||||
|
||||
@@ -112,7 +112,17 @@ class TestDataFrame(unittest.TestCase):
|
||||
df = self.df.copy()
|
||||
df.geometry = 'apple'
|
||||
|
||||
<<<<<<< HEAD
|
||||
with self.assertRaises(KeyError):
|
||||
=======
|
||||
# non-geometry error
|
||||
def _should_raise_value_error_with_non_geo():
|
||||
df = self.df.copy()
|
||||
df.geometry = range(df.shape[0])
|
||||
self.assertRaises(TypeError, _should_raise_value_error_with_non_geo)
|
||||
|
||||
def _should_raise_key_error():
|
||||
>>>>>>> BUG: Check that set_geometry will set valid geometry column
|
||||
df = self.df.copy()
|
||||
del df['geometry']
|
||||
df['geometry']
|
||||
|
||||
Reference in New Issue
Block a user