저는 파이썬과 QGIS를 처음 사용합니다. QGIS 용 파이썬 스크립트 튜토리얼을 살펴 보았습니다. 모두 기존 데이터 소스를 사용하여 새 벡터 및 래스터 레이어를 만듭니다. 예. shapefile 또는 geotiff 또는 postgis 데이터베이스 테이블.
파이썬 스크립트를 통해 QGIS 레이어를 생성 할 수 있습니까? 필요한 경우 파이썬 스크립트를 통해 새로운 기능을 생성 / 추가 / 수정할 수 있습니다. 일반적으로 점 데이터와 사용자 정의 기호가있는 벡터 레이어입니다.
이것이 가능할까요? 내가 볼 수있는 예가 있습니까?
답변
PyQGIS Cookbook에 설명 된대로 메모리 제공자 를 살펴보십시오 .
메모리 공급자는 주로 플러그인 또는 타사 앱 개발자가 사용하도록되어 있습니다. 디스크에 데이터를 저장하지 않으므로 개발자가 일부 임시 계층의 빠른 백엔드로 데이터를 사용할 수 있습니다.
# To avoid 'QVariant' is not defined error from PyQt4.QtCore import * # create layer vl = QgsVectorLayer("Point", "temporary_points", "memory") pr = vl.dataProvider() # Enter editing mode vl.startEditing() # add fields pr.addAttributes( [ QgsField("name", QVariant.String), QgsField("age", QVariant.Int), QgsField("size", QVariant.Double) ] ) # add a feature fet = QgsFeature() fet.setGeometry( QgsGeometry.fromPoint(QgsPoint(10,10)) ) fet.setAttributeMap( { 0 : QVariant("Johny"), 1 : QVariant(20), 2 : QVariant(0.3) } ) pr.addFeatures( [ fet ] ) # Commit changes vl.commitChanges()
답변
하드 디스크에 새 벡터 레이어 (.shp)를 저장하려면 QgsVectorFileWriter () 를 사용해야 합니다. 몇 가지 매개 변수가 필요하며 가장 간단한 방법은 사용중인 프로젝트의 매개 변수를 사용하는 것입니다. 이 사이트를 살펴보십시오 .
cLayer = qgis.utils.iface.mapCanvas().currentLayer()
provider = cLayer.dataProvider()
writer = QgsVectorFileWriter( "output_path_and_name.shp", provider.encoding(), provider.fields(),QGis.WKBPolygon, provider.crs() )