本文整理汇总了Python中qgis.analysis.QgsGeometrySnapper类的典型用法代码示例。如果您正苦于以下问题:Python QgsGeometrySnapper类的具体用法?Python QgsGeometrySnapper怎么用?Python QgsGeometrySnapper使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QgsGeometrySnapper类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: processAlgorithm
def processAlgorithm(self, feedback):
layer = dataobjects.getLayerFromString(self.getParameterValue(self.INPUT))
reference_layer = dataobjects.getLayerFromString(self.getParameterValue(self.REFERENCE_LAYER))
tolerance = self.getParameterValue(self.TOLERANCE)
mode = self.getParameterValue(self.BEHAVIOR)
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
layer.fields(), layer.wkbType(), layer.crs())
features = vector.features(layer)
self.processed = 0
self.feedback = feedback
self.total = 100.0 / len(features)
if self.getParameterValue(self.INPUT) != self.getParameterValue(self.REFERENCE_LAYER):
snapper = QgsGeometrySnapper(reference_layer)
snapper.featureSnapped.connect(self.featureSnapped)
snapped_features = snapper.snapFeatures(features, tolerance, mode)
for f in snapped_features:
writer.addFeature(QgsFeature(f))
else:
# snapping internally
snapper = QgsInternalGeometrySnapper(tolerance, mode)
processed = 0
for f in features:
out_feature = f
out_feature.setGeometry(snapper.snapFeature(f))
writer.addFeature(out_feature)
processed += 1
feedback.setProgress(processed * self.total)
del writer
开发者ID:cayetanobv,项目名称:QGIS,代码行数:33,代码来源:SnapGeometries.py
示例2: processAlgorithm
def processAlgorithm(self, parameters, context, feedback):
source = self.parameterAsSource(parameters, self.INPUT, context)
if source is None:
raise QgsProcessingException(self.invalidSourceError(parameters, self.INPUT))
reference_source = self.parameterAsSource(parameters, self.REFERENCE_LAYER, context)
if reference_source is None:
raise QgsProcessingException(self.invalidSourceError(parameters, self.REFERENCE_LAYER))
tolerance = self.parameterAsDouble(parameters, self.TOLERANCE, context)
mode = self.parameterAsEnum(parameters, self.BEHAVIOR, context)
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
source.fields(), source.wkbType(), source.sourceCrs())
if sink is None:
raise QgsProcessingException(self.invalidSinkError(parameters, self.OUTPUT))
features = source.getFeatures()
total = 100.0 / source.featureCount() if source.featureCount() else 0
if parameters[self.INPUT] != parameters[self.REFERENCE_LAYER]:
if mode == 7:
raise QgsProcessingException(self.tr('This mode applies when the input and reference layer are the same.'))
snapper = QgsGeometrySnapper(reference_source)
processed = 0
for f in features:
if feedback.isCanceled():
break
if f.hasGeometry():
out_feature = f
out_feature.setGeometry(snapper.snapGeometry(f.geometry(), tolerance, mode))
sink.addFeature(out_feature, QgsFeatureSink.FastInsert)
else:
sink.addFeature(f)
processed += 1
feedback.setProgress(processed * total)
elif mode == 7:
# input layer == ref layer
modified_count = QgsGeometrySnapperSingleSource.run(source, sink, tolerance, feedback)
feedback.pushInfo(self.tr('Snapped {} geometries.').format(modified_count))
else:
# snapping internally
snapper = QgsInternalGeometrySnapper(tolerance, mode)
processed = 0
for f in features:
if feedback.isCanceled():
break
out_feature = f
out_feature.setGeometry(snapper.snapFeature(f))
sink.addFeature(out_feature, QgsFeatureSink.FastInsert)
processed += 1
feedback.setProgress(processed * total)
return {self.OUTPUT: dest_id}
开发者ID:yoichigmf,项目名称:QGIS,代码行数:56,代码来源:SnapGeometries.py
示例3: processAlgorithm
def processAlgorithm(self, parameters, context, feedback):
source = self.parameterAsSource(parameters, self.INPUT, context)
reference_source = self.parameterAsSource(parameters, self.REFERENCE_LAYER, context)
tolerance = self.parameterAsDouble(parameters, self.TOLERANCE, context)
mode = self.parameterAsEnum(parameters, self.BEHAVIOR, context)
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
source.fields(), source.wkbType(), source.sourceCrs())
features = source.getFeatures()
total = 100.0 / source.featureCount() if source.featureCount() else 0
if parameters[self.INPUT] != parameters[self.REFERENCE_LAYER]:
snapper = QgsGeometrySnapper(reference_source)
processed = 0
for f in features:
if feedback.isCanceled():
break
if f.hasGeometry():
out_feature = f
out_feature.setGeometry(snapper.snapGeometry(f.geometry(), tolerance, mode))
sink.addFeature(out_feature, QgsFeatureSink.FastInsert)
else:
sink.addFeature(f)
processed += 1
feedback.setProgress(processed * total)
else:
# snapping internally
snapper = QgsInternalGeometrySnapper(tolerance, mode)
processed = 0
for f in features:
if feedback.isCanceled():
break
out_feature = f
out_feature.setGeometry(snapper.snapFeature(f))
sink.addFeature(out_feature, QgsFeatureSink.FastInsert)
processed += 1
feedback.setProgress(processed * total)
return {self.OUTPUT: dest_id}
开发者ID:nyalldawson,项目名称:QGIS,代码行数:42,代码来源:SnapGeometries.py
示例4: processAlgorithm
def processAlgorithm(self, progress):
layer = dataobjects.getObjectFromUri(self.getParameterValue(self.INPUT))
reference_layer = dataobjects.getObjectFromUri(self.getParameterValue(self.REFERENCE_LAYER))
tolerance = self.getParameterValue(self.TOLERANCE)
mode = self.getParameterValue(self.BEHAVIOUR)
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(layer.fields(), layer.wkbType(), layer.crs())
features = vector.features(layer)
self.processed = 0
self.progress = progress
self.total = 100.0 / len(features)
snapper = QgsGeometrySnapper(reference_layer)
snapper.featureSnapped.connect(self.featureSnapped)
snapped_features = snapper.snapFeatures(features, tolerance, mode)
for f in snapped_features:
writer.addFeature(QgsFeature(f))
del writer
开发者ID:medspx,项目名称:QGIS,代码行数:21,代码来源:SnapGeometries.py
注:本文中的qgis.analysis.QgsGeometrySnapper类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论