本文整理汇总了Python中qgis.core.QgsJsonExporter类的典型用法代码示例。如果您正苦于以下问题:Python QgsJsonExporter类的具体用法?Python QgsJsonExporter怎么用?Python QgsJsonExporter使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QgsJsonExporter类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testExportFeatureFieldFormatter
def testExportFeatureFieldFormatter(self):
""" Test exporting a feature with formatting fields """
# source layer
source = QgsVectorLayer("Point?field=fldtxt:string&field=fldint:integer",
"parent", "memory")
pr = source.dataProvider()
pf1 = QgsFeature()
pf1.setFields(source.fields())
pf1.setAttributes(["test1", 1])
pf2 = QgsFeature()
pf2.setFields(source.fields())
pf2.setAttributes(["test2", 2])
assert pr.addFeatures([pf1, pf2])
setup = QgsEditorWidgetSetup('ValueMap', {"map": {"one": 1, "two": 2, "three": 3}})
source.setEditorWidgetSetup(1, setup)
exporter = QgsJsonExporter()
exporter.setVectorLayer(source)
expected = """{
"type":"Feature",
"id":0,
"geometry":null,
"properties":{
"fldtxt":"test1",
"fldint":"one"
}
}"""
self.assertEqual(exporter.exportFeature(pf1), expected)
示例2: testExportFieldAlias
def testExportFieldAlias(self):
""" Test exporting a feature with fields' alias """
# source layer
source = QgsVectorLayer("Point?field=fldtxt:string&field=fldint:integer",
"parent", "memory")
pr = source.dataProvider()
pf1 = QgsFeature()
pf1.setFields(source.fields())
pf1.setAttributes(["test1", 1])
pf2 = QgsFeature()
pf2.setFields(source.fields())
pf2.setAttributes(["test2", 2])
assert pr.addFeatures([pf1, pf2])
source.setFieldAlias(0, "alias_fldtxt")
source.setFieldAlias(1, "alias_fldint")
exporter = QgsJsonExporter()
exporter.setVectorLayer(source)
expected = """{
"type":"Feature",
"id":0,
"geometry":null,
"properties":{
"alias_fldtxt":"test1",
"alias_fldint":1
}
}"""
self.assertEqual(exporter.exportFeature(pf1), expected)
示例3: layer_geom
def layer_geom(layer):
featureList = []
if layer.featureCount() > settings.PROJESTIONS_MAX_FEATURES:
# If too many features, randomly select some
import processing
processing.run('qgis:randomselection', {
'INPUT': layer,
'METHOD': 0,
'NUMBER': settings.PROJESTIONS_MAX_FEATURES,
}, feedback=QgsProcessingFeedback())
featureList = layer.selectedFeatures()
layer.removeSelection()
else:
# Else get all of the features
feature = QgsFeature()
iterator = layer.getFeatures()
while iterator.nextFeature(feature):
feature.setGeometry(feature.geometry().simplify(0.1))
featureList.append(feature)
feature = QgsFeature()
exporter = QgsJsonExporter(layer, 6)
exporter.setExcludedAttributes(layer.attributeList())
return exporter.exportFeatures(featureList)
示例4: testExportFeaturesWithLocale_regression20053
def testExportFeaturesWithLocale_regression20053(self):
""" Test exporting feature export with range widgets and locale different than C
Regression: https://issues.qgis.org/issues/20053 - decimal separator in csv files
"""
source = QgsVectorLayer("Point?field=name:string&field=cost:double&field=population:int&field=date:date",
"parent", "memory")
self.assertTrue(source.isValid())
fields = source.fields()
feature = QgsFeature(fields, 5)
feature.setGeometry(QgsGeometry(QgsPoint(5, 6)))
feature.setAttributes(['Valsier Peninsula', 6.8, 198000, '2018-09-10'])
exporter = QgsJsonExporter()
# single feature
expected = """{
"features": [
{
"geometry": {
"coordinates": [
5.0,
6.0
],
"type": "Point"
},
"id": 5,
"properties": {
"cost": 6.8,
"date": "2018-09-10",
"name": "Valsier Peninsula",
"population": 198000
},
"type": "Feature"
}
],
"type": "FeatureCollection"
}"""
self.assertEqual(exporter.exportFeatures([feature], 2), expected)
setup = QgsEditorWidgetSetup('Range', {
'AllowNull': True,
'Max': 2147483647,
'Min': -2147483648,
'Precision': 4,
'Step': 1,
'Style': 'SpinBox'
}
)
source.setEditorWidgetSetup(1, setup)
source.setEditorWidgetSetup(2, setup)
QLocale.setDefault(QLocale('it'))
exporter.setVectorLayer(source)
self.assertEqual(exporter.exportFeatures([feature], 2), expected)
示例5: testExportFeatures
def testExportFeatures(self):
""" Test exporting feature collections """
fields = QgsFields()
fields.append(QgsField("name", QVariant.String))
fields.append(QgsField("cost", QVariant.Double))
fields.append(QgsField("population", QVariant.Int))
feature = QgsFeature(fields, 5)
feature.setGeometry(QgsGeometry(QgsPoint(5, 6)))
feature.setAttributes(['Valsier Peninsula', 6.8, 198])
exporter = QgsJsonExporter()
# single feature
expected = """{ "type": "FeatureCollection",
"features":[
{
"type":"Feature",
"id":5,
"geometry":
{"type": "Point", "coordinates": [5, 6]},
"properties":{
"name":"Valsier Peninsula",
"cost":6.8,
"population":198
}
}
]}"""
self.assertEqual(exporter.exportFeatures([feature]), expected)
# multiple features
feature2 = QgsFeature(fields, 6)
feature2.setGeometry(QgsGeometry(QgsPoint(7, 8)))
feature2.setAttributes(['Henry Gale Island', 9.7, 38])
expected = """{ "type": "FeatureCollection",
"features":[
{
"type":"Feature",
"id":5,
"geometry":
{"type": "Point", "coordinates": [5, 6]},
"properties":{
"name":"Valsier Peninsula",
"cost":6.8,
"population":198
}
},
{
"type":"Feature",
"id":6,
"geometry":
{"type": "Point", "coordinates": [7, 8]},
"properties":{
"name":"Henry Gale Island",
"cost":9.7,
"population":38
}
}
]}"""
self.assertEqual(exporter.exportFeatures([feature, feature2]), expected)
示例6: testExportFeatureRelations
def testExportFeatureRelations(self):
""" Test exporting a feature with relations """
#parent layer
parent = QgsVectorLayer("Point?field=fldtxt:string&field=fldint:integer&field=foreignkey:integer",
"parent", "memory")
pr = parent.dataProvider()
pf1 = QgsFeature()
pf1.setFields(parent.fields())
pf1.setAttributes(["test1", 67, 123])
pf2 = QgsFeature()
pf2.setFields(parent.fields())
pf2.setAttributes(["test2", 68, 124])
assert pr.addFeatures([pf1, pf2])
#child layer
child = QgsVectorLayer(
"Point?field=x:string&field=y:integer&field=z:integer",
"referencedlayer", "memory")
pr = child.dataProvider()
f1 = QgsFeature()
f1.setFields(child.fields())
f1.setAttributes(["foo", 123, 321])
f2 = QgsFeature()
f2.setFields(child.fields())
f2.setAttributes(["bar", 123, 654])
f3 = QgsFeature()
f3.setFields(child.fields())
f3.setAttributes(["foobar", 124, 554])
assert pr.addFeatures([f1, f2, f3])
QgsProject.instance().addMapLayers([child, parent])
rel = QgsRelation()
rel.setId('rel1')
rel.setName('relation one')
rel.setReferencingLayer(child.id())
rel.setReferencedLayer(parent.id())
rel.addFieldPair('y', 'foreignkey')
QgsProject.instance().relationManager().addRelation(rel)
exporter = QgsJsonExporter()
exporter.setVectorLayer(parent)
self.assertEqual(exporter.vectorLayer(), parent)
exporter.setIncludeRelated(True)
self.assertEqual(exporter.includeRelated(), True)
expected = """{
"type":"Feature",
"id":0,
"geometry":null,
"properties":{
"fldtxt":"test1",
"fldint":67,
"foreignkey":123,
"relation one":[{"x":"foo",
"y":123,
"z":321},
{"x":"bar",
"y":123,
"z":654}]
}
}"""
self.assertEqual(exporter.exportFeature(pf1), expected)
expected = """{
"type":"Feature",
"id":0,
"geometry":null,
"properties":{
"fldtxt":"test2",
"fldint":68,
"foreignkey":124,
"relation one":[{"x":"foobar",
"y":124,
"z":554}]
}
}"""
self.assertEqual(exporter.exportFeature(pf2), expected)
# with field formatter
setup = QgsEditorWidgetSetup('ValueMap', {"map": {"apples": 123, "bananas": 124}})
child.setEditorWidgetSetup(1, setup)
expected = """{
"type":"Feature",
"id":0,
"geometry":null,
"properties":{
"fldtxt":"test1",
"fldint":67,
"foreignkey":123,
"relation one":[{"x":"foo",
"y":"apples",
"z":321},
{"x":"bar",
"y":"apples",
"z":654}]
}
#.........这里部分代码省略.........
示例7: testExportFeatureCrs
def testExportFeatureCrs(self):
""" Test CRS transform when exporting features """
exporter = QgsJsonExporter()
self.assertFalse(exporter.sourceCrs().isValid())
#test layer
layer = QgsVectorLayer("Point?crs=epsg:3111&field=fldtxt:string",
"parent", "memory")
exporter = QgsJsonExporter(layer)
self.assertTrue(exporter.sourceCrs().isValid())
self.assertEqual(exporter.sourceCrs().authid(), 'EPSG:3111')
exporter.setSourceCrs(QgsCoordinateReferenceSystem(3857, QgsCoordinateReferenceSystem.EpsgCrsId))
self.assertTrue(exporter.sourceCrs().isValid())
self.assertEqual(exporter.sourceCrs().authid(), 'EPSG:3857')
# vector layer CRS should override
exporter.setVectorLayer(layer)
self.assertEqual(exporter.sourceCrs().authid(), 'EPSG:3111')
# test that exported feature is reprojected
feature = QgsFeature(layer.fields(), 5)
feature.setGeometry(QgsGeometry(QgsPoint(2502577, 2403869)))
feature.setAttributes(['test point'])
# low precision, only need rough coordinate to check and don't want to deal with rounding errors
exporter.setPrecision(1)
expected = """{
"type":"Feature",
"id":5,
"geometry":
{"type": "Point", "coordinates": [145, -37.9]},
"properties":{
"fldtxt":"test point"
}
}"""
self.assertEqual(exporter.exportFeature(feature), expected)
示例8: testJSONExporter
def testJSONExporter(self):
""" test converting features to GeoJSON """
fields = QgsFields()
fields.append(QgsField("name", QVariant.String))
fields.append(QgsField("cost", QVariant.Double))
fields.append(QgsField("population", QVariant.Int))
feature = QgsFeature(fields, 5)
feature.setGeometry(QgsGeometry(QgsPoint(5, 6)))
feature.setAttributes(['Valsier Peninsula', 6.8, 198])
exporter = QgsJsonExporter()
expected = """{
"type":"Feature",
"id":5,
"geometry":
{"type": "Point", "coordinates": [5, 6]},
"properties":{
"name":"Valsier Peninsula",
"cost":6.8,
"population":198
}
}"""
self.assertEqual(exporter.exportFeature(feature), expected)
# test with linestring for bbox inclusion
l = QgsLineString()
l.setPoints([QgsPoint(5, 6), QgsPoint(15, 16)])
feature.setGeometry(QgsGeometry(QgsLineString(l)))
expected = """{
"type":"Feature",
"id":5,
"bbox":[5, 6, 15, 16],
"geometry":
{"type": "LineString", "coordinates": [ [5, 6], [15, 16]]},
"properties":{
"name":"Valsier Peninsula",
"cost":6.8,
"population":198
}
}"""
self.assertEqual(exporter.exportFeature(feature), expected)
# test that precision is respected
feature.setGeometry(QgsGeometry(QgsPoint(5.444444444, 6.333333333)))
exporter.setPrecision(3)
self.assertEqual(exporter.precision(), 3)
expected = """{
"type":"Feature",
"id":5,
"geometry":
{"type": "Point", "coordinates": [5.444, 6.333]},
"properties":{
"name":"Valsier Peninsula",
"cost":6.8,
"population":198
}
}"""
self.assertEqual(exporter.exportFeature(feature), expected)
feature.setGeometry(QgsGeometry(QgsPoint(5, 6)))
exporter.setPrecision(17)
# test that attribute subset is respected
exporter.setAttributes([0, 2])
self.assertEqual(exporter.attributes(), [0, 2])
expected = """{
"type":"Feature",
"id":5,
"geometry":
{"type": "Point", "coordinates": [5, 6]},
"properties":{
"name":"Valsier Peninsula",
"population":198
}
}"""
self.assertEqual(exporter.exportFeature(feature), expected)
exporter.setAttributes([1])
self.assertEqual(exporter.attributes(), [1])
expected = """{
"type":"Feature",
"id":5,
"geometry":
{"type": "Point", "coordinates": [5, 6]},
"properties":{
"cost":6.8
}
}"""
self.assertEqual(exporter.exportFeature(feature), expected)
exporter.setAttributes([])
# text excluding attributes
exporter.setExcludedAttributes([1])
self.assertEqual(exporter.excludedAttributes(), [1])
expected = """{
"type":"Feature",
"id":5,
#.........这里部分代码省略.........