Exemplo n.º 1
0
def load_img(f, fzip):
	import geo_raster_c as ge

	_prj = ge.proj_from_epsg(3857)
	_reg = ge.open(fzip.unzip(f)).extent().to_polygon().segment_ratio(30).project_to(_prj)

	return _reg.extent()
Exemplo n.º 2
0
def load_shp(f):
	from osgeo import ogr
	import geo_base_c as gb

	_shp = ogr.Open(f)
	if _shp == None:
		raise Exception('Failed to load shapefile ' + f)

	_lyr = _shp.GetLayer()
	_objs = []
	_area = None

	for _f in _lyr:
		_obj = gb.geo_polygon(_f.geometry().Clone())
		_ext = _obj.extent()

		_objs.append(_obj)
		if _area == None:
			_area = _ext
		else:
			_area = _area.union(_ext)

	import geo_raster_c as ge
	_prj = ge.proj_from_epsg(3857)

	_reg = _area.to_polygon().segment_ratio(30).project_to(_prj)
	return _reg.extent()
Exemplo n.º 3
0
	def decode(self, text):
		import re
		_m = re.match('\s*EPSG\s*\:\s*(\d+)\s*', text)
		if _m:
			import geo_raster_c as ge
			return ge.proj_from_epsg(int(_m.group(1)))

		import model_utility
		return model_utility.proj_from_proj4(str(text))
Exemplo n.º 4
0
	def __init__(self):
		import math
		import geo_raster_c as ge

		self.b = 6378137.0
		self.s = 256
		self.p = self.b * math.pi

		self.prj = ge.proj_from_epsg(3857)
Exemplo n.º 5
0
def main():
	_opts = _init_env()

	_f_inp = _opts.input
	_d_out = _opts.output
	_f_clr = _opts.color

	import config
	import os

	os.path.exists(_d_out) or os.makedirs(_d_out)

	import file_unzip
	with file_unzip.file_unzip() as _zip:
		# detect the extent of input file
		_ext = load_shp(_f_inp) if _opts.input.endswith('.shp') else load_img(_f_inp, _zip)
		logging.info('detected extent %s' % str(_ext))
		print 'detected extent', _ext

		_ps = []
		for _lev in xrange(_opts.levels[0], _opts.levels[1]+1):
			print ' - checking level', _lev
			for _lev, _num, _col, _row in tiles().list(_lev, _ext):
				_ps.append((_f_inp, _lev, _num, _col, _row, _opts.percent, _f_clr, _d_out))

		logging.info('found %s task' % len(_ps))
		print 'found %s tasks' % len(_ps)

		print 'write map.html'
		if _opts.instance_pos == 0:
			import geo_raster_c as ge
			_ext_geo = _ext.to_polygon().segment_ratio(30).project_to(ge.proj_from_epsg()).extent()

			_f_out = os.path.join(_d_out, 'map.html')
			with open(config.cfg.get('conf', 'openlayers_temp'), 'r') as _fi, open(_f_out, 'w') as _fo:
				_fo.write(_fi.read() % {
						'title': os.path.basename(_f_inp),
						'xmin': _ext_geo.minx, 'xmax': _ext_geo.maxx,
						'ymin': _ext_geo.miny, 'ymax': _ext_geo.maxy,
						'zmin': _opts.levels[0], 'zmax': _opts.levels[1]
						})

		import multi_task
		multi_task.Pool(make_tile,
				[_ps[i] for i in xrange(_opts.instance_pos, len(_ps), _opts.instance_num)],
				_opts.task_num, True).run()