Flood Mapping Google Earth Engine Using Sentinel SAR Satellite Imagery

แชร์
ฝัง
  • เผยแพร่เมื่อ 1 ธ.ค. 2024

ความคิดเห็น • 40

  • @createbyte
    @createbyte  ปีที่แล้ว +6

    -Get Feature Boundary from:
    data.humdata.org/dataset/pakistan-union-council-boundaries-along-with-other-admin-boundaries-dataset
    -Functions code:
    //declared function to convert the images types and perform the functions
    // Function to convert from d
    function toNatural(img) {
    return ee.Image(10.0).pow(img.select(0).divide(10.0));
    }
    //Function to convert to dB
    function toDB(img) {
    return ee.Image(img).log10().multiply(10.0);
    }
    //Apllying a Refined Lee Speckle filter as coded in the SNAP 3.0 S1TBX:
    //github.com/senbox-org/s1tbx/blob/master/s1tbx-op-sar-processing/src/main/java/org/esa/s1tbx/sar/gpf/filtering/SpeckleFilters/RefinedLee.java
    //Adapted by Guido Lemoine
    // by Guido Lemoine
    function RefinedLee(img) {
    // img must be in natural units, i.e. not in dB!
    // Set up 3x3 kernels
    var weights3 = ee.List.repeat(ee.List.repeat(1,3),3);
    var kernel3 = ee.Kernel.fixed(3,3, weights3, 1, 1, false);
    var mean3 = img.reduceNeighborhood(ee.Reducer.mean(), kernel3);
    var variance3 = img.reduceNeighborhood(ee.Reducer.variance(), kernel3);
    // Use a sample of the 3x3 windows inside a 7x7 windows to determine gradients and directions
    var sample_weights = ee.List([[0,0,0,0,0,0,0], [0,1,0,1,0,1,0],[0,0,0,0,0,0,0], [0,1,0,1,0,1,0], [0,0,0,0,0,0,0], [0,1,0,1,0,1,0],[0,0,0,0,0,0,0]]);
    var sample_kernel = ee.Kernel.fixed(7,7, sample_weights, 3,3, false);
    // Calculate mean and variance for the sampled windows and store as 9 bands
    var sample_mean = mean3.neighborhoodToBands(sample_kernel);
    var sample_var = variance3.neighborhoodToBands(sample_kernel);
    // Determine the 4 gradients for the sampled windows
    var gradients = sample_mean.select(1).subtract(sample_mean.select(7)).abs();
    gradients = gradients.addBands(sample_mean.select(6).subtract(sample_mean.select(2)).abs());
    gradients = gradients.addBands(sample_mean.select(3).subtract(sample_mean.select(5)).abs());
    gradients = gradients.addBands(sample_mean.select(0).subtract(sample_mean.select(8)).abs());
    // And find the maximum gradient amongst gradient bands
    var max_gradient = gradients.reduce(ee.Reducer.max());
    // Create a mask for band pixels that are the maximum gradient
    var gradmask = gradients.eq(max_gradient);
    // duplicate gradmask bands: each gradient represents 2 directions
    gradmask = gradmask.addBands(gradmask);
    // Determine the 8 directions
    var directions = sample_mean.select(1).subtract(sample_mean.select(4)).gt(sample_mean.select(4).subtract(sample_mean.select(7))).multiply(1);
    directions = directions.addBands(sample_mean.select(6).subtract(sample_mean.select(4)).gt(sample_mean.select(4).subtract(sample_mean.select(2))).multiply(2));
    directions = directions.addBands(sample_mean.select(3).subtract(sample_mean.select(4)).gt(sample_mean.select(4).subtract(sample_mean.select(5))).multiply(3));
    directions = directions.addBands(sample_mean.select(0).subtract(sample_mean.select(4)).gt(sample_mean.select(4).subtract(sample_mean.select(8))).multiply(4));
    // The next 4 are the not() of the previous 4
    directions = directions.addBands(directions.select(0).not().multiply(5));
    directions = directions.addBands(directions.select(1).not().multiply(6));
    directions = directions.addBands(directions.select(2).not().multiply(7));
    directions = directions.addBands(directions.select(3).not().multiply(8));
    // Mask all values that are not 1-8
    directions = directions.updateMask(gradmask);
    // "collapse" the stack into a singe band image (due to masking, each pixel has just one value (1-8) in it's directional band, and is otherwise masked)
    directions = directions.reduce(ee.Reducer.sum());
    //var pal = ['ffffff','ff0000','ffff00', '00ff00', '00ffff', '0000ff', 'ff00ff', '000000'];
    //Map.addLayer(directions.reduce(ee.Reducer.sum()), {min:1, max:8, palette: pal}, 'Directions', false);
    var sample_stats = sample_var.divide(sample_mean.multiply(sample_mean));
    // Calculate localNoiseVariance
    var sigmaV = sample_stats.toArray().arraySort().arraySlice(0,0,5).arrayReduce(ee.Reducer.mean(), [0]);
    // Set up the 7*7 kernels for directional statistics
    var rect_weights = ee.List.repeat(ee.List.repeat(0,7),3).cat(ee.List.repeat(ee.List.repeat(1,7),4));
    var diag_weights = ee.List([[1,0,0,0,0,0,0], [1,1,0,0,0,0,0], [1,1,1,0,0,0,0],
    [1,1,1,1,0,0,0], [1,1,1,1,1,0,0], [1,1,1,1,1,1,0], [1,1,1,1,1,1,1]]);
    var rect_kernel = ee.Kernel.fixed(7,7, rect_weights, 3, 3, false);
    var diag_kernel = ee.Kernel.fixed(7,7, diag_weights, 3, 3, false);
    // Create stacks for mean and variance using the original kernels. Mask with relevant direction.
    var dir_mean = img.reduceNeighborhood(ee.Reducer.mean(), rect_kernel).updateMask(directions.eq(1));
    var dir_var = img.reduceNeighborhood(ee.Reducer.variance(), rect_kernel).updateMask(directions.eq(1));
    dir_mean = dir_mean.addBands(img.reduceNeighborhood(ee.Reducer.mean(), diag_kernel).updateMask(directions.eq(2)));
    dir_var = dir_var.addBands(img.reduceNeighborhood(ee.Reducer.variance(), diag_kernel).updateMask(directions.eq(2)));
    // and add the bands for rotated kernels
    for (var i=1; i

  • @PlannerSajad
    @PlannerSajad 10 หลายเดือนก่อน

    Wonderful Sir, this video helped me a lot for my class report on "Impact of Flood and their mitigation strategies in Sindh " thank you Sir for your guidelines..... i really appreciate it....

    • @createbyte
      @createbyte  9 หลายเดือนก่อน +1

      All the best

    • @mirwado1384
      @mirwado1384 9 หลายเดือนก่อน

      ​@@createbytesir i have to do research on the topic (pre and post flood water quality analysis in sindh ) so plz sir can u guide me

  • @geykum_shakeshigh
    @geykum_shakeshigh 4 หลายเดือนก่อน

    Thank you for the video and the code sir, I appreciate it

  • @myatmin6336
    @myatmin6336 2 หลายเดือนก่อน +1

    I have a issues which "toDB is not defined" . Please let me know what is this issue?

  • @JHN_Productions
    @JHN_Productions 2 หลายเดือนก่อน +1

    toDB function is not working in my code editor

  • @simbarashethondhlana8327
    @simbarashethondhlana8327 ปีที่แล้ว +1

    Well presented. Thank you so much.

  • @dhiazahira6846
    @dhiazahira6846 11 หลายเดือนก่อน

    Hello sir, thanks for the video. I wanna ask you how to determine the min max value?

  • @DorsaMohammadi-zq2nt
    @DorsaMohammadi-zq2nt 2 หลายเดือนก่อน +1

    how can access to all codes?

  • @jovin.thazhal
    @jovin.thazhal 3 หลายเดือนก่อน

    mine showing zero size and boundary is not adding in the layer
    what can i do

  • @geykum_shakeshigh
    @geykum_shakeshigh 4 หลายเดือนก่อน

    Can I ask a question here mate, am sure you'all have encountered an issue where you have to clip a DEM file for a small area it shows pixels, just pixels, can this be Improved like using GEE to have the exact scale for proper representation of the map?

  • @dhiazahira6846
    @dhiazahira6846 11 หลายเดือนก่อน

    Sir, what the name of methodh that you use, change detection or something else?

  • @facts_tv6343
    @facts_tv6343 10 หลายเดือนก่อน

    Which code can we use to output the final map result. please can you reply below. Thank you

    • @createbyte
      @createbyte  9 หลายเดือนก่อน

      map.layer and then include the layer you want add

  • @siyadabdirahmansiyad379
    @siyadabdirahmansiyad379 ปีที่แล้ว

    thanks for your kind sharing bro, How can get other countries feature boundaries?

    • @createbyte
      @createbyte  ปีที่แล้ว

      Yes . Just search for your country boundary shape files

  • @jyotiprakashhati4058
    @jyotiprakashhati4058 ปีที่แล้ว +1

    The code says toDB is not defined.

    • @createbyte
      @createbyte  ปีที่แล้ว

      Check the comments section and description
      I have pinned the toDB function there
      You can simply copy paste that into your editor

  • @elsysielatchom
    @elsysielatchom ปีที่แล้ว +2

    Good morning Sir thanks for this kind explanation. Please can you share script with us?

    • @createbyte
      @createbyte  ปีที่แล้ว +2

      Will upload soon

  • @GISHacks
    @GISHacks 8 หลายเดือนก่อน

    Thank you so much. Would you please share the code?

  • @eeshacrafts6122
    @eeshacrafts6122 ปีที่แล้ว

    Good say sir, please i stuck 😢.
    My good state size is printing as zero, what do i do?

    • @eeshacrafts6122
      @eeshacrafts6122 ปีที่แล้ว

      Please I would appreciate getting a response as soon as possible

    • @createbyte
      @createbyte  ปีที่แล้ว

      Is your issue fixed ?

  • @valosspu2024
    @valosspu2024 5 หลายเดือนก่อน

    i'm getting same value of in inspector of good and flood filter its all same as you

  • @birhanukifle517
    @birhanukifle517 ปีที่แล้ว

    It is Nice

  • @kingkhan-qb5rj
    @kingkhan-qb5rj 9 หลายเดือนก่อน

    Is it possible to calculate total flood area of Pakistan?

  • @razirajpoot200
    @razirajpoot200 4 หลายเดือนก่อน

    can i get coding?

  • @ZeeshanZafarzams706
    @ZeeshanZafarzams706 7 หลายเดือนก่อน

    But this code shows a lot of water bodies on the eastern side, which we all know is a huge desert. I think its mixing sand with water.

  • @SocialAnalyst33
    @SocialAnalyst33 ปีที่แล้ว

    Asslamualikum Sir. Thanks for This video, Can you share the flood report ! i need it

    • @createbyte
      @createbyte  ปีที่แล้ว

      pdma.gos.pk/flood-2022-in-sindh/
      Download the pdf from here brother

  • @geologistdinesh
    @geologistdinesh ปีที่แล้ว

    could you send me code of this anaysis

    • @createbyte
      @createbyte  ปีที่แล้ว

      Even if I share you the code
      It wont run because you wont have the imported assets , which are non shareable at the moment by Earth engine

  • @usamakhatab8989
    @usamakhatab8989 8 หลายเดือนก่อน

    flood water should be more than simple water. but in this analysis simple water is more. why?

  • @dwikifebriyan-z9k
    @dwikifebriyan-z9k ปีที่แล้ว

    bang bagi codingnya bang

  • @geologistdinesh
    @geologistdinesh ปีที่แล้ว +1

    Non-satisfied your answer, we want to see ce script, otherwise no explanation is required

    • @createbyte
      @createbyte  ปีที่แล้ว

      Will surely try to work on that in upcoming videos

  • @Rajesh-t3l6c
    @Rajesh-t3l6c 6 หลายเดือนก่อน

    T