import math from struct import unpack import dbfUtils XY_POINT_RECORD_LENGTH = 16 db = [] def loadShapefile(file_name): global db shp_type = 0 file_name = file_name records = [] # open dbf file and get records as a list dbfile = open( file_name[0:-4] + '.dbf', 'rb' ) db = list(dbfUtils.dbfreader(dbfile)) dbfile.close() fp = open(file_name, 'rb') # get basic shapefile configuration fp.seek(32) shp_type = readAndUnpack('i', fp.read(4)) #shp_bounds = readBounds(fp) # fetch Records fp.seek(100) while True: shp_record = createRecord(fp) if shp_record == False: break records.append(shp_record) return records record_class = { 0:'RecordNull', 1:'RecordPoint', 8:'RecordMultiPoint', 3:'RecordPolyLine', 5:'RecordPolygon' } def createRecord(fp): # read header record_number = readAndUnpack('>L', fp.read(4)) if record_number == '': return False content_length = readAndUnpack('>L', fp.read(4)) type = readAndUnpack('