এসএইচপি বৈশিষ্ট্যগুলি মুছে ফেলার জন্য পাইথন মডিউল (ডেস্কটপ জিআইএস ইনস্টল না করে)


16

আমার কাছে একটি টুকরো সফটওয়্যার রয়েছে (অর্ক নয়) যা একটি নন-প্রোডাকশন মেশিনে রাতে চালিত হয় যা কোনও বাহ্যিক ডাটাবেস থেকে শেফফিল বৈশিষ্ট্য আপডেট করে। পর্যায়ক্রমে আমি শেফফিলের সমস্ত বৈশিষ্ট্য মুছে ফেলতে চাই (ফাইলটি নিজেই নয়, যা থাকা আবশ্যক) এবং সফ্টওয়্যারটি স্ক্র্যাচ থেকে শেফফিলটিকে "পুনর্নির্মাণ" করতে দিন। আমি এই প্রক্রিয়াটি স্বয়ংক্রিয় করতে চাই।

আমার কাছে বর্তমানে সেই মেশিনে কোনও জিআইএস সফ্টওয়্যার ইনস্টলড নেই। আমি আশা করছিলাম যে আমি পাইথনে এমন একটি রুটিন স্ক্রিপ্ট করতে পারি যা বৈশিষ্ট্যগুলি স্বয়ংক্রিয়ভাবে মুছতে পারে, অনেকটা আर्कের মুছে ফেলা বৈশিষ্ট্যগুলি জিওপ্রসেসিং সরঞ্জাম হিসাবে।

এমন কোনও পাইথন মডিউল রয়েছে যা আমাকে এটি করতে দেয়? পছন্দসই ওপেন সোর্স? আমি দিকে তাকিয়ে সুঠাম এবং PyShp কিন্তু কিছু যে আমাকে ভর বৈশিষ্ট্য মুছে ফেলতে সম্ভব হবে দেখতে পাইনি বা একটি WHERE বাক্যাংশ মিলেছে। তারা বৈশিষ্ট্যগুলি লিখতে পারে এবং তাদের বিশ্লেষণ করতে পারে তবে কোথাও বৈশিষ্ট্যগুলি মুছে ফেলতে দেখেনি।

আমি অবশ্যই কিছু সাধারণ মিস করছি ...

সম্পাদনা: আমার 35 টি ফোল্ডার রয়েছে (বিভিন্ন ভৌগলিক এক্সটেন্টস, সমস্ত নিজস্ব প্রক্ষেপণে), 35-65 শেফফিলের সাথে ডিল করতে প্রায় 1000 শেফফিল রয়েছে।

উত্তর:


16

আপনি জিডিএল / ওজিআর পাইথন এপিআই ব্যবহার করতে পারেন , কোডটি এর মতো হবে:

from osgeo import ogr

shapefile = ogr.Open( "shapfile.shp",1 )
layer=shapefile.GetLayerByIndex(0)
count=layer.GetFeatureCount()
for feature in range(count):
    layer.DeleteFeature(feature)

আমি পেয়েছিERROR 1: The DeleteFeature() operation is not permitted on a read-only shapefile
ম্যাট উইলকি

4
লেখার জন্য আপনাকে এটি খুলতে হবে। এটি দিয়ে করুন: ogr.Open ('shaffile.shp', 1)
ক্যাপুটি

12

শূন্য ফলাফল তৈরির গ্যারান্টিযুক্ত একটি কমান্ড লাইন ogr2ogr হ'ল একটি দ্রুত এবং সহজ পদ্ধতি:

ogr2ogr output.shp input.shp -where "FID < 0"

পাইথন ও ওজিআর (এবং জিডিএল) এর ওভারভিউ পৃষ্ঠাটি হ'ল http://trac.osgeo.org/gdal/wiki/GdalOgrInPython


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

1
এখানে যে জন্য একটি এক লাইন ব্যাচ ফাইল আছে: for %%a in (sample.shp) do (ogr2ogr %temp%\xxx.shp %%a -where "FID < 0" && copy %temp%\xxx.* %%~na.*)। পাবলো এর উত্তর যদিও আরও বর্ধিত হয়।
ম্যাট উইলকি

11

আপনি এটি pyshp এ করতে পারেন। এটি সহজ তবে স্পষ্ট নয় কারণ আমি এই ব্যবহারের ক্ষেত্রে কখনও কল্পনাও করি নি। তবে এটি স্বয়ংক্রিয় আপডেট অ্যাপ্লিকেশনগুলির জন্য অর্থবোধ করে না। আমি নিম্নলিখিত 6 টি লাইনের কোড পরীক্ষা করেছি এবং এটি দুর্দান্ত কাজ করেছে:

import shapefile
r = shapefile.Reader("myshape")
w = shapefile.Writer(r.shapeType)
# This line will give us the same dbf schema
w.fields = r.fields
# Use the original bounding box as a place holder in the header
w.bbox = lambda: r.bbox
w.save("myshape")

আপনার কাছে এখন একটি শিরোনাম লিখিত আছে যা সঠিক শিরোনাম এবং মূল dbf ক্ষেত্র রয়েছে। এটি জিআইএস সফ্টওয়্যার এবং শেফফিল লাইব্রেরিতে নিরাপদে খুলবে তবে এর কোনও বৈশিষ্ট্য বা ডিবিএফ রেকর্ড নেই।

ল্যাম্বদা ফাংশন মূল সীমানা বাক্সটিকে স্থানধারক হিসাবে স্থানান্তর করে। আপনি [xmin, ymin, xmax, ymax] এর একটি অ্যারেতে যা চান ভাসমান মান রাখতে পারেন। উদাহরণ:

w.bbox = lambda: [0.0, 0.0, 0.0, 0.0]

Dbf ক্ষেত্র পরিবর্তন করা খুব সহজ এবং pyshp ডক্সে নথিভুক্ত।

আশা করি এইটি কাজ করবে.


8

ফাঁকা শেফিল ফাইলের একটি অনুলিপি কেন সংরক্ষণ করবেন না এবং আপনার শেপফাইলে আগ্রহের বিষয়টি অতিরিক্ত লিখুন।


হাস্যকরভাবে, আইএমএইচও যতক্ষণ না স্কিমার খুব বেশি পরিবর্তন ঘটে না ততক্ষণ পর্যন্ত এটি সবচেয়ে কার্যকর সমাধান হবে ...
রাগী ইয়াসার বারহুম

1
এটি যদি 1 বা 2 ফাইলের জন্য হয় তবে আমি সম্মত হব। এটি ততটা কার্যকর না হওয়ার মূল কারণটি হ'ল আমার কাছে 35-65 আকারের ফাইল সহ 35 টি ফোল্ডার (বিভিন্ন ভৌগলিক এক্সটেন্টস, সমস্ত নিজস্ব প্রজেক্টে রয়েছে) রয়েছে। গণিতটি বলে যে এটি পরিচালনা করতে 1000+ ফাঁকা শেফফিল হবে, যা ব্যবহারিকও নয়। শেফফায়ালগুলি আবিষ্কার করতে এবং বৈশিষ্ট্যগুলি মোছার জন্য কোনও প্রক্রিয়াটির স্ক্রিপ্ট করা হ'ল আমি শেষ পর্যন্ত শেষ করার আশা করি।
রায়ানকডাল্টন

কিউ-তে রায়ানডাল্টন আপনি বলেছেন "শেপফাইল", যা আমাদেরকে যাইহোক ভালভাবে পরিচালিত করেছিল, একটি একক সমাধানের কথা ভাবতে এবং তৈরি করতে। আমি অভিযোগ করছি না, কেবল সামনেই উল্লেখ করা হচ্ছে যে সামনের দিকে ব্যবহারের ক্ষেত্রে আরও তথ্যের ফলে উত্তরগুলি আরও দ্রুত প্রয়োগ করা যেতে পারে।
ম্যাট উইলকি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.