def match_multi_test(): shandong = gio.read_shp('../data/shape/shandong.shp') shandong = shandong.to_crs(3857) info = gutil.shp2box(shandong, (2048, 1536), 0.05) fs = glob('../data/modis/*.hdf') rasters = [gio.read_hdf(i, 0) for i in fs] rst = gmt.match_multi(rasters, info, 0) plt.imshow(rst) plt.show()
def draw_class(): # ===== look up table ===== lut = np.array([[0 ,0 ,0 ], [168,168,0 ], [20 ,119,73 ], [169,208,95 ], [56 ,168,0 ], [126,206,244], [0 ,86 ,154], [112,168,0 ], [147,47 ,20 ], [202,202,202], [0 ,255,197], [255,255,255]], dtype=np.uint8) # ===== read shape file and make a paper ===== liaoning = gio.read_shp('../data/shape/shandong.shp') liaoning = liaoning.to_crs(3857) box = gutil.shp2box(liaoning, (3600, 2400), 0.15, 1) paper = gnp.frombox(*box, dtype=np.uint8) # ===== match the class tif into paper fs = glob('../data/class/*.tif') idx = gmt.build_index(fs) gmt.match_idx(idx, paper, out='in', order=0) msk = paper * 0 gdraw.draw_polygon(msk, liaoning, 255, 0) paper[msk==0] = 11 body = [('图例', 'simhei', 72), ('rect', 1, '农田'), ('rect', 2, '森林'), ('rect', 3, '草地'), ('rect', 4, '灌丛'), ('rect', 5, '湿地'), ('rect', 6, '水体'), ('rect', 7, '苔原'), ('rect', 8, '隔水层'), ('rect', 9, '裸地'), ('rect', 10, '冰雪')] # 底图,位置,内容,空隙,矩形尺寸及线宽,字体字号颜色,外边框宽度 gdraw.draw_style(paper, 60, -60, body, mar=(20, 30), recsize=(120,60,0), font=('simsun', 60, 0), color=0, box=0) gdraw.draw_unit(paper, -120, -60, 0.3, 30, ('times', 48), 0, 'km', 3, anc='r') gdraw.draw_text(paper, '山东省土地利用类型', 80, 60, 0, ('simkai', 128)) gdraw.draw_N(paper, -240, 240, ('simhei', 100), 2, 100, 0) gdraw.draw_polygon(paper, liaoning, 0, 2) gdraw.draw_bound(paper, 5, 5, -5, -5, 0, 2, clear=None) return paper.lookup(lut)
def match_multi_test(): shandong = gio.read_shp('../data/shape/shandong.shp') shandong = shandong.to_crs(3857) info = gutil.shp2box(shandong, (2048, 1536), 0.05, 1) paper = gnp.frombox(*info, dtype=np.int16) fs = glob('../data/modis/*.hdf') rasters = [gio.read_hdf(i, 0) for i in fs] gmt.match_multi(rasters, paper, out='in') plt.imshow(paper) plt.show()
def match_one_test(): shandong = gio.read_shp('../data/shape/shandong.shp') shandong = shandong.to_crs(3857) info = gutil.shp2box(shandong, (2048, 1536), 0.05, 1) paper = gnp.frombox(*info, dtype=np.int16) path = '../data/modis/MOD09Q1.A2019017.h27v05.006.2019030120430.hdf' raster = gio.read_hdf(path, 0) gmt.match_one(raster, paper, out='in') plt.imshow(paper) plt.show()
def match_idx_test(): shandong = gio.read_shp('../data/shape/shandong.shp') shandong = shandong.to_crs(3857) info = gutil.shp2box(shandong, (2048, 768 * 2), 0.05) fs = glob('../data/modis/*.hdf') idx = gmt.build_index(fs) rst = gmt.match_idx(idx, info, chan=[0]) plt.imshow(rst) plt.show()
def draw_simple(): shandong = gio.read_shp('../data/shape/shandong.shp') shandong = shandong.to_crs(3857) box = gutil.shp2box(shandong, (3600, 2400), 0.1, 1) paper = gnp.frombox(*box, dtype=np.uint8) paper[:] = 255 gdraw.draw_polygon(paper, shandong, 0, 2) gdraw.draw_ruler(paper, 80, 50, -80, -50, 1, 4326, ('times', 32), 0, 2, 5) gdraw.draw_lab(paper, shandong, 'name', 0, ('simhei', 32), 'ct') gdraw.draw_unit(paper, -180, -100, 0.3, 30, ('times', 48), 0, 'km', 3, anc='r') gdraw.draw_text(paper, '山东省', 180, 120, 0, ('simkai', 128)) gdraw.draw_N(paper, -240, 240, ('simhei', 100), 2, 100, 0) return paper
def match_idx_test(): shandong = gio.read_shp('../data/shape/shandong.shp') shandong = shandong.to_crs(3857) info = gutil.shp2box(shandong, (2048, 768 * 2), 0.05, 1) paper = gnp.frombox(*info, dtype=np.int16) fs = glob('../data/modis/*.hdf') idx = gmt.build_index(fs) gmt.match_idx(idx, paper, out='in', chan=[0]) plt.imshow(paper) plt.show()
def draw_grade(): shandong = gio.read_shp('../data/shape/shandong.shp') shandong = shandong.to_crs(3857) box = gutil.shp2box(shandong, (3600, 2400), 0.1, 1) paper = gnp.frombox(*box, dtype=np.uint8) areas = shandong.area grade_lut = np.array([3]*60 + [2]*30 + [1]*10, dtype=np.uint8) vs = (areas-areas.min())/(areas.max()-areas.min())*99 grade = grade_lut[vs.astype(int)] print(grade) gdraw.draw_polygon(paper, shandong, grade, 0) gdraw.draw_polygon(paper, shandong, 4, 2) gdraw.draw_ruler(paper, 80, 50, -80, -50, 1, 4326, ('times', 32), 4, 2, 5) gdraw.draw_lab(paper, shandong, 'name', 4, ('simhei', 32), 'ct') gdraw.draw_unit(paper, -180, -100, 0.3, 30, ('times', 48), 4, 'km', 3, anc='r') gdraw.draw_text(paper, '山东省', 180, 120, 4, ('simkai', 128)) gdraw.draw_N(paper, -240, 240, ('simhei', 100), 2, 100, 4) body = [('图例', 'simhei', 72), ('rect', 1, '特大城市'), ('rect', 2, '中型城市'), ('rect', 3, '一般城市')] # 底图,位置,内容,空隙,矩形尺寸及线宽,字体字号颜色,外边框宽度 gdraw.draw_style(paper, 150, -90, body, mar=(20, 30), recsize=(120,60,2), font=('simsun', 60, 4), color=4, box=0) lut = np.array([[255,255,255], [255,200,100], [255,255,128], [255,255,200], [0 ,0 ,0 ]], dtype=np.uint8) return paper.lookup(lut)
app = wx.App() frame = wx.Frame(None, title='Canvas') canvas = Canvas(frame, autofit=False, ingrade=True, up=True) line = mark2shp({'type':'polygon', 'color':(255,0,0), 'lstyle':'o', 'fill':True, 'body':[[(0,0),(1000,1000),(2000,0), (0,0)], [(0,0),(100,100),(200,0),(0,0)], [(100,400),(300,100),(300,600),(100,400)]]}) layer = Layer() layer.color = (0,0,0) layer.lw = 1 import json import geonumpy.io as gio shp = gio.read_shp('C:/Users/54631/Documents/projects/huangqu/demo/shape/province.shp') feats = json.loads(shp.to_json())['features'] for i in feats: shp = json2shp(i['geometry']) layer.body.append(shp) canvas.marks.append(layer) ''' image = Image() image.img = camera() image.pos = (0,0) canvas.images.append(image) ''' ''' image = Image() image.img = astronaut()
import geonumpy.io as gio import matplotlib.pyplot as plt if __name__ == '__main__': gdf = gio.read_shp('../data/shape/shandong.shp') print(gdf) gdf.plot() plt.show() print('read modis hdf data:') modis = gio.read_hdf( '../data/modis/MOD09Q1.A2019017.h28v05.006.2019030120612.hdf', 0) print(modis.shape, '\n', modis.crs, '\n', modis.mat) plt.imshow(modis, cmap='gray') plt.show() print('\nread landsat tif data:') landsat = gio.read_tif( '../data/landsat/LC08_L1TP_122033_20190506_20190506_01_RT_B5.TIF') print(modis.shape, '\n', modis.crs, '\n', modis.mat) plt.imshow(landsat, cmap='gray') plt.show() print('\nsave modis as tif') gio.write_tif( modis, '../data/modis/MOD09Q1.A2019017.h25v05.006.2019030120448.tif') box = gio.read_tif_box( '../data/landsat/LC08_L1TP_122033_20190506_20190506_01_RT_B5.TIF') print(box)
def run(self, para=None): a = gio.read_shp(para['path'], encoding='gbk') fp, fn = osp.split(para['path']) fn, fe = osp.splitext(fn) IPy.show_table(a, fn)
#process def run(self, para=None): a = gio.read_shp(para['path'], encoding='gbk') fp, fn = osp.split(para['path']) fn, fe = osp.splitext(fn) IPy.show_table(a, fn) def show_shp(data, title): IPy.show_table(data, title) ViewerManager.add('shp', show_shp) write_shp = lambda path, data: gio.write_shp(data, path) read_shp = lambda path: gio.read_shp(path) ReaderManager.add('shp', read_shp, tag='tab') WriterManager.add('shp', write_shp, tag='tab') class OpenShp(tableio.Reader): title = 'Shapefile Open' filt = ['shp'] class WriteShp(tableio.Writer): title = 'Shapefile Write' filt = ['shp']