本文整理汇总了Python中qgis.core.QgsVectorLayer.setCrs方法的典型用法代码示例。如果您正苦于以下问题:Python QgsVectorLayer.setCrs方法的具体用法?Python QgsVectorLayer.setCrs怎么用?Python QgsVectorLayer.setCrs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsVectorLayer
的用法示例。
在下文中一共展示了QgsVectorLayer.setCrs方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: requestShapeFile
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def requestShapeFile(self, shapeFilePath, epsg=None, layerName=None, groupName=None, useLayerFromTree=True, addToCanvas=False):
try:
#QMessageBox.information(None, "Info", "LOAD SHP")
layer = None
if not layerName:
layerName = os.path.basename(shapeFilePath)
root, ext = os.path.splitext(layerName)
if ext == '.shp':
layerName = root
if useLayerFromTree:
layer = self.findShapeFileLayerInTree(shapeFilePath)
if layer is None:
layer = QgsVectorLayer(shapeFilePath, layerName, "ogr")
if epsg != None:
layer.setCrs(QgsCoordinateReferenceSystem(epsg, QgsCoordinateReferenceSystem.EpsgCrsId))
if addToCanvas:
self.addLayerToCanvas(layer, groupName)
return layer
except Exception as e:
QMessageBox.warning(None, "Error Loading Shape File", u"{0}".format(e))
return None
示例2: create_grid
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def create_grid(size):
"""Create a polygonal grid using Processing.
:param size: The cell size.
:type size: int
:return: The grid layer in memory.
:rtype: QgsVectorLayer
"""
output_filename = unique_filename(prefix='grid', suffix='.shp')
result = processing.runalg(
'qgis:vectorgrid',
'336199.970553,352338.397991,7636164.67975,7648562.41208',
size, # X spacing
size, # Y spacing
0, # Output as polygons
output_filename)
layer = QgsVectorLayer(output_filename, 'grid', 'ogr')
layer.setCrs(QgsCoordinateReferenceSystem(32740))
remove_fields(layer, ['xmin', 'xmax', 'ymin', 'ymax'])
# Make a copy in memory
memory = create_memory_layer(
'grid', layer.geometryType(), layer.crs(), layer.fields())
copy_layer(layer, memory)
print "NB cells : %s" % layer.featureCount()
return memory
示例3: createVectorLayer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def createVectorLayer(self, layerName):
"""Creates a vector layer in memory.
Args:
layerName: str, name of the layer to create.
Returns:
QgsVectorLayer instance
"""
# We change the setting that by default asks user to choose a CRS for newly
# created layers. This # setting is restored to its original value once
# the layer is created.
s = QSettings()
oldValue = s.value('/Projections/defaultBehaviour')
s.setValue('/Projections/defaultBehaviour', 'useGlobal')
vectorLayer = QgsVectorLayer('Polygon', layerName, 'memory')
vectorLayer.setCrs(worldCrs)
s.setValue('/Projections/defaultBehaviour', oldValue)
self.dataProvider = vectorLayer.dataProvider()
self.dataProvider.addAttributes(
[QgsField('Project Identifier', QVariant.String),
QgsField('Map Resource Identifier', QVariant.String),
QgsField('Resource Identifier', QVariant.String),
QgsField('Parent Resource Identifier', QVariant.String),
QgsField('Resource Type', QVariant.String),
QgsField('Resource Name', QVariant.String),
QgsField('Data Source Type', QVariant.String)])
return vectorLayer
示例4: loadLayerTable
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def loadLayerTable(self, carhabLayer, tableName):
# Retrieve layer from provider.
uri = QgsDataSourceURI()
uri.setDatabase(carhabLayer.dbPath)
schema = ''
geom_column = 'the_geom'
uri.setDataSource(schema, tableName, geom_column)
display_name = carhabLayer.getName()+'_'+tableName
layer = QgsVectorLayer(uri.uri(), display_name, 'spatialite')
crsType = QgsCoordinateReferenceSystem.EpsgCrsId
crsVal = 2154
crs = QgsCoordinateReferenceSystem(crsVal, crsType)
layer.setCrs(crs)
# "Bind" layer to carhab layer.
if self.getCarhabLayerByDbPath(carhabLayer.dbPath):
layer.setCustomProperty('carhabLayer', carhabLayer.id)
# Add layer to map (False to add to group)
QgsMapLayerRegistry.instance().addMapLayer(layer, False)
iface.mapCanvas().setExtent(layer.extent())
return layer
示例5: createQgisVectorLayer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def createQgisVectorLayer(self, layerFilePath):
settings = QSettings()
oldProjValue = settings.value("/Projections/defaultBehaviour", "prompt", type=str)
settings.setValue("/Projections/defaultBehaviour", "useProject")
qgisLayer = QgsVectorLayer(layerFilePath, "geometry", "ogr")
qgisLayer.setCrs(QgsCoordinateReferenceSystem(2154, QgsCoordinateReferenceSystem.EpsgCrsId))
settings.setValue("/Projections/defaultBehaviour", oldProjValue)
return qgisLayer
示例6: create_layer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def create_layer(self, parameters, name, is_memory, dest_crs, layer_style=None):
save_as = parameters.file_path
file_format = parameters.file_format
# save paramaters
serialized = base64.b64encode(parameters.serialize(with_style=False, with_geometry=False))
# save geometry
layer = QgsVectorLayer("MultiPolygon?crs=%s" % dest_crs.authid(), name, "memory")
pr = layer.dataProvider()
layer.startEditing()
layer.addAttribute(QgsField("params", QVariant.String))
fet1 = QgsFeature(0)
fet1.setFields(layer.fields())
fet1.setAttribute("params", str(serialized)[2:-1])
fet1.setGeometry(parameters.geometry)
pr.addFeatures([fet1])
layer.commitChanges()
# copy layer style
if layer_style is not None:
self.set_layer_style(layer, layer_style)
if is_memory:
return layer
if os.path.isfile(save_as):
# delete first if already exists
if save_as.endswith(".shp"):
QgsVectorFileWriter.deleteShapeFile(save_as)
else:
os.unlink(save_as)
# create the disk layer
QgsMessageLog.logMessage("Mask saving '{}' as {}".format(save_as, file_format),
'Extensions')
error = QgsVectorFileWriter.writeAsVectorFormat(layer, save_as, "System", dest_crs,
file_format)
if error == 0:
nlayer = QgsVectorLayer(save_as, name, "ogr")
if not nlayer.dataProvider().isValid():
return None
if not nlayer.hasGeometryType():
return None
# force CRS
nlayer.setCrs(dest_crs)
# copy layer style
layer_style = self.get_layer_style(layer)
self.set_layer_style(nlayer, layer_style)
return nlayer
else:
raise RuntimeError(error)
return None
示例7: loadEDGVLayer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def loadEDGVLayer(self, uri, layer_name, provider):
vlayer = QgsVectorLayer(uri.uri(), layer_name, provider)
vlayer.setCrs(self.crs)
QgsMapLayerRegistry.instance().addMapLayer(vlayer) #added due to api changes
if self.isSpatialite and (self.dbVersion == '3.0' or self.dbVersion == '2.1.3'):
lyr = '_'.join(layer_name.replace('\r', '').split('_')[1::])
else:
lyr = layer_name.replace('\r','')
vlayerQml = os.path.join(self.qmlPath, lyr+'.qml')
vlayer.loadNamedStyle(vlayerQml, False)
QgsMapLayerRegistry.instance().addMapLayer(vlayer)
if not vlayer.isValid():
QgsMessageLog.logMessage(vlayer.error().summary(), "DSG Tools Plugin", QgsMessageLog.CRITICAL)
示例8: pointsAlongLine
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [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()
vl.setCrs(layer.crs())
# Loop though all the selected features
for feature in layer.getFeatures():
geom = feature.geometry()
features = createPointsAt(distance, geom)
pr.addFeatures(features)
vl.updateExtents()
QgsMapLayerRegistry.instance().addMapLayer(vl)
示例9: createContours
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def createContours(canvas, dhm):
contourLyr = dhm['contour']
contourName = "Hoehenlinien_" + dhm['name']
# Get current CRS of qgis project
s = QSettings()
oldValidation = s.value("/Projections/defaultBehaviour")
crs = canvas.mapSettings().destinationCrs()
crsEPSG = crs.authid()
# If project and raster CRS are equal and set correctly
if crsEPSG == dhm['spatialRef'] and "USER" not in crsEPSG:
s.setValue("/Projections/defaultBehaviour", "useProject")
else:
crs = dhm['layer'].crs()
# If contours exist, remove them
if contourLyr:
QgsProject.instance().removeMapLayer(contourLyr.id())
contourLyr = None
# If no contours exist, create them
else:
outputPath = os.path.join(os.path.dirname(dhm['path']), contourName + '.shp')
if os.path.exists(outputPath):
contourLyr = QgsVectorLayer(outputPath, contourName, "ogr")
else:
processingParams = {
'INPUT': dhm['layer'],
'BAND': 1,
'INTERVAL': 20,
'FIELD_NAME': "Hoehe",
'OUTPUT': outputPath
}
algOutput = run("gdal:contour", processingParams)
contourLyr = QgsVectorLayer(algOutput['OUTPUT'], contourName, "ogr")
# contourLyr the same CRS as qgis project
contourLyr.setCrs(crs)
QgsProject.instance().addMapLayer(contourLyr)
s.setValue("/Projections/defaultBehaviour", oldValidation)
# More useful stuff
# uri = "linestring?crs=epsg:{}".format(crsNum)
# contourName = "Hoehenlinien_" + self.dhm['name']
# contour = QgsVectorLayer(uri, contourName, "memory")
return contourLyr
示例10: load
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def load(fileName, name=None, crs=None, style=None):
"""Loads a layer/table into the current project, given its file.
"""
if fileName is None:
return
prjSetting = None
settings = QSettings()
if crs is not None:
prjSetting = settings.value('/Projections/defaultBehaviour')
settings.setValue('/Projections/defaultBehaviour', '')
if name is None:
name = os.path.split(fileName)[1]
qgslayer = QgsVectorLayer(fileName, name, 'ogr')
if qgslayer.isValid():
if crs is not None and qgslayer.crs() is None:
qgslayer.setCrs(crs, False)
if style is None:
if qgslayer.geometryType() == QGis.Point:
style = ProcessingConfig.getSetting(ProcessingConfig.VECTOR_POINT_STYLE)
elif qgslayer.geometryType() == QGis.Line:
style = ProcessingConfig.getSetting(ProcessingConfig.VECTOR_LINE_STYLE)
else:
style = ProcessingConfig.getSetting(ProcessingConfig.VECTOR_POLYGON_STYLE)
qgslayer.loadNamedStyle(style)
QgsMapLayerRegistry.instance().addMapLayers([qgslayer])
else:
qgslayer = QgsRasterLayer(fileName, name)
if qgslayer.isValid():
if crs is not None and qgslayer.crs() is None:
qgslayer.setCrs(crs, False)
if style is None:
style = ProcessingConfig.getSetting(ProcessingConfig.RASTER_STYLE)
qgslayer.loadNamedStyle(style)
QgsMapLayerRegistry.instance().addMapLayers([qgslayer])
iface.legendInterface().refreshLayerSymbology(qgslayer)
else:
if prjSetting:
settings.setValue('/Projections/defaultBehaviour', prjSetting)
raise RuntimeError('Could not load layer: ' + unicode(fileName)
+ '\nCheck the procesing framework log to look for errors')
if prjSetting:
settings.setValue('/Projections/defaultBehaviour', prjSetting)
return qgslayer
示例11: spQgsVectorLayer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def spQgsVectorLayer(name):
spatial = robjects.r.get(name)
type = spType(spatial)
layer = QgsVectorLayer(type, unicode(name), "memory")
crs = QgsCoordinateReferenceSystem()
proj = spatial.do_slot('proj4string').do_slot('projargs')[0]
if crs.createFromProj4(proj):
layer.setCrs(crs)
else:
print "Error: unable to parse proj4string: using QGIS default"
provider = layer.dataProvider()
fields = spFields(spatial)
provider.addAttributes(fields)
feats = spData(spatial)
features = [spFeature(*feat) for feat in feats]
provider.addFeatures(features)
layer.updateExtents()
return layer
示例12: testLayerChangeDirtiesProject
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def testLayerChangeDirtiesProject(self):
"""
Test that making changes to certain layer properties results in dirty projects
"""
p = QgsProject()
l = QgsVectorLayer(os.path.join(TEST_DATA_DIR, "points.shp"), "points", "ogr")
self.assertTrue(l.isValid())
self.assertTrue(p.addMapLayers([l]))
p.setDirty(False)
l.setCrs(QgsCoordinateReferenceSystem('EPSG:3111'))
self.assertTrue(p.isDirty())
p.setDirty(False)
l.setName('test')
self.assertTrue(p.isDirty())
p.setDirty(False)
self.assertTrue(l.setSubsetString('class=\'a\''))
self.assertTrue(p.isDirty())
示例13: CatalogDialogTool
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
class CatalogDialogTool(QObject):
"""
Tool for managing the search and export functionality
"""
def __init__(self, iface, dialog_ui, bbox_tool):
"""
Constructor for the dialog tool
:param iface: The QGIS Interface
:param dialog_ui: The dialog GUI
:param bbox_tool The bounding box tool
:return: dialog tool
"""
QObject.__init__(self, None)
self.iface = iface
self.dialog_ui = dialog_ui
self.bbox_tool = bbox_tool
self.progress_bar = None
self.progress_message_bar = None
self.progress_message_bar_widget = None
self.search_thread_pool = QThreadPool()
self.search_lock = Lock()
self.export_thread_pool = QThreadPool()
self.export_lock = Lock()
self.query = None
self.previous_credentials = None
self.export_file = None
self.footprint_layer = None
self.filters = CatalogFilters(self.dialog_ui)
self.dialog_ui.aoi_button.clicked.connect(self.aoi_button_clicked)
self.dialog_ui.reset_button.clicked.connect(self.reset_button_clicked)
self.dialog_ui.export_button.clicked.connect(self.export_button_clicked)
self.bbox_tool.released.connect(self.search)
self.model = None
def init_progress_bar(self, progress_max):
"""
Sets up the progress bar for search functionality
:return: None
"""
if not self.progress_message_bar:
self.progress_message_bar = self.iface.messageBar().createMessage("Querying for data")
self.progress_bar = QProgressBar()
self.progress_bar.setMinimum(0)
self.progress_bar.setMaximum(progress_max)
self.progress_bar.setAlignment(Qt.AlignLeft | Qt.AlignCenter)
self.progress_message_bar.layout().addWidget(self.progress_bar)
self.progress_message_bar_widget = self.iface.messageBar().pushWidget(self.progress_message_bar, self.iface.messageBar().INFO)
def init_layers(self):
"""
Sets up the layers for rendering the items
:return: None
"""
if self.footprint_layer:
QgsMapLayerRegistry.instance().removeMapLayer(self.footprint_layer.id())
self.footprint_layer = QgsVectorLayer("Polygon?crs=EPSG:4326", "Catalog Footprints", "memory")
self.footprint_layer.setCrs(QgsCoordinateReferenceSystem(4326), True)
self.footprint_layer.dataProvider().addAttributes(CatalogAcquisitionFeature.get_fields())
QgsMapLayerRegistry.instance().addMapLayer(self.footprint_layer)
def clear_widgets(self):
"""
Clears the progress bar
:return: None
"""
self.progress_bar = None
self.progress_message_bar = None
if self.progress_message_bar_widget:
self.iface.messageBar().popWidget(self.progress_message_bar_widget)
self.progress_message_bar_widget = None
def is_searching(self):
"""
Check to see if the system is still searching (checks if there's work in the search thread pool)
:return: True if searching; False otherwise
"""
return self.get_search_active_thread_count() > 0
def is_exporting(self):
"""
Check to see if the system is still exporting (checks if there's work in the export thread pool)
:return: True if searching; False otherwise
"""
return self.get_export_active_thread_count() > 0
def get_search_active_thread_count(self):
"""
Gets the number of active threads in the search thread pool
:return:
"""
with self.search_lock:
return self.search_thread_pool.activeThreadCount()
def get_export_active_thread_count(self):
"""
#.........这里部分代码省略.........
示例14: nodeDuplicate
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def nodeDuplicate(node,newname=None,position='bottom',target_node=None):
import time
if oeq_global.isStringOrUnicode(node):
node = nodeByName(node)
if len(node) == 0:
return None
node = node[0]
if target_node == None:
target_node = node.parent()
else:
if oeq_global.isStringOrUnicode(target_node):
target_node = nodeByName(target_node)
if len(target_node) == 0:
return None
target_node = target_node[0]
#
#print node.layer().name()
#print newname
layer = node.layer()
# source of the layer
provider = layer.dataProvider()
#print "---------------------"
#print provider.crs().authid()
#print layer.crs().authid()
#print "---------------------"
# creation of the shapefiles:
pathfile = os.path.join(oeq_global.OeQ_project_path(),newname+'.shp')
ct_pathfile = os.path.join(oeq_global.OeQ_project_path(),newname+'.qml')
writer = QgsVectorFileWriter(pathfile, "CP1250", provider.fields(), provider.geometryType(), layer.crs(), "ESRI Shapefile")
#print writer
outelem = QgsFeature()
# iterating over the input layer
for elem in layer.getFeatures():
outelem.setGeometry(elem.geometry() )
outelem.setAttributes(elem.attributes())
writer.addFeature(outelem)
del writer
oeq_global.OeQ_wait_for_file(pathfile)
#time.sleep(1)
newlayer = QgsVectorLayer(pathfile, newname, "ogr")
#print layer.isValid()
QgsMapLayerRegistry.instance().addMapLayer(newlayer, True)
newlayer.setCrs(layer.crs())
#oeq_global.OeQ_wait_for_renderer(60000)
#print newlayer.name()
newnode = nodeByName(newlayer.name())
if len(newnode) == 0:
return None
newnode = newnode[0]
# oeq_global.OeQ_unlockQgis()
#time.sleep(1)
newlayer.loadNamedStyle(ct_pathfile)
nodeCollapse(newnode)
#time.sleep(1)
#position = nodePosition(node,target_node)
newnode=nodeMove(newnode,position,target_node)
#time.sleep(1)
#oeq_global.OeQ_unlockQgis()
#oeq_global.OeQ_wait(0.5)
#print "+++++++++++++++"
return newnode
示例15: doMask
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setCrs [as 别名]
def doMask(self, item):
mapcrs = self.plugin.canvas.mapSettings().destinationCrs()
ogrFeature = item.data(Qt.UserRole)
layerName = "OSM "+ogrFeature.GetFieldAsString('id')
geom = QgsGeometry.fromWkt(ogrFeature.GetGeometryRef().ExportToWkt())
if (geom.type() == QgsWkbTypes.PolygonGeometry):
try:
try:
from mask import aeag_mask
except:
from mask_plugin import aeag_mask
aeag_mask.do(mapcrs, {geom}, "Mask "+layerName)
except:
geom = QgsGeometry.fromWkt(ogrFeature.GetGeometryRef().ExportToWkt())
toCrs = self.plugin.canvas.mapSettings().destinationCrs()
l = max(geom.boundingBox().width(), geom.boundingBox().height())
x = geom.boundingBox().center().x()
y = geom.boundingBox().center().y()
rect = QgsRectangle(x-l, y-l, x+l, y+l) # geom.boundingBox()
rect.scale(4)
mask = QgsGeometry.fromRect(rect)
mask = mask.difference(geom)
maskLayer = QgsVectorLayer("MultiPolygon", "Mask "+layerName, "memory")
maskLayer.setCrs(toCrs)
QgsProject.instance().addMapLayer(maskLayer)
pr = maskLayer.dataProvider()
fields = QgsFields()
fields.append(QgsField("id", QVariant.String))
fields.append(QgsField("name", QVariant.String))
fet = QgsFeature()
fet.initAttributes(2)
fet.setGeometry(mask)
fet.setFields(fields)
fet.setAttribute("id", (ogrFeature.GetFieldAsString('id')))
fet.setAttribute("name", (ogrFeature.GetFieldAsString('name')))
pr.addAttributes(fields.toList())
maskLayer.startEditing()
pr.addFeatures([fet])
maskLayer.commitChanges()
maskLayer.updateExtents()
# transparence, epaisseur
renderer = maskLayer.renderer()
s = renderer.symbol()
s.setOpacity(0.90)
s.setColor(QColor(255, 255, 255))
if isinstance(s, QgsLineSymbol):
s.setWidth(0)
layerTree = QgsProject.instance().layerTreeRoot().findLayer(maskLayer)
if layerTree:
self.plugin.iface.layerTreeView().layerTreeModel()\
.refreshLayerLegend(layerTree) # Refresh legend
self.go(item)