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]]]' )
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)