Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # !usr/bin/python
- # -*- coding: utf-8 -*-
- import os
- import psycopg2
- import shapefile
- import pickle
- from shapely.geometry import Polygon, MultiPolygon
- def insert_geom(filename, done):
- conn = psycopg2.connect("dbname='repo' user='admin' host='karto.gis-support.pl' password='admin1'")
- curs = conn.cursor()
- sf = shapefile.Reader('extracted/' + filename[:-4])
- records = sf.records()
- shapes = sf.shapes()
- for i in range(0, len(records)):
- data = records[i]
- geom = MultiPolygon([Polygon(shapes[i].points)])
- curs.execute(
- 'INSERT INTO dzialki(geom, objectid, identyfika, powierzchn, teryt, numer, wojewodztw, powiat, gmina, data_od, shape_leng, shape_area)'
- 'VALUES (ST_SetSRID(%(geom)s::geometry, %(srid)s), %(objectid)s, %(identyfika)s, %(powierzchn)s, %(teryt)s, %(numer)s, %(wojewodztw)s, %(powiat)s, %(gmina)s, %(data_od)s, %(shape_leng)s, %(shape_area)s)',
- {'geom': geom.wkb_hex,
- 'srid': 2180,
- 'objectid': data[0],
- 'identyfika': data[1],
- 'powierzchn': data[2],
- 'teryt': data[3],
- 'numer': data[4],
- 'wojewodztw': data[5],
- 'powiat': data[6],
- 'gmina':data[7],
- 'data_od': str(data[8]),
- 'shape_leng': data[9],
- 'shape_area': data[10]})
- print '%s: %d z %d \r' % (filename[:-4], i + 1, len(records)),
- conn.commit()
- done.append(filename)
- pickle.dump(done, open('done.pkl','wb'))
- if __name__ == "__main__":
- '''
- done = pickle.load(open('done.pkl','rb'))
- print done
- print len(done)
- '''
- for f in os.listdir('./data'):
- try:
- done = pickle.load(open('done.pkl','rb'))
- except:
- done = []
- if f not in done:
- insert_geom(f, done)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement