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


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.