পাইশপ মডিউলটি হ্যাং পেতে কিছুটা জটিল, তবে একবারে এটি কার্যকর হয়ে গেলে। আমি একটি স্ক্রিপ্ট লিখেছি যা উদাহরণের ডেটা সিএসভিতে পড়ে এবং সঠিক ডেটাটাইপগুলির বৈশিষ্ট্য হিসাবে সঞ্চিত ডেটা সহ একটি শেফফিল লিখেছি। Xbase ফর্ম্যাটের জন্য এই ব্যবহারকারীর গাইড না পাওয়া পর্যন্ত পাইশপ / এক্সবেস ডেটিটাইপিং আমার জন্য সবসময়ই জটিল ছিল এবং এই প্রশ্নের ফলস্বরূপ আমি আমার ব্লগে প্রাসঙ্গিক ডেটাটাইপগুলি সম্পর্কিত একটি ছোট নোট লিখেছি, যার একটি অংশ আমি নীচে আটকিয়েছি :
- সি ASCII অক্ষর
- এন দৈর্ঘ্যের প্রায় 18 টি অক্ষরের মধ্যে সীমাবদ্ধ একটি ডাবল যথার্থ পূর্ণসংখ্যা
- ডি ওয়াইওয়াইওয়াইএমএমডিডি ফর্ম্যাটে তারিখগুলির জন্য, বিভাগগুলির মধ্যে কোনও ফাঁকা স্থান বা হাইফেন নেই with
- এফ সমান দৈর্ঘ্যের এন এর সমান সীমা সহ ভাসমান পয়েন্ট সংখ্যাগুলির জন্য
- এল লজিক্যাল ডেটার জন্য যা শর্টফিলের অ্যাট্রিবিউট টেবিলটিতে একটি সংক্ষিপ্ত পূর্ণসংখ্যা হিসাবে 1 (সত্য) বা 0 (মিথ্যা) হিসাবে সঞ্চিত থাকে। এটি যে মানগুলি পেতে পারে তা হ'ল 1, 0, y, n, Y, N, T, F বা পাইথন বিল্টইনস সত্য এবং মিথ্যা
সম্পূর্ণ তালিকাটি নিম্নরূপ:
import shapefile as shp
import csv
out_file = 'GPS_Pts.shp'
#Set up blank lists for data
x,y,id_no,date,target=[],[],[],[],[]
#read data from csv file and store in lists
with open('input.csv', 'rb') as csvfile:
r = csv.reader(csvfile, delimiter=';')
for i,row in enumerate(r):
if i > 0: #skip header
x.append(float(row[3]))
y.append(float(row[4]))
id_no.append(row[0])
date.append(''.join(row[1].split('-')))#formats the date correctly
target.append(row[2])
#Set up shapefile writer and create empty fields
w = shp.Writer(shp.POINT)
w.autoBalance = 1 #ensures gemoetry and attributes match
w.field('X','F',10,8)
w.field('Y','F',10,8)
w.field('Date','D')
w.field('Target','C',50)
w.field('ID','N')
#loop through the data and write the shapefile
for j,k in enumerate(x):
w.point(k,y[j]) #write the geometry
w.record(k,y[j],date[j], target[j], id_no[j]) #write the attributes
#Save shapefile
w.save(out_file)
আশা করি এটা কাজে লাগবে.