ogr2ogr একাধিক শেফফিলগুলি একত্রিত করে: -nln ট্যাগের উদ্দেশ্য কী?


11

সাব-ফোল্ডারগুলির মাধ্যমে পুনরাবৃত্তভাবে পুনরাবৃত্তি করতে এবং সমস্ত শেফফিলগুলিকে একক মধ্যে একীভূত করার জন্য প্রাথমিক স্ক্রিপ্টটি হ'ল:

#!/bin/bash
consolidated_file="./consolidated.shp"
for i in $(find . -name '*.shp'); do
    if [ ! -f "$consolidated_file" ]; then
        # first file - create the consolidated output file
        ogr2ogr -f "ESRI Shapefile" $consolidated_file $i
    else
        # update the output file with new file content
        ogr2ogr -f "ESRI Shapefile" -update -append $consolidated_file $i
    fi
done

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

ogr2ogr -f "ESRI Shapefile" -update -append $consolidated_file $i -nln merged

ডকুমেন্টেশন অনুযায়ী এটি বলে:

নতুন স্তরে একটি বিকল্প নাম বরাদ্দ করুন

এবং আমি লক্ষ্য করেছি এটি "মার্জড" নামে একটি অস্থায়ী শেফফিল তৈরি করে এবং লুপের শেষে ফাইলটি আমি মার্জ হওয়া শেষ শেফফাইলের অনুরূপ।

আমি বুঝতে পারছি না কেন আমার এটি দরকার? কারণ আমি এই ট্যাগটি ছাড়াই সফলভাবে মার্জ করতে পেরেছি।

উত্তর:


19

GDAL এর জন্য এমন ডেটাস্টোর রয়েছে যাতে স্তর রয়েছে। কিছু ডেটাস্টোর যেমন ডাটাবেসগুলি বা জিএমএল, বেশ কয়েকটি স্তর ধারণ করতে পারে তবে শেপফায়ালের মতো কিছু অন্যান্যতে কেবল একটি স্তর থাকতে পারে।

আপনি উদাহরণস্বরূপ জিওপ্যাকেজ ড্রাইভারটি পরীক্ষা করতে পারেন যদি আপনি কোনও ডায়ালস্টোরের সাথে -nln স্যুইচ না ব্যবহার করেন যা অনেক স্তর থাকতে পারে what

ogr2ogr -f gpkg merged.gpkg a.shp
ogr2ogr -f gpkg -append -update merged.gpkg b.shp

ogrinfo merged.gpkg
INFO: Open of `merged.gpkg'
      using driver `GPKG' successful.
1: a (Polygon)
2: b (Polygon)

শেফফাইল ড্রাইভারটির প্রয়োজনীয়ভাবে স্তরটির নাম প্রয়োজন হয় না কারণ আপনি যদি ডাটাস্টোরের নাম "a.shp" দেন তবে ড্রাইভারকে একটি একক স্তর দেখতে যুক্তিযুক্ত থাকতে হবে, যা শেপফিলের বেসনামের নাম দিয়ে দেওয়া হয়েছে। অতএব আপনি কমান্ডের সাথে "মার্জড.শ্প" তে ডেটা যুক্ত করতে পারেন:

ogr2ogr -f "ESRI Shapefile" merged.shp a.shp
ogr2ogr -f "ESRI Shapefile" -append -update merged.shp b.shp

যাইহোক, শেপফাইল ড্রাইভারের একটি ডেটাস্তোর বিবেচনা করার জন্য আরও যুক্তি রয়েছে যা কোনও নামটি মাল্টি-লেয়ার ডেটাস্টোর হিসাবে .shp এক্সটেনশন ছাড়াই দেওয়া হয়। ব্যবহারিকভাবে এর অর্থ একটি ডিরেক্টরি যা স্তর হিসাবে এক বা একাধিক শেফফিল যুক্ত করে। কমান্ডের মাধ্যমে যা ঘটে তা আপনি পরীক্ষা করতে পারেন

ogr2ogr -f "ESRI Shapefile" merged a.shp
ogr2ogr -f "ESRI Shapefile" -append -update merged b.shp

অথবা তারপরে আপনি আপনার স্ক্রিপ্টটি সামান্য সম্পাদনা করতে পারেন

consolidated_file="./consolidated"

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


আপনি আমার চেয়ে দ্রুত ছিল! এবং কিছু নতুন তথ্য সহ আমি কোনও ডিরেক্টরিতে শেফিল আউটপুট সম্পর্কে জানতাম না। গ্রেট!
পি লুমো

4

শেফিলগুলি কেবলমাত্র একটি ডেটাসেট (স্তর) অন্তর্ভুক্ত করে, সুতরাং একটি স্তর নির্ধারণ করা প্রয়োজনীয় নয়।

যদি আপনি PostGIS, SQLite, KML ইত্যাদির সাথে কাজ করেন যা একটি ফাইলে একাধিক স্তর পরিচালনা করতে পারে তবে আপনাকে -nln সেট করতে হবে। অন্যথায় স্তরগুলি ফাইলের নামের মতো হবে এবং এইভাবে মার্জ হবে না।

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