本文整理汇总了Python中qgis.core.QgsRasterLayer类的典型用法代码示例。如果您正苦于以下问题:Python QgsRasterLayer类的具体用法?Python QgsRasterLayer怎么用?Python QgsRasterLayer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QgsRasterLayer类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_clip_raster_small
def test_clip_raster_small(self):
"""Raster layers can be clipped in small and precise size. For #710."""
# Create a raster layer
layer_name = 'shake'
raster_layer = QgsRasterLayer(RASTERPATH, layer_name)
message = (
'Did not find layer "%s" in path "%s"' % (layer_name, RASTERPATH))
assert raster_layer is not None, message
# Create a bounding box
bounding_box = [97, -3, 104, 1]
# Clip the vector to the bbox
result = clip_layer(raster_layer, bounding_box)
# Check the output is valid
assert os.path.exists(result.source())
# Clip and give a desired resolution for the output
# small pixel size and high precision
# based on pixel size of Flood_Current_Depth_Jakarta_geographic.asc
size = 0.00045228819716
result = clip_layer(raster_layer, bounding_box, size)
new_raster_layer = QgsRasterLayer(result.source(), layer_name)
assert new_raster_layer.isValid(), 'Resampled raster is not valid'
message = (
'Resampled raster has incorrect pixel size. Expected: %.14f, '
'Actual: %.14f' % (
size, new_raster_layer.rasterUnitsPerPixelX()))
result_size = new_raster_layer.rasterUnitsPerPixelX()
self.assertAlmostEqual(result_size, size, places=13, msg=message)
示例2: test_read_existing_geopackage
def test_read_existing_geopackage(self):
"""Test we can read an existing geopackage."""
path = standard_data_path('other', 'jakarta.gpkg')
import os
path = os.path.normpath(os.path.normcase(os.path.abspath(path)))
geopackage = QFileInfo(path)
data_store = GeoPackage(geopackage)
# We should have 3 layers in this geopackage.
self.assertEqual(len(data_store.layers()), 3)
# Test we can load a vector layer.
roads = QgsVectorLayer(
data_store.layer_uri('roads'),
'Test',
'ogr'
)
self.assertTrue(roads.isValid())
# Test we can load a raster layers.
# This currently fails on windows...
# So we have decorated it with expected fail on windows
# Should pass on other platforms.
path = data_store.layer_uri('flood')
flood = QgsRasterLayer(path, 'flood')
self.assertTrue(flood.isValid())
示例3: addToCanvas
def addToCanvas(self, roles):
if self.canOpen(roles):
if not oauth2_supported:
iface.messageBar().pushMessage(
"Cannot load basemap",
"OAuth support is not available",
QgsMessageBar.WARNING)
else:
authcfg = get_oauth_authcfg()
if authcfg is None:
iface.messageBar().pushMessage(
"Cannot load basemap",
"Cannot find a valid authentication configuration",
QgsMessageBar.WARNING)
else:
authId = authcfg.id()
layer = QgsRasterLayer('authcfg={authcfg}&type=xyz&url={url}'.format(url=urllib2.quote("{}?version={}".format(self.url, pluginSetting("apiVersion"))),
authcfg=authId), self.name, "wms")
if layer.isValid():
QgsMapLayerRegistry.instance().addMapLayer(layer)
else:
iface.messageBar().pushMessage(
"Cannot load basemap",
"Cannot create basemap layer",
QgsMessageBar.WARNING)
else:
webbrowser.open_new(SUBSCRIBE_URL)
示例4: define_layer
def define_layer(self, layer_path):
"""Create QGIS layer (either vector or raster) from file path input.
:param layer_path: Full path to layer file.
:type layer_path: str
:return: QGIS layer.
:rtype: QgsMapLayer
"""
scenario_dir = self.source_directory.text()
joined_path = os.path.join(scenario_dir, layer_path)
full_path = os.path.normpath(joined_path)
file_name = os.path.split(layer_path)[-1]
# get extension and basename to create layer
base_name, extension = os.path.splitext(file_name)
# load layer in scenario
layer = QgsRasterLayer(full_path, base_name)
if layer.isValid():
return layer
else:
layer = QgsVectorLayer(full_path, base_name, 'ogr')
if layer.isValid():
return layer
# if layer is not vector nor raster
else:
LOGGER.warning('Input in scenario is not recognized/supported')
return
示例5: toMapLayer
def toMapLayer(self):
from qgis.core import QgsRasterLayer, QgsContrastEnhancement
rl = QgsRasterLayer(self.gdalUri(), self.name)
if rl.isValid():
rl.setContrastEnhancement(QgsContrastEnhancement.StretchToMinimumMaximum)
return rl
示例6: generateLayerFromGeoTIFFURL
def generateLayerFromGeoTIFFURL(self, geoTiffUrl, layerName):
"""Generates a new layer based on the GeoTIFF URL provided for the WCS service.
This method also appends to the name an UUID so the uniqueness of it's name
and ID is guaranteed to avoid problems when managing asynchronous generation
of layers between different processes.
:param geoTiffUrl: the download URL for this image.
:type geoTiffUrl: str
:param layerName: the name to give to this layer. The resultant layer will have an UUID appended.
:type layerName: str
"""
tiff_string = "{ln}{id}".format(ln=layerName, id=uuid.uuid4())
layer = QgsRasterLayer(geoTiffUrl, tiff_string)
if Utilities.is_linux():
import requests
with tempfile.NamedTemporaryFile(suffix=".tiff", delete=False) as f:
r = requests.get(geoTiffUrl, stream=True)
with open(f.name, "wb") as g:
for chunk in r.iter_content():
g.write(chunk)
layer = QgsRasterLayer(f.name, layerName)
else:
layer = QgsRasterLayer(geoTiffUrl, layerName)
if layer.isValid():
return layer
else:
msg = "Couldn't create a valid layer."
self.standardMessage.emit(msg)
示例7: createVrt
def createVrt(inventario, vrt):
#Camada de inventario
layer = processing.getObject(Inventario)
count = 0
size = layer.featureCount()
p = 0
progress.setPercentage(p)
rasterList = []
for feature in layer.getFeatures():
filename = feature['fileName']
raster = QgsRasterLayer(filename, filename)
if Override_CRS:
raster.setCrs( QgsCoordinateReferenceSystem(int(CRS.split(':')[-1]), QgsCoordinateReferenceSystem.EpsgCrsId) )
rasterList.append(raster)
ovr = filename+'.ovr'
if not os.path.isfile(ovr):
progress.setText('Fazendo Pirâmides...')
#('gdalogr:overviews', input, levels=8, clean=False, resampling_method=0(nearest), format=1(Gtiff .ovr))
processing.runalg('gdalogr:overviews', raster, '4 8 32 128', True, 0, 1)
if int(float(count)/size*100) != p:
p = int(float(count)/size*100)
progress.setPercentage(p)
count += 1
progress.setText('Fazendo raster virtual...')
processing.runalg('gdalogr:buildvirtualraster', rasterList, 0, False, False, VRT)
示例8: generateLayer
def generateLayer(self, nameCoverage, coverageTime, boundingBox=None):
"""Generates a raster layer for QGIS.
:param nameCoverage: the name identifier of the coverage we want to retrieve.
:type nameCoverage: str
:param coverageTime: the time dimension of the coverage we want.
:type coverageTime: str
:returns: a QGIS-compatible raster layer object for the coverage and times provided.
:rtype: QgsRasterLayer
"""
url = self.generateURLForGeoTIFF(nameCoverage, coverageTime, boundingBox)
layerName = "{ct}_{nc}-{id}".format(ct=coverageTime, nc=nameCoverage, id=uuid.uuid4())
if Utilities.is_linux():
import requests
with tempfile.NamedTemporaryFile(suffix=".tiff", delete=False) as f:
r = requests.get(url, stream=True)
with open(f.name, "wb") as g:
for chunk in r.iter_content():
g.write(chunk)
layer = QgsRasterLayer(f.name, layerName)
else:
layer = QgsRasterLayer(url, layerName)
if layer.isValid():
return layer
else:
msg = "Couldn't create a valid layer."
self.standardMessage.emit(msg)
示例9: load_layer
def load_layer(layer_path):
"""Helper to load and return a single QGIS layer.
:param layer_path: Path name to raster or vector file.
:type layer_path: str
:returns: Layer instance.
:rtype: QgsMapLayer
"""
# Extract basename and absolute path
file_name = os.path.split(layer_path)[-1] # In case path was absolute
base_name, extension = os.path.splitext(file_name)
# Create QGis Layer Instance
if extension in ['.asc', '.tif']:
layer = QgsRasterLayer(layer_path, base_name)
elif extension in ['.shp']:
layer = QgsVectorLayer(layer_path, base_name, 'ogr')
else:
message = 'File %s had illegal extension' % layer_path
raise Exception(message)
# noinspection PyUnresolvedReferences
message = 'Layer "%s" is not valid' % layer.source()
# noinspection PyUnresolvedReferences
if not layer.isValid():
print message
# noinspection PyUnresolvedReferences
if not layer.isValid():
raise Exception(message)
return layer
示例10: __init__
def __init__(self, methodName):
"""Run once on class initialisation."""
unittest.TestCase.__init__(self, methodName)
myPath = os.path.join(TEST_DATA_DIR, 'landsat.tif')
rasterFileInfo = QFileInfo(myPath)
mRasterLayer = QgsRasterLayer(rasterFileInfo.filePath(),
rasterFileInfo.completeBaseName())
rasterRenderer = QgsMultiBandColorRenderer(
mRasterLayer.dataProvider(), 2, 3, 4)
mRasterLayer.setRenderer(rasterRenderer)
#pipe = mRasterLayer.pipe()
#assert pipe.set(rasterRenderer), 'Cannot set pipe renderer'
QgsMapLayerRegistry.instance().addMapLayers([mRasterLayer])
# create composition with composer map
self.mMapRenderer = QgsMapRenderer()
layerStringList = QStringList()
layerStringList.append(mRasterLayer.id())
self.mMapRenderer.setLayerSet(layerStringList)
self.mMapRenderer.setProjectionsEnabled(False)
self.mComposition = QgsComposition(self.mMapRenderer)
self.mComposition.setPaperSize(297, 210)
self.mComposerMap = QgsComposerMap(self.mComposition, 20, 20, 200, 100)
self.mComposerMap.setFrameEnabled(True)
self.mComposition.addComposerMap(self.mComposerMap)
示例11: testLayerRemovalBeforeRun
def testLayerRemovalBeforeRun(self):
"""test behavior when layer is removed before task begins"""
path = os.path.join(unitTestDataPath(), 'raster', 'with_color_table.tif')
raster_layer = QgsRasterLayer(path, "test")
self.assertTrue(raster_layer.isValid())
pipe = QgsRasterPipe()
self.assertTrue(pipe.set(raster_layer.dataProvider().clone()))
tmp = create_temp_filename('remove_layer.tif')
writer = QgsRasterFileWriter(tmp)
task = QgsRasterFileWriterTask(writer, pipe, 100, 100, raster_layer.extent(), raster_layer.crs())
task.writeComplete.connect(self.onSuccess)
task.errorOccurred.connect(self.onFail)
# remove layer
raster_layer = None
QgsApplication.taskManager().addTask(task)
while not self.success and not self.fail:
QCoreApplication.processEvents()
# in this case will still get a positive result - since the pipe is cloned before the task
# begins the task is no longer dependent on the original layer
self.assertTrue(self.success)
self.assertFalse(self.fail)
self.assertTrue(os.path.exists(tmp))
示例12: testIdentify
def testIdentify(self):
myPath = os.path.join(unitTestDataPath(), 'landsat.tif')
myFileInfo = QFileInfo(myPath)
myBaseName = myFileInfo.baseName()
myRasterLayer = QgsRasterLayer(myPath, myBaseName)
myMessage = 'Raster not loaded: %s' % myPath
assert myRasterLayer.isValid(), myMessage
myPoint = QgsPoint(786690, 3345803)
#print 'Extents: %s' % myRasterLayer.extent().toString()
#myResult, myRasterValues = myRasterLayer.identify(myPoint)
#assert myResult
myRasterValues = myRasterLayer.dataProvider().identify(myPoint, QgsRasterDataProvider.IdentifyFormatValue )
assert len( myRasterValues ) > 0
# Get the name of the first band
myBand = myRasterValues.keys()[0]
#myExpectedName = QString('Band 1')
myExpectedBand = 1
myMessage = 'Expected "%s" got "%s" for first raster band name' % (
myExpectedBand, myBand)
assert myExpectedBand == myBand, myMessage
# Convert each band value to a list of ints then to a string
myValues = myRasterValues.values()
myIntValues = []
for myValue in myValues:
#myIntValues.append(int(str(myValue)))
myIntValues.append( myValue.toInt()[0] )
myValues = str(myIntValues)
myExpectedValues = '[127, 141, 112, 72, 86, 126, 156, 211, 170]'
myMessage = 'Expected: %s\nGot: %s' % (myValues, myExpectedValues)
self.assertEquals(myValues, myExpectedValues, myMessage)
示例13: __init__
def __init__(self, methodName):
"""Run once on class initialisation."""
unittest.TestCase.__init__(self, methodName)
# initialize class MapRegistry, Canvas, MapRenderer, Map and PAL
self.mMapRegistry = QgsMapLayerRegistry.instance()
# create point layer
myShpFile = os.path.join(TEST_DATA_DIR, 'points.shp')
self.mPointLayer = QgsVectorLayer(myShpFile, 'Points', 'ogr')
self.mMapRegistry.addMapLayer(self.mPointLayer)
# create polygon layer
myShpFile = os.path.join(TEST_DATA_DIR, 'polys.shp')
self.mPolygonLayer = QgsVectorLayer(myShpFile, 'Polygons', 'ogr')
self.mMapRegistry.addMapLayer(self.mPolygonLayer)
# create two raster layers
myRasterFile = os.path.join(TEST_DATA_DIR, 'landsat.tif')
self.mRasterLayer1 = QgsRasterLayer(myRasterFile, "raster1")
self.mRasterLayer2 = QgsRasterLayer(myRasterFile, "raster2")
myMultiBandRenderer1 = QgsMultiBandColorRenderer(self.mRasterLayer1.dataProvider(), 2, 3, 4)
self.mRasterLayer1.setRenderer(myMultiBandRenderer1)
self.mMapRegistry.addMapLayer(self.mRasterLayer1)
myMultiBandRenderer2 = QgsMultiBandColorRenderer(self.mRasterLayer2.dataProvider(), 2, 3, 4)
self.mRasterLayer2.setRenderer(myMultiBandRenderer2)
self.mMapRegistry.addMapLayer(self.mRasterLayer2)
# to match blend modes test comparisons background
self.mCanvas = CANVAS
self.mCanvas.setCanvasColor(QColor(152, 219, 249))
self.mMap = self.mCanvas.map()
self.mMap.resize(QSize(400, 400))
self.mMapRenderer = self.mCanvas.mapRenderer()
self.mMapRenderer.setOutputSize(QSize(400, 400), 72)
示例14: testIdentify
def testIdentify(self):
myPath = os.path.abspath(os.path.join(__file__, '..', '..', '..', 'testdata', 'landsat.tif'))
myFileInfo = QFileInfo(myPath)
myBaseName = myFileInfo.baseName()
myRasterLayer = QgsRasterLayer(myPath, myBaseName)
myMessage = 'Raster not loaded: %s' % myPath
assert myRasterLayer.isValid(), myMessage
myPoint = QgsPoint(786690, 3345803)
#print 'Extents: %s' % myRasterLayer.extent().toString()
myResult, myRasterValues = myRasterLayer.identify(myPoint)
assert myResult
# Get the name of the first band
myBandName = myRasterValues.keys()[0]
myExpectedName = QString('Band 1')
myMessage = 'Expected "%s" got "%s" for first raster band name' % (
myExpectedName, myBandName)
assert myExpectedName == myBandName, myMessage
# Convert each band value to a list of ints then to a string
myValues = myRasterValues.values()
myIntValues = []
for myValue in myValues:
myIntValues.append(int(str(myValue)))
myValues = str(myIntValues)
myExpectedValues = '[127, 141, 112, 72, 86, 126, 156, 211, 170]'
myMessage = 'Expected: %s\nGot: %s' % (myValues, myExpectedValues)
self.assertEquals(myValues, myExpectedValues, myMessage)
示例15: test_run_without_population_field
def test_run_without_population_field(self):
impact_function = AshRasterPlacesFunction.instance()
hazard_path = standard_data_path("hazard", "ash_raster_wgs84.tif")
exposure_path = standard_data_path("exposure", "places.shp")
hazard_layer = QgsRasterLayer(hazard_path, "Ash")
exposure_layer = QgsVectorLayer(exposure_path, "Places", "ogr")
impact_function.hazard = hazard_layer
impact_function.exposure = exposure_layer
# Let's set the extent to the hazard extent
extent = hazard_layer.extent()
rect_extent = [extent.xMinimum(), extent.yMaximum(), extent.xMaximum(), extent.yMinimum()]
impact_function.requested_extent = rect_extent
impact_function.run()
impact_layer = impact_function.impact
# Extract calculated result
impact_data = impact_layer.get_data()
# 1 = inundated, 2 = wet, 3 = dry
expected_result = {0: 0, 1: 135, 2: 62, 3: 1, 4: 0}
result = {0: 0, 1: 0, 2: 0, 3: 0, 4: 0}
for feature in impact_data:
inundated_status = feature[impact_function.target_field]
result[inundated_status] += 1
self.assertDictEqual(expected_result, result)