ডুপ্লিকেট তৈরি না করে কিউজিআইএস-এ টেবিলের বৈশিষ্ট্যযুক্ত এক্সেল থেকে ডেটাতে যোগ দেওয়া?


15

আমার কিউজিআইএস-এ দুটি খালি ক্ষেত্রের সাথে একটি বিশিষ্ট টেবিল রয়েছে।

Example_1

আমি কিজিআইএস-এ আমার খালি ক্ষেতগুলি পূরণ করতে একটি এক্সেল ডাটাবেস আমদানি করতে চাই। আমার এক্সেল ফাইলটি আমার কিউজিআইএস বৈশিষ্ট্য টেবিলের কলামগুলির সাথে মেলে।

Example_2

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

Example_3

সদৃশ তৈরি না করে আমি কীভাবে আমার অ্যাট্রিবিউট টেবিলটিতে আমার এক্সেল ফাইলটিতে যোগদান করতে পারি?


3
এই টিউটোরিয়ালটি একবার দেখুন: পারফর্মিং টেবিল যোগ দেয়
আরমোরার

উত্তর:


13

জীবনকে সহজ করার জন্য আমি নিম্নলিখিত জিনিসগুলি করব:

আপনি এটি করার আগে আপনার শেফফিলের একটি ব্যাকআপ তৈরি করুন।

  1. আপনার শেফফাইলে, স্তর বৈশিষ্ট্য / ক্ষেত্রগুলিতে যান এবং সম্পাদনা মোডটি চালু করুন।
  2. আইডি ক্ষেত্র বাদে সমস্ত ক্ষেত্র নির্বাচন করুন
  3. আইডি ফিল্ড বাদে সমস্ত ক্ষেত্র মুছুন
  4. আপনার সিএসভি ফাইলকে কিউজিআইএস-এ একটি স্তর হিসাবে যুক্ত করুন (প্রধান মেনু / স্তর / স্তর যোগ করুন / সীমাবদ্ধ পাঠ্য স্তর যুক্ত করুন)এখানে চিত্র বর্ণনা লিখুন (কোনও জ্যামিতি চয়ন করবেন না)
  5. আপনার শেফফাইলে, বৈশিষ্ট্য নির্বাচন করুন / যোগ দিন এবং উত্স এবং টার্গেটের জন্য দুটি আইডি ক্ষেত্র চয়ন করুন। যেমন এই প্রশ্নের অন্যান্য উত্তরে বর্ণিত।
  6. আপনার পরিবর্তিত শেফিল ফাইল সংরক্ষণ করুন।

এখানে চিত্র বর্ণনা লিখুন

এটি আমি যে ক্ষেত্রের ট্যাবটি উল্লেখ করছি

এখানে চিত্র বর্ণনা লিখুন

অপ্রয়োজনীয় ক্ষেত্রটি মোছার আগে এবং পরে সম্পাদনা টগল করতে ভুলবেন না


13

আপনি আকৃতির ফাইলটিতে এক্সেল ফাইলটিতে যোগ দিতে চাইবেন। আপনি এগুলিতে একটি সাধারণ বৈশিষ্ট্যে যোগ দিন এবং ফলাফলটি একটি যুক্ত স্তর হবে যেখানে প্রতিটি রেকর্ড শেফফাইল এবং এক্সেল ফাইল উভয়ের বৈশিষ্ট্য ধারণ করে।

ঠিক আছে প্রথমে আপনি আপনার এক্সেল ফাইল এবং আপনার ভেক্টরটি পরে স্তরগুলিতে লোড করুন। আমি তৈরি কিছু পরীক্ষার ডেটা ব্যবহার করেছি তবে আপনার সেটআপটি নীচের মত দেখতে হবে। এখানে চিত্র বর্ণনা লিখুন

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

এখানে চিত্র বর্ণনা লিখুন

কীভাবে এটি করবেন তা আপনাকে ধাপে ধাপে দেখানোর জন্য কয়েকটি কয়েকটি সহজ টিউটোরিয়াল এখানে রয়েছে:

https://www.mapbox.com/tilemill/docs/guides/joining-data/

http://maps.cga.harvard.edu/qgis/wkshop/join_csv.php

http://qgis.spatialthoughts.com/2012/03/using-tabular-data-in-qgis.html

কীজিআইএস-এ কোনও শেফফিলের অ্যাট্রিবিউট টেবিলের সাথে কীভাবে বাহ্যিক টেবিলগুলিতে যোগদান করবেন?

http://www.digital-geography.com/qgis-tutorial-ii-how-to-join-data-with-shapefiles/#.Vs9vpmHXKUk

এবং টিউটোরিয়াল আরমোরার মন্তব্যগুলিতে উল্লেখ করেছেন।


আমি টিপটোরিয়ালটি ম্যাপবক্স / ফটাইলমিল / ডকস / গাইডস / জয়েন্টিং- ডেটাটি দেখেছি , যাইহোক , খুব দরকারী। তবে আমি আমার ডিবিএফ ফাইলটি আমার শেপফাইলে যোগ দিতে পারছি না। এটি আমার অবাক করে দেয় কারণ আমার টেবিলের কাঠামো দুটিই পুরোপুরি মেলে। আমি মনে করি «যোগদানের ক্ষেত্র» এবং "লক্ষ্য ক্ষেত্র" miss আপনি আরও বিশদ যুক্ত করতে পারেন দয়া করে?
লরেন্ট রবিটেল-লেনেস

1
@ লরেন্ট রবিটেল-লেনেস আমি আরও পোস্ট ধাপে গাইডের সাথে আমার পোস্ট আপডেট করেছি। আমার পদক্ষেপগুলি সঠিক ছিল তা নিশ্চিত করার জন্য আমি বহুভুজ শেফফাইলে একটি পরীক্ষার এক্সেল ফাইলটিতে যোগদান করেছি।
ed.hank

আমি আমার এক্সেল ফাইলটি QGIS এ সঠিকভাবে যোগদান করতে পেরেছি। আমি পর্যবেক্ষণ করেছি যে «join» বিকল্পটি বৈশিষ্ট্য সারণীতে একটি নতুন ক্ষেত্র যুক্ত করে। আমি ভুল হলে আমাকে সংশোধন করুন, তবে আমার অ্যাক্সেস ফাইল থেকে ডেটা আমার অ্যাট্রিবিউট টেবিলের খালি ক্ষেত্রে যুক্ত করা অসম্ভব বলে মনে হচ্ছে।
লরেন্ট রবিটেল-লাইনেস

1
আপনার যদি ফাঁকা ক্ষেত্র থাকে, তবে আপনি সারণীতে সদ্য যোগদান হওয়া ক্ষেত্র থেকে ক্ষেত্রটিতে পপুলেশন করতে ফিল্ড ক্যালকুলেটরটি ব্যবহার করেন।
ed.hank

10

কেবল অন্য পদ্ধতি যুক্ত করতে আপনি একটি প্রকল্প ম্যাক্রো সেট আপ করতে পারেন যা লোড হওয়ার পরে:

  1. স্বয়ংক্রিয়ভাবে আপনার সিএসভিতে আপনার শেফফিলায় যোগ দেয়
  2. ক্ষেত্র IP1এবং IP2ক্ষেত্র আপডেট করে
  3. যোগ করা ক্ষেত্রগুলি কেবল শেফফিলের ক্ষেত্রগুলি (উদাহরণস্বরূপ কোনও নকল) ছেড়ে দেয়

প্রথমে একটি প্রকল্প তৈরি করুন যদি আপনি ইতিমধ্যে এটি না করে থাকেন এবং তারপরে টুলবারে যান:

প্রকল্প> প্রকল্পের সম্পত্তি ...> ম্যাক্রো

তারপরে def openProject():ফাংশনে নীচের কোডটি ব্যবহার করুন এবং আপনার স্তরগুলির সাথে এবং ক্ষেত্রগুলিতে আপনি যোগদান করতে চান তার নাম লিখুন। আমি ফিল্ডের সাথে যথাক্রমে আমার শেফফিল এবং সিএসভি ফাইলের জন্য "উদাহরণ" এবং "স্প্রেডশিট" ব্যবহার করেছি ID:

from PyQt4.QtCore import *
import qgis
from qgis.core import QgsMapLayerRegistry, QgsVectorJoinInfo

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    # Change to your shapefile name
    if layer.name() == "Example":
        qgis.utils.iface.setActiveLayer(layer)
        shp = qgis.utils.iface.activeLayer()

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    # Change to your csv name
    if layer.name() == "spreadsheet":
        qgis.utils.iface.setActiveLayer(layer)
        csv = qgis.utils.iface.activeLayer()

# Set up join parameters
shpField='ID'
csvField='ID'
joinObject = QgsVectorJoinInfo()
joinObject.joinLayerId = csv.id()
joinObject.joinFieldName = csvField
joinObject.targetFieldName = shpField
shp.addJoin(joinObject)

# Define fields to update and joined fields to copy values from
ip1 = shp.fieldNameIndex('IP1') 
ip1_join = shp.fieldNameIndex('spreadsheet_IP1')
ip2 = shp.fieldNameIndex('IP2') 
ip2_join = shp.fieldNameIndex('spreadsheet_IP2')

shp.startEditing()
for feat in shp.getFeatures():
    shp.changeAttributeValue(feat.id(), ip1, feat.attributes()[ip1_join])
    shp.changeAttributeValue(feat.id(), ip2, feat.attributes()[ip2_join])
shp.commitChanges()

# Remove join 
shp.removeJoin(csv.id())

প্রকল্প ম্যাক্রো

নিশ্চিত করুন যে স্তরগুলি যোগদান না করেছে , প্রকল্পটি সংরক্ষণ করুন এবং সরঞ্জামদণ্ডে গিয়ে ম্যাক্রো সক্ষম করুন :

সেটিংস> সাধারণ> ম্যাক্রোগুলি সক্ষম করুন


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

সিএসভি ফাইল সম্পাদনা করা হচ্ছে

ফলাফল


7

আমার পরামর্শটি হল আপনার এক্সেল ফাইলটি সম্পাদনা করতে এবং .dbf ফাইল তৈরি করতে ওপেন সোর্স LibreOffice / ওপেন অফিস ব্যবহার করুন। আমি আপনার জন্য পরীক্ষার ওয়ার্কবুক প্রস্তুত। টেস্ট ওয়ার্কবুক - লিঙ্ক

  1. লিবার অফিস / ওপেন অফিসে ফাইল খুলুন।
  2. আপনার এক্সেল ফাইল থেকে "এক্সেল" শীট ডেটাতে আটকান।
  3. আপনার .dbf ফাইল থেকে "ডিবিএফ" পত্রকের ডেটাতে পেস্ট করুন (কেবল আইডি, এক্স, ওয়াই পেস্ট করুন) (আইপি 1, আইপি 2 মানগুলি স্বয়ংক্রিয়ভাবে যুক্ত হবে)।
  4. Name.dbf ফাইল হিসাবে সংরক্ষণ করুন (যেখানে নামটি আপনার আকৃতির ফাইলের নামের মতো)।

কিউজিআইএস-এ সদৃশ ছাড়াই টেবিলের ফলাফল: এখানে চিত্র বর্ণনা লিখুন


5

কেন সেখানে খালি মাঠ শুরু? আপনি কি খালি ক্ষেত্র ছাড়াই শুরু করতে পারেন এবং যোগদানের জন্য প্রস্তুত দুটি কলাম ব্যবহার করতে পারেন? আমি মনে করি এটি সহজতম পন্থা। হয় সেগুলি বা আর্কজিআইএসে "লোড" সরঞ্জামের অনুরূপ একটি সরঞ্জাম সন্ধান করুন।

https://desktop.arcgis.com/en/arcmap/latest/extensions/production-mapping/loading-data-into-a-geodatabase.htm

আপনি যদি কোনও জিওডাটাবেস ব্যবহার না করে থাকেন তবে আমি এটির জন্য সুপারিশ করছি।


আমি জিওডাটাবেস ব্যবহার করছি না। আসলে আমি এর সাথে ফিমিলিয়ার নই।
লরেন্ট রবিটেল-লেনেস

1
@ LaurentRobitaille-Lainesse আমি একটি নতুন ফাইল জিওডাটাবেস তৈরি করার পরামর্শ দিই, তারপরে এর মধ্যে একটি নতুন বৈশিষ্ট্য শ্রেণি এবং এটি আপনার ডেটা সংরক্ষণ করার জন্য ব্যবহার করি। আমি জিওডাটাবেসস এবং বৈশিষ্ট্য শ্রেণীর উপর এবং আমরা কেন সেগুলি ব্যবহার করি, তারা শেফফায়ালের বাইরে কী অফার করে সে সম্পর্কে কিছুটা সংক্ষিপ্ত গবেষণা করার পরামর্শ দিই।
স্টেলা

4

.DBF (ডাটাবেস ফাইল) এ গুণযুক্ত দ্বারা .shp ফাইল সমর্থন যেহেতু ডুপ্লিকেট ছাড়াই যোগদানের সরাসরি উপায় আছে কিনা তা আমি জানি না। এই ডিবিএফটির দৈর্ঘ্য এবং নির্ভুলতার বিশদ সহ কলামের ধরণের যেমন পূর্ণসংখ্যা, বাস্তব, স্ট্রিং ইত্যাদির ঘোষণা রয়েছে। CSV ফাইলটিতে কেবল কোনও প্রকার ঘোষিত না করেই সাধারণ কলাম থাকে। আপনার ফাইলটি কত বড় তা আমি জানি না। আমার জন্য, আমি সদৃশ ক্ষেত্রগুলি এবং তারপরে সাধারণ সূত্র সহ ফিল্ড ক্যালক্লেটর ব্যবহার করব :

আসল ক্ষেত্র_এক্স = সদৃশ ক্ষেত্র_ x

তারপরে সেই সমস্ত সদৃশ ক্ষেত্র (কিউজিআইএস বা ডাটাবেস প্রোগ্রামের মাধ্যমে) মুছুন


3

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

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