আপনি যেমন পরীক্ষা এবং ত্রুটি দ্বারা আবিষ্কার করেছেন, আপনাকে ঠিক করার জন্য কয়েকটি নগন্য সমস্যা ছিল যার মধ্যে সর্বশেষটি ওগ্রো 2 জিআর এর -nlt GEOMETRY
* যুক্তি ব্যবহার করে সমাধান করা হয়েছিল ।
* @ লিহাচাদুরিয়ানদের মন্তব্যে সেই প্রস্তাবটি নোট করুন যা পূর্বসূচী উপকারের পাশাপাশি সর্বোত্তম অনুশীলনকে উত্সাহ দেয় -nlt PROMOTE_TO_MULTI
, এর পরিবর্তে একটি ডিফল্ট সমাধান হিসাবে ব্যবহার করা উচিত nlt GEOMETRY
।
ব্যবহারকারীর অনুমতি এবং ত্রুটি বার্তা
প্রথমত, ogr2ogr আপনার শেফফাইলটি খুলতে পারেনি, এবং আপনি বুঝতে পেরেছেন যে অনুমতি সম্পর্কিত সমস্যাগুলি আসলে ওএস ব্যবহারকারীকে আপনার শেফফাইলে অ্যাক্সেস করতে প্রভাবিত করে। তবে অন্যদের জন্য এখানে একটি গুরুত্বপূর্ণ পাঠ রয়েছে, বিশেষত, ogr2ogr এর ত্রুটির বার্তাটি এই বিষয়টিকে বিভ্রান্তিকর ছিল! প্রকৃতপক্ষে, প্রথম মন্তব্যকারীদের একজন আপনার শেফফাইলটি অবৈধ বলে মনে করেছিলেন এবং স্বীকার করেছেন যে, আমার প্রথম অনুমানটি ছিল যে পথ / ফাইলের নামটিতে সম্ভবত একটি ত্রুটি / টাইপ ছিল, বা ফাইলের পথে কোনও অপ্রচলিত চরিত্র থাকতে পারে — যেমন স্পেস — যা শেগফাইলটির দিকে ইঙ্গিত করার জন্য ওগ্রোগ্রোগের দক্ষতা ভঙ্গ করে। আপনি আবিষ্কার করেছেন যে এটি আসলে ব্যবহারকারীর অনুমতি নিয়ে সমস্যা ছিল। যেহেতু ত্রুটি বার্তাটি একটি লাল শিবির তৈরি করে, এটি অন্যদের মনের পেছনে রাখার একটি সম্ভাবনা। :)
এসকিউএল ব্যবহারকারী অধিকার এবং রহস্য ব্যর্থতা
আমি কিছুক্ষণের জন্য আপনার দ্বিতীয় ত্রুটি দ্বারা স্তম্ভিত হয়ে যেতে পারতাম, তবে আপনার এসকিউএল ব্যবহারকারীকে একটি ভিন্ন আমদানি ইউটিলিটি (shp2pgsql) দিয়ে পরীক্ষা করে যা স্মার্ট ছিল, আপনি একটি আরও সুনির্দিষ্ট ত্রুটি বার্তা পেয়েছেন এবং আপনার এসকিউএল ব্যবহারকারীকে spatial_ref_sys
টেবিলে প্রয়োজনীয় সুযোগ-সুবিধা দিয়েছেন । সুতরাং যে কেউ সঠিকভাবে কাজ করতে তাদের ogr2ogr আমদানির নির্দেশ পেতে অসুবিধাগুলি রয়েছেন তা নিশ্চিত হওয়া উচিত যে তাদের এসকিউএল ব্যবহারকারীর ডাটাবেস এবং 'স্থানিক_আরফ_সিস' টেবিলে উভয় পর্যায়ে যথেষ্ট সুবিধা রয়েছে।
মিশ্রিত জ্যামিতির ধরণ এবং সেরা অনুশীলন
আপনি যে সর্বশেষ প্রতিবন্ধকতার মুখোমুখি হয়েছিলেন তার সাথে সম্পর্কিতটি মনে হয় যে শেফফায়ালগুলি একক এবং বহুগুণ জ্যামিতি উভয়ের জন্য একই ডেটাসেট / ফাইলে সহাবস্থান করতে দেয়। একই বৈশিষ্ট্য ধরণের একক / বহুগুণের জন্য এমনকি একই টেবিলে জ্যামিতির প্রকারগুলি মিশ্রিত করা খারাপ অভ্যাস হিসাবে বিবেচিত হয় এবং ডিফল্টরূপে, আপনার সরঞ্জামচঞ্চের ওপেন সোর্স প্লেয়াররা জ্যামিতির ধরণের মিশ্রণ থেকে আপনাকে রক্ষা করার চেষ্টা করবে। ভাগ্যক্রমে, যদিও তারা আপনাকে কিছু বিকল্প দেয়। প্রাথমিকভাবে আমি আপনার ogr2ogr নির্দেশের উপর -nlt GEOMETRY
* যুক্তিটি সেট করার প্রস্তাব দিয়েছিলাম, যা আপনাকে ESRI এর আলগা কনভেনশন সত্ত্বেও আপনার বহুভুজ ডেটাসেট আমদানির অনুমতি দিয়েছে। যদিও আপনাকে পরামর্শ দিন, এর অর্থ সম্ভবত আপনার টেবিলে আপনার একক অংশ এবং বহু অংশের জ্যামিতি দুটি রয়েছে এবং এটি আপনার পরবর্তী ক্ষেত্রে অন্যান্য মাথাব্যথা তৈরি করতে পারে!
এটি উল্লেখযোগ্য যে ogr2ogr এর আরও একটি -nlt
বিকল্প রয়েছে যা আপনার বিবেচনা করা উচিত, যথা PROMOTE_TO_MULTI
। ডকুমেন্টেশন উদ্ধৃতি ..
জিডিএল ১.১০ দিয়ে শুরু করে, প্রোমোটফলি_মুলটিআই স্বয়ংক্রিয়ভাবে বহুভুজগুলিতে বহুভুজ বা বহুগুণকে মিশ্রিত করে এমন স্তরগুলি এবং লাইনস্ট্রিংস বা মাল্টিলিনেস্ট্রিংগুলিকে মাল্টিলিনেস্ট্রিংগুলিতে মিশ্রিত করে এমন স্তরগুলি স্বয়ংক্রিয়ভাবে প্রচার করতে ব্যবহার করা যেতে পারে। জ্যামিতির ধরণের জন্য কঠোর চেক প্রয়োগকারী পোস্টজিআইএস এবং অন্যান্য টার্গেট ড্রাইভারগুলিতে শেফফিলগুলি রূপান্তর করার সময় দরকারী হতে পারে।
অন্য কথায়, আপনি যদি PROMOTE_TO_MULTI
পতাকাটি ব্যবহার করেন , তবে আপনার সমস্ত বৈশিষ্ট্যগুলি একক অংশ নিয়ে গঠিত হলেও, মাল্টিপার্ট বৈশিষ্ট্যে রূপান্তরিত হবে। মন্তব্যগুলিতে @ লিহাচাদুরিয়ান দ্বারা উল্লিখিত হিসাবে - এবং আমি নিশ্চিত যে বেশিরভাগই সম্মত হবেন - আপনাকে আপনার টেবিলে ফিচারের জ্যামিতিগুলি একীভূত করে PROMOTE_TO_MULTI
লুজার GEOMETRY
পতাকার চেয়ে বেশি পছন্দ করার পরামর্শ দেওয়া হচ্ছে । মূলত, আপনার লিখিত যে কোনও কোডের কেবলমাত্র মাল্টিপার্ট জ্যামিতি আশা করা উচিত। স্বীকার করা যায়, এটি পরিচ্ছন্ন হতে পারে এবং কিছু বিকাশ সহজতর করতে পারে।
পোষ্ট আমদানির জন্য কোনও এসএইচপি নিয়ে সমস্যায় পড়ার জন্য জেনেরিক পরামর্শ
- আপনার পাথগুলিতে কোনও মজাদার অক্ষর না রয়েছে এবং পাথ বা ফাইলের নামতে কোনও টাইপস বা ভুল বানান নেই তা নিশ্চিত করুন
- @ ব্যবহারকারী1919 হিসাবে আবিষ্কার করা হয়েছে, আপনার ওএস ব্যবহারকারীর শেফফাইলে অ্যাক্সেস করার যথেষ্ট সুযোগ রয়েছে কিনা তা নিশ্চিত করুন! তারা যেমন দেখিয়েছিল, কিউজিআইএস-এর মতো অন্য সফ্টওয়্যারটিতে শেফফাইলটি খোলার চেষ্টা করতে সহায়তা করতে পারে - যদি এটি একটি সফ্টওয়্যারটিতে কাজ করে তবে এটি দুর্নীতিগ্রস্থ নয়, এবং এটি অন্য সফ্টওয়্যারটিতে কাজ করা উচিত।
প্রথমে, আপনার ogr2ogr কমান্ড কার্যকর করার বিষয়টি বিবেচনা করুন sudo
যতক্ষণ না আপনার স্ক্রিপ্টটি ইচ্ছাকৃতভাবে কাজ করছে তা নিশ্চিত হওয়ার পরে আপনি জানতে চান যতক্ষণ না আপনার স্ক্রিপ্টটি উদ্দেশ্য হিসাবে কাজ করছে until
- @ ব্যবহারকারী 1919 হিসাবে উপলব্ধি হিসাবে, নিশ্চিত করুন যে আপনার এসকিউএল ব্যবহারকারীর আপনার স্ক্রিপ্ট দ্বারা লক্ষ্যযুক্ত উভয় ডেটাবেস, পাশাপাশি
spatial_ref_sys
টেবিলের পর্যাপ্ত সুযোগ রয়েছে।
আবার, প্রথমে, আপনার স্ক্রিপ্টটি কাজ না করা অবধি এসকিউএল সুবিধার্থ সংক্রান্ত বিষয়গুলি রুল আউট করার জন্য এখানে পোস্টগ্রিএসএসএলএল সুপার ব্যবহারকারীকে বিবেচনা করুন। যদি আপনার স্ক্রিপ্টটি সুপারসারের সাথে কাজ করে তবে পছন্দের অটোমেশন ব্যবহারকারীর সাথে ব্যর্থ হয়, আপনি জানেন যে সমস্যাটি এসকিউএল ব্যবহারকারীর সাথে সম্পর্কিত এবং না আপনার ডেটা বা আপনার পরিবেশের (gdal / ogr ইনস্টলেশন ইত্যাদি) সম্পর্কিত is
সেট করার চেষ্টা -nlt
করতে পারেন পতাকা PROMOTE_TO_MULTI
বা GEOMETRY
। যেহেতু শেফফাইলগুলি একটি আলগা বৈশিষ্ট্য প্রকারের কনভেনশনের অনুমতি দেয়, কখনও কখনও আপনাকে আপনার ওপেন সোর্স ইউটিলিটিগুলিকে আরও উপযুক্ত করে তুলতে নির্দেশ দিতে হয় :)
আপনি যদি PostGRESQL বা মাইএসকিউএল এ আমদানি করে থাকেন, সেট করার চেষ্টা করুন -lco PRECISION=no
..ফায়ার সতর্কতা, এই যুক্তিটি কী করে তা আমি ঠিক বুঝতে পারছি না, তবে আমি যা অভিজ্ঞতা পেয়েছি তা এখানে রয়েছে .. আপনি জানেন যে শেফফাইলে প্রায়শই ক্ষেত্র SHAPE_LENGTH
এবং SHAPE_AREA
ক্ষেত্রগুলি অন্তর্ভুক্ত থাকে এবং আমি আমি কখনও কখনও রহস্য ব্যর্থতার সম্মুখীন হয়েছি তখন খেয়াল করেছি, যদি আমি সেই ক্ষেত্রগুলি মুছতে পারি তবে আমি সঠিকভাবে আমদানির জন্য ডেটা পেতে পারি। তবে, আমি যদি ব্যবহার করি তবে আমি -lco PRECISION=no
সেই ক্ষেত্রগুলি মোছা না করেই আমদানি করতে ডেটা পেতে পারি। আমার প্রস্তাবটি হ'ল এই প্যারামিটারটিকে সমস্যা সমাধানের পদক্ষেপ হিসাবে ব্যবহার করা, তবে আপনি কোনও উত্পাদনের সমাধানে আমদানি গ্রহণ করার আগে এটি কোন সমস্যাটি সত্যই সমাধান হচ্ছে তা বোঝার জন্য।
অবশেষে, আপনি মাইএসকিউএল ব্যবহার করছেন, মনে রাখবেন কিছু খুব বড় বৈশিষ্ট্য জ্যামিতি মাইএসকিউএল এর max_allowed_packet
পরামিতি আপত্তিজনক হতে পারে । আপনি মাইএসকিউএল ড্রাইভারের জন্য ডকুমেন্টেশনে এ সম্পর্কে আরও পড়তে পারেন .. তবে সমাধানটি হ'ল ডিফল্ট মানের চেয়ে বড় মাপের জন্য আপনার মাইএসকিউএল কনফিগারেশন পরিবর্তন করা।
Ogr2ogr এর জন্য PostGIS আমদানি কমান্ডের SHP উদাহরণ
এখানে যে কোনও নবজাতকের জন্য ঘুরে বেড়াতে পারে তার জন্য, আমার এসএইচপি থেকে পোস্ট আমদানি বেশিরভাগই ogr2ogr ব্যবহার করার মতো দেখায়। লক্ষ্য করুন যে আমি ফাইলের পাথ / নামগুলি উদ্ধৃতিতে গুটিয়ে রেখেছি, এটি স্পেস, অদ্ভুত অক্ষর এবং টার্মিনাল জুড়ে লাইন ভাঙ্গার বিরুদ্ধে সুরক্ষা দেয় .. এছাড়াও আমি জ্যামিতির নাম ক্ষেত্রের ওভাররাইড ছাড়াও উপরের আলোচিত বেশিরভাগ যুক্তি যুক্ত করেছি এফআইডি ক্ষেত্র এবং স্তরটির নাম:
ogr2ogr -f "PostgreSQL" "PG:host=127.0.0.1 user=myuser dbname=mydb password=mypassw0rd" "C:/path/to/some_shapefile.shp" -lco GEOMETRY_NAME=the_geom -lco FID=gid -lco PRECISION=no -nlt PROMOTE_TO_MULTI -nln new_layername -overwrite