コード例 #1
0
    def createShp(self, out_shp, features, inLayer, sr, out_type=None):
        self.new_name = inLayer.name() + "_new"
        self.geomType = QgsWkbTypes.displayString(inLayer.wkbType())
        if out_type == "m":
            self.new_shp = QgsVectorLayer(self.geomType, self.new_name,
                                          "memory")
            self.pr = self.new_shp.dataProvider()

            self.fields = [
                QgsField(n, t) for t, n, _ in features[0]["properties"]
            ]
            self.pr.addAttributes(self.fields)
            self.new_shp.updateFields()

            for f in features:
                self.feat = QgsFeature()
                self.feat.setGeometry(f["geometry"])
                self.attr = [k for i, j, k in f["properties"]]
                self.feat.setAttributes(self.attr)
                self.pr.addFeature(self.feat)
                self.new_shp.updateExtents()
            QgsProject.instance().addMapLayer(self.new_shp)
            self.new_shp.setCrs(QgsCoordinateReferenceSystem.fromWkt(sr))

        else:
            self.fields = QgsFields()
            for t, n, _ in features[0]["properties"]:
                self.fields.append(QgsField(n, t))

            self.writer = QgsVectorFileWriter(
                out_shp, 'UTF-8', self.fields, inLayer.wkbType(),
                QgsCoordinateReferenceSystem.fromWkt(sr), 'ESRI Shapefile')
            for f in features:
                self.feat = QgsFeature()
                self.feat.setGeometry(f["geometry"])
                self.attr = [k for i, j, k in f["properties"]]
                self.feat.setAttributes(self.attr)
                self.writer.addFeature(self.feat)

            self.layer = iface.addVectorLayer(out_shp, '', 'ogr')
            self.layer.setExtent(inLayer.extent())
            del (self.writer)
 def testTreeWidgetUnknownCrs(self):
     w = QgsProjectionSelectionTreeWidget()
     w.show()
     self.assertFalse(w.hasValidSelection())
     w.setCrs(
         QgsCoordinateReferenceSystem.fromWkt(
             'GEOGCS["WGS 84",DATUM["unknown",SPHEROID["WGS84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]]'
         ))
     self.assertTrue(w.crs().isValid())
     self.assertFalse(w.crs().authid())
     self.assertTrue(w.hasValidSelection())
     self.assertEqual(
         w.crs().toWkt(QgsCoordinateReferenceSystem.WKT2_2018),
         'GEOGCRS["WGS 84",DATUM["unknown",ELLIPSOID["WGS84",6378137,298.257223563,LENGTHUNIT["metre",1,ID["EPSG",9001]]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["longitude",east,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["latitude",north,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]]]'
     )
コード例 #3
0
def input_to_point( inp: WPSInput ):
    """ Handle point from complex input
    """
    data_format = inp.data_format
    geom = None
    if data_format.mime_type == FORMATS.GEOJSON.mime_type:
        geom = ogr.CreateGeometryFromJson(inp.data)
    elif data_format.mime_type == FORMATS.GML.mime_type:
        geom = ogr.CreateGeometryFromGML(inp.data)
 
    if geom:
        srs  = geom.GetSpatialReference()
        geom = QgsGeometry.fromWkt(geom.ExportToWkt())
        if srs:
            srs = QgsCoordinateReferenceSystem.fromWkt(srs.ExportToWkt())
        if srs and srs.isValid():
            geom = QgsReferencedPointXY( geom.centroid().asPoint(), srs )
            
        return geom

    raise NoApplicableCode("Unsupported data format: %s" % data_format)