ডিরেক্টরিতে সমস্ত আকার ফাইলে রূপান্তর করতে ogr2ogr ব্যবহার করছেন?


25

বেশ কয়েকটি শেফফাইল সহ আমার একটি ডিরেক্টরি রয়েছে।

কীভাবে এই সমস্ত শেফফিলগুলিকে ogr2ogr এর সাথে MapInfo এ রূপান্তর করতে পারেন?

আমি জানি যে আমি কীভাবে একটি ফাইল রূপান্তর করতে পারি। এবং আমি প্রতিটি ফাইলের জন্য একটি লাইন লিখে একটি ব্যাচ স্ক্রিপ্ট তৈরি করতে পারি। তবে কোনও ডিরেক্টরিতে (এবং উপ ডিরেক্টরি) সমস্ত ফাইল রূপান্তর করার সহজ উপায় নেই।


এটি নির্ভর করে কোন অপারেটিং সিস্টেম। মূলত একটি "ফর" লুপ তৈরি করুন, gis.stackexchange.com/questions/7803/… দেখুন
মাইক টি

ওএস হ'ল উইন্ডোজ 7.. আমি কমান্ড প্রম্পটে এটি চেষ্টা করি:% f এর জন্য * .shp; ogr2ogr -f MapInfo ফাইল $ f.tab করুন। কিন্তু এটি কাজ করে না। আমি ত্রুটিটি পেয়েছি: নিম্নলিখিত চালকদের সাথে 'dat f.tab' ডেটাসুর খুলতে অক্ষম .....
স্টিফান

এইভাবে টিএবি-র কাছে এসএইচপি করবেন: ogr2ogr -f "MapInfo ফাইল"% 1.tab% 1.shp। কিন্তু যদি না ওজিআর কোনও পিআরজে ফাইলটি সঠিকভাবে সনাক্ত করতে সক্ষম না হয়, আপনি সহজেই অন্তর্নির্মিত ভুল কোর্ডসিস সহ টিএবি ফাইলগুলি শেষ করতে পারেন। আমি বিল্ট-ইন ইউনিভার্সাল ট্রান্সলেটর (এফএমই কে স্কেলড) ব্যবহার করার পরামর্শ দিচ্ছি, যা আপনার নির্বাচিত সমস্ত ফাইল প্রক্রিয়া করতে পারে। এটি আপনাকে সঠিক কর্ডসিসগুলি নির্বাচন করতে দেয়।
উফ কাউসগার্ড

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

আপনি কি ওজিআর লাইব্রেরিটি চেষ্টা করেছেন এবং এটি কমান্ড-লাইন সরঞ্জাম আছে?
অ্যালেক্স মার্কভ

উত্তর:


34

উইন্ডোজে, বর্তমানের অধীনে বর্তমান এবং উপ-ডিরেক্টরিগুলির জন্য, এই আদেশটি ব্যবহার করে দেখুন:

for /R %f in (*.shp) do ogr2ogr -f "MapInfo File" "%~dpnf.tab" "%f"

এখানে কী চলছে এর কৌশল সম্পর্কে সংক্ষেপে ব্যাখ্যা করতে , % f%~dpnf.tab ভেরিয়েবল ব্যবহার করে , এর সাথে এটি ডি নদীর অক্ষর, পি অ্যাথির নাম (অর্থাত্, ফোল্ডার বা ডিরেক্টরি) যুক্ত করে, এবং ফাইল এন এমকে বের করে ( ফাইল এক্সটেনশন ছাড়াই ) । শেষ অবধি, নতুন এক্সটেনশনের জন্য যৌগিক ভেরিয়েবল সংশোধকগুলির সাথে সাথে যুক্ত করা হয়।.shp.tab

সুতরাং আপনি যদি ডিরেক্টরিতে থাকেন C:\MyDataএবং আপনার এই ডিরেক্টরিতে ডেটা এবং উপ-ডিরেক্টরি C:\MyData\Region1এবং আপনার C:\MyData\Region1\City1কোনও শেফিল ( .shpএক্সটেনশন সহ) প্রসেস করা হবে, এবং অনুরূপ একটি নামযুক্ত ফাইল .tabএকই ডিরেক্টরিতে তৈরি হবে।


শান্ত! এইটা কাজ করে! উত্তরের জন্য অনেক ধন্যবাদ :) আরও একটি প্রশ্ন: সাবডিরেক্টরি উল্লেখ করার জন্য এবং অন্য সাবডাইরেক্টরিতে ফাইলগুলি রূপান্তর করারও কি উপায় আছে? আমার কাছে শেফফাইলস যুক্ত বিভিন্ন ডিরেক্টরি রয়েছে। যেমন: নেদারল্যান্ডস \ আকৃতি \ প্রদেশ X নেদারল্যান্ডস \ আকৃতি \ প্রদেশY নেদারল্যান্ডস \ আকৃতি \ প্রদেশ জেড এবং এগুলি এই ফোল্ডারে রূপান্তর করতে চান: নেদারল্যান্ডস \ mapinfo \ প্রদেশ X নেদারল্যান্ডস \ mapinfo \ প্রদেশY নেদারল্যান্ডস \ mapinfo \ প্রদেশZ ধন্যবাদ :)
স্টিফ্যান

আমি পুনরাবৃত্ত অনুসন্ধানের জন্য উপরেরটি আপডেট করেছি, তবে "আকৃতি" কে "ম্যাপিনফো" তে পরিবর্তন করতে অতিরিক্ত যুক্তি কীভাবে করবেন তা আমি জানি না; হয়তো এটি / জিজ্ঞাসা superuser.com
মাইক টি

1
আপনার দ্রুত প্রতিক্রিয়া জন্য আবার ধন্যবাদ। এটি খুব সহায়ক ছিল। আমার কেবল ফাইলগুলি সঠিক ডিরেক্টরিতে অনুলিপি করা দরকার।
স্টিফান

নোট করুন যে উইন্ডোজ কমান্ড লাইন এবং ব্যাচ ফাইল কমান্ড পৃথক: আপনাকে শতাংশটি দ্বিগুণ %fকরতে হবে %%f। বিশদ জানতে ss64.com/nt/for.html দেখুন ।
আন্দ্রেজে

এটি দুর্দান্ত, কোনও ম্যাকের অনুরূপ পন্থা
রায়ান গারনেট

11

ইউনিক্স ব্যাশের জন্য:

#!/bin/bash

for FILE in *.mif # cycles through all files in directory (case-sensitive!)
do
    echo "converting file: $FILE..."
    FILENEW=`echo $FILE | sed "s/.mif/_new.shp/"` # replaces old filename
    ogr2ogr \
    -f "ESRI Shapefile" \
    "$FILENEW" "$FILE"
done
exit

আপনি যদি * নিক্স-ভিত্তিক ওএসে (যেমন লিনাক্স বা ওএস এক্স) কাজ করে থাকেন তবে কিছু ব্যাচের শেল স্ক্রিপ্ট রয়েছে যা ক্লেনেরিক এখানে বিকাশ করেছে (যা উপরের উপর ভিত্তি করে)।

আমি একটি কাঁটাচামচ নিয়ে কাজ করছি যা কিছু স্ক্রিপ্টকে কিছুটা আরও জেনেরিক করে তোলে এবং ব্যবহারের জন্য আরও কিছুটা বর্ণনা সরবরাহ করে।



যদি ফাইলনামে স্পেস থাকে তবে এটি একটি ত্রুটি ঘটবে।
জেসনআরডাল্টন

8

অ্যালেক্স মার্কভ যেমন বলেছিলেন, ওজিআর ব্যবহারের পক্ষে আপনার পক্ষে সবচেয়ে ভাল উপায় ।

আপনার একটি স্ক্রিপ্ট করতে হবে তবে খুব সাধারণ একটি। মূলত আপনি যদি উইন্ডোজ ব্যবহার করে থাকেন তবে আপনাকে যা করতে হবে তা হ'ল নিম্নলিখিত কোডটি কমান্ড লাইনে (ডি পছন্দসই ফোল্ডারের অভ্যন্তরে) চালাতে হবে:

for %f in (*.tab) do ogr2ogr -f "KML" %~nf.kml %f

এই সাইটটি দেখুন, এখানে সমস্ত ব্যাখ্যা করা হয়েছে:

http://www.processamentodigital.com.br/?p=2511


2
আমি মনে করি আপনি এটি করতেও পারেন: ogr2ogr -f "কেএমএল" {আউটফোল্ডার {{ইনফোল্ডার} টিপ আন্ডারডার্ক.ওয়ার্ডপ্রেস.কম
নাথান ডব্লিউ

এনবি এই উত্তরটি একটি ঘনিষ্ঠভাবে সম্পর্কিত প্রশ্ন থেকে এসেছে যা বিভিন্ন ফাইল ফর্ম্যাটকে বোঝায়।
whuber

হাই, আমি যখন উবুন্টুতে এই পদ্ধতির চেষ্টা করি যেমন ogr2ogr -f "KML" {আউটফোল্ডার} {ইনফোল্ডার} আমি ত্রুটিটি পাই: 'ত্রুটি 4: কেএমএল ফাইল তৈরি করতে ব্যর্থ হয়েছে'। কোন ধারণা এখানে ভুল হতে পারে? আমি কেএমএল সমর্থন দিয়ে জিডিএল তৈরি করেছি
শহীদ_সি

7

অজগর সহ:

import os 

for a in os.listdir(os.getcwd()):
   fileName, fileExtension = os.path.splitext(a)
   os.system('ogr2ogr -f "ESRI Shapefile" %s %s' % (a, fileName + '.tab'))

os.getcwd()আপনার ফাইলগুলি যেখানে অবস্থিত সেখানে আপনি আপনার পথে যেতে পারেন ...

আমি এটি আপনাকে সাহায্য করে আশা করি


for a in *.shp:একটি সিনট্যাক্স ত্রুটি; আপনি ভাবছেনfrom glob import glob; for a in glob('*.shp'):
মাইক টি

ওহ দুঃখিত, আমি এটি ভুল স্টাইলে লিখেছি। আমি আপডেট করেছি @ মাইক টিউস ধন্যবাদ
অ্যারাগন

4

আপনার একটি লুপের প্রয়োজন নেই, আপনি কেবল উত্স এবং গন্তব্য হিসাবে কোনও ডিরেক্টরিটির নাম রাখতে পারেন এবং ogr2ogr উত্স ডিরেক্টরিতে যে কোনও ফাইল রূপান্তর করতে পারে। এখানে দেখুন: ট্যাবকে এমএফ / এমএফ থেকে ট্যাবে রূপান্তর করা


ধন্যবাদ! আমি কি একটি প্যারেন্ট ডিরেক্টরি থেকে সমস্ত সাবডায়ারের কাছে উল্লেখ করতে পারি এবং সমস্ত ফাইলকে অন্য সাবডায়ারের রূপান্তর করতে পারি? Ihave: নেদারল্যান্ডস \ আকৃতি \ প্রদেশ X নেদারল্যান্ডস \ আকৃতি \ প্রদেশ Y নেদারল্যান্ডস \ আকৃতি \ প্রদেশ জেড এবং আরও অনেক কিছু ... এবং এগুলি এই ফোল্ডারে রূপান্তর করতে চান: নেদারল্যান্ডস \ mapinfo \ প্রদেশ X নেদারল্যান্ডস \ mapinfo \ প্রদেশ Y নেদারল্যান্ডস \ mapinfo \ প্রদেশ Z আমি পারি প্রতিটি প্রদেশের জন্য একটি লাইন লিখুন, তবে আমি এটি একটি কমান্ড দিয়েও করতে পারি
স্টিফান

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


0

ম্যাপিনফোর সর্বজনীন অনুবাদক একাধিক ফাইল পরিচালনা করতে পারেন। গন্তব্য ফোল্ডারে যান, সমস্ত শেফফাইল নির্বাচন করুন, ইনপুট এবং আউটপুট জন্য সিআরএস সংজ্ঞায়িত করুন। এটা করা উচিত।


0

এটি উপরের অ্যারাগনের উত্তরের পরিশোধন। এটি শুধুমাত্র .TAB বা .tab ফাইলগুলিতে ogr2ogr চালাবে এবং ফোল্ডারে থাকা অন্যান্য ফাইলের প্রকারগুলি উপেক্ষা করবে।

#!/usr/bin/env python3

import os 

for a in os.listdir(os.getcwd()):
  fileName, ext = os.path.splitext(a)
  if ext.lower() == '.tab':
    print('ogr2ogr -f "ESRI Shapefile" %s %s' % (a.replace(ext,
                           '.shp'), fileName + ext))
    os.system('ogr2ogr -f "ESRI Shapefile" %s %s' % (a.replace(ext,
                           '.shp'), fileName + ext))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.