Guest User

Untitled

a guest
Nov 23rd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1. get_country_window('United states of america')
  2.  
  3. [-135, -50, 22, 50]
  4.  
  5. import argparse
  6. import json
  7. import sys
  8. import urllib
  9.  
  10.  
  11. def main(args):
  12. url = u'http://nominatim.openstreetmap.org/search?'
  13. query = []
  14. if args['street']:
  15. query.append('street={}'.format(args['street']))
  16. if args['city']:
  17. query.append('city={}'.format(args['city']))
  18. if args['county']:
  19. query.append('county={}'.format(args['county']))
  20. if args['country']:
  21. query.append('country={}'.format(args['country']))
  22. if args['postcode']:
  23. query.append('postalcode={}'.format(args['postcode']))
  24. if args['format']:
  25. query.append('format={}'.format(args['format']))
  26. else:
  27. query.append('format=json')
  28. if not args['street'] and not args['city'] and not args['county']
  29. and not args['country'] and not args['postcode']:
  30. query.append('q={}'.format(args['query']))
  31.  
  32. url += '&'.join(query)
  33.  
  34. results = urllib.urlopen(url).read()
  35. for result in json.loads(results):
  36. print '{0}, {1}: {2}'.format(
  37. result['lat'],
  38. result['lon'],
  39. result['display_name'].encode('utf-8')
  40. )
  41.  
  42.  
  43. def parse_args():
  44. parser = argparse.ArgumentParser(description='Geocoding utility')
  45. parser.add_argument('-s', '--street', nargs='+', help='House number and
  46. street name', metavar=('NUMBER', 'NAME'))
  47. parser.add_argument('-i', '--city', help='City name')
  48. parser.add_argument('-c', '--county', help='County name')
  49. parser.add_argument('-r', '--country', help='Country name')
  50. parser.add_argument('-p', '--postcode', help='Postcode')
  51. parser.add_argument('-f', '--format', default='json', help='Format
  52. [html|xml|json|jsonv2]')
  53. parser.add_argument('query', help='Query string to search for. Maybe used
  54. instead of street, city, county, country, and
  55. postcode', nargs='?')
  56. return vars(parser.parse_args())
  57.  
  58. if __name__ == '__main__':
  59. main(parse_args())
  60.  
  61. wget http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip
  62.  
  63. def get_boundingbox_country(country, output_as='boundingbox'):
  64. """
  65. get the bounding box of a country in EPSG4326 given a country name
  66.  
  67. Parameters
  68. ----------
  69. country : str
  70. name of the country in english and lowercase
  71. output_as : 'str
  72. chose from 'boundingbox' or 'center'.
  73. - 'boundingbox' for [latmin, latmax, lonmin, lonmax]
  74. - 'center' for [latcenter, loncenter]
  75.  
  76. Returns
  77. -------
  78. output : list
  79. list with coordinates as str
  80. """
  81. # create url
  82. url = '{0}{1}{2}'.format('http://nominatim.openstreetmap.org/search?country=',
  83. country,
  84. '&format=json&polygon=0')
  85. response = requests.get(url).json()[0]
  86.  
  87. # parse response to list
  88. if output_as == 'boundingbox':
  89. lst = response[output_as]
  90. output = [float(i) for i in lst]
  91. if output_as == 'center':
  92. lst = [response.get(key) for key in ['lat','lon']]
  93. output = [float(i) for i in lst]
  94. return output
  95.  
  96. In [42]: get_boundingbox_country(country='netherlands')
  97. Out[42]: [11.777, 53.7253321, -70.2695876, 7.2274985]
  98.  
  99. In [43]: get_boundingbox_country(country='holland')
  100. Out[43]: [11.777, 53.7253321, -70.2695876, 7.2274985]
  101.  
  102. In [44]: get_boundingbox_country(country='nl')
  103. Out[44]: [11.777, 53.7253321, -70.2695876, 7.2274985]
  104.  
  105. In [45]: get_boundingbox_country(country='nl', output_as='center')
  106. Out[45]: [52.5001698, 5.7480821]
Add Comment
Please, Sign In to add comment