পাইথন কনসোল থেকে বহুভুজগুলি কীভাবে আঁকবেন?


14

আমি পাইকিজিআইএস কুকবুকের জ্যামিতি পরিচালনা সংক্রান্ত পৃষ্ঠাটি পরিদর্শন ও পুনর্বিবেচনা করছি: http://docamentation.qgis.org/2.0/en/docs/pyqgis_developer_cookbook/geometry.html তবে কীভাবে পাবেন তা নির্ধারণ করতে পারছি না পাইথন কনসোল থেকে বহুভুজ আঁকতে। কেউ সাহায্য করতে পারেন?

উত্তর:


26

এটা সত্যিই জটিল নয়, তাকান মেমরি প্রদানকারী মধ্যে ভেক্টর :

  • একটি বিন্দু QgsPoint(x,y)এবং দিয়ে তৈরি করা হয়QgsGeometry.fromPoint(QgsPoint(x,y))
  • একটি লাইন দুটি পয়েন্ট দিয়ে তৈরি করা হয়: QgsGeometry.fromPolyline([QgsPoint(x1,y1),QgsPoint(x2,y2)]))
  • একটি বহুভুজ পয়েন্টের একটি তালিকা তৈরি করা হয়: QgsGeometry.fromPolygon([[QgsPoint(x1,y1),QgsPoint(x2,y2), QgsPoint(x3,y3)]])

1) দুটি পয়েন্ট:

# create a memory layer with two points
layer =  QgsVectorLayer('Point', 'points' , "memory")
pr = layer.dataProvider() 
# add the first point
pt = QgsFeature()
point1 = QgsPoint(50,50)
pt.setGeometry(QgsGeometry.fromPoint(point1))
pr.addFeatures([pt])
# update extent of the layer
layer.updateExtents()
# add the second point
pt = QgsFeature()
point2 = QgsPoint(100,150)
pt.setGeometry(QgsGeometry.fromPoint(point2))
pr.addFeatures([pt])
# update extent
layer.updateExtents()
# add the layer to the canvas
QgsMapLayerRegistry.instance().addMapLayers([layer])

এখানে চিত্র বর্ণনা লিখুন

2) দুটি পয়েন্টকে সংযুক্ত রেখা

layer =  QgsVectorLayer('LineString', 'line' , "memory")
pr = layer.dataProvider() 
line = QgsFeature()
line.setGeometry(QgsGeometry.fromPolyline([point1,point2]))
pr.addFeatures([line])
layer.updateExtents()
QgsMapLayerRegistry.instance().addMapLayers([layer])

এখানে চিত্র বর্ণনা লিখুন

3) একটি বহুভুজ পয়েন্ট আচ্ছাদন

layer =  QgsVectorLayer('Polygon', 'poly' , "memory")
pr = layer.dataProvider() 
poly = QgsFeature()
points = [point1,QgsPoint(50,150),point2,QgsPoint(100,50)]
# or points = [QgsPoint(50,50),QgsPoint(50,150),QgsPoint(100,150),QgsPoint(100,50)] 
poly.setGeometry(QgsGeometry.fromPolygon([points]))
pr.addFeatures([poly])
layer.updateExtents()
QgsMapLayerRegistry.instance().addMapLayers([layer])

এখানে চিত্র বর্ণনা লিখুন

-

কিউজিসআইএস 3.0 এবং এর পরে পরিবর্তনসমূহ:

কিউজিআইএস ৩.০ এবং পরবর্তী সময়ে উপরের কর্মপ্রবাহটি এখনও সঠিক, তবে নির্দিষ্ট ফাংশন পরিবর্তিত হয়েছে। Https://qgis.org/api/api_break.html দেখুন

উপরের কোডটি আপডেট করতে নিম্নলিখিত ফাংশনগুলি পরিবর্তন করুন:

QgsPoint -> QgsPointXY
QgsfromPoint -> QgsfromPointXY
QgsfromPolyline -> QgsfromPolylineXY
QgsfromPolygon -> QgsfromPolylineXY
QgsfromPolyline -> QgsfromPolylineXY
QgsMapLayerRegistry -> QgsProject

কোডের জন্য আপনাকে অনেক ধন্যবাদ। আমি ভাবছিলাম যে কোড চালানোর পরে আমি কীভাবে সিআরএস নির্বাচন ডায়ালগ থেকে মুক্তি পাব?
— ওয়ান্নিক

আমি কীভাবে স্টাইল যুক্ত করতে পারি?
— cjhangir

3

কেবল স্তর সংজ্ঞাতে সিআরএস নির্বাচন করুন: QgsVectorLayer('Polygon?crs=epsg:2154', 'poly' , "memory")উদাহরণস্বরূপ (এখানে ইপিএসজি 2154 মেট্রোপলিটন ফ্রান্সের ল্যামবার্ট 93 প্রক্ষেপণের জন্য, তবে আপনি যা খুশি রাখতে পারেন)


আমি কীভাবে স্টাইল যুক্ত করতে পারি?
— cjahangir
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.