Pyshp मॉड्यूल हैंग करने के लिए थोड़ा मुश्किल है, लेकिन जब आप इसे ले जाते हैं तो वास्तव में उपयोगी होता है। मैंने एक स्क्रिप्ट लिखी है जो उदाहरण डेटा के सीएसवी में पढ़ता है और सही डेटाटाइप्स की विशेषताओं के रूप में संग्रहीत डेटा के साथ एक आकृति को लिखता है। Pyshp / xbase डेटाटाइपिंग हमेशा मेरे लिए मुश्किल रहा है जब तक कि मुझे xbase प्रारूप के लिए यह उपयोगकर्ता गाइड नहीं मिला और इस प्रश्न के परिणामस्वरूप मैंने अपने ब्लॉग पर संबंधित pyshp डेटासेट के बारे में एक छोटा सा नोट लिखा है, जिसका एक हिस्सा मैंने नीचे चिपकाया है। :
- C ASCII वर्ण है
- N एक डबल सटीक पूर्णांक है जो लंबाई में लगभग 18 वर्णों तक सीमित है
- D, YYYYMMDD प्रारूप में तारीखों के लिए है, जिसमें कोई रिक्त स्थान या हाइफ़न वर्गों के बीच नहीं है।
- F, N के समान लंबाई सीमा वाले फ्लोटिंग पॉइंट नंबरों के लिए है
- L तार्किक डेटा के लिए है जो कि आकृति पूर्णांक की विशेषता तालिका में 1 (सच) या 0 (गलत) के रूप में एक छोटे पूर्णांक के रूप में संग्रहीत है। वे मान जो प्राप्त कर सकते हैं वे हैं 1, 0, y, n, Y, N, T, F या पायथन बिल्डिंस True andse
पूरी लिस्टिंग इस प्रकार है:
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)
आशा है कि ये आपकी मदद करेगा।