প্রোগ্রামালিমে কীভাবে একটি নতুন খালি ভেক্টর স্তর তৈরি করবেন?


21

আমি পাইথন এবং কিউজিআইএসে নতুন। আমি কিউজিআইএস-এর জন্য পাইথন স্ক্রিপ্টগুলির কয়েকটি টিউটোরিয়াল দেখেছি। এগুলির সমস্ত কিছু বিদ্যমান ডেটা উত্স সহ নতুন ভেক্টর এবং রাস্টার স্তর তৈরি করে create যেমন। শেফফাইল বা জিওটিফ বা পোস্টগিস ডাটাবেস টেবিল।

অজগর স্ক্রিপ্টের মাধ্যমে কি কিউজিআইএস স্তর তৈরি করা সম্ভব, যেখানে প্রয়োজনীয়তা দেখা দেওয়ার সাথে সাথে আমি পাইথন স্ক্রিপ্টের মাধ্যমে নতুন বৈশিষ্ট্যগুলি তৈরি / যুক্ত / সংশোধন করতে পারি। এটি সাধারণত পয়েন্ট ডেটা এবং কাস্টম প্রতীক সহ একটি ভেক্টর স্তর হবে।

এটা কি সম্ভব হবে? আমি উদাহরণস্বরূপ তাকান করতে পারেন?

উত্তর:


19

পাইকিউজিআইএস কুকবুকে বর্ণিত মেমরি সরবরাহকারীর দিকে একবার নজর দিন

মেমরি সরবরাহকারী মূলত প্লাগইন বা তৃতীয় পক্ষের অ্যাপ্লিকেশন বিকাশকারীদের দ্বারা ব্যবহার করার উদ্দেশ্যে। এটি ডিস্কে ডেটা সঞ্চয় করে না, বিকাশকারীদের কিছু অস্থায়ী স্তরগুলির জন্য দ্রুত ব্যাকএন্ড হিসাবে এটি ব্যবহার করার অনুমতি দেয়।

# 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()

উত্তরের জন্য আপনাকে ধন্যবাদ, এটি অবশ্যই সহায়ক ছিল। তবে স্ক্রিপ্টটি ব্যবহার করার সময় আমি নিম্নলিখিত ত্রুটিটি পেয়েছি। "NameError: 'QVariant' নামটি সংজ্ঞায়িত করা হয়নি" আমি "addAttributes" অংশটি রেখে দিয়েছি এবং মানচিত্রে একটি বিন্দু রাখতে পেরেছি, সুতরাং এটি কার্যকর, আপনাকে ধন্যবাদ। আমি উবুন্টু 12.04 এবং কিউজিআইএস 1.8.0-লিসবোয়া ব্যবহার করছি তবে উল্লিখিত ত্রুটির কারণ কী হতে পারে?
থুনস হেডেনরিচ

1
দেখে মনে setAttributeMapহচ্ছে এখন আর কিউগস ফিচার ক্লাসের পদ্ধতি নয়, সুতরাং এই সমাধানটি সর্বাধিক সাম্প্রতিক (এর 2016) কিউজিআইএস-এর জন্য কাজ করে না।
স্পেসডম্যান

4

আপনি যদি আপনার হার্ড ডিস্কে একটি নতুন ভেক্টর স্তর (.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() )

1
তবে এটি ফাঁকা .shpfile তৈরি করছে i আমি যদি বিদ্যমান শেফফিলিকে নির্দিষ্ট পথে সংরক্ষণ করতে চাই তবে আমি কীভাবে এটি করতে পারি?
ব্যবহারকারী 99
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.