summaryrefslogtreecommitdiff
path: root/contrib/geojson-to-bbox.py
blob: 6f6d79466600bd882d62199cde933de8a8c4b06c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/python
import json
import argparse
parser = argparse.ArgumentParser()

parser.add_argument("-csv" , help="Output all files opmitted as a csv file, saperated by comma or if set by opmitted seperator", action="store_true")
parser.add_argument("-csv-seperator", help="Set the seperator used by csv output", default=",")
parser.add_argument("files", type=argparse.FileType('r'), nargs='+')

args=parser.parse_args()

for f in args.files:
	content=f.read()
	json_obj = json.loads(content)
	minx=999999
	maxx=-999999
	miny=999999
	maxy=-999999
	if json_obj['geometry']['type'] == "Polygon":
		for region in json_obj['geometry']['coordinates'][0]:
			minx=min(minx,region[0])
			maxx=max(maxx,region[0])
			miny=min(miny,region[1])
			maxy=max(maxy,region[1])
	elif json_obj['geometry']['type'] == "MultiPolygon":
		for sub in json_obj['geometry']['coordinates']:
			for region in sub[0]:
				minx=min(minx,region[0])
				maxx=max(maxx,region[0])
				miny=min(miny,region[1])
				maxy=max(maxy,region[1])
	if args.csv:
		print(f.name+args.csv_seperator+str(minx)+args.csv_seperator+str(miny)+args.csv_seperator+str(maxx)+args.csv_seperator+str(maxy))
	else:
		print(f.name+": "+str(minx)+" "+str(miny)+" x "+str(maxx)+" "+str(maxy))