পাইথন কমান্ডের মাধ্যমে প্রকল্প সিআরএস সেট করা সম্ভব?


10

পাইথন কমান্ডের মাধ্যমে কি কিউজিআইএস-এ কোনও প্রকল্পের সিআরএস সেট করা সম্ভব?

আমার ক্ষেত্রে ব্যবহারকারীর কিউজিআইএস খুলতে হবে, আমার লিখিত প্লাগইনটি শুরু করা উচিত এবং এই প্লাগইনটি স্থানিক ডেটা লোড করবে যার ইপসজি কোড 31467 (গাউস ক্রুয়েজার অঞ্চল 3) রয়েছে। দুর্ভাগ্যক্রমে কিউজিআইএস ডিফল্ট সিআরএস হ'ল ডাব্লুজিএস ৮৮ তাই আমি ইউনিট এবং স্কেল নিয়ে সমস্যায় পড়ি।

আমার প্রথম পদ্ধতিটি ছিল এই কোডটি ব্যবহার করা:

    my_crs = core.QgsCoordinateReferenceSystem(31467, core.QgsCoordinateReferenceSystem.EpsgCrsId)
    self.iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)

এই পরিবর্তনগুলি (ডেটা ইতিমধ্যে ভিজ্যুয়ালাইজড হওয়ার পরে) সিআরএসকে গাউস ক্রুয়েজার জোনে ৩. কমপক্ষে নীচের ডানদিকে কোণায় থাকা এসএসপি কোডটি পরিবর্তন হয়েছে has ইউনিটগুলি এখনও ডিগ্রীতে রয়েছে এবং স্কেল সম্পূর্ণ ভুল। গাউস ক্রুজারে 1: 5000 হ'ল ডাব্লু জিএস 84 এ 1: 528822376 (কিউজিআইএসে আমার ক্ষেত্রে)। প্রজেক্টগুলিতে ম্যানুয়ালি প্রকল্প সিআরএস সেট করার পরে প্রকল্পের সিআরগুলি আসলে জি কে 3 এবং স্কেল এবং ইউনিটগুলি সঠিক।

সুতরাং আমার প্রশ্ন হ'ল, আমি কি প্রকল্পটি সিআরএসের চেয়ে বেশি উপায়ে সেট করতে পারি? আমি ম্যানুয়াল উপায় এড়াতে চাই।


আমি নিম্নলিখিত কোড যুক্ত করে সমস্যার সমাধান করেছি:

qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()

এটি ইউনিটগুলিকে মিটারে সেট করে এবং স্কেলটি স্বয়ংক্রিয়ভাবে আপডেট হয়। 0 টি মিটারের জন্য দাঁড়ায়, 1 টি পায়ে, 2 ডিগ্রি এবং 3 অজানা।

উত্তর:


7

হ্যাঁ এটা সম্ভব. সোর্সপোল দ্বারা ওপেনলেয়ার্স প্লাগইনটি স্বয়ংক্রিয়ভাবে সিআরএসকে ইপিএসজি: 3857 এ সেট করে।

ওপ্লেলেয়ার_লায়ার্স.পি এবং ওপেনলেয়ার্স_প্লাগইন.পি এ দেখুন।


8

উত্তর দিতে কিছুটা দেরি করা হয়েছে, তবে যদি কোনও প্লাগইন ইনস্টল না করে গুগল থেকে সেই পৃষ্ঠাতে ফেলা হয় তবে http://www.purplelinux.co.nz এতে ভাল তথ্য সরবরাহ করে।

বেগুনি লিনাক্সের (যা ভাল কাজ করছে) উদাহরণে নিম্নলিখিতটি বোঝায়:

if iface.mapCanvas().mapRenderer().hasCrsTransformEnabled():
    my_crs = core.QgsCoordinateReferenceSystem(4326,core.QgsCoordinateReferenceSystem.EpsgCrsId)
    iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)


এবং আপনি কল করেও একটি সিআরএস তৈরি করতে পারেন:

QgsCoordinateReferenceSystem("PROPERTY:ID")

যা হবে:

QgsCoordinateReferenceSystem("EPSG:31467")

যা আইএমএইচও কোডটি আরও বেশি পঠনযোগ্য করে তোলে।


1
নোটটি কিউজিআইএস ২. এক্স এর জন্য এবং আপনি এখানে QGIS3 কোডের জন্য তালিকাভুক্ত অন্য উত্তরগুলি দেখতে পাবেন
মিস্টার বেগুনি

4

এটা ব্যবহার কর:

QgsProject.instance().setCrs(my_crs)

1
QGIS3 এর সাথে কাজ করে, যখন my_crs=QgsCoordinateReferenceSystem(4326):)
axel_ande
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.