本文整理汇总了Python中qgis.core.QgsFeature.write方法的典型用法代码示例。如果您正苦于以下问题:Python QgsFeature.write方法的具体用法?Python QgsFeature.write怎么用?Python QgsFeature.write使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsFeature
的用法示例。
在下文中一共展示了QgsFeature.write方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testWFST10
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import write [as 别名]
def testWFST10(self):
"""Test WFS-T 1.0 (read-write)"""
endpoint = self.__class__.basetestpath + '/fake_qgis_http_endpoint_WFS_T_1.0'
with open(sanitize(endpoint, '?SERVICE=WFS?REQUEST=GetCapabilities?VERSION=1.0.0'), 'wb') as f:
f.write("""
<WFS_Capabilities version="1.0.0" xmlns="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc">
<FeatureTypeList>
<Operations>
<Query/>
<Insert/>
<Update/>
<Delete/>
</Operations>
<FeatureType>
<Name>my:typename</Name>
<Title>Title</Title>
<Abstract>Abstract</Abstract>
<SRS>EPSG:4326</SRS>
<LatLongBoundingBox minx="-71.123" miny="66.33" maxx="-65.32" maxy="78.3"/>
</FeatureType>
</FeatureTypeList>
</WFS_Capabilities>""")
with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=1.0.0&TYPENAME=my:typename'), 'wb') as f:
f.write("""
<xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my">
<xsd:import namespace="http://www.opengis.net/gml"/>
<xsd:complexType name="my:typenameType">
<xsd:complexContent>
<xsd:extension base="gml:AbstractFeatureType">
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" name="intfield" nillable="true" type="xsd:int"/>
<xsd:element maxOccurs="1" minOccurs="0" name="longfield" nillable="true" type="xsd:long"/>
<xsd:element maxOccurs="1" minOccurs="0" name="stringfield" nillable="true" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0" name="geometryProperty" nillable="true" type="gml:PointPropertyType"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="typename" substitutionGroup="gml:_Feature" type="my:typenameType"/>
</xsd:schema>
""")
vl = QgsVectorLayer(u"url='http://" + endpoint + u"' typename='my:typename' version='1.0.0'", u'test', u'WFS')
assert vl.isValid()
self.assertEqual(vl.dataProvider().capabilities(),
QgsVectorDataProvider.AddFeatures +
QgsVectorDataProvider.ChangeAttributeValues +
QgsVectorDataProvider.ChangeGeometries +
QgsVectorDataProvider.DeleteFeatures)
(ret, _) = vl.dataProvider().addFeatures([QgsFeature()])
assert not ret
self.assertEqual(vl.featureCount(), 0)
assert not vl.dataProvider().deleteFeatures([0])
self.assertEqual(vl.featureCount(), 0)
assert not vl.dataProvider().changeGeometryValues({0: QgsGeometry.fromWkt('Point (3 50)')})
assert not vl.dataProvider().changeAttributeValues({0: {0: 0}})
# Test addFeatures
with open(sanitize(endpoint, '?SERVICE=WFS&POSTDATA=<Transaction xmlns="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0.0" service="WFS" xsi:schemaLocation="http://my http://fake_qgis_http_endpoint?REQUEST=DescribeFeatureType&VERSION=1.0.0&TYPENAME=my:typename" xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml"><Insert xmlns="http://www.opengis.net/wfs"><typename xmlns="http://my"><intfield xmlns="http://my">1</intfield><longfield xmlns="http://my">1234567890123</longfield><stringfield xmlns="http://my">foo</stringfield><geometryProperty xmlns="http://my"><gml:Point srsName="EPSG:4326"><gml:coordinates cs="," ts=" ">2,49</gml:coordinates></gml:Point></geometryProperty></typename></Insert></Transaction>'), 'wb') as f:
f.write("""
<wfs:WFS_TransactionResponse version="1.0.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc">
<wfs:InsertResult>
<ogc:FeatureId fid="typename.1" />
</wfs:InsertResult>
<wfs:TransactionResult>
<wfs:Status>
<wfs:SUCCESS/>
</wfs:Status>
</wfs:TransactionResult>
</wfs:WFS_TransactionResponse>
""")
f = QgsFeature()
f.setAttributes([1, 1234567890123, 'foo'])
f.setGeometry(QgsGeometry.fromWkt('Point (2 49)'))
(ret, fl) = vl.dataProvider().addFeatures([f])
assert ret
self.assertEqual(fl[0].id(), 1)
self.assertEqual(vl.featureCount(), 1)
values = [f['intfield'] for f in vl.getFeatures()]
self.assertEqual(values, [1])
values = [f['longfield'] for f in vl.getFeatures()]
self.assertEqual(values, [1234567890123])
values = [f['stringfield'] for f in vl.getFeatures()]
self.assertEqual(values, ['foo'])
#.........这里部分代码省略.........