本文整理汇总了Python中qgis.core.QgsRectangle.xMinimum方法的典型用法代码示例。如果您正苦于以下问题:Python QgsRectangle.xMinimum方法的具体用法?Python QgsRectangle.xMinimum怎么用?Python QgsRectangle.xMinimum使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsRectangle
的用法示例。
在下文中一共展示了QgsRectangle.xMinimum方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testGetClickBbox
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def testGetClickBbox(self):
"""
Tests that a click returns a small bbox.
"""
# pixel coords for fake click
self.prepareTestCanvas()
myPoint = QgsPoint(50, 15)
myBox = self.bucketFill.getClickBbox(myPoint)
myExpectedBox = QgsRectangle(49.99850465,
14.99850465,
50.00149535,
15.00149535)
myMessage = ('Bounding box was incorrect. Received values %s'
' Expected values %s' % (
str('%s, %s, %s, %s' % (
myBox.xMinimum(), myBox.yMinimum(),
myBox.xMaximum(), myBox.yMaximum()
)),
str('%s, %s, %s, %s' % (
myExpectedBox.xMinimum(), myExpectedBox.yMinimum(),
myExpectedBox.xMaximum(), myExpectedBox.yMaximum()
))
))
assert (round(myBox.xMinimum(), 9) ==
round(myExpectedBox.xMinimum(), 9) and
round(myBox.xMaximum(), 9) ==
round(myExpectedBox.xMaximum(), 9) and
round(myBox.yMinimum(), 9) ==
round(myExpectedBox.yMinimum(), 9) and
round(myBox.yMaximum(), 9) ==
round(myExpectedBox.yMaximum(), 9)), myMessage
示例2: testRectangle
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def testRectangle(self):
rect = QgsReferencedRectangle(QgsRectangle(0.0, 1.0, 20.0, 10.0), QgsCoordinateReferenceSystem('epsg:3111'))
self.assertEqual(rect.xMinimum(), 0.0)
self.assertEqual(rect.yMinimum(), 1.0)
self.assertEqual(rect.xMaximum(), 20.0)
self.assertEqual(rect.yMaximum(), 10.0)
self.assertEqual(rect.crs().authid(), 'EPSG:3111')
rect.setCrs(QgsCoordinateReferenceSystem('epsg:28356'))
self.assertEqual(rect.crs().authid(), 'EPSG:28356')
# in variant
v = QVariant(QgsReferencedRectangle(QgsRectangle(1.0, 2.0, 3.0, 4.0), QgsCoordinateReferenceSystem('epsg:3111')))
self.assertEqual(v.value().xMinimum(), 1.0)
self.assertEqual(v.value().yMinimum(), 2.0)
self.assertEqual(v.value().xMaximum(), 3.0)
self.assertEqual(v.value().yMaximum(), 4.0)
self.assertEqual(v.value().crs().authid(), 'EPSG:3111')
# to rectangle
r = QgsRectangle(rect)
self.assertEqual(r.xMinimum(), 0.0)
self.assertEqual(r.yMinimum(), 1.0)
self.assertEqual(r.xMaximum(), 20.0)
self.assertEqual(r.yMaximum(), 10.0)
# test that QgsReferencedRectangle IS a QgsRectangle
r2 = QgsRectangle(5, 6, 30, 40)
r2.combineExtentWith(rect)
self.assertEqual(r2.xMinimum(), 0.0)
self.assertEqual(r2.yMinimum(), 1.0)
self.assertEqual(r2.xMaximum(), 30.0)
self.assertEqual(r2.yMaximum(), 40.0)
示例3: processAlgorithm
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def processAlgorithm(self, feedback):
extent = str(self.getParameterValue(self.EXTENT)).split(',')
spacing = float(self.getParameterValue(self.SPACING))
inset = float(self.getParameterValue(self.INSET))
randomize = self.getParameterValue(self.RANDOMIZE)
isSpacing = self.getParameterValue(self.IS_SPACING)
crsId = self.getParameterValue(self.CRS)
crs = QgsCoordinateReferenceSystem()
crs.createFromUserInput(crsId)
extent = QgsRectangle(float(extent[0]), float(extent[2]),
float(extent[1]), float(extent[3]))
fields = QgsFields()
fields.append(QgsField('id', QVariant.Int, '', 10, 0))
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
fields, QgsWkbTypes.Point, crs)
if randomize:
seed()
area = extent.width() * extent.height()
if isSpacing:
pSpacing = spacing
else:
pSpacing = sqrt(area / spacing)
f = QgsFeature()
f.initAttributes(1)
f.setFields(fields)
count = 0
total = 100.0 / (area / pSpacing)
y = extent.yMaximum() - inset
extent_geom = QgsGeometry.fromRect(extent)
extent_engine = QgsGeometry.createGeometryEngine(extent_geom.geometry())
extent_engine.prepareGeometry()
while y >= extent.yMinimum():
x = extent.xMinimum() + inset
while x <= extent.xMaximum():
if randomize:
geom = QgsGeometry().fromPoint(QgsPoint(
uniform(x - (pSpacing / 2.0), x + (pSpacing / 2.0)),
uniform(y - (pSpacing / 2.0), y + (pSpacing / 2.0))))
else:
geom = QgsGeometry().fromPoint(QgsPoint(x, y))
if extent_engine.intersects(geom.geometry()):
f.setAttribute('id', count)
f.setGeometry(geom)
writer.addFeature(f)
x += pSpacing
count += 1
feedback.setProgress(int(count * total))
y = y - pSpacing
del writer
示例4: getBBox
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def getBBox(self, item):
ogrFeature = item.data(Qt.UserRole)
geom = QgsGeometry.fromWkt(ogrFeature.GetGeometryRef().ExportToWkt())
if (ogrFeature.GetDefnRef().GetGeomType() == ogr.wkbPoint):
mapextent = self.plugin.canvas.extent()
ww = mapextent.width()/100
mapcrs = self.plugin.canvas.mapSettings().destinationCrs()
x = geom.boundingBox().center().x()
y = geom.boundingBox().center().y()
ww = 50.0
if mapcrs.mapUnits() == QgsUnitTypes.DistanceFeet:
ww = 150
if mapcrs.mapUnits() == QgsUnitTypes.DistanceDegrees:
ww = 0.0005
bbox = QgsRectangle(x-10*ww, y-10*ww, x+10*ww, y+10*ww)
return bbox
else:
bbox = geom.boundingBox()
rubberRect = QgsRectangle(bbox.xMinimum(), bbox.yMinimum(),
bbox.xMaximum(), bbox.yMaximum())
return rubberRect
示例5: testInvert
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def testInvert(self):
rect = QgsRectangle(0, 0.1, 0.2, 0.3)
rect.invert()
self.assertEqual(rect.xMinimum(), 0.1)
self.assertEqual(rect.yMinimum(), 0)
self.assertEqual(rect.xMaximum(), 0.3)
self.assertEqual(rect.yMaximum(), 0.2)
示例6: processAlgorithm
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def processAlgorithm(self, progress):
idx = self.getParameterValue(self.TYPE)
extent = self.getParameterValue(self.EXTENT).split(',')
hSpacing = self.getParameterValue(self.HSPACING)
vSpacing = self.getParameterValue(self.VSPACING)
crs = QgsCoordinateReferenceSystem(self.getParameterValue(self.CRS))
bbox = QgsRectangle(float(extent[0]), float(extent[2]),
float(extent[1]), float(extent[3]))
width = bbox.width()
height = bbox.height()
centerX = bbox.center().x()
centerY = bbox.center().y()
#~ originX = centerX - width / 2.0
#~ originY = centerY - height / 2.0
originX = bbox.xMinimum()
originY = bbox.yMaximum()
if hSpacing <= 0 or vSpacing <= 0:
raise GeoAlgorithmExecutionException(
self.tr('Invalid grid spacing: %s/%s' % (hSpacing, vSpacing)))
if width < hSpacing:
raise GeoAlgorithmExecutionException(
self.tr('Horizontal spacing is too small for the covered area'))
if height < vSpacing:
raise GeoAlgorithmExecutionException(
self.tr('Vertical spacing is too small for the covered area'))
#if self.types[idx].find(self.tr('polygon')) >= 0:
if idx != 0:
geometryType = QGis.WKBPolygon
else:
geometryType = QGis.WKBLineString
fields = [QgsField('left', QVariant.Double, '', 24, 16),
QgsField('top', QVariant.Double, '', 24, 16),
QgsField('right', QVariant.Double, '', 24, 16),
QgsField('bottom', QVariant.Double, '', 24, 16)
]
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fields,
geometryType, crs)
if idx == 0:
self._rectangleGridLine(
writer, width, height, originX, originY, hSpacing, vSpacing)
elif idx == 1:
self._rectangleGridPoly(
writer, width, height, originX, originY, hSpacing, vSpacing)
elif idx == 2:
self._diamondGrid(
writer, width, height, originX, originY, hSpacing, vSpacing)
elif idx == 3:
self._hexagonGrid(
writer, width, height, originX, originY, hSpacing, vSpacing)
del writer
示例7: testCtor
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def testCtor(self):
rect = QgsRectangle(5.0, 5.0, 10.0, 10.0)
myMessage = ('Expected: %s\nGot: %s\n' %
(5.0, rect.xMinimum()))
assert rect.xMinimum() == 5.0, myMessage
myMessage = ('Expected: %s\nGot: %s\n' %
(5.0, rect.yMinimum()))
assert rect.yMinimum() == 5.0, myMessage
myMessage = ('Expected: %s\nGot: %s\n' %
(10.0, rect.xMaximum()))
assert rect.xMaximum() == 10.0, myMessage
myMessage = ('Expected: %s\nGot: %s\n' %
(10.0, rect.yMaximum()))
assert rect.yMaximum() == 10.0, myMessage
示例8: processAlgorithm
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def processAlgorithm(self, progress):
extent = self.getParameterValue(self.EXTENT).split(',')
xSpace = self.getParameterValue(self.STEP_X)
ySpace = self.getParameterValue(self.STEP_Y)
bbox = QgsRectangle(
float(extent[0]), float(extent[2]), float(extent[1]),
float(extent[3]))
mapCRS = iface.mapCanvas().mapSettings().destinationCrs()
fields = QgsFields()
fields.append(QgsField('id', QVariant.Int, '', 10, 0))
fields.append(QgsField('xmin', QVariant.Double, '', 24, 15))
fields.append(QgsField('xmax', QVariant.Double, '', 24, 15))
fields.append(QgsField('ymin', QVariant.Double, '', 24, 15))
fields.append(QgsField('ymax', QVariant.Double, '', 24, 15))
fieldCount = 5
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
fields, QgsWkbTypes.Polygon, mapCRS)
feat = QgsFeature()
feat.initAttributes(fieldCount)
feat.setFields(fields)
geom = QgsGeometry()
idVar = 0
# counters for progressbar - update every 5%
count = 0
count_max = (bbox.yMaximum() - bbox.yMinimum()) / ySpace
count_update = count_max * 0.05
y = bbox.yMaximum()
while y >= bbox.yMinimum():
x = bbox.xMinimum()
while x <= bbox.xMaximum():
pt1 = QgsPoint(x, y)
pt2 = QgsPoint(x + xSpace, y)
pt3 = QgsPoint(x + xSpace, y - ySpace)
pt4 = QgsPoint(x, y - ySpace)
pt5 = QgsPoint(x, y)
polygon = [[pt1, pt2, pt3, pt4, pt5]]
feat.setGeometry(geom.fromPolygon(polygon))
feat.setAttribute(0, idVar)
feat.setAttribute(1, x)
feat.setAttribute(2, x + xSpace)
feat.setAttribute(3, y - ySpace)
feat.setAttribute(4, y)
writer.addFeature(feat)
idVar += 1
x = x + xSpace
y = y - ySpace
count += 1
if int(math.fmod(count, count_update)) == 0:
progress.setPercentage(int(count / count_max * 100))
del writer
示例9: processAlgorithm
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def processAlgorithm(self, parameters, context, feedback):
expression = self.getParameterValue(self.EXPRESSION)
layersValue = self.getParameterValue(self.LAYERS)
layersDict = {}
if layersValue:
layers = [QgsProcessingUtils.mapLayerFromString(f, context) for f in layersValue.split(";")]
layersDict = {os.path.basename(lyr.source().split(".")[0]): lyr for lyr in layers}
for lyr in QgsProcessingUtils.compatibleRasterLayers(context.project()):
name = lyr.name()
if (name + "@") in expression:
layersDict[name] = lyr
entries = []
for name, lyr in layersDict.items():
for n in range(lyr.bandCount()):
entry = QgsRasterCalculatorEntry()
entry.ref = '{:s}@{:d}'.format(name, n + 1)
entry.raster = lyr
entry.bandNumber = n + 1
entries.append(entry)
output = self.getOutputValue(self.OUTPUT)
extentValue = self.getParameterValue(self.EXTENT)
if not extentValue:
extentValue = QgsProcessingUtils.combineLayerExtents(layersValue)
if extentValue:
extent = extentValue.split(',')
bbox = QgsRectangle(float(extent[0]), float(extent[2]),
float(extent[1]), float(extent[3]))
else:
if layersDict:
bbox = list(layersDict.values())[0].extent()
for lyr in layersDict.values():
bbox.combineExtentWith(lyr.extent())
else:
raise GeoAlgorithmExecutionException(self.tr("No layers selected"))
def _cellsize(layer):
return (layer.extent().xMaximum() - layer.extent().xMinimum()) / layer.width()
cellsize = self.getParameterValue(self.CELLSIZE) or min([_cellsize(lyr) for lyr in layersDict.values()])
width = math.floor((bbox.xMaximum() - bbox.xMinimum()) / cellsize)
height = math.floor((bbox.yMaximum() - bbox.yMinimum()) / cellsize)
driverName = GdalUtils.getFormatShortNameFromFilename(output)
calc = QgsRasterCalculator(expression,
output,
driverName,
bbox,
width,
height,
entries)
res = calc.processCalculation()
if res == QgsRasterCalculator.ParserError:
raise GeoAlgorithmExecutionException(self.tr("Error parsing formula"))
示例10: testCtor
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def testCtor(self):
rect = QgsRectangle(5.0, 5.0, 10.0, 10.0)
myExpectedResult = True
myResult = rect.isEmpty()
myMessage = "Expected: %s Got: %s" % (myExpectedResult, myResult)
assert rect.isEmpty(), myMessage
myMessage = "Expected: %s\nGot: %s\n" % (5.0, rect.xMinimum())
assert rect.xMinimum() == 5.0, myMessage
myMessage = "Expected: %s\nGot: %s\n" % (5.0, rect.yMinimum())
assert rect.yMinimum() == 5.0, myMessage
myMessage = "Expected: %s\nGot: %s\n" % (10.0, rect.xMaximum())
assert rect.xMaximum() == 10.0, myMessage
myMessage = "Expected: %s\nGot: %s\n" % (10.0, rect.yMaximum())
assert rect.yMaximum() == 10.0, myMessage
示例11: processAlgorithm
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def processAlgorithm(self, progress):
extent = str(self.getParameterValue(self.EXTENT)).split(",")
spacing = float(self.getParameterValue(self.SPACING))
inset = float(self.getParameterValue(self.INSET))
randomize = self.getParameterValue(self.RANDOMIZE)
isSpacing = self.getParameterValue(self.IS_SPACING)
extent = QgsRectangle(float(extent[0]), float(extent[2]), float(extent[1]), float(extent[3]))
fields = QgsFields()
fields.append(QgsField("id", QVariant.Int, "", 10, 0))
mapCRS = iface.mapCanvas().mapSettings().destinationCrs()
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fields, QGis.WKBPoint, mapCRS)
if randomize:
seed()
area = extent.width() * extent.height()
if isSpacing:
pSpacing = spacing
else:
pSpacing = sqrt(area / spacing)
f = QgsFeature()
f.initAttributes(1)
f.setFields(fields)
count = 0
total = 100.00 / (area / pSpacing)
y = extent.yMaximum() - inset
while y >= extent.yMinimum():
x = extent.xMinimum() + inset
while x <= extent.xMaximum():
if randomize:
geom = QgsGeometry().fromPoint(
QgsPoint(
uniform(x - (pSpacing / 2.0), x + (pSpacing / 2.0)),
uniform(y - (pSpacing / 2.0), y + (pSpacing / 2.0)),
)
)
else:
geom = QgsGeometry().fromPoint(QgsPoint(x, y))
if geom.intersects(extent):
f.setAttribute("id", count)
f.setGeometry(geom)
writer.addFeature(f)
x += pSpacing
count += 1
progress.setPercentage(int(count * total))
y = y - pSpacing
del writer
示例12: test_clip_raster
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def test_clip_raster(self):
"""Test we can clip a raster layer."""
layer = load_test_raster_layer('gisv4', 'hazard', 'earthquake.asc')
expected = QgsRectangle(106.75, -6.2, 106.80, -6.1)
new_layer = clip_by_extent(layer, expected)
extent = new_layer.extent()
self.assertAlmostEqual(expected.xMinimum(), extent.xMinimum(), 0)
self.assertAlmostEqual(expected.xMaximum(), extent.xMaximum(), 0)
self.assertAlmostEqual(expected.yMinimum(), extent.yMinimum(), 0)
self.assertAlmostEqual(expected.yMaximum(), extent.yMaximum(), 0)
示例13: testCtor
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def testCtor(self):
rect = QgsRectangle( 5.0, 5.0, 10.0, 10.0)
assert rect.isEmpty(), "Empty rectangle constructed"
myMessage = ('Expected: %s\nGot: %s\n' %
(5.0, rect.xMinimum()))
assert rect.xMinimum() == 5.0, myMessage
myMessage = ('Expected: %s\nGot: %s\n' %
(5.0, rect.yMinimum()))
assert rect.yMinimum() == 5.0, myMessage
myMessage = ('Expected: %s\nGot: %s\n' %
(10.0, rect.xMaximum()))
assert rect.xMaximum() == 10.0, myMessage
myMessage = ('Expected: %s\nGot: %s\n' %
(10.0, rect.yMaximum()))
assert rect.yMaximum() == 10.0, myMessage
示例14: processAlgorithm
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def processAlgorithm(self, feedback):
idx = self.getParameterValue(self.TYPE)
extent = self.getParameterValue(self.EXTENT).split(',')
hSpacing = self.getParameterValue(self.HSPACING)
vSpacing = self.getParameterValue(self.VSPACING)
hOverlay = self.getParameterValue(self.HOVERLAY)
vOverlay = self.getParameterValue(self.VOVERLAY)
crs = QgsCoordinateReferenceSystem(self.getParameterValue(self.CRS))
bbox = QgsRectangle(float(extent[0]), float(extent[2]),
float(extent[1]), float(extent[3]))
width = bbox.width()
height = bbox.height()
originX = bbox.xMinimum()
originY = bbox.yMaximum()
if hSpacing <= 0 or vSpacing <= 0:
raise GeoAlgorithmExecutionException(
self.tr('Invalid grid spacing: %s/%s' % (hSpacing, vSpacing)))
if width < hSpacing:
raise GeoAlgorithmExecutionException(
self.tr('Horizontal spacing is too small for the covered area'))
if hSpacing <= hOverlay or vSpacing <= vOverlay:
raise GeoAlgorithmExecutionException(
self.tr('Invalid overlay: %s/%s' % (hOverlay, vOverlay)))
if height < vSpacing:
raise GeoAlgorithmExecutionException(
self.tr('Vertical spacing is too small for the covered area'))
fields = [QgsField('left', QVariant.Double, '', 24, 16),
QgsField('top', QVariant.Double, '', 24, 16),
QgsField('right', QVariant.Double, '', 24, 16),
QgsField('bottom', QVariant.Double, '', 24, 16),
QgsField('id', QVariant.Int, '', 10, 0)
]
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fields,
QgsWkbTypes.Polygon, crs)
if idx == 0:
self._rectangleGrid(
writer, width, height, originX, originY, hSpacing, vSpacing, hOverlay, vOverlay, feedback)
elif idx == 1:
self._diamondGrid(
writer, width, height, originX, originY, hSpacing, vSpacing, hOverlay, vOverlay, feedback)
elif idx == 2:
self._hexagonGrid(
writer, width, height, originX, originY, hSpacing, vSpacing, hOverlay, vOverlay, feedback)
del writer
示例15: bounds
# 需要导入模块: from qgis.core import QgsRectangle [as 别名]
# 或者: from qgis.core.QgsRectangle import xMinimum [as 别名]
def bounds(iface, useCanvas, layers, matchCRS):
if useCanvas:
canvas = iface.mapCanvas()
canvasCrs = canvas.mapSettings().destinationCrs()
if not matchCRS:
epsg3857 = QgsCoordinateReferenceSystem("EPSG:3857")
try:
transform = QgsCoordinateTransform(canvasCrs, epsg3857,
QgsProject.instance())
except:
transform = QgsCoordinateTransform(canvasCrs, epsg3857)
try:
extent = transform.transformBoundingBox(canvas.extent())
except QgsCsException:
extent = QgsRectangle(-20026376.39, -20048966.10,
20026376.39, 20048966.10)
else:
extent = canvas.extent()
else:
extent = None
for layer in layers:
if not matchCRS:
epsg3857 = QgsCoordinateReferenceSystem("EPSG:3857")
try:
transform = QgsCoordinateTransform(layer.crs(), epsg3857,
QgsProject.instance())
except:
transform = QgsCoordinateTransform(layer.crs(), epsg3857)
try:
layerExtent = transform.transformBoundingBox(
layer.extent())
except QgsCsException:
layerExtent = QgsRectangle(-20026376.39, -20048966.10,
20026376.39, 20048966.10)
else:
layerExtent = layer.extent()
if extent is None:
extent = layerExtent
else:
extent.combineExtentWith(layerExtent)
if extent is None:
extent = QgsRectangle(-20026376.39, -20048966.10,
20026376.39, 20048966.10)
return "[%f, %f, %f, %f]" % (extent.xMinimum(), extent.yMinimum(),
extent.xMaximum(), extent.yMaximum())