本文整理汇总了Python中utilities.verify函数的典型用法代码示例。如果您正苦于以下问题:Python verify函数的具体用法?Python verify怎么用?Python verify使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了verify函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: bboxstring2list
def bboxstring2list(bbox_string):
"""Convert bounding box string to list
Input
bbox_string: String of bounding box coordinates of the form 'W,S,E,N'
Output
bbox: List of floating point numbers with format [W, S, E, N]
"""
msg = ('Bounding box must be a string with coordinates following the '
'format 105.592,-7.809,110.159,-5.647\n'
'Instead I got %s of type %s.' % (str(bbox_string),
type(bbox_string)))
verify(isinstance(bbox_string, basestring), msg)
fields = bbox_string.split(',')
msg = ('Bounding box string must have 4 coordinates in the form '
'"W,S,E,N". I got bbox == "%s"' % bbox_string)
verify(len(fields) == 4, msg)
for x in fields:
try:
float(x)
except ValueError, e:
msg = ('Bounding box %s contained non-numeric entry %s, '
'original error was "%s".' % (bbox_string, x, e))
raise AssertionError(msg)
开发者ID:inasafe,项目名称:python-safe,代码行数:27,代码来源:core.py
示例2: grid_to_points
def grid_to_points(A, x, y):
"""Convert grid data to point data
:param A: Array of pixel values
:type A: numpy.ndarray
:param x: Longitudes corresponding to columns in A (west->east)
:type x: numpy.ndarray
:param y: Latitudes corresponding to rows in A (south->north)
:type y: numpy.ndarray
Returns:
* P: Nx2 array of point coordinates
* V: N array of point values
"""
msg = ('Longitudes must be increasing (west to east). I got %s' % str(x))
verify(x[0] < x[1], msg)
msg = ('Latitudes must be increasing (south to north). I got %s' % str(y))
verify(y[0] < y[1], msg)
# Create Nx2 array of x, y points corresponding to each
# element in A.
points = axes_to_points(x, y)
# Create flat 1D row-major view of A cast as
# one column vector of length MxN where M, N = A.shape
#values = A.reshape((-1, 1))
values = A.reshape(-1)
# Return Nx3 array with rows: x, y, value
return points, values
开发者ID:D2KG,项目名称:FLOOgin,代码行数:34,代码来源:numerics.py
示例3: convert_polygons_to_centroids
def convert_polygons_to_centroids(V):
"""Convert polygon vector data to point vector data
:param V: Vector layer with polygon data
:type V: Vector
:returns: Vector layer with point data and the same attributes as V
:rtype: Vector
"""
msg = 'Input data %s must be polygon vector data' % V
verify(V.is_polygon_data, msg)
geometry = V.get_geometry()
N = len(V)
# Calculate points for each polygon
centroids = []
for i in range(N):
c = calculate_polygon_centroid(geometry[i])
centroids.append(c)
# Create new point vector layer with same attributes and return
V = Vector(data=V.get_data(),
projection=V.get_projection(),
geometry=centroids,
name='%s_centroid_data' % V.get_name(),
keywords=V.get_keywords())
return V
开发者ID:cchristelis,项目名称:inasafe,代码行数:29,代码来源:vector.py
示例4: interpolate
def interpolate(self, X, name=None):
"""Interpolate values of this raster layer to other layer
Input
X: Layer object defining target
name: Optional name of interpolated layer.
If name is None, the name of self is used.
Output
Y: Layer object with values of this raster layer interpolated to
geometry of input layer X
Note: If target geometry is polygon, data will be interpolated to
its centroids and the output is a point data set.
"""
if X.is_raster:
if self.get_geotransform() != X.get_geotransform():
# Need interpolation between grids
msg = 'Intergrid interpolation not yet implemented'
raise Exception(msg)
else:
# Rasters are aligned, no need to interpolate
return self
else:
# Interpolate this raster layer to geometry of X
msg = ('Name must be either a string or None. I got %s'
% (str(type(X)))[1:-1])
verify(name is None or isinstance(name, basestring), msg)
return interpolate_raster_vector(self, X, name)
开发者ID:mysetiawan,项目名称:inasafe,代码行数:31,代码来源:raster.py
示例5: bboxlist2string
def bboxlist2string(bbox, decimals=6):
"""Convert bounding box list to comma separated string
Input
bbox: List of coordinates of the form [W, S, E, N]
Output
bbox_string: Format 'W,S,E,N' - each will have 6 decimal points
"""
msg = 'Got string %s, but expected bounding box as a list' % str(bbox)
verify(not isinstance(bbox, basestring), msg)
try:
bbox = list(bbox)
except:
msg = 'Could not coerce bbox %s into a list' % str(bbox)
raise Exception(msg)
msg = ('Bounding box must have 4 coordinates [W, S, E, N]. '
'I got %s' % str(bbox))
verify(len(bbox) == 4, msg)
for x in bbox:
try:
float(x)
except ValueError, e:
msg = ('Bounding box %s contained non-numeric entry %s, '
'original error was "%s".' % (bbox, x, e))
raise AssertionError(msg)
开发者ID:inasafe,项目名称:python-safe,代码行数:29,代码来源:core.py
示例6: convert_line_to_points
def convert_line_to_points(V, delta):
"""Convert line vector data to point vector data
Input
V: Vector layer with line data
delta: Incremental step to find the points
Output
Vector layer with point data and the same attributes as V
"""
msg = 'Input data %s must be line vector data' % V
verify(V.is_line_data, msg)
geometry = V.get_geometry()
data = V.get_data()
N = len(V)
# Calculate centroids for each polygon
points = []
new_data = []
for i in range(N):
c = points_along_line(geometry[i], delta)
# We need to create a data entry for each point.
new_data.extend([data[i] for thing in c])
points.extend(c)
# Create new point vector layer with same attributes and return
V = Vector(data=new_data,
projection=V.get_projection(),
geometry=points,
name='%s_point_data' % V.get_name(),
keywords=V.get_keywords())
return V
开发者ID:mysetiawan,项目名称:inasafe,代码行数:33,代码来源:vector.py
示例7: geotransform_to_axes
def geotransform_to_axes(G, nx, ny):
"""Convert geotransform to coordinate axes
:param G: GDAL geotransform (6-tuple).
(top left x, w-e pixel resolution, rotation,
top left y, rotation, n-s pixel resolution).
:type G: tuple
:param nx: Number of cells in the w-e direction
:type nx: int
:param ny: Number of cells in the n-s direction
:type nx: int
:returns: Two vectors (longitudes and latitudes) representing the grid
defined by the geotransform.
The values are offset by half a pixel size to correspond to
pixel registration.
I.e. If the grid origin (top left corner) is (105, 10) and the
resolution is 1 degrees in each direction, then the vectors will
take the form
longitudes = [100.5, 101.5, ..., 109.5]
latitudes = [0.5, 1.5, ..., 9.5]
"""
lon_ul = float(G[0]) # Longitude of upper left corner
lat_ul = float(G[3]) # Latitude of upper left corner
dx = float(G[1]) # Longitudinal resolution
dy = - float(G[5]) # Latitudinal resolution (always(?) negative)
verify(dx > 0)
verify(dy > 0)
# Coordinates of lower left corner
lon_ll = lon_ul
lat_ll = lat_ul - ny * dy
# Coordinates of upper right corner
lon_ur = lon_ul + nx * dx
# Define pixel centers along each directions
# This is to achieve pixel registration rather
# than gridline registration
dx2 = dx / 2
dy2 = dy / 2
# Define longitudes and latitudes for each axes
x = numpy.linspace(lon_ll + dx2,
lon_ur - dx2, nx)
y = numpy.linspace(lat_ll + dy2,
lat_ul - dy2, ny)
# Return
return x, y
开发者ID:D2KG,项目名称:FLOOgin,代码行数:58,代码来源:numerics.py
示例8: axes_to_points
def axes_to_points(x, y):
"""Generate all combinations of grid point coordinates from x and y axes
:param x: x coordinates (array)
:type x: numpy.ndarray
:param y: y coordinates (array)
:type y: numpy.ndarray
:returns:
* P: Nx2 array consisting of coordinates for all
grid points defined by x and y axes. The x coordinate
will vary the fastest to match the way 2D numpy
arrays are laid out by default ('C' order). That way,
the x and y coordinates will match a corresponding
2D array A when flattened (A.flat[:] or A.reshape(-1))
Note:
Example
x = [1, 2, 3]
y = [10, 20]
P = [[1, 10],
[2, 10],
[3, 10],
[1, 20],
[2, 20],
[3, 20]]
"""
# Reverse y coordinates to have them start at bottom of array
y = numpy.flipud(y)
# Repeat x coordinates for each y (fastest varying)
# noinspection PyTypeChecker
X = numpy.kron(numpy.ones(len(y)), x)
# Repeat y coordinates for each x (slowest varying)
Y = numpy.kron(y, numpy.ones(len(x)))
# Check
N = len(X)
verify(len(Y) == N)
# Create Nx2 array of x and y coordinates
X = numpy.reshape(X, (N, 1))
Y = numpy.reshape(Y, (N, 1))
P = numpy.concatenate((X, Y), axis=1)
# Return
return P
开发者ID:D2KG,项目名称:FLOOgin,代码行数:52,代码来源:numerics.py
示例9: get_geometry
def get_geometry(self):
"""Return longitudes and latitudes (the axes) for grid.
Return two vectors (longitudes and latitudes) corresponding to
grid. The values are offset by half a pixel size to correspond to
pixel registration.
I.e. If the grid origin (top left corner) is (105, 10) and the
resolution is 1 degrees in each direction, then the vectors will
take the form
longitudes = [100.5, 101.5, ..., 109.5]
latitudes = [0.5, 1.5, ..., 9.5]
"""
# Get parameters for axes
g = self.get_geotransform()
lon_ul = g[0] # Longitude of upper left corner
lat_ul = g[3] # Latitude of upper left corner
dx = g[1] # Longitudinal resolution
dy = - g[5] # Latitudinal resolution (always(?) negative)
nx = self.columns
ny = self.rows
verify(dx > 0)
verify(dy > 0)
# Coordinates of lower left corner
lon_ll = lon_ul
lat_ll = lat_ul - ny * dy
# Coordinates of upper right corner
lon_ur = lon_ul + nx * dx
# Define pixel centers along each directions
dy2 = dy / 2
dx2 = dx / 2
# Define longitudes and latitudes for each axes
x = numpy.linspace(lon_ll + dx2,
lon_ur - dx2, nx)
y = numpy.linspace(lat_ll + dy2,
lat_ul - dy2, ny)
# Return
return x, y
开发者ID:mysetiawan,项目名称:inasafe,代码行数:47,代码来源:raster.py
示例10: write_to_file
def write_to_file(self, filename):
"""Save raster data to file
Input
filename: filename with extension .tif
"""
# Check file format
basename, extension = os.path.splitext(filename)
msg = ('Invalid file type for file %s. Only extension '
'tif allowed.' % filename)
verify(extension in ['.tif', '.asc'], msg)
format = DRIVER_MAP[extension]
# Get raster data
A = self.get_data()
# Get Dimensions. Note numpy and Gdal swap order
N, M = A.shape
# Create empty file.
# FIXME (Ole): It appears that this is created as single
# precision even though Float64 is specified
# - see issue #17
driver = gdal.GetDriverByName(format)
fid = driver.Create(filename, M, N, 1, gdal.GDT_Float64)
if fid is None:
msg = ('Gdal could not create filename %s using '
'format %s' % (filename, format))
raise Exception(msg)
# Write metada
fid.SetProjection(str(self.projection))
fid.SetGeoTransform(self.geotransform)
# Write data
fid.GetRasterBand(1).WriteArray(A)
# Write keywords if any
write_keywords(self.keywords, basename + '.keywords')
开发者ID:mysetiawan,项目名称:inasafe,代码行数:41,代码来源:raster.py
示例11: convert_line_to_points
def convert_line_to_points(V, delta):
"""Convert line vector data to point vector data
:param V: Vector layer with line data
:type V: Vector
:param delta: Incremental step to find the points
:type delta: float
:returns: Vector layer with point data and the same attributes as V
:rtype: Vector
"""
msg = 'Input data %s must be line vector data' % V
verify(V.is_line_data, msg)
geometry = V.get_geometry()
data = V.get_data()
N = len(V)
# Calculate centroids for each polygon
points = []
new_data = []
for i in range(N):
c = points_along_line(geometry[i], delta)
# We need to create a data entry for each point.
# FIXME (Ole): What on earth is this?
# pylint: disable=W0621
new_data.extend([data[i] for _ in c])
# pylint: enable=W0621
points.extend(c)
# Create new point vector layer with same attributes and return
V = Vector(data=new_data,
projection=V.get_projection(),
geometry=points,
name='%s_point_data' % V.get_name(),
keywords=V.get_keywords())
return V
开发者ID:cchristelis,项目名称:inasafe,代码行数:39,代码来源:vector.py
示例12: get_bins
def get_bins(self, N=10, quantiles=False):
"""Get N values between the min and the max occurred in this dataset.
Return sorted list of length N+1 where the first element is min and
the last is max. Intermediate values depend on the keyword quantiles:
If quantiles is True, they represent boundaries between quantiles.
If quantiles is False, they represent equidistant interval boundaries.
"""
min, max = self.get_extrema()
levels = []
if quantiles is False:
# Linear intervals
d = (max - min) / N
for i in range(N):
levels.append(min + i * d)
else:
# Quantiles
# FIXME (Ole): Not 100% sure about this algorithm,
# but it is close enough
A = self.get_data(nan=True).flat[:]
mask = numpy.logical_not(numpy.isnan(A)) # Omit NaN's
A = A.compress(mask)
A.sort()
verify(len(A) == A.shape[0])
d = float(len(A) + 0.5) / N
for i in range(N):
levels.append(A[int(i * d)])
levels.append(max)
return levels
开发者ID:mysetiawan,项目名称:inasafe,代码行数:39,代码来源:raster.py
示例13: get_data
def get_data(self, attribute=None, index=None):
"""Get vector attributes
Data is returned as a list where each entry is a dictionary of
attributes for one feature. Entries in get_geometry() and
get_data() are related as 1-to-1
If optional argument attribute is specified and a valid name,
then the list of values for that attribute is returned.
If optional argument index is specified on the that value will
be returned. Any value of index is ignored if attribute is None.
"""
if hasattr(self, 'data'):
if attribute is None:
return self.data
else:
msg = ('Specified attribute %s does not exist in '
'vector layer %s. Valid names are %s'
'' % (attribute, self, self.data[0].keys()))
verify(attribute in self.data[0], msg)
if index is None:
# Return all values for specified attribute
return [x[attribute] for x in self.data]
else:
# Return value for specified attribute and index
msg = ('Specified index must be either None or '
'an integer. I got %s' % index)
verify(type(index) == type(0), msg)
msg = ('Specified index must lie within the bounds '
'of vector layer %s which is [%i, %i]'
'' % (self, 0, len(self) - 1))
verify(0 <= index < len(self), msg)
return self.data[index][attribute]
else:
msg = 'Vector data instance does not have any attributes'
raise Exception(msg)
开发者ID:mysetiawan,项目名称:inasafe,代码行数:41,代码来源:vector.py
示例14: get_topN
def get_topN(self, attribute, N=10):
"""Get top N features
Input
attribute: The name of attribute where values are sought
N: How many
Output
layer: New vector layer with selected features
"""
# FIXME (Ole): Maybe generalise this to arbitrary expressions
# Input checks
msg = ('Specfied attribute must be a string. '
'I got %s' % (type(attribute)))
verify(isinstance(attribute, basestring), msg)
msg = 'Specified attribute was empty'
verify(attribute != '', msg)
msg = 'N must be a positive number. I got %i' % N
verify(N > 0, msg)
# Create list of values for specified attribute
values = self.get_data(attribute)
# Sort and select using Schwarzian transform
A = zip(values, self.data, self.geometry)
A.sort()
# Pick top N and unpack
_, data, geometry = zip(*A[-N:])
# Create new Vector instance and return
return Vector(data=data,
projection=self.get_projection(),
geometry=geometry)
开发者ID:mysetiawan,项目名称:inasafe,代码行数:38,代码来源:vector.py
示例15: get_topN
def get_topN(self, attribute, N=10):
"""Get top N features
:param attribute: The name of attribute where values are sought
:type attribute: str
:param N: How many
:type N: int
:returns: New vector layer with selected features
"""
# Input checks
msg = ('Specfied attribute must be a string. '
'I got %s' % (type(attribute)))
verify(isinstance(attribute, basestring), msg)
msg = 'Specified attribute was empty'
verify(attribute != '', msg)
msg = 'N must be a positive number. I got %i' % N
verify(N > 0, msg)
# Create list of values for specified attribute
values = self.get_data(attribute)
# Sort and select using Schwarzian transform
A = zip(values, self.data, self.geometry)
A.sort()
# Pick top N and unpack
data, geometry = zip(*A[-N:])[1:]
# Create new Vector instance and return
return Vector(data=data,
projection=self.get_projection(),
geometry=geometry,
keywords=self.get_keywords())
开发者ID:cchristelis,项目名称:inasafe,代码行数:38,代码来源:vector.py
示例16: Exception
raise Exception(msg)
if native:
keywords = self.get_keywords()
if 'resolution' in keywords:
resolution = keywords['resolution']
try:
res = float(resolution)
except:
# Assume resolution is a string of the form:
# (0.00045228819716044, 0.00045228819716044)
msg = ('Unknown format for resolution keyword: %s'
% resolution)
verify((resolution.startswith('(') and
resolution.endswith(')')), msg)
dx, dy = [float(s) for s in resolution[1:-1].split(',')]
if not isotropic:
res = (dx, dy)
else:
msg = ('Resolution of layer "%s" was not isotropic: '
'[dx, dy] == %s' % (self.get_name(), res))
verify(numpy.allclose(dx, dy,
rtol=1.0e-12, atol=1.0e-12), msg)
res = dx
else:
if not isotropic:
res = (res, res)
# Return either 2-tuple or scale depending on isotropic
开发者ID:mysetiawan,项目名称:inasafe,代码行数:32,代码来源:raster.py
示例17: write_to_file
def write_to_file(self, filename, sublayer=None):
"""Save vector data to file
:param filename: filename with extension .shp or .gml
:type filename: str
:param sublayer: Optional parameter for writing a sublayer. Ignored
unless we are writing to an sqlite file.
:type sublayer: str
:raises: WriteLayerError
Note:
Shp limitation, if attribute names are longer than 10
characters they will be truncated. This is due to limitations in
the shp file driver and has to be done here since gdal v1.7 onwards
has changed its handling of this issue:
http://www.gdal.org/ogr/drv_shapefile.html
**For this reason we recommend writing to spatialite.**
"""
# Check file format
base_name, extension = os.path.splitext(filename)
msg = ('Invalid file type for file %s. Only extensions '
'sqlite, shp or gml allowed.' % filename)
verify(extension in ['.sqlite', '.shp', '.gml'], msg)
driver = DRIVER_MAP[extension]
# FIXME (Ole): Tempory flagging of GML issue (ticket #18)
if extension == '.gml':
msg = ('OGR GML driver does not store geospatial reference.'
'This format is disabled for the time being. See '
'https://github.com/AIFDR/riab/issues/18')
raise WriteLayerError(msg)
# Derive layer_name from filename (excluding preceding dirs)
if sublayer is None or extension == '.shp':
layer_name = os.path.split(base_name)[-1]
else:
layer_name = sublayer
# Get vector data
if self.is_polygon_data:
geometry = self.get_geometry(as_geometry_objects=True)
else:
geometry = self.get_geometry()
data = self.get_data()
N = len(geometry)
# Clear any previous file of this name (ogr does not overwrite)
try:
os.remove(filename)
except OSError:
pass
# Create new file with one layer
drv = ogr.GetDriverByName(driver)
if drv is None:
msg = 'OGR driver %s not available' % driver
raise WriteLayerError(msg)
ds = drv.CreateDataSource(get_string(filename))
if ds is None:
msg = 'Creation of output file %s failed' % filename
raise WriteLayerError(msg)
lyr = ds.CreateLayer(get_string(layer_name),
self.projection.spatial_reference,
self.geometry_type)
if lyr is None:
msg = 'Could not create layer %s' % layer_name
raise WriteLayerError(msg)
# Define attributes if any
store_attributes = False
fields = []
if data is not None:
if len(data) > 0:
try:
fields = data[0].keys()
except:
msg = ('Input parameter "attributes" was specified '
'but it does not contain list of dictionaries '
'with field information as expected. The first '
'element is %s' % data[0])
raise WriteLayerError(msg)
else:
# Establish OGR types for each element
ogr_types = {}
for name in fields:
att = data[0][name]
py_type = type(att)
msg = ('Unknown type for storing vector '
'data: %s, %s' % (name, str(py_type)[1:-1]))
verify(py_type in TYPE_MAP, msg)
ogr_types[name] = TYPE_MAP[py_type]
#.........这里部分代码省略.........
开发者ID:cchristelis,项目名称:inasafe,代码行数:101,代码来源:vector.py
示例18: get_data
def get_data(self, attribute=None, index=None, copy=False):
"""Get vector attributes.
:param attribute: Specify an attribute name of which to return data.
:type attribute: str
:param index: Indicates a specific value on which to call the
attribute. Ignored if no attribute is set.
:type index: int
:param copy: Indicate whether to return a pointer to the data,
or a copy of.
:type copy: bool
:raises: GetDataError
:returns: A list where each entry is a dictionary of attributes for one
feature.
:rtype: list,
Note:
Data is returned as a list where each entry is a dictionary of
attributes for one feature. Entries in get_geometry() and
get_data() are related as 1-to-1
If optional argument attribute is specified and a valid name,
then the list of values for that attribute is returned.
If optional argument index is specified on the that value will
be returned. Any value of index is ignored if attribute is None.
If optional argument copy is True and all attributes are requested,
a copy will be returned. Otherwise a pointer to the data is
returned.
"""
if hasattr(self, 'data'):
if attribute is None:
if copy:
return copy_module.deepcopy(self.data)
else:
return self.data
else:
msg = ('Specified attribute %s does not exist in '
'vector layer %s. Valid names are %s'
'' % (attribute, self, self.data[0].keys()))
verify(attribute in self.data[0], msg)
if index is None:
# Return all values for specified attribute
return [x[attribute] for x in self.data]
else:
# Return value for specified attribute and index
msg = ('Specified index must be either None or '
'an integer. I got %s' % index)
verify(isinstance(index, int), msg)
msg = ('Specified index must lie within the bounds '
'of vector layer %s which is [%i, %i]'
'' % (self, 0, len(self) - 1))
verify(0 <= index < len(self), msg)
return self.data[index][attribute]
else:
msg = 'Vector data instance does not have any attributes'
raise GetDataError(msg)
开发者ID:cchristelis,项目名称:inasafe,代码行数:66,代码来源:vector.py
示例19: get_data
def get_data(self, nan=True, scaling=None):
"""Get raster data as numeric array
Input
nan: Optional flag controlling handling of missing values.
If nan is True (default), nodata values will be replaced
with numpy.nan
If keyword nan has a numeric value, nodata values will
be replaced by that value. E.g. to set missing values to 0,
do get_data(nan=0.0)
scaling: Optional flag controlling if data is to be scaled
if it has been resampled. Admissible values are
False: data is retrieved without modification.
True: Data is rescaled based on the squared ratio between
its current and native resolution. This is typically
required if raster data represents a density
such as population per km^2
None: The behaviour will depend on the keyword
"population" associated with the layer. If
it is "density", scaling will be applied
otherwise not. This is the default.
scalar value: If scaling takes a numerical scalar value,
that will be use to scale the data
"""
if hasattr(self, 'data'):
A = self.data
verify(A.shape[0] == self.rows and A.shape[1] == self.columns)
else:
# Read from raster file
A = self.band.ReadAsArray()
# Convert to double precision (issue #75)
A = numpy.array(A, dtype=numpy.float64)
# Self check
M, N = A.shape
msg = ('Dimensions of raster array do not match those of '
'raster file %s' % self.filename)
verify(M == self.rows, msg)
verify(N == self.columns, msg)
# Handle no data value
if nan is False:
pass
else:
if nan is True:
NAN = numpy.nan
else:
NAN = nan
# Replace NODATA_VALUE with NaN
nodata = self.get_nodata_value()
NaN = numpy.ones(A.shape, A.dtype) * NAN
A = numpy.where(A == nodata, NaN, A)
# Take care of possible scaling
if scaling is None:
# Redefine scaling from density keyword if possible
kw = self.get_keywords()
if 'datatype' in kw and kw['datatype'].lower() == 'density':
scaling = True
else:
scaling = False
if scaling is False:
# No change
sigma = 1
elif scaling is True:
# Calculate scaling based on resolution change
actual_res = self.get_resolution(isotropic=True)
native_res = self.get_resolution(isotropic=True, native=True)
#print
#print 'Actual res', actual_res
#print 'Native res', native_res
sigma = (actual_res / native_res) ** 2
#print 'Scaling', sigma
else:
# See if scaling can work as a scalar value
try:
sigma = float(scaling)
except Exception, e:
msg = ('Keyword scaling "%s" could not be converted to a '
'number. It must be either True, False, None or a '
'number: %s' % (scaling, str(e)))
raise Exception(msg)
开发者ID:mysetiawan,项目名称:inasafe,代码行数:89,代码来源:raster.py
示例20: __init__
def __init__(
self,
data=None,
projection=None,
geometry=None,
geometry_type=None,
name=None,
keywords=None,
style_info=None,
sublayer=None):
"""Initialise object with either geometry or filename
NOTE: Doc strings in constructor are not harvested and exposed in
online documentation. Hence the details are specified in the
class docstring.
"""
# Invoke common layer constructor
Layer.__init__(
self,
name=name,
projection=projection,
keywords=keywords,
style_info=style_info,
sublayer=sublayer)
# Input checks
if data is None and geometry is None:
# Instantiate empty object
self.geometry_type = None
self.extent = [0, 0, 0, 0]
return
if isinstance(data, basestring):
self.read_from_file(data)
# check QGIS_IS_AVAILABLE to avoid QgsVectorLayer undefined error
elif QGIS_IS_AVAILABLE and isinstance(data, QgsVectorLayer):
self.read_from_qgis_native(data)
else:
# Assume that data is provided as sequences provided as
# arguments to the Vector constructor
# with extra keyword arguments supplying metadata
msg = 'Geometry must be specified'
verify(geometry is not None, msg)
msg = 'Geometry must be a sequence'
verify(is_sequence(geometry), msg)
if len(geometry) > 0 and isinstance(geometry[0], Polygon):
self.geometry_type = ogr.wkbPolygon
self.geometry = geometry
else:
self.geometry_type = get_geometry_type(geometry, geometry_type)
if self.is_polygon_data:
# Convert to objects if input is a list of simple arrays
self.geometry = [Polygon(outer_ring=x) for x in geometry]
else:
# Convert to list if input is an array
if isinstance(geometry, numpy.ndarray):
self.geometry = geometry.tolist()
else:
self.geometry = geometry
if data is None:
# Generate default attribute as OGR will do that anyway
# when writing
data = []
for i in range(len(geometry)):
data.append({'ID': i})
# Check data
self.data = data
if data is not None:
msg = 'Data must be a sequence'
verify(is_sequence(data), msg)
msg = ('The number of entries in geometry (%s) and data (%s)'
'must be the same' % (len(geometry), len(data)))
verify(len(geometry) == len(data), msg)
# Establish extent
if len(geometry) == 0:
# Degenerate layer
self.extent = [0, 0, 0, 0]
return
# Compute bounding box for each geometry type
minx = miny = sys.maxint
maxx = maxy = -minx
if self.is_point_data:
A = numpy.array(self.get_geometry())
minx = min(A[:, 0])
maxx = max(A[:, 0])
miny = min(A[:, 1])
maxy = max(A[:, 1])
elif self.is_line_data:
for g in self.get_geometry():
A = numpy.array(g)
#.........这里部分代码省略.........
开发者ID:cchristelis,项目名称:inasafe,代码行数:101,代码来源:vector.py
注:本文中的utilities.verify函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论