পাইকিজিআইএসে বাফারিং?


17

আমি কিউজিআইএসে সাধারণ পাইথন স্ক্রিপ্টগুলি করার জন্য কয়েকটি উদাহরণ সন্ধান করছি। আমি কীভাবে একটি ডেটাসেটে বাফার বিশ্লেষণ করব?

আমি ম্যানুয়াল এবং কিউজিআইএস পাইথনটিতে খুব বেশি সন্ধান করতে পারি না যা এসরি ডকুমেন্টেশনের সাথে বেশ মেলে।

উত্তর:


5

কটাক্ষপাত আছে PyQGIS Cookbook

কোনও ভেক্টর স্তরটি দিয়ে কীভাবে পুনরাবৃত্তি করা যায় তার উদাহরণ অনুসরণ করুন। জ্যামিতি অ্যাক্সেস করে আপনি বাফার () পদ্ধতি প্রয়োগ করতে পারেন। কিউআইজিআইএস এপিআইও দেখুন: http://www.qgis.org/api/classQgsGeometry.html#a98208752e1beb1a5d3a7eedffbfdb2e4


12

পাইকিজিআইজি কনসোল দ্বারা যা চান তা পেতে আপনার কাছে বিভিন্ন উপায় রয়েছে:

  1. অ্যারাগনের পরামর্শ;
  2. QgsGeometryAnalyzer শ্রেণি ব্যবহার করে:
from qgis.utils import iface
from qgis.analysis import QgsGeometryAnalyzer 
mc = iface.mapCanvas() 
layer = mc.currentLayer()
QgsGeometryAnalyzer().buffer(layer, "path_to/output.shp", 500, False, False, -1)
  1. Sextante ক্লাস ব্যবহার করে:
from sextante.core.Sextante import Sextante
Sextante.runalg("ftools:fixeddistancebuffer","input_path.shp", False, 500, 5, True, "output_path_buffer.shp")

Sextante প্যারামিটারগুলি পেতে Sextante.alghelp("ftools:fixeddistancebuffer")পাইকিউজিআইএস কনসোলে টাইপ করুন ।

আশাকরি এটা সাহায্য করবে !


11

আপনি যদি বেসিক কোড চান, আপনি চেষ্টা করতে পারেন:

#Don't forget to Toggle Editing

lyr = qgis.utils.iface.activeLayer()
provider = lyr.dataProvider()
feat= QgsFeature()
alls = provider.attributeIndexes()
provider.select(alls)

while provider.nextFeature(feat):
    buff = feat.geometry().buffer(5,2)
    lyr.dataProvider().changeGeometryValues({feat.id(): buff})

ধন্যবাদ - কিগসফিয়ারটি স্তরের নামটি রয়েছে নাকি এটির কোনও নিখুঁত পথ অন্তর্ভুক্ত করা উচিত? এবং বাফার (5,2) যে দূরত্ব?
জিআইএস ড্যানি

1
আপনি এটি লুপের জন্যও করতে পারেন এবং গিস্ট.github.com/4094707
নাথান ডব্লিউ

1
@ জিআইএসডিড্যানি কিউজেসফিজার কিউজিসে বৈশিষ্ট্য যেমন বৈশিষ্ট্য এবং জ্যামিতি সম্পর্কিত একটি ধারক শ্রেণি class স্তরটি হল Qgis.utils.iface.activeLayer () বিট, এটি বর্তমানে QGIS এ সক্রিয় স্তরটি ব্যবহার করবে।
নাথান ডাব্লু

পাইথনে বাফার করার পরে কি ইউনিটগুলি নির্দিষ্ট করা সম্ভব? আমি পয়েন্ট লেয়ারটি বাফার চেষ্টা চালিয়ে যাচ্ছি বলে আমি বিশ্বাস করি যে আমি পায়ে ইউনিট নিয়ে সিআরএস স্থাপন করেছি তবে আমি যে বাফারগুলি পাচ্ছি তা বিশাল-পয়েন্ট স্তরটি মূলত ল্যাট লম্বা কর্ড সহ সিএসভি থেকে আমদানি করা হয়েছিল তবে যখন আমি একটি ভেক্টর স্তর তৈরি করেছি এটি আমি একটি স্থানীয় সিস্টেম নির্দিষ্ট করেছি। কিছু স্পষ্টতই ভুল।
kflaw

9

শেষ উত্তরে যোগ করার জন্য কেবল একটি সামান্য জিনিস।

প্রদত্ত বিষয় সম্পর্কে একটি SEXTANTE অ্যালগরিদম অনুসন্ধান করতে, Sextante.alglist () ব্যবহার করুন। উদাহরণস্বরূপ, "বাফার" থাকা কোনও কিছুর সন্ধানের ক্ষেত্রে আপনি এটি করবেন

>>> from sextante.core.Sextante import Sextante
>>> Sextante.alglist("buffer")

এবং আপনি পাবেন:

Grid Buffer------------------------------------------>saga:gridbuffer
Grid Proximity Buffer-------------------------------->saga:gridproximitybuffer
Shapes Buffer---------------------------------------->saga:shapesbuffer
Threshold Buffer------------------------------------->saga:thresholdbuffer
Fixed distance buffer-------------------------------->ftools:fixeddistancebuffer
Variable distance buffer----------------------------->ftools:variabledistancebuffer
r.buffer - Creates a raster map layer showing buffer zones surrounding cells that contain non-NULL category values.--->grass:r.buffer
v.buffer.angle--------------------------------------->grass:v.buffer.angl
v.buffer.column - Creates a buffer around features of given type.--->grass:v.buffer.column
v.buffer.distance - Creates a buffer around features of given type.--->grass:v.buffer.distance
v.buffer.minordistance------------------------------->grass:v.buffer.minordistance

এইভাবে, আপনি কল করার জন্য অ্যালগরিদমের নামটি খুঁজে পেতে পারেন (ফলস: ফিক্সডেস্টেন্সফুফার, উপরের উত্তরে প্রস্তাবিত উদাহরণে)

আপনি আপনার স্ক্রিপ্টটি SEXTANTE তে একটি নতুন অ্যালগরিদমে পরিণত করতে পারেন। SEXTANTE ডকুমেন্টেশনে সে সম্পর্কে বিস্তারিত তথ্য রয়েছে।


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