当前位置: 首页>>代码示例>>Python>>正文


Python QgsGeometry.fromPolyline方法代码示例

本文整理汇总了Python中qgis.core.QgsGeometry.fromPolyline方法的典型用法代码示例。如果您正苦于以下问题:Python QgsGeometry.fromPolyline方法的具体用法?Python QgsGeometry.fromPolyline怎么用?Python QgsGeometry.fromPolyline使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在qgis.core.QgsGeometry的用法示例。


在下文中一共展示了QgsGeometry.fromPolyline方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: _rectangleGridLine

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
    def _rectangleGridLine(self, writer, width, height, originX, originY,
                           hSpacing, vSpacing):
        ft = QgsFeature()

        columns = int(math.floor(float(width) / hSpacing))
        rows = int(math.floor(float(height) / vSpacing))

        # Longitude lines
        for col in xrange(0, columns + 1):
            polyline = []
            x = originX + (col * hSpacing)
            for row in xrange(0, rows + 1):
                y = originY + (row * vSpacing)
                polyline.append(QgsPoint(x, y))

            ft.setGeometry(QgsGeometry.fromPolyline(polyline))
            ft.setAttributes([x, originY, x, originY + (rows * vSpacing)])
            writer.addFeature(ft)

        # Latitude lines
        for row in xrange(0, rows + 1):
            polyline = []
            y = originY + (row * vSpacing)
            for col in xrange(0, columns + 1):
                x = originX + (col * hSpacing)
                polyline.append(QgsPoint(x, y))

            ft.setGeometry(QgsGeometry.fromPolyline(polyline))
            ft.setAttributes([originX, y, originX + (col * hSpacing), y])
            writer.addFeature(ft)
开发者ID:redwoodxiao,项目名称:QGIS,代码行数:32,代码来源:Grid.py

示例2: drawLimits

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [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)
开发者ID:brunky37,项目名称:cow,代码行数:34,代码来源:cow.py

示例3: finishGeom

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
    def finishGeom (self, numPoints):
        if self.maxPoints == 1:
            geom = QgsGeometry.fromPoint(self.captureList[0])
        elif self.isPolygon and numPoints == 2:
            geom = QgsGeometry.fromPolyline(self.captureList)
            #geom = QgsGeometry.fromRect(geom.boundingBox())
        elif self.isPolygon:
            geom = QgsGeometry.fromPolygon([self.captureList])
        else:
            geom = QgsGeometry.fromPolyline(self.captureList)

        geom.simplify(0.00001)
        geom.transform(QgsCoordinateTransform(
                                              self.canvas.mapSettings().destinationCrs(),
                                              self.crs))
        
        if self.yx:
            i = 0
            vertex = geom.vertexAt(i)
            while (vertex != QgsPoint(0,0)):
                x = vertex.x()
                y = vertex.y()
                geom.moveVertex(y, x, i)
                i+=1
                vertex = geom.vertexAt(i) 
        
        self.selectionFinished.emit(geom.exportToWkt())
        self.clearMapCanvas()
开发者ID:kinow,项目名称:SOSClient,代码行数:30,代码来源:qgsmaptool_capturespatialoperand.py

示例4: densify

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
def densify(geometry, maxsegmentlength):
    """Densifies geometry vertices, so no segment is longer than maxsegmentlength
    Only implemented for linestring at the time being"""
    g = togeometry(geometry)
    type = QGis.flatType((g.wkbType()))
    if not type == QGis.WKBLineString:
        raise NotImplementedError("Densify is only implemented for LineStrings at the moment")
    input_coords = tocoordinates(g)
    output_coords = []
    maxsegmentlength = float(maxsegmentlength)
    for ix in xrange(len(input_coords) - 1):
        p0 = input_coords[ix]
        p1 = input_coords[ix + 1]
        output_coords.append(QgsPoint(p0))
        # Avoid calculating these values at the cost of performace.
        in_segment = QgsGeometry.fromPolyline([p0, p1])
        in_segment_length = in_segment.length()
        segcount = int(ceil(in_segment_length / maxsegmentlength))
        if segcount > 1:
            new_seg_length = float(in_segment_length) / segcount
            for i in xrange(1,segcount):
                new_p = in_segment.interpolate(new_seg_length * i).asPoint()
                output_coords.append(new_p)
    # Add last coord
    output_coords.append(input_coords[-1])
    return QgsGeometry.fromPolyline(output_coords)
开发者ID:Septima,项目名称:qgis-GeoDanmarkCheck,代码行数:28,代码来源:algorithms.py

示例5: test_identify_segment_center

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
    def test_identify_segment_center(self):
        """Test for identify_segment_center."""
        points = [
            (QgsPoint(0, 0)),
            (QgsPoint(1, 0)),
            (QgsPoint(2, 0)),
        ]

        geom = QgsGeometry.fromPolyline(points)
        line = QgsFeature()
        line.setGeometry(geom)

        center = identify_segment_center(line)
        expected_center = QgsPoint(1, 0)
        message = 'Expected %s but I got %s' % (expected_center, center)
        self.assertEqual(expected_center, center, message)

        points.append(QgsPoint(5, 0))

        geom = QgsGeometry.fromPolyline(points)
        line = QgsFeature()
        line.setGeometry(geom)

        center = identify_segment_center(line)
        expected_center = QgsPoint(2.5, 0)
        message = 'Expected %s but I got %s' % (expected_center, center)
        self.assertEqual(expected_center, center, message)
开发者ID:kartoza,项目名称:stream_feature_extractor,代码行数:29,代码来源:test_stream_utilities.py

示例6: canvasReleaseEvent

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
 def canvasReleaseEvent(self,event):
     if event.button() == Qt.RightButton:
       self.points.append(QgsPoint( self.toMapCoordinates( event.pos()) ) )
       if len(self.points) <= 1 :return
     
       self.rubberBand.setToGeometry( QgsGeometry.fromPolyline(self.points), None )
       self.callback( self.rubberBand )
       QgsMapTool.deactivate(self)
     else:
       self.points.append(QgsPoint( self.toMapCoordinates(event.pos()) ) )
       if len(self.points) <= 1 : return
       self.rubberBand.setToGeometry( QgsGeometry.fromPolyline(self.points), None )
开发者ID:warrieka,项目名称:geopunt4Qgis,代码行数:14,代码来源:elevationProfile.py

示例7: reprojectRubberBand

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
 def reprojectRubberBand(self, geom):
     """
     Reprojects the geometry
     geom: QgsGeometry
     """
     # Defining the crs from src and destiny
     epsg = self.canvas.mapSettings().destinationCrs().authid()
     crsSrc = QgsCoordinateReferenceSystem(epsg)
     #getting srid from something like 'EPSG:31983'
     layer = self.canvas.currentLayer()
     srid = layer.crs().authid()
     crsDest = QgsCoordinateReferenceSystem(srid) #here we have to put authid, not srid
     # Creating a transformer
     coordinateTransformer = QgsCoordinateTransform(crsSrc, crsDest)
     lyrType = self.iface.activeLayer().geometryType()
     # Transforming the points
     if lyrType == QGis.Line:
         geomList = geom.asPolyline()
     elif lyrType == QGis.Polygon:
         geomList = geom.asPolygon()
     newGeom = []
     for j in xrange(len(geomList)):
         if lyrType == QGis.Line:
             newGeom.append(coordinateTransformer.transform(geomList[j]))
         elif lyrType == QGis.Polygon:
             line = geomList[j]
             for i in xrange(len(line)):
                 point = line[i]
                 newGeom.append(coordinateTransformer.transform(point))
     if lyrType == QGis.Line:
         return QgsGeometry.fromPolyline(newGeom + [newGeom[0]])
     elif lyrType == QGis.Polygon:
         return QgsGeometry.fromPolygon([newGeom])                   
开发者ID:lcoandrade,项目名称:DsgTools,代码行数:35,代码来源:geometricaAquisition.py

示例8: _segmentAzimuth

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
    def _segmentAzimuth(self, line1Azimuth, line2Azimuth):
        nearLineGeom = self._nearLine.geometry()
        if nearLineGeom.isMultipart():
            dct = {}
            minDists = []

            for line in nearLineGeom.asMultiPolyline():
                l = QgsGeometry.fromPolyline(line)
                closestSegmContext = l.closestSegmentWithContext(
                    self._nearestVertex
                )
                minDists.append(closestSegmContext[0])
                dct[closestSegmContext[0]] = [line, closestSegmContext[-1]]

            minDistance = min(minDists)
            closestSegment = dct[minDistance][0]
            indexSegmEnd = dct[minDistance][1]
            segmEnd = closestSegment[indexSegmEnd]
            segmStart = closestSegment[indexSegmEnd - 1]
        else:
            closestSegmContext = nearLineGeom.closestSegmentWithContext(
                self._nearestVertex
            )
            indexSegmEnd = closestSegmContext[-1]
            segmEnd = nearLineGeom.asPolyline()[indexSegmEnd]
            segmStart = nearLineGeom.asPolyline()[indexSegmEnd - 1]

        segmentAzimuth = segmStart.azimuth(segmEnd)
        self._dltAz1 = self._getDeltaAzimuth(segmentAzimuth, line1Azimuth)
        self._dltAz2 = self._getDeltaAzimuth(segmentAzimuth, line2Azimuth)

        self._azimuth()
开发者ID:Elfpkck,项目名称:polygons_parallel_to_line,代码行数:34,代码来源:pptl_algorithm.py

示例9: createlinemarker

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
def createlinemarker(f0, f1):
    g0 = togeometry(f0)
    g1 = togeometry(f1)
    p0 = linemarkerpoint(g0, g1)
    p1 = linemarkerpoint(g1, g0)
    geom = QgsGeometry.fromPolyline([p0.asPoint(), p1.asPoint()])
    return geom
开发者ID:Septima,项目名称:qgis-GeoDanmarkCheck,代码行数:9,代码来源:errorgeometry.py

示例10: test_multi_intersect

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
    def test_multi_intersect(self):
        def zipline(p1, p2, increment):
            middle = p1.x()
            start = p1.y() + increment
            end = p2.y() - increment
            while start < end:
                yield QgsPoint(middle - increment, start)
                start += increment
                yield QgsPoint(middle + increment, start)

        # Define the two captured points
        p1, p2 = QgsPoint(20.0, 10.0), QgsPoint(20.0, 10.2)

        # Define a "zig-zag" LineString geometry along the line between these
        # two points
        ls_points = list(zipline(p1, p2, 0.01))
        ls = QgsGeometry.fromPolyline(ls_points)

        # Get the points generated by ElevationReader
        points = self.extract_elevation_helper(p1, p2, [FeatureDescr(ls, 20)])

        # Evaluate the results
        self.assertEqual(len(points), len(ls_points) - 1)
        p_x = [p.x() for p in points]
        self.assertListEqual(p_x, sorted(p_x))
        for point in points:
            self.assertEqual(point.y(), 20)
开发者ID:JamesFysh,项目名称:eleview,代码行数:29,代码来源:test_read_elevation.py

示例11: processAlgorithm

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
    def processAlgorithm(self, progress):
        layer = dataobjects.getObjectFromUri(self.getParameterValue(self.INPUT))

        writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
            layer.pendingFields().toList(), QGis.WKBLineString, layer.crs())

        outFeat = QgsFeature()
        inGeom = QgsGeometry()
        outGeom = QgsGeometry()

        current = 0
        features = vector.features(layer)
        total = 100.0 / float(len(features))
        for f in features:
            inGeom = f.geometry()
            attrs = f.attributes()
            lineList = self.extractAsLine(inGeom)
            outFeat.setAttributes(attrs)
            for h in lineList:
                outFeat.setGeometry(outGeom.fromPolyline(h))
                writer.addFeature(outFeat)

            current += 1
            progress.setPercentage(int(current * total))

        del writer
开发者ID:avautour,项目名称:QGIS,代码行数:28,代码来源:PolygonsToLines.py

示例12: testCrosses

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
 def testCrosses(self):
     myLine = QgsGeometry.fromPolyline([QgsPoint(0, 0),QgsPoint(1, 1),QgsPoint(3, 3)])
     myPoly = QgsGeometry.fromPolygon([[QgsPoint(1, 0),QgsPoint(2, 0),QgsPoint(2, 2),QgsPoint(1, 2), QgsPoint(1, 0)]])
     crossesGeom = QgsGeometry.crosses(myLine, myPoly)
     myMessage = ('Expected:\n%s\nGot:\n%s\n' %
                   ("True", crossesGeom))
     assert crossesGeom == True, myMessage
开发者ID:mokerjoke,项目名称:Quantum-GIS,代码行数:9,代码来源:test_qgsgeometry.py

示例13: canvasDoubleClickEvent

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
 def canvasDoubleClickEvent(self,event):
     self.points.append(QgsPoint( self.toMapCoordinates( event.pos()) ))
     if len(self.points) <= 1 : return
   
     self.rubberBand.setToGeometry( QgsGeometry.fromPolyline(self.points), None )
     self.callback( self.rubberBand )
     QgsMapTool.deactivate(self)
开发者ID:warrieka,项目名称:geopunt4Qgis,代码行数:9,代码来源:elevationProfile.py

示例14: create_edge

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
    def create_edge(self):

        # If edge already exists, delete it..
        if self.edge:
            self.l_edge.deleteFeature(self.edge.id())

        # Two vertices are needed..
        if not self.vtx_start or not self.vtx_end:
            return self.canvas.refresh()

        # Two DIFFERENT vertices..
        if self.vtx_start == self.vtx_end:
            return self.canvas.refresh()

        # Create line geometry..
        line = QgsGeometry.fromPolyline([self.vtx_start.geometry().asPoint(),
                                         self.vtx_end.geometry().asPoint()])

        # Create the feature..
        self.edge = QgsFeature()
        self.edge.setGeometry(line)
        self.edge.setFields(self.l_edge.pendingFields())
        self.edge.setAttributes(
                [QPyNullVariant(int), QPyNullVariant(int), QPyNullVariant(int)])

        # Add feature to layer..
        self.l_edge.addFeature(self.edge)
        self.canvas.refresh()
开发者ID:miquigti,项目名称:GeofoncierEditeurRFU,代码行数:30,代码来源:edge_creator.py

示例15: canvasMoveEvent

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromPolyline [as 别名]
 def canvasMoveEvent(self, event):
     if self.snapCursorRubberBand:
         self.snapCursorRubberBand.hide()
         self.snapCursorRubberBand.reset(geometryType=QGis.Point)
         self.snapCursorRubberBand = None
     oldPoint = QgsPoint(event.mapPoint())
     event.snapPoint(QgsMapMouseEvent.SnapProjectConfig)
     point = QgsPoint(event.mapPoint())
     if oldPoint != point:
         self.createSnapCursor(point)
     point = QgsPoint(event.mapPoint())   
     if self.qntPoint == 1:
         self.distanceToolTip.canvasMoveEvent(self.geometry[0], point)
         geom = QgsGeometry.fromPolyline([self.geometry[0], point])
         self.rubberBand.setToGeometry(geom, None)
     elif self.qntPoint >= 2:
         self.distanceToolTip.canvasMoveEvent(self.geometry[-1], point)
         if self.free:
             geom = QgsGeometry.fromPolygon([self.geometry+[QgsPoint(point.x(), point.y())]])
             self.rubberBand.setToGeometry(geom, None)             
         else:       
             if (self.qntPoint % 2 == 1): 
                 self.setAvoidStyleSnapRubberBand()
             else:
                 self.setAllowedStyleSnapRubberBand()
             projectedMousePoint = self.projectPoint(self.geometry[-2], self.geometry[-1], point)
             if projectedMousePoint:
                 geom, pf = self.completePolygon(self.geometry, projectedMousePoint)
                 self.rubberBand.setToGeometry(geom, None)
开发者ID:lcoandrade,项目名称:DsgTools,代码行数:31,代码来源:polygon.py


注:本文中的qgis.core.QgsGeometry.fromPolyline方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。