Advertisement
Guest User

Untitled

a guest
Sep 28th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. # !usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import os
  5. import psycopg2
  6. import shapefile
  7. import pickle
  8. from shapely.geometry import Polygon, MultiPolygon
  9.  
  10. def insert_geom(filename, done):
  11. conn = psycopg2.connect("dbname='repo' user='admin' host='karto.gis-support.pl' password='admin1'")
  12. curs = conn.cursor()
  13. sf = shapefile.Reader('extracted/' + filename[:-4])
  14. records = sf.records()
  15. shapes = sf.shapes()
  16. for i in range(0, len(records)):
  17. data = records[i]
  18. geom = MultiPolygon([Polygon(shapes[i].points)])
  19. curs.execute(
  20. 'INSERT INTO dzialki(geom, objectid, identyfika, powierzchn, teryt, numer, wojewodztw, powiat, gmina, data_od, shape_leng, shape_area)'
  21. '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)',
  22. {'geom': geom.wkb_hex,
  23. 'srid': 2180,
  24. 'objectid': data[0],
  25. 'identyfika': data[1],
  26. 'powierzchn': data[2],
  27. 'teryt': data[3],
  28. 'numer': data[4],
  29. 'wojewodztw': data[5],
  30. 'powiat': data[6],
  31. 'gmina':data[7],
  32. 'data_od': str(data[8]),
  33. 'shape_leng': data[9],
  34. 'shape_area': data[10]})
  35. print '%s: %d z %d \r' % (filename[:-4], i + 1, len(records)),
  36. conn.commit()
  37. done.append(filename)
  38. pickle.dump(done, open('done.pkl','wb'))
  39.  
  40. if __name__ == "__main__":
  41. '''
  42. done = pickle.load(open('done.pkl','rb'))
  43. print done
  44. print len(done)
  45. '''
  46. for f in os.listdir('./data'):
  47. try:
  48. done = pickle.load(open('done.pkl','rb'))
  49. except:
  50. done = []
  51. if f not in done:
  52. insert_geom(f, done)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement