本文整理汇总了Python中qgis.core.QgsVectorLayer.updateExtents方法的典型用法代码示例。如果您正苦于以下问题:Python QgsVectorLayer.updateExtents方法的具体用法?Python QgsVectorLayer.updateExtents怎么用?Python QgsVectorLayer.updateExtents使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsVectorLayer
的用法示例。
在下文中一共展示了QgsVectorLayer.updateExtents方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_layer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def create_layer(self, data):
display_name = 'some-layer'
uri = 'Point?crs=epsg:4326&index=yes&uuid=%s' % uuid.uuid4()
vlayer = QgsVectorLayer(uri, display_name, 'memory')
QgsMapLayerRegistry.instance().addMapLayer(vlayer)
provider = vlayer.dataProvider()
vlayer.startEditing()
provider.addAttributes([
QgsField('population_density', QtCore.QVariant.Double),
])
features = []
for x, y, density in data:
feat = QgsFeature()
geom = QgsGeometry.fromPoint(QgsPoint(x, y))
feat.setGeometry(geom)
feat.setAttributes([density])
features.append(feat)
provider.addFeatures(features)
vlayer.commitChanges()
vlayer.updateExtents()
self.canvas.setExtent(vlayer.extent())
cl = QgsMapCanvasLayer(vlayer)
self.canvas.setLayerSet([cl])
vlayer.triggerRepaint()
示例2: drawLimits2
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def drawLimits2 (self):
self.dlg.listWidget.clear()
#comprobate if the layer already exists and delete it
for lyr in QgsMapLayerRegistry.instance().mapLayers().values():
if lyr.name() == "Limites":
QgsMapLayerRegistry.instance().removeMapLayer( lyr.id() )
break
#crete a vector layer with a expecific name and color
v_layer = QgsVectorLayer("Polygon", "Limites", "memory")
v_layer.setLayerTransparency(70)
symbols =v_layer.rendererV2().symbols()
symbol=symbols[0]
symbol.setColor(QColor('green'))
#create the provider and add the layer
pr = v_layer.dataProvider()
poly = QgsFeature()
#draw the lines between the buttons in order
points = self.tool.polygon
#print points[0].x()
poly.setGeometry(QgsGeometry.fromPolygon([self.tool.polygon]))
#add the lines to the provider and update the layer
pr.addFeatures([poly])
v_layer.updateExtents()
QgsMapLayerRegistry.instance().addMapLayers([v_layer])
#add the points to the QlistWidget
for i in range (len(self.tool.polygon)):
self.addItem(i)
示例3: drawLimits
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def drawLimits (self):
self.dlg.listWidget.clear()
#comprobate if the layer already exists and delete it
for lyr in QgsMapLayerRegistry.instance().mapLayers().values():
if lyr.name() == "Limites":
QgsMapLayerRegistry.instance().removeMapLayer( lyr.id() )
break
#crete a vector layer with a expecific name and color
v_layer = QgsVectorLayer("LineString", "Limites", "memory")
symbols =v_layer.rendererV2().symbols()
symbol=symbols[0]
symbol.setColor(QColor('magenta'))
#create the provider and add the layer
pr = v_layer.dataProvider()
QgsMapLayerRegistry.instance().addMapLayers([v_layer])
seg = QgsFeature()
iterations=len(self.tool.polygon)
#draw the lines between the buttons in order
for i in range (iterations):
if i== iterations-1:
seg.setGeometry(QgsGeometry.fromPolyline([self.tool.polygon[i], self.tool.polygon[0]]))
else:
seg.setGeometry(QgsGeometry.fromPolyline([self.tool.polygon[i], self.tool.polygon[i+1]]))
#add the lines to the provider and update the layer
pr.addFeatures( [ seg ] )
v_layer.updateExtents()
v_layer.triggerRepaint()
#add the points to the QlistWidget
for i in range (len(self.tool.polygon)):
self.addItem(i)
示例4: adjlayer_make
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def adjlayer_make(self, name, layertype):
if layertype == LayerType.Parliament:
ig = self.colouring_par.id_graph
elif layertype == LayerType.State:
ig = self.colouring_state.id_graph
else:
raise Exception("Not implemented")
vl = QgsVectorLayer("LineString?crs={}&index=yes&field=label:string&field=from:string&field=to:string"
.format(self.layer.dataProvider().crs().authid()),
"{}-{}-adj".format(name, layertype.name),
"memory")
pr = vl.dataProvider()
info = self.__box_info(layertype)
fet = QgsFeature()
for (f, tlist) in ig.nodeEdge.iteritems():
for t in tlist:
# make a feature from id=f to id=t
centref, labelf = info[f]
ptf = QgsPoint(centref[0], centref[1])
centret, labelt = info[t]
ptt = QgsPoint(centret[0], centret[1])
lines = [ptf, ptt]
fet.setGeometry(QgsGeometry().fromPolyline(lines))
attributes = ["{}-{}".format(labelf, labelt), labelf, labelt]
fet.setAttributes(attributes)
pr.addFeatures([fet])
vl.updateExtents()
return vl
示例5: test_split_by_polygon
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def test_split_by_polygon(self):
"""Test split_by_polygon work"""
line_before = QgsVectorLayer(
self.line_before + '.shp', 'test', 'ogr')
expected_lines = QgsVectorLayer(
self.line_after + '.shp', 'test', 'ogr')
polygon_layer = QgsVectorLayer(
self.polygon_base + '.shp', 'test', 'ogr')
# Only one polygon is stored in the layer
for feature in polygon_layer.getFeatures():
polygon = feature.geometry()
split_lines = split_by_polygon(
line_before,
polygon,
mark_value=('flooded', 1))
# Test the lines is not multipart
for feature in split_lines.getFeatures():
self.assertFalse(feature.geometry().isMultipart())
self.assertEqual(expected_lines.featureCount(),
split_lines.featureCount())
# Assert for every line from split_lines
# we can find the same line
for feature in split_lines.getFeatures():
found = False
for expected in expected_lines.getFeatures():
if (feature.attributes() == expected.attributes()) and \
(feature.geometry().isGeosEqual(expected.geometry())):
found = True
break
self.assertTrue(found)
# Split by the extent (The result is the copy of the layer)
line_before.updateExtents()
# Expand extent to cover the lines (add epsilon to bounds)
epsilon = 0.0001 # A small number
extent = line_before.extent()
new_extent = QgsRectangle(
extent.xMinimum() - epsilon,
extent.yMinimum() - epsilon,
extent.xMaximum() + epsilon,
extent.yMaximum() + epsilon
)
new_extent = QgsGeometry().fromRect(new_extent)
split_lines = split_by_polygon(
line_before,
new_extent)
for feature in split_lines.getFeatures():
found = False
for expected in line_before.getFeatures():
if (feature.attributes() == expected.attributes()) and \
(feature.geometry().isGeosEqual(expected.geometry())):
found = True
break
self.assertTrue(found)
示例6: get_poi
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def get_poi(self):
try:
client_id = self.dlg.lineEdit_clientID.text()
client_secret = self.dlg.lineEdit_clientSecret.text()
radius = self.dlg.lineEdit_radius.text()
category_name = self.dlg.comboBox_category.currentText()
category_id = foursquare_categories[category_name]
current_date = str(datetime.datetime.now().date()).replace("-", "")
url = "https://api.foursquare.com/v2/venues/search?ll=%s,%s&radius=%s&intent=browse&categoryId=%s&limit=50&client_id=%s&client_secret=%s&v=%s" % (lat, lon, radius, category_id, client_id, client_secret, current_date)
req = urllib2.Request(url)
opener = urllib2.build_opener()
f = opener.open(req)
data = json.loads(f.read())
json_object_count = len(data['response']['venues'])
if json_object_count == 0:
iface.messageBar().pushMessage(u"Info:", "Unfortunately, there is no POI at the specified location...",
level=QgsMessageBar.INFO, duration=5)
else:
iface.messageBar().pushMessage(u"Info:", str(json_object_count) + " POI(s) fetched for " +
category_name + " category", level=QgsMessageBar.SUCCESS, duration=5)
poi_id = []
poi_name = []
poi_lon = []
poi_lat = []
for i in range(0, json_object_count):
poi_id.append(data['response']['venues'][i]['id'])
poi_name.append(data['response']['venues'][i]['name'])
poi_lon.append(data['response']['venues'][i]['location']['lng'])
poi_lat.append(data['response']['venues'][i]['location']['lat'])
coord_pairs = []
layer_name = "POI - %s" % category_name
memory_layer = QgsVectorLayer("Point?crs=epsg:4326", layer_name, "memory")
memory_layer.startEditing()
provider = memory_layer.dataProvider()
provider.addAttributes([QgsField("FoursqID", QVariant.String), QgsField("Name", QVariant.String), QgsField("Category", QVariant.String), QgsField("Date", QVariant.String)])
for fsid, name, x, y in zip(poi_id, poi_name, poi_lon, poi_lat):
geometry = QgsGeometry.fromPoint(QgsPoint(x, y))
feature = QgsFeature()
feature.setGeometry(geometry)
feature.setAttributes([fsid, name, category_name, current_date])
coord_pairs.append(feature)
memory_layer.dataProvider().addFeatures(coord_pairs)
memory_layer.updateExtents()
memory_layer.commitChanges()
QgsMapLayerRegistry.instance().addMapLayer(memory_layer)
except:
iface.messageBar().pushMessage(u"Error:", "Please make sure to drop a pin on Google Map or fill in all \
the fields!", level=QgsMessageBar.CRITICAL, duration=5)
示例7: addParcelleMap
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def addParcelleMap(self):
'''
Add content in the first page
with a map and basic information
'''
# First add headers
for key, item in list(self.composerTemplates.items()):
if 'sticky' in item:
self.buildComposerLabel(key, item, 0)
# Get feature extent
exp = QgsExpression('"geo_parcelle" = \'%s\'' % self.geo_parcelle)
request = QgsFeatureRequest(exp)
extent = None
features = self.layer.getFeatures(request)
for feature in features:
geom = feature.geometry()
peri = geom.length()
buf = peri / 20
extent = geom.buffer(buf,5).boundingBox()
# Add memory layer to highlight parcelle
if extent:
if self.redlineLayer:
self.mProject.removeMapLayer(self.redlineLayer.id())
crs = self.layer.crs().authid()
vl = QgsVectorLayer("Polygon?crs=" + crs, "temporary", "memory")
pr = vl.dataProvider()
vl.startEditing()
pr.addFeatures([f for f in self.layer.getFeatures(request)])
vl.commitChanges()
vl.updateExtents()
props = vl.renderer().symbol().symbolLayer(0).properties()
props['outline_width'] = u'1'
props['outline_color'] = u'0,85,255,255'
props['outline_style'] = u'solid'
props['style'] = u'no'
vl.renderer().setSymbol(QgsFillSymbol.createSimple(props))
self.mProject.addMapLayer(vl)
self.redlineLayer = vl
# Add composer map & to parcelle
miLayers = self.mInstance.layers()
miLayers.insert( 0, vl )
cm = QgsLayoutItemMap(self.currentComposition)
cm.updateBoundingRect()
cm.setRect(QRectF(0, 0, 286, 190))
cm.setPos(6,15)
cm.setLayers(self.mProject.mapThemeCollection().masterVisibleLayers())
if extent:
cm.zoomToExtent(extent)
cm.setFrameEnabled(True)
cm.setBackgroundEnabled(True)
self.currentComposition.addItem(cm)
示例8: load_countries
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def load_countries(self):
display_name = 'Population density'
uri = DATA_DIR + 'Countries.shp'
vlayer = QgsVectorLayer(uri, display_name, 'ogr')
QgsMapLayerRegistry.instance().addMapLayers([vlayer])
vlayer.updateExtents()
self.canvas.setExtent(vlayer.extent())
# set the map canvas layer set
cl = QgsMapCanvasLayer(vlayer)
self.layers.insert(0, cl)
self.canvas.setLayerSet(self.layers)
vlayer.triggerRepaint()
示例9: saveSelected
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def saveSelected(self):
gridLayer = getLayerFromId(self.GRID_LAYER)
# create memory layer
outputLayer = QgsVectorLayer("Polygon", "taxon", "memory")
outProvider = outputLayer.dataProvider()
# add features
outGrids = gridLayer.selectedFeatures()
for grid in outGrids:
outProvider.addFeatures([grid])
outputLayer.updateExtents()
self.TAXON_GRID_LAYER = outputLayer
示例10: pointsAlongLine
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def pointsAlongLine(distance):
# Create a new memory layer and add a distance attribute
vl = QgsVectorLayer("Point", "distance nodes", "memory")
pr = vl.dataProvider()
pr.addAttributes( [ QgsField("distance", QVariant.Int) ] )
layer = iface.mapCanvas().currentLayer()
# Loop though all the selected features
for feature in layer.selectedFeatures():
geom = feature.geometry()
features = createPointsAt(distance, geom)
pr.addFeatures(features)
vl.updateExtents()
QgsMapLayerRegistry.instance().addMapLayer(vl)
示例11: saveInMemory
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def saveInMemory(self, polygons, progress):
'''
save output polygon as memory layer
polygons: list of polygons created by Polygonize function
progress: progress bar value
'''
global polyCount
outFeat = QgsFeature()
setGeometry = outFeat.setGeometry
setAttributeMap = outFeat.setAttributeMap
if self.ui.cbTable.isChecked():
fields = self.parent.layer.dataProvider().fields()
else:
fields = {}
polyCount = len(polygons)
step = 50. / polyCount
mLayer = QgsVectorLayer("Polygon", '%s_polygons' % self.ui.cmbLayer.currentText(), "memory")
provider = mLayer.dataProvider()
if self.ui.cbGeometry.isChecked():
fields[len(fields)] = QgsField("area",QVariant.Double,"double",16,2)
fields[len(fields)] = QgsField("perimeter",QVariant.Double,"double",16,2)
nrArea = len(fields)-2
nrPerimeter = len(fields)-1
provider.addAttributes([fields[i] for i in range(len(fields))])
for polygon in polygons:
setGeometry(QgsGeometry.fromWkt(polygon.wkt))
setAttributeMap({ nrArea:polygon.area, nrPerimeter:polygon.length })
provider.addFeatures([outFeat])
progress += step
self.emit(SIGNAL('progress'), progress)
else:
provider.addAttributes([fields[i] for i in range(len(fields))])
for polygon in polygons:
setGeometry(QgsGeometry.fromWkt(polygon.wkt))
provider.addFeatures([outFeat])
progress += step
self.emit(SIGNAL('progress'), progress)
mLayer.updateExtents()
mLayer.updateFieldMap()
self.parent.mLayer = mLayer
self.emit(SIGNAL('progress'), 100)
示例12: createMemoryLayer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def createMemoryLayer(values):
ml = QgsVectorLayer("Point?crs=epsg:4236&field=id:integer&field=value:double", "test_data", "memory")
# Data as list of x, y, id, value
assert ml.isValid()
pr = ml.dataProvider()
fields = pr.fields()
for id, value in enumerate(values):
x = id * 10.0
feat = QgsFeature(fields)
feat["id"] = id
feat["value"] = value
g = QgsGeometry.fromPoint(QgsPoint(x, x))
feat.setGeometry(g)
pr.addFeatures([feat])
ml.updateExtents()
return ml
示例13: splitSelected
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def splitSelected(self,targetArea,granulFactor,method="h",splitEven=True):
global recurs
recurs=0;
layer = iface.mapCanvas().currentLayer()
if layer:
#Gets layer CRS for new layer
crs=layer.crs().description()
if self.debug: print "Starting, Layer crs: " + crs
# Create a new memory layer and add an area attribute
polyLayer = QgsVectorLayer("MultiPolygon?crs="+crs, "split_poly", "memory")
polyLayer.dataProvider().addAttributes( [ QgsField("area", QVariant.Double) ] )
#QgsMapLayerRegistry.instance().addMapLayer(polyLayer)
allFeatures=False
if not layer.selectedFeatures():
layer.invertSelection();
allFeatures=True
#save original target area
origTargetArea=targetArea
# Loop though all the selected features
for feature in layer.selectedFeatures():
geom = feature.geometry()
if self.debug: print "Starting Number of original geoms: ",str(len(geom.asGeometryCollection()))
if self.debug: print "Starting Number of part to split into: ",str(geom.area()/targetArea)
div=round(geom.area()/origTargetArea)
if div<1:
div=1
if splitEven:
targetArea=geom.area()/div
if self.debug: print "Spliteven selected. modifying target area to:", targetArea
if div>1:
granularity=round(granulFactor*geom.area()/targetArea)
if self.debug: print "Granularity: ",granularity
#Figure out direction to start with from cutting method
#If alternating, start horizontally
if method=="a":
firstDirection="h"
else:
firstDirection=method
self.alternatingSlice(geom,polyLayer,targetArea,granularity,firstDirection,method)
else:
self.addGeomToLayer(geom,polyLayer)
polyLayer.updateExtents()
#if self.debug: print recurs
QgsMapLayerRegistry.instance().addMapLayer(polyLayer)
if allFeatures:
layer.invertSelection();
示例14: show_clicked_point
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def show_clicked_point(point, name, iface, vl=None):
""" Displays the extent from the listeOfPoints
Keyword arguments:
listPoints -- list of point to draw the extent
name -- name of the layer to display the extent name_extent
indexGroupProduct -- index of the product group in qgis where to move the layers
"""
# set True to set a define color to the extent and the world
setColor = False
# create layer
# if vl == None :
vl = QgsVectorLayer("Point?crs=epsg:4326", name, "memory")
pr = vl.data_provider()
# add fields
pr.addAttributes([QgsField("spectral_angle", QVariant.String)])
# add a feature
fet = QgsFeature()
geometry = QgsGeometry.fromPoint(point)
# fet.setGeometry( qgis.core.QgsGeometry.fromPolygon( qgis.core.QgsGeometry.\
# QgsPolygon(4.45 43.95, 4.45 44.400433068, 5.000403625 44.400433068,5.000403625 43.95) ) )
fet.setGeometry(geometry)
# ( 4.45, 43.95 ) to (5.000403625, 44.400433068 )
pr.addFeatures([fet])
# set color to the extent
if setColor:
if vl.isUsingRendererV2():
# new symbology - subclass of qgis.core.QgsFeatureRendererV2 class
rendererV2 = vl.rendererV2()
symbol = rendererV2.symbol()
for i in xrange(symbol.symbolLayerCount()):
symbol.symbolLayer(i).setColor(QColor(168, 255, 0))
# update layer's extent when new features have been added
# because change of extent in provider is not propagated to the layer
vl.updateExtents()
QgsMapLayerRegistry.instance().addMapLayers([vl])
return vl
示例15: add_resource_as_geojson
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import updateExtents [as 别名]
def add_resource_as_geojson(resource, return_extent=False):
if not isinstance(resource, NGWVectorLayer):
raise NGWError('Resource type is not VectorLayer!')
qgs_geojson_layer = QgsVectorLayer(resource.get_geojson_url(), resource.common.display_name, 'ogr')
if not qgs_geojson_layer.isValid():
raise NGWError('Layer %s can\'t be added to the map!' % resource.alias)
qgs_geojson_layer.dataProvider().setEncoding('UTF-8')
QgsMapLayerRegistry.instance().addMapLayer(qgs_geojson_layer)
if return_extent:
if qgs_geojson_layer.extent().isEmpty() and qgs_geojson_layer.type() == QgsMapLayer.VectorLayer:
qgs_geojson_layer.updateExtents()
return qgs_geojson_layer.extent()