def get_footprints_inters_ext(filelist, extent_base, epsg_base, use_l1a_met=False): list_poly = [] for f in filelist: if use_l1a_met: poly = vt.l1astrip_polygon(os.path.dirname(f)) trans = vt.coord_trans(False, 4326, False, epsg_base) poly.Transform(trans) else: ext, proj = vt.extent_rast(f) poly = vt.poly_from_extent(ext) trans = vt.coord_trans(True, proj, False, epsg_base) poly.Transform(trans) list_poly.append(poly) poly_ext = vt.poly_from_extent(extent_base) filelist_out = [] for poly in list_poly: if poly.Intersect(poly_ext): filelist_out.append(filelist[list_poly.index(poly)]) return filelist_out
def tilename_stack(ds): # no checks, we assume it's a latlon tile and just get the tile center coordinates extent, proj = extent_stack(ds) poly = vt.poly_from_extent(extent) trans = vt.coord_trans(True, proj, False, 4326) poly.Transform(trans) centroid = vt.get_poly_centroid(poly) tile_name = vt.latlon_to_SRTMGL1_naming(centroid[1], centroid[0]) return tile_name
def point_to_lonlat_trans(epsg_in, list_tup): trans = ot.coord_trans(False, epsg_in, False, 4326) list_tup_out = [] for tup in list_tup: point = ogr.Geometry(ogr.wkbPoint) point.AddPoint(tup[0], tup[1]) point.Transform(trans) coord_out = point.GetPoint()[0:2] list_tup_out.append(coord_out) return list_tup_out
def raster_to_point(fn_dem): extent, proj_wkt = ot.extent_rast(fn_dem) poly = ot.poly_from_extent(extent) transform = ot.coord_trans(True, proj_wkt, False, 4326) poly.Transform(transform) center_lon, center_lat = ot.get_poly_centroid(poly) epsg, utm_zone = ot.latlon_to_UTM(center_lat, center_lon) print('Reprojecting in ' + str(epsg)) img_vhr = GeoImg(fn_dem) dest = gdal.Warp('', img_vhr.gd, format='MEM', dstSRS='EPSG:{}'.format(epsg), xRes=out_res, yRes=out_res, resampleAlg=gdal.GRA_Bilinear, dstNodata=-9999) img_lr = GeoImg(dest) print('Extracting coords...') elevs = img_lr.img.flatten() x, y = img_lr.xy(ctype='center') coords = list(zip(x.flatten(), y.flatten())) coords_latlon = point_to_lonlat_trans(int(epsg), coords) lon, lat = zip(*coords_latlon) lon = np.array(lon) lat = np.array(lat) keep = ~np.isnan(elevs) h = elevs[keep] lat = lat[keep] lon = lon[keep] print('Done for this DEM') return h, lat, lon
print('Found ' + str(len(all_dems)) + ' DEMs.') list_ak = [] list_ant = [] for fn_dem in all_dems: print('DEM number ' + str(all_dems.index(fn_dem)) + ': ' + fn_dem) img = GeoImg(fn_dem) if img.npix_x > 5: #need to figure out why these LAS files don't process properly? extent, proj_wkt = ot.extent_rast(fn_dem) poly = ot.poly_from_extent(extent) print(proj_wkt) transform = ot.coord_trans(True, proj_wkt, False, 4326) poly.Transform(transform) center_lon, center_lat = ot.get_poly_centroid(poly) if center_lat > 0: list_ak.append(fn_dem) else: list_ant.append(fn_dem) reg_dir = ['01_02_rgi60', '19_rgi60'] for reg in reg_dir: print('Working on region: ' + reg) df_reg = pd.DataFrame()
layer_out = ds_shp_out.CreateLayer('buff', srs=srs, geom_type=ogr.wkbPolygon) layer_in = ds_shp_in.GetLayer() multipoly = ogr.Geometry(ogr.wkbMultiPolygon) for feature in layer_in: geom = feature.GetGeometryRef() print('Working on:' + feature.GetField('RGIId')) centroid = geom.Centroid() center_lon, center_lat, _ = centroid.GetPoint() epsg, utm = ot.latlon_to_UTM(center_lat, center_lon) trans = ot.coord_trans(False, 4326, False, int(epsg)) geom.Transform(trans) geom = geom.Buffer(buffer_km * 1000) if utm == '01N' or utm == '01S': utm_ext = [(-179.999, -85), (-179.999, 85), (-168, 85), (-168, -85), (-179.999, -85)] utm_poly = ot.poly_from_coords(inter_poly_coords(utm_ext)) utm_poly.Transform(trans) geom = geom.Intersection(utm_poly) elif utm == '60N' or utm == '60S': utm_ext = [(168, -85), (168, 85), (179.99, 85), (179.999, -85), (168, -85)]