Advertisement
Guest User

Untitled

a guest
Oct 1st, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. # assign a random location to every person in greater cinci
  2. # inside their home census block
  3.  
  4. import psycopg2, random
  5. from shapely import wkb
  6. from shapely.geometry import Point
  7.  
  8. # connect to the census DB
  9. conn_string = ("host='localhost' dbname='' user='' password=''")
  10. census_conn = psycopg2.connect(conn_string)
  11. census_cursor = census_conn.cursor()
  12.  
  13. # output
  14. out = open('peeps.csv','w')
  15. out.write('lon,lat\n')
  16.  
  17. peeps_done = 0
  18.  
  19. # get the population data
  20. census_cursor.execute("""
  21. SELECT
  22. total_population,
  23. ST_Transform(the_geom,4326)
  24. FROM blocks_2010
  25. WHERE total_population > 0;
  26. """)
  27. # for each block
  28. for (tract_pop,geom) in census_cursor:
  29. geom = wkb.loads(geom,hex=True)
  30. minX,minY,maxX,maxY = geom.bounds
  31. rangeX,rangeY = (maxX-minX),(maxY-minY)
  32. # for each person in each block
  33. for person in range(0,tract_pop):
  34. x = minX + random.random() * rangeX
  35. y = minY + random.random() * rangeY
  36. p = Point(x,y)
  37. while not geom.contains(p):
  38. x = minX + random.random() * rangeX
  39. y = minY + random.random() * rangeY
  40. p = Point(x,y)
  41. # write the new point
  42. out.write(str(x)+','+str(y)+'\n')
  43. peeps_done += 1
  44. if peeps_done % 1000 == 0:
  45. print peeps_done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement