লিনিয়ার রেফারেন্সিংয়ের জন্য এম-মান সহ কিউজিআইএস এক্সট্রাক্ট নোড


10

স্ক্লাইট ডাটাবেসে আমার একাধিক লাইনের স্ট্রিংজেডএম স্তর রয়েছে এবং আমি ভার্চেসে পরিমাপগুলি বা এম-মানগুলি কল্পনা করার চেষ্টা করছি। কিউজিআইএস-এ এটি কীভাবে করা যায় সে সম্পর্কে আমি তথ্য সন্ধান করার চেষ্টা করেছি এবং আমি যে সমস্ত সংগ্রহ করতে পেরেছি তা হ'ল লাইনস্টারিং স্তর থেকে এটি সরাসরি সম্ভব নয় এবং পয়েন্টগুলি একটি পৃথক স্তরে বের করা দরকার।

আমি আমার মাল্টলিনস্ট্রিং স্তরটির শীর্ষবিন্দু উপস্থাপন করে এমন একটি মাল্টিপয়েন্ট স্তর তৈরি করতে Vector-> Geometry Tools-> ব্যবহার করেছি Extract nodes, তবে প্রক্রিয়াটি ভার্চেসের এম-মানগুলি হারিয়ে ফেলে। আমার এম-মানগুলি পয়েন্টের একটি বৈশিষ্ট্য হিসাবে এম-মান সংরক্ষণ করে বা অন্য কিছু দ্বারা সংরক্ষণ করা দরকার?

অভ্যন্তরীণভাবে আমাদের কাছে একটি কমান্ড লাইন সরঞ্জাম রয়েছে যা প্রতিটি পয়েন্টের একটি বৈশিষ্ট্য হিসাবে সঞ্চিত এম-মানগুলির সাথে লাইনস্ট্রিংগুলিকে বিন্দু আকারে ফাইলে রূপান্তর করে এবং আমি এটি ব্যবহার করেছি যে ভার্টেক্সগুলিতে এম-মান নির্ধারিত হয়েছে এবং যা আমি ব্যবহার করতে পারি এটি যদি আমার করতে হয় তবে সম্ভব হলে এটি খুব ভাল যদি এটি সরাসরি QGIS এর ভিতরে করা যায়।

সম্পাদনা - আমি উপরে যা বলেছি তার পুনরাবৃত্তি করা, তবে এই বিষয়টি আবার জোর দিয়ে জানাচ্ছি যে আমাদের কাছে একটি কমান্ড লাইন সরঞ্জাম রয়েছে যা জিডিএল লাইব্রেরি ব্যবহার করে যে ফলাফলগুলি সন্ধান করতে পারে তা অর্জন করতে পারে, সুতরাং একটি সমাধান কেবলমাত্র একটি আংশিক উত্তর দেখায় পাইকিজিআইএস উত্তরটি আমি খুঁজছি না looking আমি একটি বিল্ট ইন সরঞ্জাম, কিউজিআইএস-এর জন্য তৈরি একটি প্লাগইন বা একটি সম্পূর্ণ স্ক্রিপ্ট যা একটি মাল্টিলাইনস্ট্রিংজেডএম বা লাইনস্ট্রিংজেড জ্যামিতি থেকে এম-মানগুলি ভিজ্যুয়ালাইজ করতে পারে (তৈরি করতে / উত্পন্ন করতে পারে না) সন্ধান করছি visual


এম মানগুলি পেতে আপনি এলআরএস প্লাগইন ব্যবহার করতে পারেন। আপনার নোডগুলি বের করতে হবে, তারপরে এলআরএস প্লাগইন বা লাইন সরঞ্জামের সাথে দূরত্ব ব্যবহার করে লাইনস্ট্রিং থেকে ব্যবস্থা গ্রহণ করুন।
জবল্ক

@ জবল্ক আমি এলআরএস এবং কিউচেইনেজ প্লাগইন চেষ্টা করেছি এবং মনে হয় যে আমি কিছু মিস করছি এবং আমি কেবল প্ল্যাগইনগুলি ভুলভাবে ব্যবহার করছি না এমন দুটি প্লাগইন নিয়মিত বিরতিতে ব্যবস্থা উত্পন্ন করার জন্য স্থাপন করা হয়েছিল seem ।
টিজে রকফেলার

এলআরএস প্লাগইন পৃষ্ঠা থেকে: - প্লাগইন ক্রমাঙ্কন সমর্থন করে, সময়ানুষ্ঠান এবং লিনিয়ার ইভেন্টগুলি তৈরি এবং পয়েন্টগুলির জন্য ব্যবস্থার গণনার গণনা - এই ওয়েবসাইট ব্লাজিক.github.io/lrs ওয়েবসাইটটি এই সাইটে LRS প্লাগইন সম্পর্কে একটি প্রশ্ন জিজ্ঞাসা করুন যদি আপনি পারেন এটা বুঝতে পারছি না।
জবল্ক

দেখে মনে হচ্ছে আপনি এলআরএস প্লাগইনটি কিছুক্ষণ না করতে পারবেন যতক্ষণ না আপনি এটিটি ক্রমাঙ্কণ করেন এবং এটিকে ক্যালিব্রেট করার জন্য আপনাকে একটি অ্যাট্রিবিউট হিসাবে সঞ্চিত ব্যবস্থা সহ একটি পয়েন্ট লেয়ারের প্রয়োজন হয় যা আমি আমার মাল্টিলাইন স্ট্রিংজেডএম থেকে পেতে চাইছি , সুতরাং আমি মনে করি না যে এটি এই পরিস্থিতিতে সহায়ক হবে।
টিজে রকফেলার

ক্রমাঙ্কণের জন্য ব্যবহার করতে আপনি আপনার লাইন বরাবর প্রতি 1000 মি পয়েন্ট তৈরি করতে পারেন। অথবা মি মানগুলি পেতে QGIS এর মধ্যে সাগা এবং গ্রাস টুলবক্সগুলিতে লাইন সরঞ্জামগুলির সাথে দূরত্বটি দেখুন।
jbalk

উত্তর:


6

আমি যা দেখতে পাচ্ছি সেগুলি থেকে এই সঠিক পরিস্থিতির কোনও বিদ্যমান সমাধান বলে মনে হচ্ছে না, তবে আমি কিউআইএসে এখনও এটি করতে সক্ষম হতে চেয়েছি, তাই আমি নিমজ্জনটিকে স্ক্রিপ্টিংয়ে নিয়ে গিয়েছিলাম।

প্রক্রিয়াকরণ অ্যালগরিদম লেখার জন্য গাইড এখানে পাওয়া যাবে https://docs.qgis.org/2.18/en/docs/user_manual/processing/scriptts.html

এই কোডটি ব্যবহার করতে প্রসেসিং সরঞ্জামবক্স খুলুন, তারপরে স্ক্রিপ্টগুলি প্রসারিত করুন, তারপরে সরঞ্জামগুলি প্রসারিত করুন। "নতুন স্ক্রিপ্ট তৈরি করুন" নির্বাচন করুন এবং স্ক্রিপ্ট উইন্ডোতে নীচে কোডটি অনুলিপি করুন এবং আটকান (হোয়াইটস্পেস সিনট্যাকটিকভাবে গুরুত্বপূর্ণ বলে অজগর কোডটি অনুলিপি করার সময় সতর্কতা অবলম্বন করুন If এটি সঠিকভাবে অনুলিপি করা হয়েছে)। আপনি যেখানেই চান এটি সংরক্ষণ করুন এবং উইন্ডোর শীর্ষে একটি সম্পাদনা স্ক্রিপ্ট বোতাম রয়েছে। এটি সংরক্ষণ করার পরে আপনি "ফাইল থেকে স্ক্রিপ্ট যুক্ত করতে পারেন" এবং স্থায়ীভাবে "ব্যবহারকারী স্ক্রিপ্টস" এর অধীনে স্ক্রিপ্টটি রাখতে পারেন।

প্রসেসিং উইন্ডো এলে ভেক্টর জ্যামিতি যুক্ত স্তরটি নির্বাচন করুন এবং রান নির্বাচন করুন। স্ক্রিপ্টটি "এক্সট্রাক্ট নোডস" এর মতো একইরকম আচরণ করে এটি ব্যতীত এটি একটি কলাম যুক্ত করে MValuesএবং অথবা ZValuesইনপুট জ্যামিতিতে কী পাওয়া যায় তার উপর নির্ভর করে।

##input_layer=vector
##output_layer=output vector

from qgis.core import QgsWKBTypes, QgsField, QgsVectorFileWriter, QgsFeature, QgsGeometry
from PyQt4.QtCore import QVariant

def addVertices( geometry, writer, inFeature ):
    coordinateSequence = geometry.coordinateSequence()
    for rings in coordinateSequence:
        for points in rings:
            for point in points:
                feature = QgsFeature( fields )
                feature.setGeometry( QgsGeometry( point ) )
                type = point.wkbType()
                attributes = inFeature.attributes()
                if QgsWKBTypes.hasM( type ):
                    attributes.append( point.m() )
                if QgsWKBTypes.hasZ( type ):
                    attributes.append(point.z())
                feature.setAttributes( attributes )
                writer.addFeature( feature )
    return

inlayer = processing.getObject( input_layer )
provider = inlayer.dataProvider()
fields = provider.fields()
geomType = QgsWKBTypes.Type(inlayer.wkbType())
outputGeomType = QgsWKBTypes.Point

if QgsWKBTypes.hasM( geomType ):
    outputGeomType = QgsWKBTypes.addM( outputGeomType )
    fields.append( QgsField( "MValue", QVariant.Double ) )

if QgsWKBTypes.hasZ( geomType ):
    outputGeomType = QgsWKBTypes.addZ( outputGeomType )
    fields.append( QgsField( "ZValue", QVariant.Double ) )

layer_options = 'SHPT=' + QgsWKBTypes.displayString(outputGeomType)
writer = QgsVectorFileWriter( output_layer, 'UTF-8', fields,  outputGeomType , inlayer.crs(), layerOptions=[layer_options] )

features = inlayer.getFeatures()
featureCount = inlayer.featureCount()
featureIndex = 0

for f in features:
    percent = ( featureIndex/float( featureCount ) ) * 100
    progress.setPercentage( percent )
    g = f.geometry().geometry()
    addVertices( g, writer, f )
    featureIndex +=1

del writer

4

কিউজিআইএস ৩.০ বা আরও নতুনর সাথে এই কাজটি তুচ্ছ। "প্রসেসিং সরঞ্জামবাক্স" এ (সিআরটিএল + Alt + টি বা প্রসেসিং -> সরঞ্জামবক্সে খুলুন) "এক্সট্র্যাক্ট এক্সট্র্যাক্টস" অনুসন্ধান করুন এবং সেই অ্যালগরিদমটি চালান।

ইনপুট স্তর হিসাবে আপনার এম বা জেডএম লাইন বা বহুভুজ জ্যামিতি নির্বাচন করুন এবং চালান।

মূল জ্যামিতিতে যা আছে তার উপর নির্ভর করে এম এবং জেড মানগুলি অক্ষর দিয়ে শীর্ষে বের করা হবে।

যদি এম মানটি অ্যাট্রিবিউট টেবিলের ক্ষেত্র হিসাবে প্রয়োজন হয়, তবে ক্ষেত্র ক্যালকুলেটর এর মত একটি এক্সপ্রেশন দিয়ে ব্যবহার করা যেতে পারে m($geometry)

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