本文整理汇总了Python中qgis.core.QgsCoordinateReferenceSystem.createFromUserInput方法的典型用法代码示例。如果您正苦于以下问题:Python QgsCoordinateReferenceSystem.createFromUserInput方法的具体用法?Python QgsCoordinateReferenceSystem.createFromUserInput怎么用?Python QgsCoordinateReferenceSystem.createFromUserInput使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsCoordinateReferenceSystem
的用法示例。
在下文中一共展示了QgsCoordinateReferenceSystem.createFromUserInput方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: processAlgorithm
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import createFromUserInput [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
示例2: processAlgorithm
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import createFromUserInput [as 别名]
def processAlgorithm(self, progress):
layer = dataobjects.getObjectFromUri(self.getParameterValue(self.INPUT))
crsId = self.getParameterValue(self.TARGET_CRS)
targetCrs = QgsCoordinateReferenceSystem()
targetCrs.createFromUserInput(crsId)
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
layer.fields().toList(), layer.wkbType(), targetCrs)
layerCrs = layer.crs()
crsTransform = QgsCoordinateTransform(layerCrs, targetCrs)
outFeat = QgsFeature()
features = vector.features(layer)
total = 100.0 / len(features)
for current, f in enumerate(features):
geom = f.geometry()
geom.transform(crsTransform)
outFeat.setGeometry(geom)
outFeat.setAttributes(f.attributes())
writer.addFeature(outFeat)
progress.setPercentage(int(current * total))
del writer
self.crs = targetCrs
示例3: processAlgorithm
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import createFromUserInput [as 别名]
def processAlgorithm(self, progress):
source = self.getParameterValue(self.INPUT)
vlayer = dataobjects.getObjectFromUri(source)
output = self.getOutputFromName(self.OUTPUT)
fields = vlayer.fields()
writer = output.getVectorWriter(fields, QgsWkbTypes.Point, self.crs)
xfieldindex = vlayer.fieldNameIndex(self.getParameterValue(self.XFIELD))
yfieldindex = vlayer.fieldNameIndex(self.getParameterValue(self.YFIELD))
crsId = self.getParameterValue(self.TARGET_CRS)
targetCrs = QgsCoordinateReferenceSystem()
targetCrs.createFromUserInput(crsId)
self.crs = targetCrs
outFeat = QgsFeature()
features = vector.features(vlayer)
total = 100.0 / len(features)
for current, feature in enumerate(features):
progress.setPercentage(int(current * total))
attrs = feature.attributes()
try:
x = float(attrs[xfieldindex])
y = float(attrs[yfieldindex])
except:
continue
pt = QgsPoint(x, y)
outFeat.setGeometry(QgsGeometry.fromPoint(pt))
outFeat.setAttributes(attrs)
writer.addFeature(outFeat)
del writer
示例4: processAlgorithm
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import createFromUserInput [as 别名]
def processAlgorithm(self, progress):
source = self.getParameterValue(self.INPUT)
vlayer = dataobjects.getObjectFromUri(source)
output = self.getOutputFromName(self.OUTPUT)
vprovider = vlayer.dataProvider()
fields = vprovider.fields()
writer = output.getVectorWriter(fields, QGis.WKBPoint, self.crs)
xfieldindex = vlayer.fieldNameIndex(self.getParameterValue(self.XFIELD))
yfieldindex = vlayer.fieldNameIndex(self.getParameterValue(self.YFIELD))
crsId = self.getParameterValue(self.TARGET_CRS)
targetCrs = QgsCoordinateReferenceSystem()
targetCrs.createFromUserInput(crsId)
self.crs = targetCrs
outFeat = QgsFeature()
nElement = 0
features = vector.features(vlayer)
nFeat = len(features)
for feature in features:
nElement += 1
progress.setPercentage(nElement * 100 / nFeat)
attrs = feature.attributes()
try:
x = float(attrs[xfieldindex])
y = float(attrs[yfieldindex])
except:
continue
pt = QgsPoint(x, y)
outFeat.setGeometry(QgsGeometry.fromPoint(pt))
outFeat.setAttributes(attrs)
writer.addFeature(outFeat)
del writer
示例5: processAlgorithm
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import createFromUserInput [as 别名]
def processAlgorithm(self, parameters, context, feedback):
layer = QgsProcessingUtils.mapLayerFromString(self.getParameterValue(self.INPUT), context)
crsId = self.getParameterValue(self.TARGET_CRS)
targetCrs = QgsCoordinateReferenceSystem()
targetCrs.createFromUserInput(crsId)
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(layer.fields(), layer.wkbType(),
targetCrs, context)
layerCrs = layer.crs()
crsTransform = QgsCoordinateTransform(layerCrs, targetCrs)
outFeat = QgsFeature()
features = QgsProcessingUtils.getFeatures(layer, context)
total = 100.0 / QgsProcessingUtils.featureCount(layer, context)
for current, f in enumerate(features):
geom = f.geometry()
geom.transform(crsTransform)
outFeat.setGeometry(geom)
outFeat.setAttributes(f.attributes())
writer.addFeature(outFeat)
feedback.setProgress(int(current * total))
del writer
self.crs = targetCrs
示例6: processAlgorithm
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import createFromUserInput [as 别名]
def processAlgorithm(self, progress):
source = self.getParameterValue(self.INPUT)
vlayer = dataobjects.getObjectFromUri(source)
output = self.getOutputFromName(self.OUTPUT)
fields = vlayer.fields()
x_field_index = fields.lookupField(self.getParameterValue(self.XFIELD))
y_field_index = fields.lookupField(self.getParameterValue(self.YFIELD))
z_field_index = None
if self.getParameterValue(self.ZFIELD):
z_field_index = fields.lookupField(self.getParameterValue(self.ZFIELD))
m_field_index = None
if self.getParameterValue(self.MFIELD):
m_field_index = fields.lookupField(self.getParameterValue(self.MFIELD))
wkb_type = QgsWkbTypes.Point
if z_field_index is not None:
wkb_type = QgsWkbTypes.addZ(wkb_type)
if m_field_index is not None:
wkb_type = QgsWkbTypes.addM(wkb_type)
crsId = self.getParameterValue(self.TARGET_CRS)
target_crs = QgsCoordinateReferenceSystem()
target_crs.createFromUserInput(crsId)
writer = output.getVectorWriter(fields, wkb_type, target_crs)
features = vector.features(vlayer)
total = 100.0 / len(features)
for current, feature in enumerate(features):
progress.setPercentage(int(current * total))
attrs = feature.attributes()
try:
x = float(attrs[x_field_index])
y = float(attrs[y_field_index])
point = QgsPointV2(x, y)
if z_field_index is not None:
try:
point.addZValue(float(attrs[z_field_index]))
except:
point.addZValue(0.0)
if m_field_index is not None:
try:
point.addMValue(float(attrs[m_field_index]))
except:
point.addMValue(0.0)
feature.setGeometry(QgsGeometry(point))
except:
pass # no geometry
writer.addFeature(feature)
del writer
示例7: processAlgorithm
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import createFromUserInput [as 别名]
def processAlgorithm(self, feedback):
pointCount = int(self.getParameterValue(self.POINT_NUMBER))
minDistance = float(self.getParameterValue(self.MIN_DISTANCE))
extent = str(self.getParameterValue(self.EXTENT)).split(',')
crsId = self.getParameterValue(self.CRS)
crs = QgsCoordinateReferenceSystem()
crs.createFromUserInput(crsId)
xMin = float(extent[0])
xMax = float(extent[1])
yMin = float(extent[2])
yMax = float(extent[3])
extent = QgsGeometry().fromRect(
QgsRectangle(xMin, yMin, xMax, yMax))
fields = QgsFields()
fields.append(QgsField('id', QVariant.Int, '', 10, 0))
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
fields, QgsWkbTypes.Point, crs)
nPoints = 0
nIterations = 0
maxIterations = pointCount * 200
total = 100.0 / pointCount
index = QgsSpatialIndex()
points = dict()
random.seed()
while nIterations < maxIterations and nPoints < pointCount:
rx = xMin + (xMax - xMin) * random.random()
ry = yMin + (yMax - yMin) * random.random()
pnt = QgsPoint(rx, ry)
geom = QgsGeometry.fromPoint(pnt)
if geom.within(extent) and \
vector.checkMinDistance(pnt, index, minDistance, points):
f = QgsFeature(nPoints)
f.initAttributes(1)
f.setFields(fields)
f.setAttribute('id', nPoints)
f.setGeometry(geom)
writer.addFeature(f)
index.insertFeature(f)
points[nPoints] = pnt
nPoints += 1
feedback.setProgress(int(nPoints * total))
nIterations += 1
if nPoints < pointCount:
ProcessingLog.addToLog(ProcessingLog.LOG_INFO,
self.tr('Can not generate requested number of random points. '
'Maximum number of attempts exceeded.'))
del writer
示例8: _toVectorLayer_geojson
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import createFromUserInput [as 别名]
def _toVectorLayer_geojson (self):
crs = QgsCoordinateReferenceSystem()
crs.createFromUserInput(self.provider.srsName)
fileName = self.xmlFile.replace(".xml", ".geojson")
fields = QgsFields ()
map (fields.append, self.provider.fields)
writer = QgsVectorFileWriter (fileName, "utf-8", fields, QGis.WKBPoint, crs, "GeoJSON")
if writer.hasError() != QgsVectorFileWriter.NoError:
raise Exception (writer.errorMessage())
for feature in self.provider.getFeatures():
self.features.append(feature)
writer.addFeature(feature)
del writer #Forzar escritura a disco
return QgsVectorLayer( fileName, self.name, "ogr")
示例9: parse
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import createFromUserInput [as 别名]
def parse (self, xml):
xml = XMLParser.parse(self, xml)
node,_ = self.searchFirst (xml, "")
if not node or not node.localName() == "ObservationCollection":
if node.localName() == "ExceptionReport":
node, exceptionCode = self.searchFirst(node, "[email protected]")
_, exceptionText = self.searchFirst(node, "ExceptionText")
raise sos.ExceptionReport (exceptionCode, exceptionText)
raise ValueError (node.localName())
boundedByNode, boundedByType = self.searchFirst (xml, "boundedBy/*")
_, self.provider.srsName = self.searchFirst (boundedByNode, "@srsName")
crs = QgsCoordinateReferenceSystem()
if crs.createFromUserInput(self.provider.srsName):
yx = crs.axisInverted()
else:
yx = (self.provider.srsName == 'urn:ogc:def:crs:EPSG:0') #Hack para meteogalicia
if boundedByType == "Envelope":
self.provider.extent = GMLParser.rectangleFromGMLEnvelope(boundedByNode)
elif boundedByType == "Box":
self.provider.extent = GMLParser.rectangleFromGMLBox(boundedByNode)
else:
geo = GMLParser.geometryFromGML(boundedByNode)
if geo:
self.provider.extent = geo.boundingBox()
_, tag = self.searchFirst(xml, 'member/*')
omParser = XMLParserFactory.getInstance(tag)(self.provider, yx)
components = omParser.parse(xml)
components = filter(lambda f: f != None, components.values())
hasTime = False
for i, f in enumerate(components):
if f.name() == "Time" or f.name() == "SamplingTime":
components.pop (i)
f.setName("Time")
self.provider.fields.append(f)
hasTime = True
break
if not hasTime:
self.provider.fields.append(QgsField ("Time", QVariant.String, ''))
self.provider.fields.extend(components)
return self.provider
示例10: QgsDataSourceURI
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import createFromUserInput [as 别名]
options['overwrite'] = True
options['lowercaseFieldNames'] = True
options['dropStringConstraints'] = True
createIndex = True
#clear geometry column for non-geometry tables
if not layer.hasGeometryType():
geomColumn = None
# Import de la couche
#self.importTable(db, table, schema, primaryKeyField, geomColumn, options)
uri = QgsDataSourceURI()
uri.setConnection(host, str(port), database, username, password)
newCrs = QgsCoordinateReferenceSystem()
newCrs.createFromUserInput(u"EPSG:2154")
#Gid = cle primaire par defaut
uri.setDataSource(schema, table, geomColumn, '', "gid")
progress.setInfo(u"Importation de la table vers PostgreSQL (cela peut prendre un moment)")
#Import
(ret, errMsg) = QgsVectorLayerImport.importLayer(
layer,
uri.uri(),
providerName,
newCrs,
False,
False,
options,
示例11: QgsMapToolCaptureSpatialOperand
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import createFromUserInput [as 别名]
class QgsMapToolCaptureSpatialOperand (QgsMapTool):
"""
QGIS map tool. Draw a point, line, polygon or bounding box
and convert it to WKT format.
"""
selectionFinished = QtCore.pyqtSignal(str)
def __init__(self, canvas, gmlOperand = "gml:Envelope", srsName="", parent = None):
QgsMapTool.__init__ (self, canvas)
self.canvas = canvas
self.parent = parent
if gmlOperand == "gml:Point":
self.minPoints = 1
self.maxPoints = 1
self.isPolygon = False
elif gmlOperand == "gml:Envelope":
self.minPoints = 2
self.maxPoints = 2
self.isPolygon = True
elif gmlOperand == "gml:Polygon":
self.minPoints = 3
self.maxPoints = 0
self.isPolygon = True
elif gmlOperand == "gml:LineString":
self.minPoints = 2
self.maxPoints = 0
self.isPolygon = False
else:
pass
self.srsName = srsName
self.rect = QtCore.QRect() if self.isPolygon and self.maxPoints == 2 else None
if self.isPolygon:
self.rubberBand = QgsRubberBand(self.canvas, QGis.Polygon)
else:
self.rubberBand = QgsRubberBand(self.canvas, QGis.Line)
self.rubberBand.setColor(QtGui.QColor (255, 0,0, 150))
self.rubberBand.setWidth(1)
self.cursor = QtGui.QCursor (QtCore.Qt.CrossCursor)
self.vertexMarkers = []
self.captureList = []
self.crs = QgsCoordinateReferenceSystem()
self.crs.createFromUserInput(self.srsName)
self.yx = self.crs.axisInverted()
def canvasPressEvent(self, event):
pass
def canvasMoveEvent(self, event):
if isinstance (self.rect, QtCore.QRect):
self.rect.setBottomRight(event.pos())
self.moveVertex(self.toMapCoordinates(event.pos()))
def canvasReleaseEvent(self, event):
numPoints = self.addVertex(self.toMapCoordinates(event.pos()))
if numPoints == 1 and isinstance (self.rect, QtCore.QRect):
self.rect.setTopLeft(event.pos())
if (event.button() == QtCore.Qt.RightButton and numPoints >= self.minPoints) or \
(numPoints == self.maxPoints):
self.finishGeom (numPoints)
def keyReleaseEvent(self, event):
if event.key() == QtCore.Qt.Key_Escape:
self.selectionFinished.emit(None)
def activate(self):
QgsMapTool.activate(self)
self.canvas.setCursor(self.cursor)
def deactivate(self):
QgsMapTool.deactivate(self)
self.canvas.unsetCursor()
self.clearMapCanvas()
def isZoomTool(self):
return False
def isTransient(self):
return False
def isEditTool(self):
return False
def addVertex(self, pt):
self.rubberBand.addPoint(pt)
m = QgsVertexMarker(self.canvas)
m.setCenter(pt)
self.vertexMarkers.append(m)
#if self.yx: pt = QgsPoint(pt.y(),pt.x())
self.captureList.append (pt)
#.........这里部分代码省略.........