forked from kilianv/CoastSat_WRL
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
3.1 KiB
Python
106 lines
3.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
#==========================================================#
|
|
# Draw reference points on satellite image
|
|
#==========================================================#
|
|
|
|
# Preamble
|
|
import os
|
|
import ee
|
|
import matplotlib.pyplot as plt
|
|
import matplotlib.cm as cm
|
|
import numpy as np
|
|
import pandas as pd
|
|
from datetime import datetime
|
|
import pickle
|
|
import pdb
|
|
import pytz
|
|
from pylab import ginput
|
|
|
|
# image processing modules
|
|
import skimage.filters as filters
|
|
import skimage.exposure as exposure
|
|
import skimage.transform as transform
|
|
import sklearn.decomposition as decomposition
|
|
import skimage.morphology as morphology
|
|
import skimage.measure as measure
|
|
|
|
# my functions
|
|
import functions.utils as utils
|
|
import functions.sds as sds
|
|
|
|
np.seterr(all='ignore') # raise/ignore divisions by 0 and nans
|
|
ee.Initialize()
|
|
|
|
# collection
|
|
input_col = ee.ImageCollection('LANDSAT/LC08/C01/T1_RT_TOA')
|
|
|
|
# location (Narrabeen-Collaroy beach)
|
|
#polygon = [[[151.301454, -33.700754],
|
|
# [151.311453, -33.702075],
|
|
# [151.307237, -33.739761],
|
|
# [151.294220, -33.736329],
|
|
# [151.301454, -33.700754]]];
|
|
# location (Oldbar shoreline)
|
|
#polygon = [[[152.664508, -31.896163],
|
|
# [152.665827, -31.897112],
|
|
# [152.631516, -31.924846],
|
|
# [152.629285, -31.923362],
|
|
# [152.664508, -31.896163]]];
|
|
# location (Oldbar inlet)
|
|
polygon = [[[152.676283, -31.866784],
|
|
[152.709174, -31.869993],
|
|
[152.678229, -31.892082],
|
|
[152.670366, -31.886360],
|
|
[152.676283, -31.866784]]];
|
|
|
|
# dates
|
|
start_date = '2017-01-30'
|
|
end_date = '2017-02-02'
|
|
#start_date = '2017-01-30'
|
|
#end_date = '2018-02-02'
|
|
# filter by location
|
|
flt_col = input_col.filterBounds(ee.Geometry.Polygon(polygon)).filterDate(start_date, end_date)
|
|
|
|
n_img = flt_col.size().getInfo()
|
|
print('Number of images covering the area:', n_img)
|
|
im_all = flt_col.getInfo().get('features')
|
|
|
|
satname = 'L8'
|
|
#sitename = 'NARRA'
|
|
sitename = 'OLDBAR_inlet'
|
|
|
|
# parameters
|
|
plot_bool = False # if you want the plots
|
|
prob_high = 99.9 # upper probability to clip and rescale pixel intensity
|
|
min_contour_points = 100 # minimum number of points contained in each water line
|
|
output_epsg = 28356 # GDA94 / MGA Zone 56
|
|
cloud_threshold = 0.8
|
|
|
|
# find image in ee database
|
|
im = ee.Image(im_all[0].get('id'))
|
|
# load image as np.array
|
|
im_pan, im_ms, im_cloud, crs, meta = sds.read_eeimage(im, polygon, satname, plot_bool)
|
|
|
|
# rescale intensities
|
|
im_ms = sds.rescale_image_intensity(im_ms, im_cloud, prob_high, plot_bool)
|
|
im_pan = sds.rescale_image_intensity(im_pan, im_cloud, prob_high, plot_bool)
|
|
|
|
# pansharpen rgb image
|
|
im_ms_ps = sds.pansharpen(im_ms[:,:,[0,1,2]], im_pan, im_cloud, plot_bool)
|
|
|
|
plt.figure()
|
|
plt.imshow(im_ms_ps[:,:,[2,1,0]])
|
|
plt.show()
|
|
|
|
pts = ginput(n=50, timeout=1000, show_clicks=True)
|
|
points = np.array(pts)
|
|
plt.plot(points[:,0], points[:,1], 'ko')
|
|
plt.show()
|
|
|
|
pts_coords = sds.convert_pix2world(points[:,[1,0]], crs['crs_15m'])
|
|
pts = sds.convert_epsg(pts_coords, crs['epsg_code'], output_epsg)
|
|
|
|
filepath = os.path.join(os.getcwd(), 'data', satname, sitename)
|
|
with open(os.path.join(filepath, sitename + '_refpoints2.pkl'), 'wb') as f:
|
|
pickle.dump(pts, f) |