কিউজিসে লেয়ারের ডেটার উত্স পরিবর্তন করা


18

কিউজিআইএস-এ কোনও লেয়ার ফাইলের কাছে শেপফাইলে উত্সর্গ করার কোনও উপায় আছে কীভাবে আপনি এটি একটি অর্কিজিআইএস স্তরের বৈশিষ্ট্যগুলিতে করেন? (যেমন স্তর বৈশিষ্ট্যগুলিতে যান, উত্স ট্যাব এবং তারপরে কেবল 'Set Dat Source'বোতামটি চাপুন)

আমি কিউজিআইএস-এর সমস্ত স্তরের বৈশিষ্ট্যগুলিতে চলে এসেছি এবং আমি এটি কোথাও দেখতে পাচ্ছি না ...

সম্পাদনা: আমি মন্তব্যগুলি পেয়েছি যা ব্যাখ্যা করে যে আপনি শেফফিলগুলি দিয়ে এটি করতে পারবেন না, তবে আমি যদি একটি শেফফিলের নাম পরিবর্তন করতে পারি এবং তারপরে একটি প্রাক-বিদ্যমান প্রকল্প ফাইল খোলার জন্য যা এই শেফফিলটিকে স্তর হিসাবে অন্তর্ভুক্ত করে থাকে তবে আমি হ্যান্ডলটি পেয়ে যাব খারাপ স্তরগুলির কথোপকথন, যা আমাকে চাইলে যে কোনও শেফফাইলে স্তরটি নেভিগেট করতে এবং পুনরায় উত্স করতে দেয়। আমি এটিকে অদ্ভুত বলে মনে করি যে আপনি সেই দৃশ্যে রিসোর্স করতে পারেন, তবে আপনি স্তর বৈশিষ্ট্য সংলাপ বাক্সের মাধ্যমে ম্যানুয়ালি এটি করতে পারবেন না।

উত্তর:


18

এটি এখন একটি প্লাগইন দিয়ে সহজেই করা যায়:

changeDataSource

https://geogear.wordpress.com/2015/09/30/changedatasource-plugin-release-1-0/

এটি একটি বোতাম যুক্ত করে যখন আপনি কোনও ভেক্টর স্তর "চেঞ্জ ভেক্টর ডেটাসোর্স" ক্লিক করুন, ঠিক তত সহজ অর্কের মতো।


অত্যন্ত কার্যকারিতা, আমি চাই যে মূল কার্যকারিতা ছিল, যদিও!
ইলিশার

ভাল সমাধান! এটি জিআইএসবিহীন লোকদের পক্ষে ব্যবহারের পক্ষে যথেষ্ট সহজ।
ak112358

দুর্ভাগ্যক্রমে এই বৈশিষ্ট্যটি কাজ করবে না যদি আপনি যে ডেটাসোর্সটিতে স্যুইচ করতে চান সেটি কোনও ESRI ফাইল জিওডাটাবেজে (ওপেন ফাইলজিডিবি এর মাধ্যমে) থাকে যেহেতু পরবর্তী পপ আপ উইন্ডোতে ডেটা টাইপটি তালিকাভুক্ত না হয়।
ব্যবহারকারী 25644

10

বর্তমানে এটি সম্ভব নয় তবে এর জন্য টিকিট রয়েছে is তবে আপনি .qgs (প্রকল্প ফাইল) এ ডেটাসোর্স পরিবর্তন করতে পারেন এবং প্রকল্পটি আবার খুলতে পারেন।

<projectlayers layercount="1">
    <maplayer minimumScale="-4.65661e-10" maximumScale="1e+08" minLabelScale="0" maxLabelScale="1e+08" geometry="Point" type="vector" hasScaleBasedVisibilityFlag="0" scaleBasedLabelVisibilityFlag="0">
        <id>graduated_classes20130603233806207</id>
        <datasource>../Downloads/Grauated_classes_test_sample/graduated_classes.shp</datasource>
        <title></title>
        <abstract></abstract>

<datasource>লাইন পরিবর্তন করুন


4
আপনি কি টিকিটের সাথে লিঙ্ক করতে পারবেন যাতে অন্যরা জানতে পারে / কখন এটি সম্পূর্ণ হবে?
রায়ানকডালটন-অফগ্রিড গ্রিডম্যাপস

সর্বদা ভাল যখন আপনি বলেন যে সেখানে একটি আছে তবে জিনিসটি খুঁজে পাবে না :)
নাথান ডাব্লু

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

1
ডস ব্যাচের কী কী যা প্রজেক্ট ফাইলে উল্লেখ করা একটি ডামি একটির কাছে আলাদা আলাদা শেফফায়ালের একটি অনুলিপি করে, তারপরে প্রকল্প ফাইলটি শুরু করে। স্তর সিআরএস বা এক্সটেন্টগুলি আলাদা হলে কী হয় তা আমি জানি না।
AndreJ

1
কীভাবে ডেটা যুক্ত করা যায়, স্টাইল করুন এবং লেবেল কীভাবে তাদের শেখানো সম্ভবত সহজতর easier আপনি স্টাইলটি অনুলিপি করতে পারেন এবং এটি পেস্ট করতে পারেন যাতে এটি সহজ হওয়া উচিত, লেবেল সম্পর্কে জানেন না। যেহেতু আপনি যা বর্ণনা করছেন তা সত্যিই জিআইএস বা সম্পাদনা নয় যা এতটা কঠিন হওয়া উচিত নয়। বিকল্প হতে পারে উত্স প্রতিস্থাপনের জন্য একটি স্বতন্ত্র প্রোগ্রাম তৈরি করার জন্য একটি কিউজিএস ফাইল কেবল পাঠ্য
আন্তোনিও লোকান্দ্রো

3

অজগরটিতে QgsVectorLayer.writeLayerXML এবং QgsVectorLayer.readLayerXML ব্যবহার করে সরাসরি ডাটাসোর্সটি সংশোধন করা সম্ভব এবং নীচের উদাহরণ থেকে পুনরায় লোডিং স্তরটিতে DOM ডকুমেন্টটি সংশোধন করা সম্ভব।

from PyQt4.QtXml import *
from qgis.core import *
from PyQt4.QtXml import *

layer = self.iface.legendInterface().currentLayer()
newDatasource = "NEW DATASOURCE STRING" # get datasource from layer properties general     tab
newDatasourceProvider = "ogr" # possible values: (ogr, )

# read layer DOM definition
XMLDocument = QDomDocument("style")
XMLMapLayers = QDomElement()
XMLMapLayers = XMLDocument.createElement("maplayers")
XMLMapLayer = QDomElement()
XMLMapLayer = XMLDocument.createElement("maplayer")
layer.writeLayerXML(XMLMapLayer,XMLDocument)

# modify DOM element with new layer reference
XMLMapLayer.firstChildElement("datasource").firstChild().setNodeValue(newDatasource)
XMLMapLayer.firstChildElement("provider").firstChild().setNodeValue(newDatasourceProvider)
XMLMapLayers.appendChild(XMLMapLayer)
XMLDocument.appendChild(XMLMapLayers)

# reload layer definition
self.layer.readLayerXML(XMLMapLayer)
self.layer.reload()

# apply to canvas and legend
self.iface.actionDraw().trigger()
self.iface.legendInterface().refreshLayerSymbology(self.layer)

বৈশিষ্ট্যটিকে পিকলেয়ার প্লাগইনে অন্তর্ভুক্ত করা হয়েছে যা ক্লিক স্তর এবং বৈশিষ্ট্যটিতে ক্রিয়া সম্পাদন করতে দেয়


2

রিলিজ থেকে 2.10 কিউগিস এপি- তে কিউএসভেেক্টর লাইয়ার :: সেটডেটা সোর্স পদ্ধতি অন্তর্ভুক্ত রয়েছে :

void QgsVectorLayer::setDataSource  (   QString     dataSource,
        QString     baseName,
        QString     provider,
        bool    loadDefaultStyleFlag = false 
    )       

Update the data source of the layer.

The layer's renderer and legend will be preserved only if the geometry type of the new data source matches the current geometry type of the layer.

Parameters
    dataSource  new layer data source
    baseName    base name of the layer
    provider    provider string
    loadDefaultStyleFlag    set to true to reset the layer's style to the default for the data source 

1

আপনি যদি শেফফিলগুলি নিয়ে কাজ করেন তবে না (বিন্যাসের নির্দিষ্ট বৈশিষ্ট্যের কারণে)। আপনি যদি পোস্টজিআইএস বা স্প্যাটিয়ালাইট স্তরগুলি ব্যবহার করেন তবে একটি একক ভেক্টর স্তর (জ্যামিতি_কলামগুলি সারণী) একাধিক বৈশিষ্ট্য টেবিলের সাথে এবং বিপরীত (বিদেশী কী বা দৃশ্যের সাথে) সংযুক্ত হতে পারে।

এটি গ্রাস জিআইএস-এ স্থানীয়ভাবে প্রয়োগ করা হয়েছে, একটি ভেক্টর স্তর এবং একাধিক ডেটা উত্স পরিবর্তনের জন্য একাধিক সারণী ( v.to.db)

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