Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.07 KB | None | 0 0
  1. import re
  2. import matplotlib.pyplot as plt
  3. from ast import literal_eval
  4.  
  5. with open('poland_shape.txt', 'r') as f_in, open('states.txt', 'w') as f_out:
  6.     data = literal_eval('{' + f_in.read() + '}')
  7.  
  8.     for k, v in data.items():
  9.         print('<state name = "{city}">'.format(city=k), file=f_out)
  10.         for point in v:
  11.             print('  <point lat="{point[0]}" lng="{point[1]}" />'.format(point=point), file=f_out)
  12.         print('</state>', file=f_out)
  13.  
  14. segments = []
  15. points = []
  16.  
  17. lat_long_regex = r"<point lat=\"(.*)\" lng=\"(.*)\""
  18.  
  19. with open("states.txt", "r") as f:
  20.     lines = [line for line in f]
  21.  
  22. for line in lines:
  23.     if line.startswith("</state>"):
  24.         for p1, p2 in zip(points, points[1:]):
  25.             segments.append((p1, p2))
  26.         points = []
  27.     s = re.search(lat_long_regex, line)
  28.     if s:
  29.         lat, lon = s.groups()
  30.         points.append((float(lon), float(lat)))
  31.  
  32. def plot_state_borders(color='0.8'):
  33.     for (lon1, lat1), (lon2, lat2) in segments:
  34.         plt.plot([lon1, lon2], [lat1, lat2], color=color)
  35.  
  36.  
  37. plot_state_borders()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement