I'm converting csv data to shapefiles using the pyshp python library. What I want to do is very similar to Using pyshp to convert .csv file to .shp?, except that I don't know how to handle polygons.
My data is in a csv file. Each row corresponds to a named rectangle, i.e. a string and the latitude or longitude coordinates of each side of the rectangle: left side (xl), right side (xr), top (yt) and bottom (yb).
So my data looks like this:
name,xl,xr,yt,yb some Name,-25.3125,22.5,47.517193,31.353634 another Name,-103.359375,-0.703125,80.87282,74.40216 ...
And my python code is pretty simple. It is only slightly modified from the points example. But when I try to import this data into google maps, it has some errors parsing it. So I think I'm doing something wrong, but I'm not sure what?
#Set up blank lists for data name, polyPart = , #read data from csv file and store in lists with open(in_file, 'rb') as csvfile: r = csv.reader(csvfile, delimiter=',') for i,row in enumerate(r): if i > 0: #skip header # parse data into a point array representing the bounding box xl = float(row) xr = float(row) yt = float(row) yb = float(row) tl = [xl, yt] tr = [xr, yt] br = [xr, yb] bl = [xl, yb] parr = [tl, tr, br, bl, tl] # array of one "part", the part is an array of points polyPart.append([parr]) name.append(row) #Set up shapefile writer and create empty fields maxStringLength = 50 w = shp.Writer(shp.POLYGON) w.field('name','C',maxStringLength) #loop through the data and write the shapefile for j, name in enumerate(name): w.poly(parts=polyPart[j]) w.record(name) #Save shapefile w.save(out_file)