def interpolate_polygon_vector(source, target, layer_name=None, attribute_name=None): """Interpolate from polygon vector layer to vector data Args: * source: Vector data set (polygon) * target: Vector data set (points or polygons) - TBA also lines * layer_name: Optional name of returned interpolated layer. If None the name of target is used for the returned layer. * attribute_name: Name for new attribute. If None (default) the name of source is used Output I: Vector data set; points located as target with values interpolated from source Note: If target geometry is polygon, data will be interpolated to its centroids and the output is a point data set. """ # Input checks verify(source.is_vector) verify(target.is_vector) verify(source.is_polygon_data) if target.is_point_data: R = interpolate_polygon_points(source, target, layer_name=layer_name, attribute_name=attribute_name) elif target.is_line_data: R = interpolate_polygon_lines(source, target, layer_name=layer_name, attribute_name=attribute_name) elif target.is_polygon_data: # Use polygon centroids X = convert_polygons_to_centroids(target) P = interpolate_polygon_points(source, X, layer_name=layer_name, attribute_name=attribute_name) # In case of polygon data, restore the polygon geometry # Do this setting the geometry of the returned set to # that of the original polygon R = Vector(data=P.get_data(), projection=P.get_projection(), geometry=X.get_geometry(), name=P.get_name()) else: msg = ('Unknown datatype for polygon2vector interpolation: ' 'I got %s' % str(target)) raise InaSAFEError(msg) # Return interpolated vector layer return R
def interpolate_raster_vector(R, V, name=None): """Interpolate from raster layer to vector data Input R: Raster data set (grid) V: Vector data set (points or polygons) name: Name for new attribute. If None (default) the name of R is used Output I: Vector data set; points located as V with values interpolated from R Note: If target geometry is polygon, data will be interpolated to its centroids and the output is a point data set. """ # Input checks verify(R.is_raster) verify(V.is_vector) if V.is_polygon_data: # Use centroids, in case of polygons P = convert_polygons_to_centroids(V) else: P = V return interpolate_raster_vector_points(R, P, name=name)
def interpolate_raster_vector(source, target, layer_name=None, attribute_name=None, mode='linear'): """Interpolate from raster layer to vector data Args: * source: Raster data set (grid) * target: Vector data set (points or polygons) * layer_name: Optional name of returned interpolated layer. If None the name of V is used for the returned layer. * attribute_name: Name for new attribute. If None (default) the name of R is used Returns: I: Vector data set; points located as target with values interpolated from source Note: If target geometry is polygon, data will be interpolated to its centroids and the output is a point data set. """ # Input checks verify(source.is_raster) verify(target.is_vector) if target.is_point_data: # Interpolate from raster to point data R = interpolate_raster_vector_points(source, target, layer_name=layer_name, attribute_name=attribute_name, mode=mode) # elif target.is_line_data: # TBA - issue https://github.com/AIFDR/inasafe/issues/36 # elif target.is_polygon_data: # Use centroids, in case of polygons P = convert_polygons_to_centroids(target) R = interpolate_raster_vector_points(source, P, layer_name=layer_name, attribute_name=attribute_name, mode=mode) # In case of polygon data, restore the polygon geometry # Do this setting the geometry of the returned set to # that of the original polygon R = Vector(data=R.get_data(), projection=R.get_projection(), geometry=target.get_geometry(), name=R.get_name()) else: msg = ('Unknown datatype for raster2vector interpolation: ' 'I got %s' % str(target)) raise InaSAFEError(msg) # Return interpolated vector layer return R
def interpolate_raster_vector(source, target, layer_name=None, attribute_name=None, mode='linear'): """Interpolate from raster layer to vector data Args: * source: Raster data set (grid) * target: Vector data set (points or polygons) * layer_name: Optional name of returned interpolated layer. If None the name of V is used for the returned layer. * attribute_name: Name for new attribute. If None (default) the name of R is used Returns: I: Vector data set; points located as target with values interpolated from source Note: If target geometry is polygon, data will be interpolated to its centroids and the output is a point data set. """ # Input checks verify(source.is_raster) verify(target.is_vector) if target.is_point_data: # Interpolate from raster to point data R = interpolate_raster_vector_points( source, target, layer_name=layer_name, attribute_name=attribute_name, mode=mode) #elif target.is_line_data: # TBA - issue https://github.com/AIFDR/inasafe/issues/36 # elif target.is_polygon_data: # Use centroids, in case of polygons P = convert_polygons_to_centroids(target) R = interpolate_raster_vector_points( source, P, layer_name=layer_name, attribute_name=attribute_name) # In case of polygon data, restore the polygon geometry # Do this setting the geometry of the returned set to # that of the original polygon R = Vector( data=R.get_data(), projection=R.get_projection(), geometry=target.get_geometry(), name=R.get_name()) else: msg = ('Unknown datatype for raster2vector interpolation: ' 'I got %s' % str(target)) raise InaSAFEError(msg) # Return interpolated vector layer return R