Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
----------
filename : str
File path or file handle to read from. Depending on which kwargs
are included, the content of filename may vary. See
http://fiona.readthedocs.io/en/latest/README.html#usage for usage details.
kwargs : key-word arguments
These arguments are passed to fiona.open, and can be used to
access multi-layer data, data stored within archives (zip files),
etc.
"""
from geopandas import GeoDataFrame
df = GeoDataFrame.from_file(filename, **kwargs)
return GeoSeries(df.geometry, crs=df.crs)
def _ensure_geometry(data):
"""
Ensure the data is of geometry dtype or converted to it.
If input is a (Geo)Series, output is a GeoSeries, otherwise output
is GeometryArray.
"""
if is_geometry_type(data):
if isinstance(data, Series):
return GeoSeries(data)
return data
else:
if isinstance(data, Series):
out = from_shapely(np.asarray(data))
return GeoSeries(out, index=data.index, name=data.name)
else:
out = from_shapely(data)
return out
def _ensure_geometry(data):
"""
Ensure the data is of geometry dtype or converted to it.
If input is a (Geo)Series, output is a GeoSeries, otherwise output
is GeometryArray.
"""
if is_geometry_type(data):
if isinstance(data, Series):
return GeoSeries(data)
return data
else:
if isinstance(data, Series):
out = from_shapely(np.asarray(data))
return GeoSeries(out, index=data.index, name=data.name)
else:
out = from_shapely(data)
return out
def _binary_geo(op, this, other):
# type: (str, GeoSeries, GeoSeries) -> GeoSeries
"""Binary operation on GeoSeries objects that returns a GeoSeries"""
from .geoseries import GeoSeries
geoms, index = _delegate_binary_method(op, this, other)
return GeoSeries(geoms.data, index=index, crs=this.crs)
def _delegate_geo_method(op, this, *args, **kwargs):
# type: (str, GeoSeries) -> GeoSeries
"""Unary operation that returns a GeoSeries"""
from .geoseries import GeoSeries
a_this = GeometryArray(this.geometry.values)
data = getattr(a_this, op)(*args, **kwargs).data
return GeoSeries(data, index=this.index, crs=this.crs)
def _wrapped_pandas_method(self, mtd, *args, **kwargs):
"""Wrap a generic pandas method to ensure it returns a GeoSeries"""
val = getattr(super(GeoSeries, self), mtd)(*args, **kwargs)
if type(val) == Series:
val.__class__ = GeoSeries
val.crs = self.crs
val._invalidate_sindex()
return val
def __getitem__(self, key):
"""
If the result is a column containing only 'geometry', return a
GeoSeries. If it's a DataFrame with a 'geometry' column, return a
GeoDataFrame.
"""
result = super(GeoDataFrame, self).__getitem__(key)
geo_col = self._geometry_column_name
if isinstance(key, str) and key == geo_col:
result.__class__ = GeoSeries
result.crs = self.crs
result._invalidate_sindex()
elif isinstance(result, DataFrame) and geo_col in result:
result.__class__ = GeoDataFrame
result.crs = self.crs
result._geometry_column_name = geo_col
result._invalidate_sindex()
elif isinstance(result, DataFrame) and geo_col not in result:
result.__class__ = DataFrame
return result