예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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()
예제 #6
0
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)]