diff --git a/.github/actions/python_build/action.yml b/.github/actions/python_build/action.yml index 3eab1778d..97d9b3af2 100644 --- a/.github/actions/python_build/action.yml +++ b/.github/actions/python_build/action.yml @@ -12,6 +12,8 @@ runs: run: | cd python pip install build wheel pyspark==${{ matrix.spark }} numpy==${{ matrix.numpy }} + pip install numpy==${{ matrix.numpy }} + pip install --no-build-isolation --no-cache-dir --force-reinstall gdal==${{ matrix.gdal }} pip install . - name: Test and build python package shell: bash diff --git a/.github/actions/r_build/action.yml b/.github/actions/r_build/action.yml index e970f2fdb..c9fa2f231 100644 --- a/.github/actions/r_build/action.yml +++ b/.github/actions/r_build/action.yml @@ -23,8 +23,8 @@ runs: name: Download and unpack Spark shell: bash run: | - wget -P /usr/spark-download/raw https://archive.apache.org/dist/spark/spark-3.2.1/spark-3.2.1-bin-hadoop2.7.tgz - tar zxvf /usr/spark-download/raw/spark-3.2.1-bin-hadoop2.7.tgz -C /usr/spark-download/unzipped + wget -P /usr/spark-download/raw https://archive.apache.org/dist/spark/spark-${{ matrix.spark }}/spark-${{ matrix.spark }}-bin-hadoop3.tgz + tar zxvf /usr/spark-download/raw/spark-${{ matrix.spark }}-bin-hadoop3.tgz -C /usr/spark-download/unzipped - name: Create R environment shell: bash run: | @@ -50,16 +50,25 @@ runs: run: | cd R Rscript --vanilla generate_docs.R + env: + SPARK_HOME: /usr/spark-download/unzipped/spark-${{ matrix.spark }}-bin-hadoop3 - name: Build R package shell: bash run: | cd R Rscript --vanilla build_r_package.R - - name: Test R package + env: + SPARK_HOME: /usr/spark-download/unzipped/spark-${{ matrix.spark }}-bin-hadoop3 + - name: Test SparkR package shell: bash run: | cd R/sparkR-mosaic Rscript --vanilla tests.R + - name: Test sparklyr package + shell: bash + run: | + cd R/sparklyr-mosaic + Rscript --vanilla tests.R - name: Copy R artifacts to GH Actions run shell: bash run: | diff --git a/.github/actions/scala_build/action.yml b/.github/actions/scala_build/action.yml index 5e12ead9a..2d999f0ca 100644 --- a/.github/actions/scala_build/action.yml +++ b/.github/actions/scala_build/action.yml @@ -23,6 +23,8 @@ runs: pip install databricks-mosaic-gdal==${{ matrix.gdal }} sudo tar -xf /opt/hostedtoolcache/Python/${{ matrix.python }}/x64/lib/python3.9/site-packages/databricks-mosaic-gdal/resources/gdal-${{ matrix.gdal }}-filetree.tar.xz -C / sudo tar -xhf /opt/hostedtoolcache/Python/${{ matrix.python }}/x64/lib/python3.9/site-packages/databricks-mosaic-gdal/resources/gdal-${{ matrix.gdal }}-symlinks.tar.xz -C / + pip install numpy==${{ matrix.numpy }} + pip install gdal==${{ matrix.gdal }} - name: Test and build the scala JAR - skip tests is false if: inputs.skip_tests == 'false' shell: bash diff --git a/LICENSE b/LICENSE index 21db58bb9..dc30b4656 100644 --- a/LICENSE +++ b/LICENSE @@ -1,25 +1,69 @@ -DB license + Databricks License + Copyright (2022) Databricks, Inc. -Copyright (2022) Databricks, Inc. + Definitions. + + Agreement: The agreement between Databricks, Inc., and you governing + the use of the Databricks Services, as that term is defined in + the Master Cloud Services Agreement (MCSA) located at + www.databricks.com/legal/mcsa. + + Licensed Materials: The source code, object code, data, and/or other + works to which this license applies. -Definitions. + Scope of Use. You may not use the Licensed Materials except in + connection with your use of the Databricks Services pursuant to + the Agreement. Your use of the Licensed Materials must comply at all + times with any restrictions applicable to the Databricks Services, + generally, and must be used in accordance with any applicable + documentation. You may view, use, copy, modify, publish, and/or + distribute the Licensed Materials solely for the purposes of using + the Licensed Materials within or connecting to the Databricks Services. + If you do not agree to these terms, you may not view, use, copy, + modify, publish, and/or distribute the Licensed Materials. + + Redistribution. You may redistribute and sublicense the Licensed + Materials so long as all use is in compliance with these terms. + In addition: + + - You must give any other recipients a copy of this License; + - You must cause any modified files to carry prominent notices + stating that you changed the files; + - You must retain, in any derivative works that you distribute, + all copyright, patent, trademark, and attribution notices, + excluding those notices that do not pertain to any part of + the derivative works; and + - If a "NOTICE" text file is provided as part of its + distribution, then any derivative works that you distribute + must include a readable copy of the attribution notices + contained within such NOTICE file, excluding those notices + that do not pertain to any part of the derivative works. -Agreement: The agreement between Databricks, Inc., and you governing the use of the Databricks Services, which shall be, with respect to Databricks, the Databricks Terms of Service located at www.databricks.com/termsofservice, and with respect to Databricks Community Edition, the Community Edition Terms of Service located at www.databricks.com/ce-termsofuse, in each case unless you have entered into a separate written agreement with Databricks governing the use of the applicable Databricks Services. + You may add your own copyright statement to your modifications and may + provide additional license terms and conditions for use, reproduction, + or distribution of your modifications, or for any such derivative works + as a whole, provided your use, reproduction, and distribution of + the Licensed Materials otherwise complies with the conditions stated + in this License. -Software: The source code and object code to which this license applies. + Termination. This license terminates automatically upon your breach of + these terms or upon the termination of your Agreement. Additionally, + Databricks may terminate this license at any time on notice. Upon + termination, you must permanently delete the Licensed Materials and + all copies thereof. -Scope of Use. You may not use this Software except in connection with your use of the Databricks Services pursuant to the Agreement. Your use of the Software must comply at all times with any restrictions applicable to the Databricks Services, generally, and must be used in accordance with any applicable documentation. You may view, use, copy, modify, publish, and/or distribute the Software solely for the purposes of using the code within or connecting to the Databricks Services. If you do not agree to these terms, you may not view, use, copy, modify, publish, and/or distribute the Software. + DISCLAIMER; LIMITATION OF LIABILITY. -Redistribution. You may redistribute and sublicense the Software so long as all use is in compliance with these terms. In addition: - -You must give any other recipients a copy of this License; -You must cause any modified files to carry prominent notices stating that you changed the files; -You must retain, in the source code form of any derivative works that you distribute, all copyright, patent, trademark, and attribution notices from the source code form, excluding those notices that do not pertain to any part of the derivative works; and -If the source code form includes a "NOTICE" text file as part of its distribution, then any derivative works that you distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the derivative works. -You may add your own copyright statement to your modifications and may provide additional license terms and conditions for use, reproduction, or distribution of your modifications, or for any such derivative works as a whole, provided your use, reproduction, and distribution of the Software otherwise complies with the conditions stated in this License. - -Termination. This license terminates automatically upon your breach of these terms or upon the termination of your Agreement. Additionally, Databricks may terminate this license at any time on notice. Upon termination, you must permanently delete the Software and all copies thereof. - -DISCLAIMER; LIMITATION OF LIABILITY. - -THE SOFTWARE IS PROVIDED “AS-IS” AND WITH ALL FAULTS. DATABRICKS, ON BEHALF OF ITSELF AND ITS LICENSORS, SPECIFICALLY DISCLAIMS ALL WARRANTIES RELATING TO THE SOURCE CODE, EXPRESS AND IMPLIED, INCLUDING, WITHOUT LIMITATION, IMPLIED WARRANTIES, CONDITIONS AND OTHER TERMS OF MERCHANTABILITY, SATISFACTORY QUALITY OR FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. DATABRICKS AND ITS LICENSORS TOTAL AGGREGATE LIABILITY RELATING TO OR ARISING OUT OF YOUR USE OF OR DATABRICKS’ PROVISIONING OF THE SOURCE CODE SHALL BE LIMITED TO ONE THOUSAND ($1,000) DOLLARS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + THE LICENSED MATERIALS ARE PROVIDED “AS-IS” AND WITH ALL FAULTS. + DATABRICKS, ON BEHALF OF ITSELF AND ITS LICENSORS, SPECIFICALLY + DISCLAIMS ALL WARRANTIES RELATING TO THE LICENSED MATERIALS, EXPRESS + AND IMPLIED, INCLUDING, WITHOUT LIMITATION, IMPLIED WARRANTIES, + CONDITIONS AND OTHER TERMS OF MERCHANTABILITY, SATISFACTORY QUALITY OR + FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. DATABRICKS AND + ITS LICENSORS TOTAL AGGREGATE LIABILITY RELATING TO OR ARISING OUT OF + YOUR USE OF OR DATABRICKS’ PROVISIONING OF THE LICENSED MATERIALS SHALL + BE LIMITED TO ONE THOUSAND ($1,000) DOLLARS. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE LICENSED MATERIALS OR + THE USE OR OTHER DEALINGS IN THE LICENSED MATERIALS. diff --git a/R/.gitignore b/R/.gitignore index eb4bec116..f5b37c1ec 100644 --- a/R/.gitignore +++ b/R/.gitignore @@ -1,2 +1,3 @@ **/.Rhistory **/*.tar.gz +/sparklyr-mosaic/metastore_db/ diff --git a/R/build_r_package.R b/R/build_r_package.R index ab82b99b1..a114736d1 100644 --- a/R/build_r_package.R +++ b/R/build_r_package.R @@ -1,13 +1,6 @@ -spark_location <- "/usr/spark-download/unzipped/spark-3.2.1-bin-hadoop2.7" -Sys.setenv(SPARK_HOME = spark_location) - +spark_location <- Sys.getenv("SPARK_HOME") library(SparkR, lib.loc = c(file.path(spark_location, "R", "lib"))) - - library(pkgbuild) -library(sparklyr) - - build_mosaic_bindings <- function(){ ## build package diff --git a/R/generate_R_bindings.R b/R/generate_R_bindings.R index 96a1d8286..093d68e95 100644 --- a/R/generate_R_bindings.R +++ b/R/generate_R_bindings.R @@ -8,14 +8,14 @@ library(methods) parser <- function(x){ #split on left bracket to get name - splitted = strsplit(x, "(", fixed=T)[[1]] + splitted <- strsplit(x, "(", fixed=T)[[1]] # extract function name - function_name = splitted[1] + function_name <- splitted[1] # remove the trailing bracket - args = gsub( ")", '',splitted[2], fixed=T) - args = strsplit(args, ", ", fixed=T)[[1]] - args = lapply(args, function(x){strsplit(x, ": ", fixed=T)}[[1]]) - output = list( + args <- gsub( ")", '',splitted[2], fixed=T) + args <- strsplit(args, ", ", fixed=T)[[1]] + args <- lapply(args, function(x){strsplit(x, ": ", fixed=T)}[[1]]) + output <- list( "function_name" = function_name ,"args"=args ) @@ -24,8 +24,8 @@ parser <- function(x){ ############################################################ build_generic <- function(input){ - function_name = input$function_name - args = lapply(input$args, function(x){x[1]}) + function_name <- input$function_name + args <- lapply(input$args, function(x){x[1]}) paste0( '#\' @rdname ', function_name, ' setGeneric( @@ -35,21 +35,9 @@ build_generic <- function(input){ ') } - -build_generic2 <- function(input){ - function_name = input$function_name - args = lapply(input$args, function(x){x[1]}) - paste0( - '#\' @rdname ', function_name, ' - setGeneric( - name="',function_name,'" - ,def=function(',paste0(args, collapse=','), ') {standardGeneric("',function_name, '")} - ) - ') -} ############################################################ build_column_specifiers <- function(input){ - args = lapply(input$args, function(x){x[1]}) + args <- lapply(input$args, function(x){x[1]}) build_column_specifier <- function(arg){ return(paste0(arg, '@jc')) } @@ -62,29 +50,32 @@ build_column_specifiers <- function(input){ } ############################################################ build_method<-function(input){ - function_name = input$function_name - arg_names = lapply(input$args, function(x){c(x[1])}) + function_name <- input$function_name + arg_names <- lapply(input$args, function(x){c(x[1])}) #this handles converting non-Column arguments to their R equivalents argument_parser <- function(x){ if(x[2] == 'Int'){ - x[2] = "numeric" + x[2] <- "numeric" } else if(x[2] == 'String'){ - x[2] = "character" + x[2] <- "character" } else if(x[2] == 'Double'){ - x[2] = "numeric" + x[2] <- "numeric" + } + else if(x[2] == 'Boolean') { + x[2] <- "logical" } x } # convert scala type to R types - args = lapply(input$args, argument_parser) + args <- lapply(input$args, argument_parser) # take a copy for building the docs - param_args = args + param_args <- args # wrap the strings in speech marks - args = lapply(args, function(x){c(x[1], paste0("'", x[2], "'"))}) + args <- lapply(args, function(x){c(x[1], paste0("'", x[2], "'"))}) # collapse down to a single string - args = lapply(args, function(x){paste0(x, collapse= ' = ')}) + args <- lapply(args, function(x){paste0(x, collapse= ' = ')}) column_specifiers <- build_column_specifiers(input) docstring <- paste0( c(paste0(c("#'", function_name), collapse=" "), @@ -116,48 +107,62 @@ build_method<-function(input){ ############################################################ get_function_names <- function(scala_file_path){ #scala_file_path = "~/Documents/mosaic/src/main/scala/com/databricks/labs/mosaic/functions/MosaicContext.scala" - scala_file_object = file(scala_file_path) + scala_file_object <- file(scala_file_path) - scala_file = readLines(scala_file_object) + scala_file <- readLines(scala_file_object) closeAllConnections() # find where the methods start - start_string = " object functions extends Serializable {" - start_index = grep(start_string, scala_file, fixed=T) + 1 + start_string <- " object functions extends Serializable {" + start_index <- grep(start_string, scala_file, fixed=T) + 1 # find the methods end - will be the next curly bracket # need to find where the matching end brace for the start string is located. # counter starts at 1 as the start string includes the opening brace - brace_counter = 1 + brace_counter <- 1 for(i in start_index : length(scala_file)){ # split the string into characters - returns a list so unlist it line_characters <- unlist(strsplit(scala_file[i], '')) # count the number of brace opens - n_opens = sum(grepl("{", line_characters, fixed=T)) + n_opens <- sum(grepl("{", line_characters, fixed=T)) # count the number of brace closes - n_closes = sum(grepl("}", line_characters, fixed=T)) + n_closes <- sum(grepl("}", line_characters, fixed=T)) # update the counter brace_counter <- brace_counter + n_opens - n_closes if (brace_counter == 0) break } - methods_to_bind = scala_file[start_index:i] + methods_to_bind <- scala_file[start_index:i] # remove any line that doesn't start with def - def_mask = grepl('\\s+def .*', methods_to_bind) - methods_to_bind = methods_to_bind[def_mask] + def_mask <- grepl('\\s+def .*', methods_to_bind) + methods_to_bind <- methods_to_bind[def_mask] # parse the string to get just the function_name(input:type...) pattern - methods_to_bind = unlist(lapply(methods_to_bind, function(x){ + methods_to_bind <- unlist(lapply(methods_to_bind, function(x){ substr(x , regexpr("def ", x, fixed=T)[1]+4 # get the starting point to account for whitespace , regexpr("): ", x, fixed=T)[1] # get the end point of where the return is. ) } )) - sort(methods_to_bind, T) + sort_methods_by_argcount(methods_to_bind) +} + +############################################################ +sort_methods_by_argcount <- function(methods) { + # Split the strings by colon and calculate the number of colons + method_names <- sapply(strsplit(methods, "\\("), function(x) x[1]) + argcount <- sapply(strsplit(methods, ","), function(x) length(x) - 1) + + # Use the order function to sort first alphabetically and then by the number of colons + order_indices <- order(method_names, argcount) + + # Return the sorted list + methods_sorted <- methods[order_indices] + return(methods_sorted) } ############################################################ build_sparklyr_mosaic_function <- function(input){ - function_name = input$function_name + function_name <- input$function_name paste0( "#' ", function_name, "\n\n", @@ -191,7 +196,7 @@ main <- function(scala_file_path){ ########################## ########################## # build sparkr functions - function_data = get_function_names(scala_file_path) + function_data <- get_function_names(scala_file_path) parsed <- lapply(function_data, parser) @@ -223,9 +228,9 @@ main <- function(scala_file_path){ # supplementary files sparkr_supplementary_files <- c("sparklyr-mosaic/enableMosaic.R", "sparklyr-mosaic/sparkFunctions.R") copy_supplementary_file(sparkr_supplementary_files, "sparklyr-mosaic/sparklyrMosaic/R/") - } + args <- commandArgs(trailingOnly = T) if (length(args) != 1){ stop("Please provide the MosaicContext.scala file path to generate_sparkr_functions.R") diff --git a/R/generate_docs.R b/R/generate_docs.R index 06b23e6fa..4b5fe19b3 100644 --- a/R/generate_docs.R +++ b/R/generate_docs.R @@ -1,6 +1,4 @@ -spark_location <- "/usr/spark-download/unzipped/spark-3.2.1-bin-hadoop2.7" -Sys.setenv(SPARK_HOME = spark_location) - +spark_location <- Sys.getenv("SPARK_HOME") library(SparkR, lib.loc = c(file.path(spark_location, "R", "lib"))) library(roxygen2) diff --git a/R/install_deps.R b/R/install_deps.R index d05207329..10a35e7d6 100644 --- a/R/install_deps.R +++ b/R/install_deps.R @@ -1,5 +1,3 @@ options(repos = c(CRAN = "https://packagemanager.posit.co/cran/__linux__/focal/latest")) -install.packages("pkgbuild") -install.packages("roxygen2") -install.packages("sparklyr") \ No newline at end of file +install.packages(c("pkgbuild", "testthat", "roxygen2", "sparklyr")) \ No newline at end of file diff --git a/R/sparkR-mosaic/sparkrMosaic/tests/testthat/data.R b/R/sparkR-mosaic/sparkrMosaic/tests/testthat/data.R new file mode 100644 index 000000000..1ad46c114 --- /dev/null +++ b/R/sparkR-mosaic/sparkrMosaic/tests/testthat/data.R @@ -0,0 +1,228 @@ +inputGJ = '{ + "type":"Feature", + "properties":{ + "shape_area":"0.0000607235737749", + "objectid":"24", + "shape_leng":"0.0469999619287", + "location_id":"24", + "zone":"Bloomingdale", + "borough":"Manhattan" + }, + "geometry":{ + "type":"MultiPolygon", + "coordinates":[ + [ + [ + [ + -73.95953658899997, + 40.7987185259999 + ], + [ + -73.96004456499999, + 40.79804123499991 + ], + [ + -73.96147779999993, + 40.79865415599994 + ], + [ + -73.96286980099991, + 40.799239676999946 + ], + [ + -73.96571144299992, + 40.80043806999988 + ], + [ + -73.96775900399992, + 40.80130351599994 + ], + [ + -73.96787379699998, + 40.80135169799993 + ], + [ + -73.96798415999996, + 40.80139826599985 + ], + [ + -73.96858360799983, + 40.80163546999991 + ], + [ + -73.97004742199995, + 40.80226500999991 + ], + [ + -73.97021594799989, + 40.80233585099994 + ], + [ + -73.97027400499987, + 40.802359035999885 + ], + [ + -73.97032589799987, + 40.80238456099995 + ], + [ + -73.97150381000002, + 40.80283773599996 + ], + [ + -73.97250022199995, + 40.80321661299997 + ], + [ + -73.97257779799996, + 40.803247183999915 + ], + [ + -73.9726574479999, + 40.803276513999926 + ], + [ + -73.97279907800002, + 40.803329158999894 + ], + [ + -73.97287179090726, + 40.803356187573904 + ], + [ + -73.97255429829633, + 40.80379863465013 + ], + [ + -73.97217237241792, + 40.80431907695909 + ], + [ + -73.97205095521862, + 40.80453037600999 + ], + [ + -73.9719529243853, + 40.804619709051586 + ], + [ + -73.97181849483539, + 40.80471754320449 + ], + [ + -73.97179980150743, + 40.80478561548601 + ], + [ + -73.97171200727101, + 40.80493169127652 + ], + [ + -73.9716204956932, + 40.80504229439937 + ], + [ + -73.97161113391445, + 40.80509618747434 + ], + [ + -73.97144210961531, + 40.80533442683979 + ], + [ + -73.9712908330033, + 40.805528707533185 + ], + [ + -73.97110765876137, + 40.805790139589654 + ], + [ + -73.97098767999995, + 40.805742902999974 + ], + [ + -73.97084148399995, + 40.80568534399987 + ], + [ + -73.97076362299994, + 40.80565737299987 + ], + [ + -73.97069326499995, + 40.80563026799993 + ], + [ + -73.96978722000001, + 40.80530049699997 + ], + [ + -73.96860707399988, + 40.804870949999895 + ], + [ + -73.96855913399985, + 40.80485358399993 + ], + [ + -73.96849506699984, + 40.80483226999993 + ], + [ + -73.96804849299988, + 40.804683699999906 + ], + [ + -73.96680327299997, + 40.804207560999906 + ], + [ + -73.96670106899995, + 40.80416847599993 + ], + [ + -73.96659731599986, + 40.804122764999946 + ], + [ + -73.96386126299988, + 40.80297203799993 + ], + [ + -73.96107793999975, + 40.801800357999866 + ], + [ + -73.95964685399987, + 40.80115642299993 + ], + [ + -73.95848111500001, + 40.800670477999894 + ], + [ + -73.95817297099987, + 40.800582540999876 + ], + [ + -73.95833304999988, + 40.80036505399989 + ], + [ + -73.95861879299989, + 40.79997702599996 + ], + [ + -73.95907669099992, + 40.79935223299986 + ], + [ + -73.95953658899997, + 40.7987185259999 + ] + ] + ] + ] + } +}' \ No newline at end of file diff --git a/R/sparkR-mosaic/sparkrMosaic/tests/testthat/testVectorFunctions.R b/R/sparkR-mosaic/sparkrMosaic/tests/testthat/testVectorFunctions.R new file mode 100644 index 000000000..ad7032134 --- /dev/null +++ b/R/sparkR-mosaic/sparkrMosaic/tests/testthat/testVectorFunctions.R @@ -0,0 +1,96 @@ +source("data.R") + +test_that("scalar vector functions behave as intended", { + sdf <- SparkR::createDataFrame( + data.frame( + wkt = "POLYGON ((0 0, 0 2, 1 2, 1 0, 0 0))", + point_wkt = "POINT (1 1)" + ) + ) + + sdf <- withColumn(sdf, "st_area", st_area(column("wkt"))) + sdf <- withColumn(sdf, "st_length", st_length(column("wkt"))) + sdf <- withColumn(sdf, "st_perimeter", st_perimeter(column("wkt"))) + sdf <- withColumn(sdf, "st_convexhull", st_convexhull(column("wkt"))) + sdf <- withColumn(sdf, "st_dump", st_dump(column("wkt"))) + sdf <- withColumn(sdf, "st_translate", st_translate(column("wkt"), lit(1), lit(1))) + sdf <- withColumn(sdf, "st_scale", st_scale(column("wkt"), lit(1), lit(1))) + sdf <- withColumn(sdf, "st_rotate", st_rotate(column("wkt"), lit(1))) + sdf <- withColumn(sdf, "st_centroid", st_centroid(column("wkt"))) + sdf <- withColumn(sdf, "st_length", st_length(column("wkt"))) + sdf <- withColumn(sdf, "st_isvalid", st_isvalid(column("wkt"))) + sdf <- withColumn(sdf, "st_intersects", st_intersects(column("wkt"), column("wkt"))) + sdf <- withColumn(sdf, "st_intersection", st_intersection(column("wkt"), column("wkt"))) + sdf <- withColumn(sdf, "st_geometrytype", st_geometrytype(column("wkt"))) + sdf <- withColumn(sdf, "st_isvalid", st_isvalid(column("wkt"))) + sdf <- withColumn(sdf, "st_xmin", st_xmin(column("wkt"))) + sdf <- withColumn(sdf, "st_xmax", st_xmax(column("wkt"))) + sdf <- withColumn(sdf, "st_ymin", st_ymin(column("wkt"))) + sdf <- withColumn(sdf, "st_ymax", st_ymax(column("wkt"))) + sdf <- withColumn(sdf, "st_zmin", st_zmin(column("wkt"))) + sdf <- withColumn(sdf, "st_zmax", st_zmax(column("wkt"))) + sdf <- withColumn(sdf, "flatten_polygons", flatten_polygons(column("wkt"))) + + # SRID + sdf <- withColumn(sdf, "geom_with_srid", st_setsrid(st_geomfromwkt(column("wkt")), lit(4326L))) + sdf <- withColumn(sdf, "srid_check", st_srid(column("geom_with_srid"))) + sdf <- withColumn(sdf, "transformed_geom", st_transform(column("geom_with_srid"), lit(3857L))) + + # Grid functions + sdf <- withColumn(sdf, "grid_longlatascellid", grid_longlatascellid(lit(1), lit(1), lit(1L))) + sdf <- withColumn(sdf, "grid_pointascellid", grid_pointascellid(column("point_wkt"), lit(1L))) + sdf <- withColumn(sdf, "grid_boundaryaswkb", grid_boundaryaswkb(column("grid_pointascellid"))) + sdf <- withColumn(sdf, "grid_polyfill", grid_polyfill(column("wkt"), lit(1L))) + sdf <- withColumn(sdf, "grid_tessellateexplode", grid_tessellateexplode(column("wkt"), lit(1L))) + sdf <- withColumn(sdf, "grid_tessellate", grid_tessellate(column("wkt"), lit(1L))) + + # Deprecated + sdf <- withColumn(sdf, "point_index_lonlat", point_index_lonlat(lit(1), lit(1), lit(1L))) + sdf <- withColumn(sdf, "point_index_geom", point_index_geom(column("point_wkt"), lit(1L))) + sdf <- withColumn(sdf, "index_geometry", index_geometry(column("point_index_geom"))) + sdf <- withColumn(sdf, "polyfill", polyfill(column("wkt"), lit(1L))) + sdf <- withColumn(sdf, "mosaic_explode", mosaic_explode(column("wkt"), lit(1L))) + sdf <- withColumn(sdf, "mosaicfill", mosaicfill(column("wkt"), lit(1L))) + + expect_no_error(SparkR::write.df(sdf, source = "noop", mode = "overwrite")) + expect_equal(nrow(sdf), 1) + +}) + +test_that("aggregate vector functions behave as intended", { + + sdf <- SparkR::sql("SELECT id as location_id FROM range(1)") + sdf <- withColumn(sdf, "geometry", st_geomfromgeojson(lit(inputGJ))) + expect_equal(nrow(sdf), 1) + + sdf.l <- select(sdf, alias(column("location_id"), "left_id"), alias(column("geometry"), "left_geom")) + sdf.l <- withColumn(sdf.l, "left_index", mosaic_explode(column("left_geom"), lit(11L))) + + sdf.r <- select(sdf, alias(column("location_id"), "right_id"), alias(column("geometry"), "right_geom")) + sdf.r <- withColumn(sdf.r, "right_geom", st_translate( + column("right_geom"), + st_area(column("right_geom")) * runif(1) * 0.1, + st_area(column("right_geom")) * runif(1) * 0.1 + ) + ) + sdf.r <- withColumn(sdf.r, "right_index", mosaic_explode(column("right_geom"), lit(11L))) + + sdf.intersection <- join(sdf.l, sdf.r, sdf.l$left_index == sdf.r$right_index, "inner") + sdf.intersection <- summarize( + groupBy(sdf.intersection, sdf.intersection$left_id, sdf.intersection$right_id), + agg_intersects = st_intersects_aggregate(column("left_index"), column("right_index")), + agg_intersection = st_intersection_aggregate(column("left_index"), column("right_index")), + left_geom = first(column("left_geom")), + right_geom = first(column("right_geom")) + ) + sdf.intersection <- withColumn(sdf.intersection, "flat_intersects", st_intersects(column("left_geom"), column("right_geom"))) + sdf.intersection <- withColumn(sdf.intersection, "comparison_intersects", column("agg_intersects") == column("flat_intersects")) + sdf.intersection <- withColumn(sdf.intersection, "agg_area", st_area(column("agg_intersection"))) + sdf.intersection <- withColumn(sdf.intersection, "flat_intersection", st_intersection(column("left_geom"), column("right_geom"))) + sdf.intersection <- withColumn(sdf.intersection, "flat_area", st_area(column("flat_intersection"))) + sdf.intersection <- withColumn(sdf.intersection, "comparison_intersection", abs(column("agg_area") - column("flat_area")) <= lit(1e-3)) + + expect_true(first(sdf.intersection)$comparison_intersects) + expect_true(first(sdf.intersection)$comparison_intersection) + +}) \ No newline at end of file diff --git a/R/sparkR-mosaic/tests.R b/R/sparkR-mosaic/tests.R index f4071c3d2..aba14c82b 100644 --- a/R/sparkR-mosaic/tests.R +++ b/R/sparkR-mosaic/tests.R @@ -1,4 +1,6 @@ -spark_location <- "/usr/spark-download/unzipped/spark-3.2.1-bin-hadoop2.7" +library(testthat) + +spark_location <- "/usr/spark-download/unzipped/spark-3.3.2-bin-hadoop3" Sys.setenv(SPARK_HOME = spark_location) library(SparkR, lib.loc = c(file.path(spark_location, "R", "lib"))) .libPaths(c(file.path(spark_location, "R", "lib"), .libPaths())) @@ -11,74 +13,18 @@ install.packages(package_file, repos=NULL) library(sparkrMosaic) # find the mosaic jar in staging -staging_dir = "/home/runner/work/mosaic/mosaic/staging/" +staging_dir <- "/home/runner/work/mosaic/mosaic/staging/" mosaic_jar <- list.files(staging_dir) mosaic_jar <- mosaic_jar[grep("jar-with-dependencies.jar", mosaic_jar, fixed=T)] print("Looking for mosaic jar in") -mosaic_jar_path = paste0(staging_dir, mosaic_jar) +mosaic_jar_path <- paste0(staging_dir, mosaic_jar) print(mosaic_jar_path) -spark = sparkR.session( +spark <- sparkR.session( master = "local[*]" ,sparkJars = mosaic_jar_path ) enableMosaic() -sdf <- SparkR::createDataFrame( - data.frame( - wkt = "POLYGON ((0 0, 0 2, 1 2, 1 0, 0 0))", - point_wkt = "POINT (1 1)" - ) -) - -sdf <- withColumn(sdf, "st_area", st_area(column("wkt"))) -sdf <- withColumn(sdf, "st_length", st_length(column("wkt"))) -sdf <- withColumn(sdf, "st_perimeter", st_perimeter(column("wkt"))) -sdf <- withColumn(sdf, "st_convexhull", st_convexhull(column("wkt"))) -sdf <- withColumn(sdf, "st_dump", st_dump(column("wkt"))) -sdf <- withColumn(sdf, "st_translate", st_translate(column("wkt"), lit(1), lit(1))) -sdf <- withColumn(sdf, "st_scale", st_scale(column("wkt"), lit(1), lit(1))) -sdf <- withColumn(sdf, "st_rotate", st_rotate(column("wkt"), lit(1))) -sdf <- withColumn(sdf, "st_centroid", st_centroid(column("wkt"))) -#sdf <- withColumn(sdf, "st_centroid3D", st_centroid3D(column("wkt"))) -sdf <- withColumn(sdf, "st_length", st_length(column("wkt"))) -sdf <- withColumn(sdf, "st_isvalid", st_isvalid(column("wkt"))) -sdf <- withColumn(sdf, "st_intersects", st_intersects(column("wkt"), column("wkt"))) -#sdf <- withColumn(sdf, "st_intersection", st_intersection(column("wkt"), column("wkt"))) -sdf <- withColumn(sdf, "st_geometrytype", st_geometrytype(column("wkt"))) -sdf <- withColumn(sdf, "st_isvalid", st_isvalid(column("wkt"))) -sdf <- withColumn(sdf, "st_xmin", st_xmin(column("wkt"))) -sdf <- withColumn(sdf, "st_xmax", st_xmax(column("wkt"))) -sdf <- withColumn(sdf, "st_ymin", st_ymin(column("wkt"))) -sdf <- withColumn(sdf, "st_ymax", st_ymax(column("wkt"))) -sdf <- withColumn(sdf, "st_zmin", st_zmin(column("wkt"))) -sdf <- withColumn(sdf, "st_zmax", st_zmax(column("wkt"))) -sdf <- withColumn(sdf, "flatten_polygons", flatten_polygons(column("wkt"))) - -# SRID -sdf <- withColumn(sdf, "geom_with_srid", st_setsrid(st_geomfromwkt(column("wkt")), lit(4326L))) -sdf <- withColumn(sdf, "srid_check", st_srid(column("geom_with_srid"))) -sdf <- withColumn(sdf, "transformed_geom", st_transform(column("geom_with_srid"), lit(3857L))) - -# Grid functions -sdf <- withColumn(sdf, "grid_longlatascellid", grid_longlatascellid(lit(1), lit(1), lit(1L))) -sdf <- withColumn(sdf, "grid_pointascellid", grid_pointascellid(column("point_wkt"), lit(1L))) -sdf <- withColumn(sdf, "grid_boundaryaswkb", grid_boundaryaswkb(column("grid_pointascellid"))) -sdf <- withColumn(sdf, "grid_polyfill", grid_polyfill(column("wkt"), lit(1L))) -sdf <- withColumn(sdf, "grid_tessellateexplode", grid_tessellateexplode(column("wkt"), lit(1L))) -sdf <- withColumn(sdf, "grid_tessellate", grid_tessellate(column("wkt"), lit(1L))) - -# Deprecated -sdf <- withColumn(sdf, "point_index_lonlat", point_index_lonlat(lit(1), lit(1), lit(1L))) -sdf <- withColumn(sdf, "point_index_geom", point_index_geom(column("point_wkt"), lit(1L))) -sdf <- withColumn(sdf, "index_geometry", index_geometry(column("point_index_geom"))) -sdf <- withColumn(sdf, "polyfill", polyfill(column("wkt"), lit(1L))) -sdf <- withColumn(sdf, "mosaic_explode", mosaic_explode(column("wkt"), lit(1L))) -sdf <- withColumn(sdf, "mosaicfill", mosaicfill(column("wkt"), lit(1L))) - -if (nrow(SparkR::collect(sdf)) == 1.0){ - q(save="no", status=0) -} else q(save="no", status=1) - - +testthat::test_local(path="./sparkrMosaic") \ No newline at end of file diff --git a/R/sparklyr-mosaic/enableMosaic.R b/R/sparklyr-mosaic/enableMosaic.R index c0baedecd..3deb15194 100644 --- a/R/sparklyr-mosaic/enableMosaic.R +++ b/R/sparklyr-mosaic/enableMosaic.R @@ -19,14 +19,11 @@ enableMosaic <- function( sc ,geometryAPI="JTS" ,indexSystem="H3" - ,rasterAPI="GDAL" ){ geometry_api <- sparklyr::invoke_static(sc, class="com.databricks.labs.mosaic.core.geometry.api.GeometryAPI", method="apply", geometryAPI) - index_system_id <- sparklyr::invoke_static(sc, class="com.databricks.labs.mosaic.core.index.IndexSystemID", method="apply", indexSystem) - raster_api <- sparklyr::invoke_static(sc, class="com.databricks.labs.mosaic.core.raster.api.RasterAPI", method="apply", rasterAPI) - indexing_system <- sparklyr::invoke_static(sc, class="com.databricks.labs.mosaic.core.index.IndexSystemID", method="getIndexSystem", index_system_id) - mosaic_context <- sparklyr::invoke_new(sc, class="com.databricks.labs.mosaic.functions.MosaicContext", indexing_system, geometry_api, raster_api) + indexing_system <- sparklyr::invoke_static(sc, class="com.databricks.labs.mosaic.core.index.IndexSystemFactory", method="getIndexSystem", indexSystem) + mosaic_context <- sparklyr::invoke_new(sc, class="com.databricks.labs.mosaic.functions.MosaicContext", indexing_system, geometry_api) functions <<- sparklyr::invoke(mosaic_context, "functions") sparklyr::invoke(mosaic_context, "register") diff --git a/R/sparklyr-mosaic/sparklyr-mosaic-tests.R b/R/sparklyr-mosaic/sparklyr-mosaic-tests.R deleted file mode 100644 index b77559f45..000000000 --- a/R/sparklyr-mosaic/sparklyr-mosaic-tests.R +++ /dev/null @@ -1,44 +0,0 @@ -sdf <- sparklyr::sdf_copy_to(sc, - data.frame( - wkt = "POLYGON ((0 0, 0 2, 1 2, 1 0, 0 0))", - point_wkt = "POINT (1 1)" - ) -) - -sdf <- mutate(sdf, "st_area" = st_area(wkt)) -sdf <- mutate(sdf, "st_length" = st_length(wkt)) -sdf <- mutate(sdf, "st_perimeter" = st_perimeter(wkt)) -sdf <- mutate(sdf, "st_convexhull" = st_convexhull(wkt)) -sdf <- mutate(sdf, "st_dump" = st_dump(wkt)) -sdf <- mutate(sdf, "st_translate" = st_translate(wkt, 1L, 1L)) -sdf <- mutate(sdf, "st_scale" = st_scale(wkt, 1L, 1L)) -sdf <- mutate(sdf, "st_rotate" = st_rotate(wkt, 1L)) -sdf <- mutate(sdf, "st_centroid2D" = st_centroid2D(wkt)) -sdf <- mutate(sdf, "st_centroid3D" = st_centroid3D(wkt)) -sdf <- mutate(sdf, "st_length" = st_length(wkt)) -sdf <- mutate(sdf, "st_isvalid" = st_isvalid(wkt)) -sdf <- mutate(sdf, "st_intersects" = st_intersects(wkt, wkt)) -sdf <- mutate(sdf, "st_intersection" = st_intersection(wkt, wkt)) -sdf <- mutate(sdf, "st_geometrytype" = st_geometrytype(wkt)) -sdf <- mutate(sdf, "st_isvalid" = st_isvalid(wkt)) -sdf <- mutate(sdf, "st_xmin" = st_xmin(wkt)) -sdf <- mutate(sdf, "st_xmax" = st_xmax(wkt)) -sdf <- mutate(sdf, "st_ymin" = st_ymin(wkt)) -sdf <- mutate(sdf, "st_ymax" = st_ymax(wkt)) -sdf <- mutate(sdf, "st_zmin" = st_zmin(wkt)) -sdf <- mutate(sdf, "st_zmax" = st_zmax(wkt)) -sdf <- mutate(sdf, "flatten_polygons" = flatten_polygons(wkt)) -sdf <- mutate(sdf, "point_index_lonlat" = point_index_lonlat(as.double(1L), as.double(1L), 1L)) # issue with type. needs a double but native R type not converting properly so requires explicit setting -sdf <- mutate(sdf, "point_index_geom" = point_index_geom(point_wkt, as.integer(1L))) -sdf <- mutate(sdf, "index_geometry" = index_geometry(point_index_geom)) -sdf <- mutate(sdf, "polyfill" = polyfill(wkt, as.integer(1L))) # requires a long and passing a double or an integer causes a cast exception - can't convert to Long. -sdf <- mutate(sdf, "mosaic_explode" = mosaic_explode(wkt, as.integer(1L))) -sdf <- mutate(sdf, "mosaicfill" = mosaicfill(wkt, 1L)) -sdf <- mutate(sdf, "geom_with_srid" = st_setsrid(st_geomfromwkt(wkt), 4326L)) -sdf <- mutate(sdf, "srid_check" = st_srid(geom_with_srid)) -sdf <- mutate(sdf, "transformed_geom" = st_transform(geom_with_srid, 3857L)) - - - - -sdf %>% sparklyr::collect() %>% as.data.frame() \ No newline at end of file diff --git a/R/sparklyr-mosaic/sparklyrMosaic/tests/testthat/data.R b/R/sparklyr-mosaic/sparklyrMosaic/tests/testthat/data.R new file mode 100644 index 000000000..1ad46c114 --- /dev/null +++ b/R/sparklyr-mosaic/sparklyrMosaic/tests/testthat/data.R @@ -0,0 +1,228 @@ +inputGJ = '{ + "type":"Feature", + "properties":{ + "shape_area":"0.0000607235737749", + "objectid":"24", + "shape_leng":"0.0469999619287", + "location_id":"24", + "zone":"Bloomingdale", + "borough":"Manhattan" + }, + "geometry":{ + "type":"MultiPolygon", + "coordinates":[ + [ + [ + [ + -73.95953658899997, + 40.7987185259999 + ], + [ + -73.96004456499999, + 40.79804123499991 + ], + [ + -73.96147779999993, + 40.79865415599994 + ], + [ + -73.96286980099991, + 40.799239676999946 + ], + [ + -73.96571144299992, + 40.80043806999988 + ], + [ + -73.96775900399992, + 40.80130351599994 + ], + [ + -73.96787379699998, + 40.80135169799993 + ], + [ + -73.96798415999996, + 40.80139826599985 + ], + [ + -73.96858360799983, + 40.80163546999991 + ], + [ + -73.97004742199995, + 40.80226500999991 + ], + [ + -73.97021594799989, + 40.80233585099994 + ], + [ + -73.97027400499987, + 40.802359035999885 + ], + [ + -73.97032589799987, + 40.80238456099995 + ], + [ + -73.97150381000002, + 40.80283773599996 + ], + [ + -73.97250022199995, + 40.80321661299997 + ], + [ + -73.97257779799996, + 40.803247183999915 + ], + [ + -73.9726574479999, + 40.803276513999926 + ], + [ + -73.97279907800002, + 40.803329158999894 + ], + [ + -73.97287179090726, + 40.803356187573904 + ], + [ + -73.97255429829633, + 40.80379863465013 + ], + [ + -73.97217237241792, + 40.80431907695909 + ], + [ + -73.97205095521862, + 40.80453037600999 + ], + [ + -73.9719529243853, + 40.804619709051586 + ], + [ + -73.97181849483539, + 40.80471754320449 + ], + [ + -73.97179980150743, + 40.80478561548601 + ], + [ + -73.97171200727101, + 40.80493169127652 + ], + [ + -73.9716204956932, + 40.80504229439937 + ], + [ + -73.97161113391445, + 40.80509618747434 + ], + [ + -73.97144210961531, + 40.80533442683979 + ], + [ + -73.9712908330033, + 40.805528707533185 + ], + [ + -73.97110765876137, + 40.805790139589654 + ], + [ + -73.97098767999995, + 40.805742902999974 + ], + [ + -73.97084148399995, + 40.80568534399987 + ], + [ + -73.97076362299994, + 40.80565737299987 + ], + [ + -73.97069326499995, + 40.80563026799993 + ], + [ + -73.96978722000001, + 40.80530049699997 + ], + [ + -73.96860707399988, + 40.804870949999895 + ], + [ + -73.96855913399985, + 40.80485358399993 + ], + [ + -73.96849506699984, + 40.80483226999993 + ], + [ + -73.96804849299988, + 40.804683699999906 + ], + [ + -73.96680327299997, + 40.804207560999906 + ], + [ + -73.96670106899995, + 40.80416847599993 + ], + [ + -73.96659731599986, + 40.804122764999946 + ], + [ + -73.96386126299988, + 40.80297203799993 + ], + [ + -73.96107793999975, + 40.801800357999866 + ], + [ + -73.95964685399987, + 40.80115642299993 + ], + [ + -73.95848111500001, + 40.800670477999894 + ], + [ + -73.95817297099987, + 40.800582540999876 + ], + [ + -73.95833304999988, + 40.80036505399989 + ], + [ + -73.95861879299989, + 40.79997702599996 + ], + [ + -73.95907669099992, + 40.79935223299986 + ], + [ + -73.95953658899997, + 40.7987185259999 + ] + ] + ] + ] + } +}' \ No newline at end of file diff --git a/R/sparklyr-mosaic/sparklyrMosaic/tests/testthat/testVectorFunctions.R b/R/sparklyr-mosaic/sparklyrMosaic/tests/testthat/testVectorFunctions.R new file mode 100644 index 000000000..f91a0ff8b --- /dev/null +++ b/R/sparklyr-mosaic/sparklyrMosaic/tests/testthat/testVectorFunctions.R @@ -0,0 +1,114 @@ +source("data.R") + +test_that("scalar vector functions behave as intended", { + + sdf <- sdf_copy_to( + sc, + data.frame( + wkt = "POLYGON ((0 0, 0 2, 1 2, 1 0, 0 0))", + point_wkt = "POINT (1 1)" + ) + ) + + sdf <- mutate(sdf, "st_area" = st_area(wkt)) + sdf <- mutate(sdf, "st_length" = st_length(wkt)) + sdf <- mutate(sdf, "st_perimeter" = st_perimeter(wkt)) + sdf <- mutate(sdf, "st_buffer" = st_buffer(wkt, as.double(1.1))) + sdf <- mutate(sdf, "st_bufferloop" = st_bufferloop(wkt, as.double(1.1), as.double(1.2))) + sdf <- mutate(sdf, "st_convexhull" = st_convexhull(wkt)) + sdf <- mutate(sdf, "st_dump" = st_dump(wkt)) + sdf <- mutate(sdf, "st_translate" = st_translate(wkt, 1L, 1L)) + sdf <- mutate(sdf, "st_scale" = st_scale(wkt, 1L, 1L)) + sdf <- mutate(sdf, "st_rotate" = st_rotate(wkt, 1L)) + sdf <- mutate(sdf, "st_centroid" = st_centroid(wkt)) + sdf <- mutate(sdf, "st_numpoints" = st_numpoints(wkt)) + sdf <- mutate(sdf, "st_haversine" = st_haversine(as.double(0.0), as.double(90.0), as.double(0.0), as.double(0.0))) + sdf <- mutate(sdf, "st_isvalid" = st_isvalid(wkt)) + sdf <- mutate(sdf, "st_hasvalidcoordinates" = st_hasvalidcoordinates(wkt, "EPSG:2192", "bounds")) + sdf <- mutate(sdf, "st_intersects" = st_intersects(wkt, wkt)) + sdf <- mutate(sdf, "st_intersection" = st_intersection(wkt, wkt)) + sdf <- mutate(sdf, "st_envelope" = st_envelope(wkt)) + sdf <- mutate(sdf, "st_simplify" = st_simplify(wkt, as.double(0.001))) + sdf <- mutate(sdf, "st_difference" = st_difference(wkt, wkt)) + sdf <- mutate(sdf, "st_union" = st_union(wkt, wkt)) + sdf <- mutate(sdf, "st_unaryunion" = st_unaryunion(wkt)) + sdf <- mutate(sdf, "st_geometrytype" = st_geometrytype(wkt)) + sdf <- mutate(sdf, "st_xmin" = st_xmin(wkt)) + sdf <- mutate(sdf, "st_xmax" = st_xmax(wkt)) + sdf <- mutate(sdf, "st_ymin" = st_ymin(wkt)) + sdf <- mutate(sdf, "st_ymax" = st_ymax(wkt)) + sdf <- mutate(sdf, "st_zmin" = st_zmin(wkt)) + sdf <- mutate(sdf, "st_zmax" = st_zmax(wkt)) + sdf <- mutate(sdf, "flatten_polygons" = flatten_polygons(wkt)) + + # SRID functions + + sdf <- mutate(sdf, "geom_with_srid" = st_setsrid(st_geomfromwkt(wkt), 4326L)) + sdf <- mutate(sdf, "srid_check" = st_srid(geom_with_srid)) + sdf <- mutate(sdf, "transformed_geom" = st_transform(geom_with_srid, 3857L)) + + # Grid functions + + sdf <- mutate(sdf, "grid_longlatascellid" = grid_longlatascellid(as.double(1L), as.double(1L), 1L)) + sdf <- mutate(sdf, "grid_pointascellid" = grid_pointascellid(point_wkt, 1L)) + sdf <- mutate(sdf, "grid_boundaryaswkb" = grid_boundaryaswkb(grid_longlatascellid)) + sdf <- mutate(sdf, "grid_polyfill" = grid_polyfill(wkt, 1L)) + sdf <- mutate(sdf, "grid_tessellateexplode" = grid_tessellateexplode(wkt, 1L)) + sdf <- mutate(sdf, "grid_tessellateexplode_no_core_chips" = grid_tessellateexplode(wkt, 1L, FALSE)) + sdf <- mutate(sdf, "grid_tessellate" = grid_tessellate(wkt, 1L)) + sdf <- mutate(sdf, "grid_cellarea" = grid_cellarea(grid_longlatascellid)) + + expect_no_error(spark_write_source(sdf, "noop", mode = "overwrite")) + expect_equal(sdf_nrow(sdf), 1) + +}) + +test_that("aggregate vector functions behave as intended", { + + sdf <- sdf_sql(sc, "SELECT id as location_id FROM range(1)") %>% + mutate(geometry = st_geomfromgeojson(inputGJ)) + expect_equal(sdf_nrow(sdf), 1) + + sdf.l <- sdf %>% + select( + left_id = location_id, + left_geom = geometry + ) %>% + mutate(left_index = mosaic_explode(left_geom, 11L)) + + sdf.r <- sdf %>% + select( + right_id = location_id, + right_geom = geometry + ) %>% + mutate(right_geom = st_translate( + right_geom, + st_area(right_geom) * runif(n()) * 0.1, + st_area(right_geom) * runif(n()) * 0.1) + ) %>% + mutate(right_index = mosaic_explode(right_geom, 11L)) + + sdf.intersection <- sdf.l %>% + inner_join(sdf.r, by = c("left_index" = "right_index"), keep = TRUE) %>% + dplyr::group_by(left_id, right_id) %>% + dplyr::summarise( + agg_intersects = st_intersects_aggregate(left_index, right_index), + agg_intersection = st_intersection_aggregate(left_index, right_index), + left_geom = max(left_geom, 1), + right_geom = max(right_geom, 1) + ) %>% + mutate( + flat_intersects = st_intersects(left_geom, right_geom), + comparison_intersects = agg_intersects == flat_intersects, + agg_area = st_area(agg_intersection), + flat_intersection = st_intersection(left_geom, right_geom), + flat_area = st_area(flat_intersection), + comparison_intersection = abs(agg_area - flat_area) <= 1e-3 + ) + + expect_no_error(spark_write_source(sdf.intersection, "noop", mode = "overwrite")) + expect_true(sdf.intersection %>% head(1) %>% sdf_collect %>% .$comparison_intersects) + expect_true(sdf.intersection %>% head(1) %>% sdf_collect %>% .$comparison_intersection) + + +}) \ No newline at end of file diff --git a/R/sparklyr-mosaic/tests.R b/R/sparklyr-mosaic/tests.R new file mode 100644 index 000000000..cb4f533a7 --- /dev/null +++ b/R/sparklyr-mosaic/tests.R @@ -0,0 +1,29 @@ +library(testthat) + +if(length(getOption("repos")) < 1) { + options(repos = c( + CRAN = "https://cloud.r-project.org" + )) +} + +install.packages("sparklyr", repos="") +library(sparklyr) + +spark_home_set("/usr/spark-download/unzipped/spark-3.3.2-bin-hadoop3") +install.packages("sparklyrMosaic_0.3.12.tar.gz", repos = NULL) +library(sparklyrMosaic) + +# find the mosaic jar in staging +staging_dir <- "/home/runner/work/mosaic/mosaic/staging/" +mosaic_jar <- list.files(staging_dir) +mosaic_jar <- mosaic_jar[grep("jar-with-dependencies.jar", mosaic_jar, fixed=T)] +mosaic_jar_path <- paste0(staging_dir, mosaic_jar) +print(paste("Looking for mosaic jar in", mosaic_jar_path)) + +config <- sparklyr::spark_config() +config$`sparklyr.jars.default` <- c(mosaic_jar_path) + +sc <- spark_connect(master="local[*]", config=config) +enableMosaic(sc) + +testthat::test_local(path="./sparklyrMosaic") \ No newline at end of file diff --git a/docs/source/api/raster-functions.rst b/docs/source/api/raster-functions.rst index 2cf0e90fa..19a8cc42c 100644 --- a/docs/source/api/raster-functions.rst +++ b/docs/source/api/raster-functions.rst @@ -58,7 +58,7 @@ rst_bandmetadata val df = spark.read .format("gdal").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_bandmetadata(col("tile"), lit(1)).limit(1).show(false) + df.select(rst_bandmetadata(col("tile"), lit(1))).limit(1).show(false) +--------------------------------------------------------------------------------------+ | rst_bandmetadata(tile, 1) | +--------------------------------------------------------------------------------------+ @@ -246,18 +246,18 @@ rst_combineavg .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_netcdf - USING gdal - OPTIONS (extension "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - WITH grouped as ( - SELECT collect_list(tile) as tile FROM coral_netcdf - ) - SELECT rst_combineavg(tile) FROM grouped LIMIT 1 - +----------------------------------------------------------------------------------------------------------------+ - | rst_combineavg(tile) | - +----------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | - +----------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_netcdf + USING gdal + OPTIONS (extension "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") + WITH grouped as ( + SELECT collect_list(tile) as tile FROM coral_netcdf + ) + SELECT rst_combineavg(tile) FROM grouped LIMIT 1 + +----------------------------------------------------------------------------------------------------------------+ + | rst_combineavg(tile) | + +----------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | + +----------------------------------------------------------------------------------------------------------------+ rst_combineavgagg ***************** @@ -305,17 +305,17 @@ rst_combineavgagg .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_netcdf - USING gdal - OPTIONS (extension "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - SELECT rst_combineavgagg(tile) - FROM coral_netcdf - GROUP BY 1 - +----------------------------------------------------------------------------------------------------------------+ - | rst_combineavgagg(tile) | - +----------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | - +----------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_netcdf + USING gdal + OPTIONS (extension "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") + SELECT rst_combineavgagg(tile) + FROM coral_netcdf + GROUP BY 1 + +----------------------------------------------------------------------------------------------------------------+ + | rst_combineavgagg(tile) | + +----------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | + +----------------------------------------------------------------------------------------------------------------+ rst_frombands ************** @@ -365,18 +365,18 @@ rst_frombands .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_netcdf - USING gdal - OPTIONS (extension "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - WITH grouped as ( - SELECT collect_list(tile) as tile FROM coral_netcdf - ) - SELECT rst_frombands(tile) FROM grouped LIMIT 1 - +----------------------------------------------------------------------------------------------------------------+ - | rst_frombands(tile) | - +----------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | - +----------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_netcdf + USING gdal + OPTIONS (extension "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") + WITH grouped as ( + SELECT collect_list(tile) as tile FROM coral_netcdf + ) + SELECT rst_frombands(tile) FROM grouped LIMIT 1 + +----------------------------------------------------------------------------------------------------------------+ + | rst_frombands(tile) | + +----------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | + +----------------------------------------------------------------------------------------------------------------+ rst_fromfile ************ @@ -425,13 +425,13 @@ rst_fromfile .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_netcdf - USING binaryFile - OPTIONS (path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - SELECT rst_fromfile(path) FROM coral_netcdf LIMIT 1 - +----------------------------------------------------------------------------------------------------------------+ - | rst_fromfile(path) | - +----------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_netcdf + USING binaryFile + OPTIONS (path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") + SELECT rst_fromfile(path) FROM coral_netcdf LIMIT 1 + +----------------------------------------------------------------------------------------------------------------+ + | rst_fromfile(path) | + +----------------------------------------------------------------------------------------------------------------+ rst_georeference **************** @@ -694,15 +694,15 @@ rst_initnodata .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_netcdf - USING gdal - OPTIONS (extensions "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - SELECT rst_initnodata(path) FROM coral_netcdf LIMIT 1 - +----------------------------------------------------------------------------------------------------------------+ - | rst_initnodata(path) | - +----------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | - +----------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_netcdf + USING gdal + OPTIONS (extensions "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") + SELECT rst_initnodata(path) FROM coral_netcdf LIMIT 1 + +----------------------------------------------------------------------------------------------------------------+ + | rst_initnodata(path) | + +----------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | + +----------------------------------------------------------------------------------------------------------------+ rst_isempty ************* @@ -859,18 +859,18 @@ rst_merge .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_netcdf - USING gdal - OPTIONS (extension "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - WITH grouped as ( - SELECT collect_list(tile) as tile FROM coral_netcdf - ) - SELECT rst_merge(tile) FROM grouped LIMIT 1 - +----------------------------------------------------------------------------------------------------------------+ - | rst_merge(tile) | - +----------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | - +----------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_netcdf + USING gdal + OPTIONS (extension "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") + WITH grouped as ( + SELECT collect_list(tile) as tile FROM coral_netcdf + ) + SELECT rst_merge(tile) FROM grouped LIMIT 1 + +----------------------------------------------------------------------------------------------------------------+ + | rst_merge(tile) | + +----------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | + +----------------------------------------------------------------------------------------------------------------+ rst_mergeagg ************ @@ -924,15 +924,15 @@ rst_mergeagg .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_netcdf - USING gdal - OPTIONS (extension "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - SELECT rst_mergeagg(tile) FROM coral_netcdf LIMIT 1 - +----------------------------------------------------------------------------------------------------------------+ - | rst_mergeagg(tile) | - +----------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | - +----------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_netcdf + USING gdal + OPTIONS (extension "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") + SELECT rst_mergeagg(tile) FROM coral_netcdf LIMIT 1 + +----------------------------------------------------------------------------------------------------------------+ + | rst_mergeagg(tile) | + +----------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | + +----------------------------------------------------------------------------------------------------------------+ rst_metadata ************* @@ -1036,38 +1036,38 @@ rst_ndvi .. tabs:: .. code-tab:: py - df = spark.read.format("binaryFile").option("extensions", "nc")\ - .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_ndvi("path", 1, 2)).limit(1).display() - +----------------------------------------------------------------------------------------------------------------+ - | rst_ndvi(path, 1, 2) | - +----------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | - +----------------------------------------------------------------------------------------------------------------+ + df = spark.read.format("binaryFile").option("extensions", "nc")\ + .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") + df.select(mos.rst_ndvi("path", 1, 2)).limit(1).display() + +----------------------------------------------------------------------------------------------------------------+ + | rst_ndvi(path, 1, 2) | + +----------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | + +----------------------------------------------------------------------------------------------------------------+ .. code-tab:: scala - val df = spark.read - .format("binaryFile").option("extensions", "nc") - .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_ndvi(col("path"), lit(1), lit(2))).limit(1).show(false) - +----------------------------------------------------------------------------------------------------------------+ - | rst_ndvi(path, 1, 2) | - +----------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | - +----------------------------------------------------------------------------------------------------------------+ + val df = spark.read + .format("binaryFile").option("extensions", "nc") + .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") + df.select(rst_ndvi(col("path"), lit(1), lit(2))).limit(1).show(false) + +----------------------------------------------------------------------------------------------------------------+ + | rst_ndvi(path, 1, 2) | + +----------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | + +----------------------------------------------------------------------------------------------------------------+ .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_netcdf - USING gdal - OPTIONS (extensions "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - SELECT rst_ndvi(path, 1, 2) FROM coral_netcdf LIMIT 1 - +----------------------------------------------------------------------------------------------------------------+ - | rst_ndvi(path, 1, 2) | - +----------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | - +----------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_netcdf + USING gdal + OPTIONS (extensions "nc", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") + SELECT rst_ndvi(path, 1, 2) FROM coral_netcdf LIMIT 1 + +----------------------------------------------------------------------------------------------------------------+ + | rst_ndvi(path, 1, 2) | + +----------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "NetCDF" } | + +----------------------------------------------------------------------------------------------------------------+ rst_numbands ************* @@ -1237,7 +1237,7 @@ rst_rastertogridavg :param tile: A column containing the raster tile. For < 0.3.11 string representing the path to a raster file or byte array. :type col: Column (RasterTileType) - :param raster: A resolution of the grid index system. + :param resolution: A resolution of the grid index system. :type col: Column (IntegerType) :rtype: Column: ArrayType(ArrayType(StructType(LongType|StringType, DoubleType))) @@ -1248,7 +1248,7 @@ rst_rastertogridavg df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_rastertogridavg('path', F.lit(3)).show() + df.select(mos.rst_rastertogridavg('path', F.lit(3))).show() +--------------------------------------------------------------------------------------------------------------------+ | rst_rastertogridavg(path, 3) | +--------------------------------------------------------------------------------------------------------------------+ @@ -1266,7 +1266,7 @@ rst_rastertogridavg val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_rastertogridavg(col("path"), lit(3)).show() + df.select(rst_rastertogridavg(col("path"), lit(3))).show() +--------------------------------------------------------------------------------------------------------------------+ | rst_rastertogridavg(path, 3) | +--------------------------------------------------------------------------------------------------------------------+ @@ -1314,7 +1314,7 @@ rst_rastertogridcount :param tile: A column containing the raster tile. For < 0.3.11 string representing the path to a raster file or byte array. :type col: Column (RasterTileType) - :param raster: A resolution of the grid index system. + :param resolution: A resolution of the grid index system. :type col: Column (IntegerType) :rtype: Column: ArrayType(ArrayType(StructType(LongType|StringType, DoubleType))) @@ -1325,7 +1325,7 @@ rst_rastertogridcount df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_rastertogridcount('path', F.lit(3)).show() + df.select(mos.rst_rastertogridcount('path', F.lit(3))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_rastertogridcount(path, 3) | +------------------------------------------------------------------------------------------------------------------+ @@ -1343,7 +1343,7 @@ rst_rastertogridcount val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_rastertogridcount(col("path"), lit(3)).show() + df.select(rst_rastertogridcount(col("path"), lit(3))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_rastertogridcount(path, 3) | +------------------------------------------------------------------------------------------------------------------+ @@ -1391,7 +1391,7 @@ rst_rastertogridmax :param tile: A column containing the raster tile. For < 0.3.11 string representing the path to a raster file or byte array. :type col: Column (RasterTileType) - :param raster: A resolution of the grid index system. + :param resolution: A resolution of the grid index system. :type col: Column (IntegerType) :rtype: Column: ArrayType(ArrayType(StructType(LongType|StringType, DoubleType))) @@ -1402,7 +1402,7 @@ rst_rastertogridmax df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_rastertogridmax('path', F.lit(3)).show() + df.select(mos.rst_rastertogridmax('path', F.lit(3))).show() +--------------------------------------------------------------------------------------------------------------------+ | rst_rastertogridmax(path, 3) | +--------------------------------------------------------------------------------------------------------------------+ @@ -1420,7 +1420,7 @@ rst_rastertogridmax val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_rastertogridmax(col("path"), lit(3)).show() + df.select(rst_rastertogridmax(col("path"), lit(3))).show() +--------------------------------------------------------------------------------------------------------------------+ | rst_rastertogridmax(path, 3) | +--------------------------------------------------------------------------------------------------------------------+ @@ -1468,7 +1468,7 @@ rst_rastertogridmedian :param tile: A column containing the raster tile. For < 0.3.11 string representing the path to a raster file or byte array. :type col: Column (RasterTileType) - :param raster: A resolution of the grid index system. + :param resolution: A resolution of the grid index system. :type col: Column (IntegerType) :rtype: Column: ArrayType(ArrayType(StructType(LongType|StringType, DoubleType))) @@ -1479,7 +1479,7 @@ rst_rastertogridmedian df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_rastertogridmedian('path', F.lit(3)).show() + df.select(mos.rst_rastertogridmedian('path', F.lit(3))).show() +--------------------------------------------------------------------------------------------------------------------+ | rst_rastertogridmedian(path, 3) | +--------------------------------------------------------------------------------------------------------------------+ @@ -1497,7 +1497,7 @@ rst_rastertogridmedian val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_rastertogridmedian(col("path"), lit(3)).show() + df.select(rst_rastertogridmedian(col("path"), lit(3))).show() +--------------------------------------------------------------------------------------------------------------------+ | rst_rastertogridmedian(path, 3) | +--------------------------------------------------------------------------------------------------------------------+ @@ -1545,7 +1545,7 @@ rst_rastertogridmin :param tile: A column containing the raster tile. For < 0.3.11 string representing the path to a raster file or byte array. :type col: Column (RasterTileType) - :param raster: A resolution of the grid index system. + :param resolution: A resolution of the grid index system. :type col: Column (IntegerType) :rtype: Column: ArrayType(ArrayType(StructType(LongType|StringType, DoubleType))) @@ -1556,7 +1556,7 @@ rst_rastertogridmin df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_rastertogridmin('path', F.lit(3)).show() + df.select(mos.rst_rastertogridmin('path', F.lit(3))).show() +--------------------------------------------------------------------------------------------------------------------+ | rst_rastertogridmin(path, 3) | +--------------------------------------------------------------------------------------------------------------------+ @@ -1574,7 +1574,7 @@ rst_rastertogridmin val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_rastertogridmin(col("path"), lit(3)).show() + df.select(rst_rastertogridmin(col("path"), lit(3))).show() +--------------------------------------------------------------------------------------------------------------------+ | rst_rastertogridmin(path, 3) | +--------------------------------------------------------------------------------------------------------------------+ @@ -1634,7 +1634,7 @@ rst_rastertoworldcoord df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_rastertoworldcoord('path', F.lit(3), F.lit(3)).show() + df.select(mos.rst_rastertoworldcoord('path', F.lit(3), F.lit(3))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_rastertoworldcoord(path, 3, 3) | +------------------------------------------------------------------------------------------------------------------+ @@ -1646,7 +1646,7 @@ rst_rastertoworldcoord val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_rastertoworldcoord(col("path"), lit(3), lit(3)).show() + df.select(rst_rastertoworldcoord(col("path"), lit(3), lit(3))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_rastertoworldcoord(path, 3, 3) | +------------------------------------------------------------------------------------------------------------------+ @@ -1688,7 +1688,7 @@ rst_rastertoworldcoordx df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_rastertoworldcoordx('path', F.lit(3), F.lit(3)).show() + df.select(mos.rst_rastertoworldcoordx('path', F.lit(3), F.lit(3))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_rastertoworldcoordx(path, 3, 3) | +------------------------------------------------------------------------------------------------------------------+ @@ -1700,7 +1700,7 @@ rst_rastertoworldcoordx val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_rastertoworldcoordx(col("path"), lit(3), lit(3)).show() + df.select(rst_rastertoworldcoordx(col("path"), lit(3), lit(3))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_rastertoworldcoordx(path, 3, 3) | +------------------------------------------------------------------------------------------------------------------+ @@ -1742,7 +1742,7 @@ rst_rastertoworldcoordy df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_rastertoworldcoordy('path', F.lit(3), F.lit(3)).show() + df.select(mos.rst_rastertoworldcoordy('path', F.lit(3), F.lit(3))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_rastertoworldcoordy(path, 3, 3) | +------------------------------------------------------------------------------------------------------------------+ @@ -1754,7 +1754,7 @@ rst_rastertoworldcoordy val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_rastertoworldcoordy(col("path"), lit(3), lit(3)).show() + df.select(rst_rastertoworldcoordy(col("path"), lit(3), lit(3))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_rastertoworldcoordy(path, 3, 3) | +------------------------------------------------------------------------------------------------------------------+ @@ -1798,7 +1798,7 @@ rst_retile df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_retile('path', F.lit(300), F.lit(300)).show() + df.select(mos.rst_retile('path', F.lit(300), F.lit(300))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_retile(path, 300, 300) | +------------------------------------------------------------------------------------------------------------------+ @@ -1811,7 +1811,7 @@ rst_retile val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_retile(col("path"), lit(300), lit(300)).show() + df.select(rst_retile(col("path"), lit(300), lit(300))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_retile(path, 300, 300) | +------------------------------------------------------------------------------------------------------------------+ @@ -1865,7 +1865,7 @@ rst_rotation val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_rotation(col("path")).show() + df.select(rst_rotation(col("path"))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_rotation(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -1904,7 +1904,7 @@ rst_scalex df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_scalex('path').show() + df.select(mos.rst_scalex('path')).show() +------------------------------------------------------------------------------------------------------------------+ | rst_scalex(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -1916,7 +1916,7 @@ rst_scalex val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_scalex(col("path")).show() + df.select(rst_scalex(col("path"))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_scalex(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -1953,7 +1953,7 @@ rst_scaley df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_scaley('path').show() + df.select(mos.rst_scaley('path')).show() +------------------------------------------------------------------------------------------------------------------+ | rst_scaley(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -1965,7 +1965,7 @@ rst_scaley val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_scaley(col("path")).show() + df.select(rst_scaley(col("path"))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_scaley(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2008,7 +2008,7 @@ rst_setnodata df = spark.read.format("binaryFile").option("extensions", "tif")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - df.select(mos.rst_setnodata('path', F.lit(0)).show() + df.select(mos.rst_setnodata('path', F.lit(0))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_setnodata(path, 0) | +------------------------------------------------------------------------------------------------------------------+ @@ -2021,7 +2021,7 @@ rst_setnodata val df = spark.read .format("binaryFile").option("extensions", "tif") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - df.select(rst_setnodata(col("path"), lit(0)).show() + df.select(rst_setnodata(col("path"), lit(0))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_setnodata(path, 0) | +------------------------------------------------------------------------------------------------------------------+ @@ -2031,16 +2031,16 @@ rst_setnodata .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_tif - USING gdal - OPTIONS (extensions "tif", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - SELECT rst_setnodata(path, 0) - +------------------------------------------------------------------------------------------------------------------+ - | rst_setnodata(path, 0) | - +------------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | - | {index_id: 593308294097928192, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | - +------------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_tif + USING gdal + OPTIONS (extensions "tif", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") + SELECT rst_setnodata(path, 0) + +------------------------------------------------------------------------------------------------------------------+ + | rst_setnodata(path, 0) | + +------------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | + | {index_id: 593308294097928192, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | + +------------------------------------------------------------------------------------------------------------------+ rst_skewx ********************** @@ -2060,7 +2060,7 @@ rst_skewx df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_skewx('path').show() + df.select(mos.rst_skewx('path')).show() +------------------------------------------------------------------------------------------------------------------+ | rst_skewx(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2072,7 +2072,7 @@ rst_skewx val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_skewx(col("path")).show() + df.select(rst_skewx(col("path"))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_skewx(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2109,7 +2109,7 @@ rst_skewy df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_skewy('path').show() + df.select(mos.rst_skewy('path')).show() +------------------------------------------------------------------------------------------------------------------+ | rst_skewy(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2121,7 +2121,7 @@ rst_skewy val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_skewy(col("path")).show() + df.select(rst_skewy(col("path"))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_skewy(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2161,7 +2161,7 @@ rst_srid df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_srid('path').show() + df.select(mos.rst_srid('path')).show() +------------------------------------------------------------------------------------------------------------------+ | rst_srid(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2173,7 +2173,7 @@ rst_srid val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_srid(col("path")).show() + df.select(rst_srid(col("path"))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_srid(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2212,7 +2212,7 @@ rst_subdatasets df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_subdatasets('path').show() + df.select(mos.rst_subdatasets('path')).show() +--------------------------------------------------------------------------------------------------------------------+ | rst_subdatasets(path) | +--------------------------------------------------------------------------------------------------------------------+ @@ -2227,7 +2227,7 @@ rst_subdatasets val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_subdatasets(col("path")).show() + df.select(rst_subdatasets(col("path"))).show() +--------------------------------------------------------------------------------------------------------------------+ | rst_subdatasets(path) | +--------------------------------------------------------------------------------------------------------------------+ @@ -2277,7 +2277,7 @@ rst_subdivide df = spark.read.format("binaryFile").option("extensions", "tif")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - df.select(mos.rst_subdivide('path', F.lit(10)).show() + df.select(mos.rst_subdivide('path', F.lit(10))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_subdivide(path, 10) | +------------------------------------------------------------------------------------------------------------------+ @@ -2290,7 +2290,7 @@ rst_subdivide val df = spark.read .format("binaryFile").option("extensions", "tif") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - df.select(rst_subdivide(col("path"), lit(10)).show() + df.select(rst_subdivide(col("path"), lit(10))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_subdivide(path, 10) | +------------------------------------------------------------------------------------------------------------------+ @@ -2300,16 +2300,16 @@ rst_subdivide .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_tif - USING gdal - OPTIONS (extensions "tif", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - SELECT rst_subdivide(path, 10) - +------------------------------------------------------------------------------------------------------------------+ - | rst_subdivide(path, 10) | - +------------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | - | {index_id: 593308294097928192, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | - +------------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_tif + USING gdal + OPTIONS (extensions "tif", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") + SELECT rst_subdivide(path, 10) + +------------------------------------------------------------------------------------------------------------------+ + | rst_subdivide(path, 10) | + +------------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | + | {index_id: 593308294097928192, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | + +------------------------------------------------------------------------------------------------------------------+ rst_summary ********************** @@ -2332,7 +2332,7 @@ rst_summary df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_summary('path').show() + df.select(mos.rst_summary('path')).show() +------------------------------------------------------------------------------------------------------------------+ | rst_summary(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2348,7 +2348,7 @@ rst_summary val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_summary(col("path")).show() + df.select(rst_summary(col("path"))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_summary(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2397,7 +2397,7 @@ rst_tessellate df = spark.read.format("binaryFile").option("extensions", "tif")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - df.select(mos.rst_tessellate('path', F.lit(10)).show() + df.select(mos.rst_tessellate('path', F.lit(10))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_tessellate(path, 10) | +------------------------------------------------------------------------------------------------------------------+ @@ -2407,29 +2407,29 @@ rst_tessellate .. code-tab:: scala - val df = spark.read - .format("binaryFile").option("extensions", "tif") - .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - df.select(rst_tessellate(col("path"), lit(10)).show() - +------------------------------------------------------------------------------------------------------------------+ - | rst_tessellate(path, 10) | - +------------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | - | {index_id: 593308294097928192, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | - +------------------------------------------------------------------------------------------------------------------+ + val df = spark.read + .format("binaryFile").option("extensions", "tif") + .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") + df.select(rst_tessellate(col("path"), lit(10))).show() + +------------------------------------------------------------------------------------------------------------------+ + | rst_tessellate(path, 10) | + +------------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | + | {index_id: 593308294097928192, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | + +------------------------------------------------------------------------------------------------------------------+ .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_tif - USING gdal - OPTIONS (extensions "tif", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - SELECT rst_tessellate(path, 10) - +------------------------------------------------------------------------------------------------------------------+ - | rst_tessellate(path, 10) | - +------------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | - | {index_id: 593308294097928192, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | - +------------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_tif + USING gdal + OPTIONS (extensions "tif", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") + SELECT rst_tessellate(path, 10) + +------------------------------------------------------------------------------------------------------------------+ + | rst_tessellate(path, 10) | + +------------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | + | {index_id: 593308294097928192, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | + +------------------------------------------------------------------------------------------------------------------+ rst_tooverlappingtiles ********************** @@ -2459,7 +2459,7 @@ rst_tooverlappingtiles df = spark.read.format("binaryFile").option("extensions", "tif")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - df.select(mos.rst_tooverlappingtiles('path', F.lit(10), F.lit(10), F.lit(10)).show() + df.select(mos.rst_tooverlappingtiles('path', F.lit(10), F.lit(10), F.lit(10))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_tooverlappingtiles(path, 10, 10, 10) | +------------------------------------------------------------------------------------------------------------------+ @@ -2469,29 +2469,29 @@ rst_tooverlappingtiles .. code-tab:: scala - val df = spark.read - .format("binaryFile").option("extensions", "tif") - .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif - df.select(rst_tooverlappingtiles(col("path"), lit(10), lit(10), lit(10)).show() - +------------------------------------------------------------------------------------------------------------------+ - | rst_tooverlappingtiles(path, 10, 10, 10) | - +------------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | - | {index_id: 593308294097928192, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | - +------------------------------------------------------------------------------------------------------------------+ + val df = spark.read + .format("binaryFile").option("extensions", "tif") + .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif + df.select(rst_tooverlappingtiles(col("path"), lit(10), lit(10), lit(10))).show() + +------------------------------------------------------------------------------------------------------------------+ + | rst_tooverlappingtiles(path, 10, 10, 10) | + +------------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | + | {index_id: 593308294097928192, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | + +------------------------------------------------------------------------------------------------------------------+ .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_tif - USING gdal - OPTIONS (extensions "tif", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - SELECT rst_tooverlappingtiles(path, 10, 10, 10) - +------------------------------------------------------------------------------------------------------------------+ - | rst_tooverlappingtiles(path, 10, 10, 10) | - +------------------------------------------------------------------------------------------------------------------+ - | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | - | {index_id: 593308294097928192, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | - +------------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_tif + USING gdal + OPTIONS (extensions "tif", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") + SELECT rst_tooverlappingtiles(path, 10, 10, 10) + +------------------------------------------------------------------------------------------------------------------+ + | rst_tooverlappingtiles(path, 10, 10, 10) | + +------------------------------------------------------------------------------------------------------------------+ + | {index_id: 593308294097928191, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | + | {index_id: 593308294097928192, raster: [00 01 10 ... 00], parentPath: "dbfs:/path_to_file", driver: "GTiff" } | + +------------------------------------------------------------------------------------------------------------------+ rst_tryopen ********************** @@ -2511,7 +2511,7 @@ rst_tryopen df = spark.read.format("binaryFile").option("extensions", "tif")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - df.select(mos.rst_tryopen('path').show() + df.select(mos.rst_tryopen('path')).show() +------------------------------------------------------------------------------------------------------------------+ | rst_tryopen(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2520,27 +2520,27 @@ rst_tryopen .. code-tab:: scala - val df = spark.read - .format("binaryFile").option("extensions", "tif") - .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif - df.select(rst_tryopen(col("path")).show() - +------------------------------------------------------------------------------------------------------------------+ - | rst_tryopen(path) | - +------------------------------------------------------------------------------------------------------------------+ - | true | - +------------------------------------------------------------------------------------------------------------------+ + val df = spark.read + .format("binaryFile").option("extensions", "tif") + .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif + df.select(rst_tryopen(col("path"))).show() + +------------------------------------------------------------------------------------------------------------------+ + | rst_tryopen(path) | + +------------------------------------------------------------------------------------------------------------------+ + | true | + +------------------------------------------------------------------------------------------------------------------+ .. code-tab:: sql - CREATE TABLE IF NOT EXISTS TABLE coral_tif - USING gdal - OPTIONS (extensions "tif", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") - SELECT rst_tryopen(path) - +------------------------------------------------------------------------------------------------------------------+ - | rst_tryopen(path) | - +------------------------------------------------------------------------------------------------------------------+ - | true | - +------------------------------------------------------------------------------------------------------------------+ + CREATE TABLE IF NOT EXISTS TABLE coral_tif + USING gdal + OPTIONS (extensions "tif", path "dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/tif") + SELECT rst_tryopen(path) + +------------------------------------------------------------------------------------------------------------------+ + | rst_tryopen(path) | + +------------------------------------------------------------------------------------------------------------------+ + | true | + +------------------------------------------------------------------------------------------------------------------+ rst_upperleftx ********************** @@ -2561,7 +2561,7 @@ rst_upperleftx df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_upperleftx('path').show() + df.select(mos.rst_upperleftx('path')).show() +------------------------------------------------------------------------------------------------------------------+ | rst_upperleftx(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2573,7 +2573,7 @@ rst_upperleftx val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_upperleftx(col("path")).show() + df.select(rst_upperleftx(col("path"))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_upperleftx(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2611,7 +2611,7 @@ rst_upperlefty df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_upperlefty('path').show() + df.select(mos.rst_upperlefty('path')).show() +------------------------------------------------------------------------------------------------------------------+ | rst_upperlefty(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2623,7 +2623,7 @@ rst_upperlefty val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_upperlefty(col("path")).show() + df.select(rst_upperlefty(col("path"))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_upperlefty(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2661,7 +2661,7 @@ rst_width df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_width('path').show() + df.select(mos.rst_width('path')).show() +------------------------------------------------------------------------------------------------------------------+ | rst_width(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2673,7 +2673,7 @@ rst_width val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_width(col("path")).show() + df.select(rst_width(col("path"))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_width(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2717,7 +2717,7 @@ rst_worldtorastercoord df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_worldtorastercoord('path', F.lit(-160.1), F.lit(40.0)).show() + df.select(mos.rst_worldtorastercoord('path', F.lit(-160.1), F.lit(40.0))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_worldtorastercoord(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2729,7 +2729,7 @@ rst_worldtorastercoord val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_worldtorastercoord(col("path"), lit(-160.1), lit(40.0)).show() + df.select(rst_worldtorastercoord(col("path"), lit(-160.1), lit(40.0))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_worldtorastercoord(path) | +------------------------------------------------------------------------------------------------------------------+ @@ -2775,7 +2775,7 @@ rst_worldtorastercoordx df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_worldtorastercoord('path', F.lit(-160.1), F.lit(40.0)).show() + df.select(mos.rst_worldtorastercoord('path', F.lit(-160.1), F.lit(40.0))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_worldtorastercoordx(path, -160.1, 40.0) | +------------------------------------------------------------------------------------------------------------------+ @@ -2787,7 +2787,7 @@ rst_worldtorastercoordx val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_worldtorastercoordx(col("path"), lit(-160.1), lit(40.0)).show() + df.select(rst_worldtorastercoordx(col("path"), lit(-160.1), lit(40.0))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_worldtorastercoordx(path, -160.1, 40.0) | +------------------------------------------------------------------------------------------------------------------+ @@ -2833,7 +2833,7 @@ rst_worldtorastercoordy df = spark.read.format("binaryFile").option("extensions", "nc")\ .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(mos.rst_worldtorastercoordy('path', F.lit(-160.1), F.lit(40.0)).show() + df.select(mos.rst_worldtorastercoordy('path', F.lit(-160.1), F.lit(40.0))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_worldtorastercoordy(path, -160.1, 40.0) | +------------------------------------------------------------------------------------------------------------------+ @@ -2845,7 +2845,7 @@ rst_worldtorastercoordy val df = spark.read .format("binaryFile").option("extensions", "nc") .load("dbfs:/FileStore/geospatial/mosaic/sample_raster_data/binary/netcdf-coral") - df.select(rst_worldtorastercoordy(col("path"), lit(-160.1), lit(40.0)).show() + df.select(rst_worldtorastercoordy(col("path"), lit(-160.1), lit(40.0))).show() +------------------------------------------------------------------------------------------------------------------+ | rst_worldtorastercoordy(path, -160.1, 40.0) | +------------------------------------------------------------------------------------------------------------------+ diff --git a/docs/source/usage/kepler.ipynb b/docs/source/usage/kepler.ipynb index 73c4de17d..967b46266 100644 --- a/docs/source/usage/kepler.ipynb +++ b/docs/source/usage/kepler.ipynb @@ -3,8 +3,11 @@ { "cell_type": "markdown", <<<<<<< HEAD +<<<<<<< HEAD ======= <<<<<<< HEAD +======= +>>>>>>> labs-main "source": [ "# Kepler visualizations" ], @@ -20,7 +23,10 @@ { "cell_type": "markdown", ======= +<<<<<<< HEAD >>>>>>> databrickslabs-main +======= +>>>>>>> labs-main "metadata": { "application/vnd.databricks.v1+cell": { "cellMetadata": {}, @@ -46,9 +52,13 @@ } }, <<<<<<< HEAD +<<<<<<< HEAD ======= >>>>>>> efd95270 (Documentation updates) >>>>>>> databrickslabs-main +======= +>>>>>>> efd95270 (Documentation updates) +>>>>>>> labs-main "source": [ "You can use the `%%mosaic_kepler` magic function to visualise data using [Kepler.gl](https://kepler.gl/).\n", "\n", @@ -58,7 +68,11 @@ "\n", "2) `column_name`: The column that needs to be plotted, can be either a geometry column (`WKT`, `WKB` or Mosaic internal format) or a column containing a spatial grid index ID\n", "\n", +<<<<<<< HEAD + "3) `feature_type`: The type of data to be plotted. Valid values are `geometry` (if SRID=4326), `geometry()` (where `` is the SRID used by the geometry column) and `h3`\n", +======= "3) `feature_type`: The type of data to be plotted. Valid values are `geometry` and `h3`\n", +>>>>>>> efd95270 (Documentation updates) "\n", "4) `limit`: The maximum number of objects to plot. The default limit is `1000`\n", "\n", @@ -70,8 +84,11 @@ "\n", "This magic function is only available in python. It can be used from notebooks with other default languages by storing the intermediate result in a temporary view, and then adding a python cell that uses the `mosaic_kepler` with the temporary view created from another language." <<<<<<< HEAD +<<<<<<< HEAD ======= <<<<<<< HEAD +======= +>>>>>>> labs-main ], "metadata": { "application/vnd.databricks.v1+cell": { @@ -135,7 +152,10 @@ { "cell_type": "code", ======= +<<<<<<< HEAD >>>>>>> databrickslabs-main +======= +>>>>>>> labs-main ] }, { @@ -184,16 +204,23 @@ }, "outputs": [], <<<<<<< HEAD +<<<<<<< HEAD ======= >>>>>>> efd95270 (Documentation updates) >>>>>>> databrickslabs-main +======= +>>>>>>> efd95270 (Documentation updates) +>>>>>>> labs-main "source": [ "from pyspark.sql.functions import *\n", "import mosaic as mos\n", "mos.enable_mosaic(spark, dbutils)" <<<<<<< HEAD +<<<<<<< HEAD ======= <<<<<<< HEAD +======= +>>>>>>> labs-main ], "metadata": { "application/vnd.databricks.v1+cell": { @@ -243,7 +270,10 @@ { "cell_type": "code", ======= +<<<<<<< HEAD >>>>>>> databrickslabs-main +======= +>>>>>>> labs-main ] }, { @@ -275,9 +305,13 @@ }, "outputs": [], <<<<<<< HEAD +<<<<<<< HEAD ======= >>>>>>> efd95270 (Documentation updates) >>>>>>> databrickslabs-main +======= +>>>>>>> efd95270 (Documentation updates) +>>>>>>> labs-main "source": [ "import requests\n", "\n", @@ -285,8 +319,11 @@ "with open('/dbfs/tmp/nyc_taxi_zones.geojson', 'wb') as f:\n", " f.write(req.content)" <<<<<<< HEAD +<<<<<<< HEAD ======= <<<<<<< HEAD +======= +>>>>>>> labs-main ], "metadata": { "application/vnd.databricks.v1+cell": { @@ -322,7 +359,10 @@ { "cell_type": "code", ======= +<<<<<<< HEAD >>>>>>> databrickslabs-main +======= +>>>>>>> labs-main ] }, { @@ -339,9 +379,13 @@ }, "outputs": [], <<<<<<< HEAD +<<<<<<< HEAD ======= >>>>>>> efd95270 (Documentation updates) >>>>>>> databrickslabs-main +======= +>>>>>>> efd95270 (Documentation updates) +>>>>>>> labs-main "source": [ "neighbourhoods = (\n", " spark.read\n", @@ -368,8 +412,11 @@ "\n", "neighbourhoods.show()" <<<<<<< HEAD +<<<<<<< HEAD ======= <<<<<<< HEAD +======= +>>>>>>> labs-main ], "metadata": { "application/vnd.databricks.v1+cell": { @@ -889,7 +936,10 @@ { "cell_type": "code", ======= +<<<<<<< HEAD >>>>>>> databrickslabs-main +======= +>>>>>>> labs-main ] }, { @@ -1145,9 +1195,13 @@ }, "outputs": [], <<<<<<< HEAD +<<<<<<< HEAD ======= >>>>>>> efd95270 (Documentation updates) >>>>>>> databrickslabs-main +======= +>>>>>>> efd95270 (Documentation updates) +>>>>>>> labs-main "source": [ "neighbourhood_chips = (neighbourhoods\n", " .limit(1)\n", @@ -1157,8 +1211,11 @@ "\n", "neighbourhood_chips.show()" <<<<<<< HEAD +<<<<<<< HEAD ======= <<<<<<< HEAD +======= +>>>>>>> labs-main ], "metadata": { "application/vnd.databricks.v1+cell": { @@ -1387,7 +1444,10 @@ } } ======= +<<<<<<< HEAD >>>>>>> databrickslabs-main +======= +>>>>>>> labs-main ] }, { @@ -1471,16 +1531,23 @@ "![mosaic kepler map example h3 chips](../images/kepler-3.png)" ] <<<<<<< HEAD +<<<<<<< HEAD ======= >>>>>>> efd95270 (Documentation updates) >>>>>>> databrickslabs-main +======= +>>>>>>> efd95270 (Documentation updates) +>>>>>>> labs-main } ], "metadata": { "application/vnd.databricks.v1+notebook": { <<<<<<< HEAD +<<<<<<< HEAD ======= <<<<<<< HEAD +======= +>>>>>>> labs-main "notebookName": "kepler", "dashboards": [], "notebookMetadata": { @@ -1490,7 +1557,10 @@ "widgets": {}, "notebookOrigID": 2874007245243191 ======= +<<<<<<< HEAD >>>>>>> databrickslabs-main +======= +>>>>>>> labs-main "dashboards": [], "language": "python", "notebookMetadata": { @@ -1500,9 +1570,13 @@ "notebookOrigID": 2666786534675682, "widgets": {} <<<<<<< HEAD +<<<<<<< HEAD ======= >>>>>>> efd95270 (Documentation updates) >>>>>>> databrickslabs-main +======= +>>>>>>> efd95270 (Documentation updates) +>>>>>>> labs-main } }, "nbformat": 4, diff --git a/mosaic-0.3.12-jar-with-dependencies.jar b/mosaic-0.3.12-jar-with-dependencies.jar new file mode 100644 index 000000000..8fcbdf0a3 Binary files /dev/null and b/mosaic-0.3.12-jar-with-dependencies.jar differ diff --git a/notebooks/examples/python/BritishNationalGrid.py b/notebooks/examples/python/BritishNationalGrid.py deleted file mode 100644 index bd359f906..000000000 --- a/notebooks/examples/python/BritishNationalGrid.py +++ /dev/null @@ -1,393 +0,0 @@ -# Databricks notebook source -# MAGIC %md -# MAGIC ## Install Mosaic -# MAGIC Mosaic framework is available via pip install and it comes with bindings for Python, SQL, Scala and R.
-# MAGIC The wheel file coming with pip installation is registering any necessary jars for other language support. - -# COMMAND ---------- - -# MAGIC %pip install databricks-mosaic - -# COMMAND ---------- - -# MAGIC %md ## Download demo data -# MAGIC -# MAGIC Run this only once - -# COMMAND ---------- - -# MAGIC %run ../../data/DownloadLondonPostcodeZones - -# COMMAND ---------- - -# MAGIC %run ../../data/DownloadUPRNsData - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Setup London Postcode zones -# MAGIC In order to setup the data please run the notebook available at "../../data/DownloadLondonPostcodeZones".
-# MAGIC DownloadLondonPostcodeZones notebook will make sure we have London Postcode shapes available in our environment. - -# COMMAND ---------- - -user_name = dbutils.notebook.entry_point.getDbutils().notebook().getContext().userName().get() - -raw_path = f"dbfs:/tmp/mosaic/{user_name}" -raw_postcode_zones_path = f"{raw_path}/postcodes" - -print(f"The raw data is stored in {raw_path}") - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Enable Mosaic in the notebook -# MAGIC To get started, you'll need to attach the wheel to your cluster and import instances as in the cell below.
-# MAGIC The defautl grid index system is set to H3. In oreder to use British National Grid you'd need to set the configuration parameter.
- -# COMMAND ---------- - -from pyspark.sql.functions import * -import mosaic as mos -spark.conf.set("spark.databricks.labs.mosaic.index.system", "BNG") -mos.enable_mosaic(spark, dbutils) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Read polygons from GeoJson - -# COMMAND ---------- - -postcodes = ( - spark.read - .option("multiline", "true") - .format("json") - .load(raw_postcode_zones_path) - .select("type", explode(col("features")).alias("feature")) - .select("type", col("feature.properties").alias("properties"), to_json(col("feature.geometry")).alias("json_geometry")) - .withColumn("geometry", mos.st_geomfromgeojson("json_geometry")) -) - -display( - postcodes -) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Reproject the geometries to correct SRID -# MAGIC British National Grid expects coordinate of geometries to be provided in EPSG:27700.
-# MAGIC Our geometries are provided in EPSG:4326. So we will need to reproject the geometries.
-# MAGIC Mosaic has the necessary functionality to help us achieve this. - -# COMMAND ---------- - -postcodes = ( - postcodes.select( - "type", "properties", "geometry" - ).withColumn( - "geometry", mos.st_setsrid("geometry", lit(4326)) - ).withColumn( - "geometry", mos.st_transform("geometry", lit(27700)) - ) -) - -postcodes.display() - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Compute some basic geometry attributes - -# COMMAND ---------- - -# MAGIC %md -# MAGIC Mosaic provides a number of functions for extracting the properties of geometries. Here are some that are relevant to Polygon geometries: - -# COMMAND ---------- - -display( - postcodes - .withColumn("calculated_area", mos.st_area(col("geometry"))) - .withColumn("calculated_length", mos.st_length(col("geometry"))) - # Note: The unit of measure of the area and length depends on the CRS used. - # For British National Grid locations it will be square meters and meters - .select("geometry", "calculated_area", "calculated_length") -) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Read points data - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We will load the Unique Property Reference Numbers (UPRNs) data to represent point data.
-# MAGIC In order to setup the data please run the notebook available at "../../data/DownloadUPRNsData".
-# MAGIC DownloadUPRNsData notebook will make sure we have UPRN table with point data available in our environment. -# MAGIC We already loaded some shapes representing polygons that correspond to London postcodes.
- -# COMMAND ---------- - -uprns_table = spark.table("uprns_table") -display(uprns_table) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC The UPRNs table contains Unique Property Reference Numbers and positions provided in EPSG:27700 and EPSG:4326.
-# MAGIC Since we are operating in EPSG:27700 and using BNG as our indexing system, we will use the location data provided via Northings and Eastings coordinates. - -# COMMAND ---------- - -uprns_table = ( - uprns_table - .withColumn("uprn_point", mos.st_point(col("X_COORDINATE"), col("Y_COORDINATE"))) - # we are using WKT here for simpler displaying, use WKB for faster query run time - .withColumn("uprn_point", mos.st_aswkt("uprn_point")) - .where(mos.st_hasvalidcoordinates("uprn_point", lit('EPSG:27700'), lit('reprojected_bounds'))) - .where(mos.st_isvalid(col("uprn_point"))) - .drop("LATITUDE", "LONGITUDE") -) -display(uprns_table) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC Next step is optional. Howerver, since we are constructing POINT geometries and ensuring they are valid it is prudent to write out the validated dataset.
-# MAGIC That way we are making sure validation is performed only once at ingestion time and not each time spark runs the queries (due to spark lazy evaluation). - -# COMMAND ---------- - -uprns_table.write.format("delta").mode("overwrite").saveAsTable("uprns_bng_table") - -# COMMAND ---------- - -uprns_table = spark.read.table("uprns_bng_table") - -# COMMAND ---------- - -uprns_table.count() - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Spatial Joins - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We can use Mosaic to perform spatial joins both with and without Mosaic indexing strategies.
-# MAGIC Indexing is very important when handling very different geometries both in size and in shape (ie. number of vertices).
-# MAGIC In the context of Mosaic we are using grid index systems rather than traditional tree based index system.
-# MAGIC The reason for this is the fact grid index systems like BNG and/or H3 are far better suited for distributed massive scale systems.
-# MAGIC Mosaic comes with grid_tessallate expressions that allow the caller to index an arbitrary shape within grid index system of choice.
-# MAGIC One thing to note here is that tessellation is a specialised way of converting a geometry to set of grid index system cells with their local geometries.
-# MAGIC Tesselation is applicable to any shape, Polygon, LineString, Points and their Multi* variants.
- -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### Getting the optimal resolution - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We can use Mosaic functionality to identify how to best index/tessellate our data based on the data inside the specific dataframe.
-# MAGIC Selecting an apropriate tesselation resolution can have a considerable impact on the performance.
- -# COMMAND ---------- - -from mosaic import MosaicFrame - -postcodes_mosaic_frame = MosaicFrame(postcodes, "geometry") -optimal_resolution = postcodes_mosaic_frame.get_optimal_resolution(sample_fraction=0.75) -optimal_resolution_str = postcodes_mosaic_frame.get_optimal_resolution_str(sample_fraction=0.75) - -print(f""" - Optimal resolution code is :{optimal_resolution}. - Optimal resolution name is :{optimal_resolution_str}. -""") - -# COMMAND ---------- - -# MAGIC %md -# MAGIC Not every resolution will yield performance improvements.
-# MAGIC By a rule of thumb it is always better to select more coarse resolution than to select a more fine grained resolution - if not sure select a lower resolution.
-# MAGIC Tessellation is a trade off between decomposition and explosion factor.
-# MAGIC The more fine grained the resolution is the more explosion of rows will impact the preprocessing time. However, it will make data more parallel.
-# MAGIC On the other hand, if the resolution is too coarse we are not addressing localisation related data skews.
-# MAGIC You can think of Mosaic's tesselation as a way to partition an overly complex row into multiple rows that have a balanced amount of computation each. - -# COMMAND ---------- - -display( - postcodes_mosaic_frame.get_resolution_metrics(sample_rows=150) -) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### Indexing/Tessellating using the optimal resolution - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We will use mosaic sql functions to index our points data.
-# MAGIC Here we will use resolution -4 (500m), index resolution depends on the dataset in use.
-# MAGIC There is a second best choice which is 4 (100m).
-# MAGIC The user can pass either numerical resolution or the string label to the grid expressions.
-# MAGIC BNG provides 2 types of hierarchies.
-# MAGIC The standard hierarchy which operates with index resolutions in base 10 (i.e. (6, 1m), (5, 10m), (4, 100m), (3, 1km), (2, 10km), (1, 100km)) and cell ids follow the format of letter pair followed by coordinate bins at the selected resolution (e.g. TQ100100 for (4, 100m)).
-# MAGIC The quad hierachy (or quadrant hierarchy) which operates with index resolutions in base 5 (i.e. (-6, 5m), (-5, 50m), (-4, 500m), (-3, 5km), (-2, 50km), (-1, 500km)) and cell ids follow the format of letter pair followed by coordinate bins at the selected resolution and folowed by quadrant letters (e.g. TQ100100SW for (-4, 500m)). Quadrants correspond to compas directions SW (south west), NW (north west), NE (north east) and SE (south east).
- -# COMMAND ---------- - -uprns_table = spark.read.table("uprns_bng_table") -uprns_table = ( - uprns_table - .withColumn("uprn_bng_500m", mos.grid_pointascellid("uprn_point", lit(optimal_resolution))) - .withColumn("uprn_bng_500m_str", mos.grid_pointascellid("uprn_point", lit(optimal_resolution_str))) - .withColumn("uprn_bng_100m_str", mos.grid_pointascellid("uprn_point", lit("100m"))) -) - -# COMMAND ---------- - -uprns_table.display() - -# COMMAND ---------- - -# MAGIC %md -# MAGIC Mosaic has a builtin wrappers for KeplerGL map plots using mosaic_kepler IPython magics.
-# MAGIC Mosaic magics automatically handle bng grid idex system and CRS conversion for you.
-# MAGIC Given that Kepler Plots are rendered on the browser side we are automatically limiting the row count to 1000.
-# MAGIC The end user can override the number of ploted rows by specifying the desired number. - -# COMMAND ---------- - -count_per_index = uprns_table.groupBy("uprn_bng_500m").count().cache() - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC count_per_index "uprn_bng_500m" "bng" 50 - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We will use Mosaic to tessellate our postcode geometries using a built in tesselation generator (explode) function . - -# COMMAND ---------- - -postcodes_with_index = (postcodes - - # We break down the original geometry in multiple smaller mosaic chips - # each fully contained in a grid cell - .withColumn("chips", mos.grid_tessellateexplode(col("geometry"), lit(optimal_resolution))) - - # We don't need the original geometry any more, since we have broken it down into - # Smaller mosaic chips. - .drop("json_geometry", "geometry") - ) - -# COMMAND ---------- - -postcodes_with_index.display() - -# COMMAND ---------- - -to_display = postcodes_with_index.select("properties.Name", "chips.index_id", mos.st_aswkt("chips.wkb").alias("geometry")) - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC to_display "geometry" "geometry(27700)" 200 - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### Performing the spatial join - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We can now do spatial join between our UPRNs and postcodes. - -# COMMAND ---------- - -with_postcodes = ( - uprns_table.join( - postcodes_with_index, - uprns_table["uprn_bng_500m"] == postcodes_with_index["chips.index_id"], - how = "right_outer" # to perserve even emtpy chips - ).where( - # If the borough is a core chip (the chip is fully contained within the geometry), then we do not need - # to perform any intersection, because any point matching the same index will certainly be contained in - # the borough. Otherwise we need to perform an st_contains operation on the chip geometry. - col("chips.is_core") | mos.st_contains(col("chips.wkb"), col("uprn_point")) - ).select( - "properties.*", "uprn_point", "UPRN", "chips.index_id", mos.st_aswkt("chips.wkb").alias("index_geometry") - ) -) - -display(with_postcodes) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Visualise the results in Kepler - -# COMMAND ---------- - -# MAGIC %md -# MAGIC Mosaic abstracts interaction with Kepler in python through mosaic_kepler magic.
-# MAGIC Mosaic_kepler magic takes care of conversion between EPSG:27700 and EPSG:4326 so that Kepler can properly render.
-# MAGIC It can handle columns with bng index ids (int and str formats are both supported) and geometries that are provided in EPSG:27700.
-# MAGIC Mosaic will convert all the geometries for proper rendering. - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC with_postcodes "index_geometry" "geometry(27700)" 5000 - -# COMMAND ---------- - -# MAGIC %md -# MAGIC Using mosaic it takes only a few lines of code to produce BNG based heat map and visualise it in Kepler.
-# MAGIC By default the colors wont be affected by the counts and you'd need to change the options in Kepler UI.
-# MAGIC Navigate to the layer, expland it and for the fill color click on the 3 dots icon, then select count as the field for color scaling. - -# COMMAND ---------- - -properties_per_index = with_postcodes.groupBy("index_id").count() - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC properties_per_index "index_id" "bng" 6000 - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We can do the same - -# COMMAND ---------- - -properties_per_chip = with_postcodes.groupBy("index_geometry").count() - -# COMMAND ---------- - -# MAGIC %md -# MAGIC Note that if you dont use "right_outer" join some chips may be empty.
-# MAGIC This is due to no UPRNs being located in those exact chips.
- -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC properties_per_chip "index_geometry" "geometry(27700)" 20000 - -# COMMAND ---------- - - diff --git a/notebooks/examples/python/MosaicAndSedona.py b/notebooks/examples/python/MosaicAndSedona.py deleted file mode 100644 index 9426cf0c8..000000000 --- a/notebooks/examples/python/MosaicAndSedona.py +++ /dev/null @@ -1,40 +0,0 @@ -# Databricks notebook source -# MAGIC %md -# MAGIC # Mosaic & Sedona -# MAGIC -# MAGIC You can combine the usage of Mosaic with other geospatial libraries. -# MAGIC -# MAGIC In this example we combine the use of [Sedona](https://sedona.apache.org) and Mosaic. -# MAGIC -# MAGIC ## Setup -# MAGIC -# MAGIC This notebook will run if you have both Mosaic and Sedona installed on your cluster. -# MAGIC -# MAGIC ### Install sedona -# MAGIC -# MAGIC To install Sedona, follow the [official Sedona instructions](https://sedona.apache.org/1.4.0/setup/databricks). - -# COMMAND ---------- - -import pyspark.sql.functions as f -import mosaic as mos -from sedona.register.geo_registrator import SedonaRegistrator - -mos.enable_mosaic(spark, dbutils) # Enable Mosaic -SedonaRegistrator.registerAll(spark) # Register Sedona SQL functions - -# COMMAND ---------- - -df = spark.createDataFrame([{'wkt': 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'}]) -(df - # Mosaic - .withColumn("mosaic_area", mos.st_area('wkt')) - # Sedona - .withColumn("sedona_area", f.expr("ST_Area(ST_GeomFromWKT(wkt))")) - # Sedona function not available in Mosaic - .withColumn("sedona_flipped", f.expr("ST_FlipCoordinates(ST_GeomFromWKT(wkt))")) -).show() - -# COMMAND ---------- - - diff --git a/notebooks/examples/python/NetCDF/CoralBleaching/mosaic_gdal_coral_bleaching.ipynb b/notebooks/examples/python/NetCDF/CoralBleaching/mosaic_gdal_coral_bleaching.ipynb new file mode 100644 index 000000000..585fe3f44 --- /dev/null +++ b/notebooks/examples/python/NetCDF/CoralBleaching/mosaic_gdal_coral_bleaching.ipynb @@ -0,0 +1,918 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a7ef2bb5-0a2b-44db-b08d-d641e53578e2", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Analyze Coral Bleaching with Mosaic + GDAL\n", + "\n", + "> Read multiple NetCDFs using Mosaic and process through several performance-driving data engineering steps before rendering avg coral bleaching worldwide at h3 resolution `3`.\n", + "\n", + "__Notes:__\n", + "\n", + "

\n", + "\n", + "* This notebook was updated for Mosaic [0.3.12](https://github.com/databrickslabs/mosaic/releases/tag/v_0.3.12) on DBR 12.2 LTS\n", + "* [GDAL](https://gdal.org/) supported in [Mosaic](https://databrickslabs.github.io/mosaic/index.html)\n", + " * Install this GDAL [init script](https://github.com/databrickslabs/mosaic/blob/main/modules/python/gdal_package/databricks-mosaic-gdal/resources/scripts/mosaic-gdal-3.4.3-filetree-init.sh) (for DBR 12.2) on your cluster, see [[1](https://docs.databricks.com/en/init-scripts/cluster-scoped.html#use-cluster-scoped-init-scripts) | [2](https://databrickslabs.github.io/mosaic/usage/install-gdal.html)] for more.\n", + "* Recommend using an auto-scaling 2-8 worker cluster, doesn't need to be a large instance type but should use delta (aka disk) caching, more [here](https://docs.databricks.com/en/optimizations/disk-cache.html).\n", + "\n", + "--- \n", + "__Last Update:__ 21 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "70d2df7e-e1e5-400c-8065-7ff2d262ebc6", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "bbb5ae0c-2d9f-4434-a76e-54240068a64a", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d17676ed-e132-4d4b-9873-993394f23068", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "GDAL enabled.\n\nGDAL 3.4.3, released 2022/04/22\n\n\n" + ] + } + ], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "\n", + "# -- import databricks + spark functions\n", + "\n", + "from pyspark.databricks.sql import functions as dbf\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import col\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "mos.enable_gdal(spark)\n", + "\n", + "# -- other imports\n", + "import os" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "3ec607f0-30f3-495b-b18c-f67eec55bc70", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## NetCDF Coral Bleaching Data\n", + "\n", + "> These files were uploaded from [Mosaic Test Resources](https://github.com/databrickslabs/mosaic/tree/main/src/test/resources/binary/netcdf-coral).\n", + "\n", + "__Hint:__ _Can also use [Databricks CLI](https://docs.databricks.com/en/dev-tools/cli/index.html) to move files around, e.g. from your local machine._" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4cf39fbb-f181-45f9-98f3-1e46c85cf61d", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Download data [1x] into Workspace_\n", + "\n", + "> There are a few ways to do this; we will create a folder in our workspace; your path will look something like `/Workspace/Users//`. __Note: Spark cannot directly interact with Workspace files, so we will take an additional step after downloading, more [here](https://docs.databricks.com/en/files/workspace-interact.html#read-data-workspace-files).__ Workspace files are newer to Databricks and we want to make sure you get familiar with them." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "167db92f-9f4e-4706-98bb-4b8a1caee3c3", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "ws_data = \"/Workspace/Users/mjohns@databricks.com/All_Shared/mosaic_raster/NetCDF_Coral/data\"\n", + "\n", + "os.environ['WS_DATA'] = ws_data" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "63b7947d-e36f-4385-bfb3-f97715f789d5", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "total 5.5K\ndrwxrwxrwx 2 root root 4.0K Nov 21 16:31 bak\ndrwxrwxrwx 2 root root 0 Nov 21 16:31 data\n-rwxrwxrwx 1 root root 1.1K Nov 8 12:57 mosaic-gdal-3.4.3-filetree-init.sh\n-rwxrwxrwx 1 root root 0 Jan 1 1970 mosaic-gdal-coral-bleaching\n" + ] + } + ], + "source": [ + "%sh\n", + "# this is just in the workspace initially\n", + "mkdir -p $WS_DATA\n", + "ls -lh $WS_DATA/.." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ad3aa80d-4aa9-4e68-8503-f78e3c99e068", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "File ‘/Workspace/Users/mjohns@databricks.com/All_Shared/mosaic_raster/NetCDF_Coral/data/ct5km_baa-max-7d_v3.1_20220101.nc’ already there; not retrieving.\n\nFile ‘/Workspace/Users/mjohns@databricks.com/All_Shared/mosaic_raster/NetCDF_Coral/data/ct5km_baa-max-7d_v3.1_20220102.nc’ already there; not retrieving.\n\nFile ‘/Workspace/Users/mjohns@databricks.com/All_Shared/mosaic_raster/NetCDF_Coral/data/ct5km_baa-max-7d_v3.1_20220103.nc’ already there; not retrieving.\n\nFile ‘/Workspace/Users/mjohns@databricks.com/All_Shared/mosaic_raster/NetCDF_Coral/data/ct5km_baa-max-7d_v3.1_20220104.nc’ already there; not retrieving.\n\nFile ‘/Workspace/Users/mjohns@databricks.com/All_Shared/mosaic_raster/NetCDF_Coral/data/ct5km_baa-max-7d_v3.1_20220105.nc’ already there; not retrieving.\n\nFile ‘/Workspace/Users/mjohns@databricks.com/All_Shared/mosaic_raster/NetCDF_Coral/data/ct5km_baa-max-7d_v3.1_20220106.nc’ already there; not retrieving.\n\nFile ‘/Workspace/Users/mjohns@databricks.com/All_Shared/mosaic_raster/NetCDF_Coral/data/ct5km_baa-max-7d_v3.1_20220107.nc’ already there; not retrieving.\n\nFile ‘/Workspace/Users/mjohns@databricks.com/All_Shared/mosaic_raster/NetCDF_Coral/data/ct5km_baa-max-7d_v3.1_20220108.nc’ already there; not retrieving.\n\nFile ‘/Workspace/Users/mjohns@databricks.com/All_Shared/mosaic_raster/NetCDF_Coral/data/ct5km_baa-max-7d_v3.1_20220109.nc’ already there; not retrieving.\n\nFile ‘/Workspace/Users/mjohns@databricks.com/All_Shared/mosaic_raster/NetCDF_Coral/data/ct5km_baa-max-7d_v3.1_20220110.nc’ already there; not retrieving.\n\n" + ] + } + ], + "source": [ + "%sh \n", + "# download all the nc files used\n", + "# - '-nc' means no clobber here\n", + "wget -P $WS_DATA -nc https://github.com/databrickslabs/mosaic/raw/main/src/test/resources/binary/netcdf-coral/ct5km_baa-max-7d_v3.1_20220101.nc\n", + "wget -P $WS_DATA -nc https://github.com/databrickslabs/mosaic/raw/main/src/test/resources/binary/netcdf-coral/ct5km_baa-max-7d_v3.1_20220102.nc\n", + "wget -P $WS_DATA -nc https://github.com/databrickslabs/mosaic/raw/main/src/test/resources/binary/netcdf-coral/ct5km_baa-max-7d_v3.1_20220103.nc\n", + "wget -P $WS_DATA -nc https://github.com/databrickslabs/mosaic/raw/main/src/test/resources/binary/netcdf-coral/ct5km_baa-max-7d_v3.1_20220104.nc\n", + "wget -P $WS_DATA -nc https://github.com/databrickslabs/mosaic/raw/main/src/test/resources/binary/netcdf-coral/ct5km_baa-max-7d_v3.1_20220105.nc\n", + "wget -P $WS_DATA -nc https://github.com/databrickslabs/mosaic/raw/main/src/test/resources/binary/netcdf-coral/ct5km_baa-max-7d_v3.1_20220106.nc\n", + "wget -P $WS_DATA -nc https://github.com/databrickslabs/mosaic/raw/main/src/test/resources/binary/netcdf-coral/ct5km_baa-max-7d_v3.1_20220107.nc\n", + "wget -P $WS_DATA -nc https://github.com/databrickslabs/mosaic/raw/main/src/test/resources/binary/netcdf-coral/ct5km_baa-max-7d_v3.1_20220108.nc\n", + "wget -P $WS_DATA -nc https://github.com/databrickslabs/mosaic/raw/main/src/test/resources/binary/netcdf-coral/ct5km_baa-max-7d_v3.1_20220109.nc\n", + "wget -P $WS_DATA -nc https://github.com/databrickslabs/mosaic/raw/main/src/test/resources/binary/netcdf-coral/ct5km_baa-max-7d_v3.1_20220110.nc" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0059a460-0841-4b08-a7eb-449fc02e9827", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_For simplicity (and since we are running DBR 12.2), we are going to copy from the Workspace folder to DBFS, but this is all shifting with Unity Catalog (more [here](https://docs.databricks.com/en/dbfs/unity-catalog.html))._ __Note: [DBFS](https://docs.databricks.com/en/dbfs/dbfs-root.html), and more recent [Volumes](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#volumes), are FUSE mounted to the cluster nodes, looking like a local path.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0b297023-8bfe-4eb7-8eeb-ef6f151ec587", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "dbfs_data = \"/home/mjohns@databricks.com/datasets/netcdf-coral\"\n", + "dbfs_data_fuse = f\"/dbfs{dbfs_data}\"\n", + "os.environ['DBFS_DATA'] = dbfs_data\n", + "os.environ['DBFS_DATA_FUSE'] = dbfs_data_fuse" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2181742a-9680-4e4c-b22c-fedebb2ae4cd", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "total 7.0M\n-rwxrwxrwx 1 root root 691K Nov 21 16:31 ct5km_baa-max-7d_v3.1_20220101.nc\n-rwxrwxrwx 1 root root 692K Nov 21 16:31 ct5km_baa-max-7d_v3.1_20220102.nc\n-rwxrwxrwx 1 root root 701K Nov 21 16:31 ct5km_baa-max-7d_v3.1_20220103.nc\n-rwxrwxrwx 1 root root 704K Nov 21 16:31 ct5km_baa-max-7d_v3.1_20220104.nc\n-rwxrwxrwx 1 root root 710K Nov 21 16:31 ct5km_baa-max-7d_v3.1_20220105.nc\n-rwxrwxrwx 1 root root 714K Nov 21 16:31 ct5km_baa-max-7d_v3.1_20220106.nc\n-rwxrwxrwx 1 root root 718K Nov 21 16:31 ct5km_baa-max-7d_v3.1_20220107.nc\n-rwxrwxrwx 1 root root 720K Nov 21 16:31 ct5km_baa-max-7d_v3.1_20220108.nc\n-rwxrwxrwx 1 root root 722K Nov 21 16:31 ct5km_baa-max-7d_v3.1_20220109.nc\n-rwxrwxrwx 1 root root 726K Nov 21 2023 ct5km_baa-max-7d_v3.1_20220110.nc\n" + ] + } + ], + "source": [ + "%sh \n", + "# copy from workspace\n", + "# - for spark / distributed work\n", + "mkdir -p $DBFS_DATA_FUSE\n", + "cp -r $WS_DATA/* $DBFS_DATA_FUSE\n", + "ls -lh $DBFS_DATA_FUSE" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "9d0b3a64-e93c-4102-b0df-77a57851497b", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Read NetCDFs with Spark\n", + "\n", + "> Uses Mosaic [GDAL readers](https://databrickslabs.github.io/mosaic/api/raster-format-readers.html#raster-format-readers). __Note: starting with Mosaic 0.3.12, the 'tile' column is populated and is used by various `rst_` functions.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "1486e9fc-719b-4151-bb95-73618dd5c654", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 10\n+--------------------+--------------------+------+-------------------+------+------+---------+--------------------+--------------------+----+--------------------+\n| path| modificationTime|length| uuid|x_size|y_size|bandCount| metadata| subdatasets|srid| tile|\n+--------------------+--------------------+------+-------------------+------+------+---------+--------------------+--------------------+----+--------------------+\n|dbfs:/home/mjohns...|1970-01-20 16:23:...|743047|5240782214809708542| 512| 512| 0|{SUBDATASET_1_DES...|{SUBDATASET_1_DES...| 0|{null, �HDF\\r\\n\u001A\\...|\n+--------------------+--------------------+------+-------------------+------+------+---------+--------------------+--------------------+----+--------------------+\n\n" + ] + } + ], + "source": [ + "df = (\n", + " spark\n", + " .read.format(\"gdal\")\n", + " .option(\"driverName\", \"NetCDF\")\n", + " .load(dbfs_data)\n", + ")\n", + "print(f\"count? {df.count():,}\")\n", + "df.limit(1).show() # <- limiting display for ipynb output only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "3ec2909b-f883-4a37-b183-d5c715d3e5ba", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Let's work with the \"bleaching_alert_area\" subdataset.__\n", + "\n", + "> We are using `rst_subdataset` which uses the (new) 'tile' column, more [here](https://databrickslabs.github.io/mosaic/api/raster-functions.html#rst-getsubdataset).\n", + "\n", + "SubDataset 'tile' output looks something like...\n", + "\n", + "```\n", + "{\"index_id\":null,\"raster\":\"Q0RGAQAAAAAAAAAKAAAAAwAAAANsb24AAAAcIAAAAANsYXQAAAAOEAAAAAR0aW1lAAAAAQAAAAwAAAA7AAAAD2Fja25vd2xlZGdlbWVudAAAAAACAAAAHU5PQUEgQ29yYWwgUmVlZiB\n", + "XYXRjaCBQcm9ncmFtAAAAAAAADWNkbV8= (truncated)\",\"parentPath\":\"dbfs:/home/mjohns@databricks.com/datasets/netcdf-coral/ct5km_baa-max-7d_v3.1_20220110.nc\",\"driver\":\"netCDF\"}\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "16190122-2654-4e0b-b2b8-35c35f9a2efc", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 10\n+--------------------+\n| tile|\n+--------------------+\n|{null, CDF\u0001\u0000\u0000\u0000\u0000\u0000\u0000...|\n+--------------------+\n\n" + ] + } + ], + "source": [ + "df_bleach = (\n", + " df\n", + " .repartition(df.count(), \"tile\")\n", + " .select(\n", + " mos\n", + " .rst_getsubdataset(\"tile\", F.lit(\"bleaching_alert_area\"))\n", + " .alias(\"tile\")\n", + " )\n", + ")\n", + "print(f\"count? {df_bleach.count():,}\")\n", + "df_bleach.limit(1).show() # <- `.display()` is prettier in databricks" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d32b3241-eca9-406c-b751-55749cb62638", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## SubDivide tiles from subdataset column to max of 8MB\n", + "\n", + "> While this is optional for smaller data, we want to demonstrate how you can master tiling at any scale. Let's use [rst_subdivide](https://databrickslabs.github.io/mosaic/api/raster-functions.html#rst-subdivide) to ensure we have tiles no larger than 8MB.\n", + "\n", + "SubDivide 'tile' output looks something like...\n", + "\n", + "```\n", + "{\"index_id\":null,\"raster\":\"iUhERg0KGgoAAAAAAAgIAAQAEAAAAAAAAAAAAAAAAAD//////////6WRBAAAAAAA//////////8AAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n", + "AAAAAAAAAAAAAT0hEUgINSAMCIgAAAAAAAwUAAAAAAAAA//////////8= (truncated)\",\"parentPath\":\"dbfs:/home/mjohns@databricks.com/datasets/netcdf-coral/\n", + "ct5km_baa-max-7d_v3.1_20220103.nc\",\"driver\":\"netCDF\"}\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "149d86d3-57fb-4ae7-97bb-b95997032b3c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 40\n+--------------------+\n| tile|\n+--------------------+\n|{null, �HDF\\r\\n\u001A\\...|\n+--------------------+\n\n" + ] + } + ], + "source": [ + "df_subdivide = (\n", + " df_bleach\n", + " .repartition(df_bleach.count(), \"tile\") # <- repartition important!\n", + " .select(\n", + " mos\n", + " .rst_subdivide(col(\"tile\"), F.lit(8))\n", + " .alias(\"tile\")\n", + " )\n", + ")\n", + "print(f\"count? {df_subdivide.count():,}\") # <- go from 10 to 40 tiles\n", + "df_subdivide.limit(1).show() # <- `.display()` is prettier in databricks" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "56b969c9-837d-4d8b-b74e-a8ee9dab8489", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## ReTile tiles from subdataset to 600x600 pixels\n", + "\n", + "> While this is optional for smaller data, we want to demonstrate how you can master tiling at any scale. Let's use [rst_retile](https://databrickslabs.github.io/mosaic/api/raster-functions.html#rst-retile) to ensure we have even data and drive more parallelism.\n", + "\n", + "_ReTile 'tile' output looks something like..._\n", + "\n", + "```\n", + "{\"index_id\":null,\"raster\":\"iUhERg0KGgoAAAAAAAgIAAQAEAAAAAAAAAAAAAAAAAD//////////9t5AQAAAAAA//////////8AAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0hEUgINSAMCIgAAAAAAAwUAAAAAAAAA//////////8= (truncated)\",\"parentPath\":\"dbfs:/home/mjohns@databricks.com/datasets/netcdf-coral/ct5km_baa-max-7d_v3.1_20220102.nc\",\"driver\":\"netCDF\"}\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "fe221c80-655f-4556-a68c-8c3feb6dcacf", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 463\n+--------------------+\n| tile|\n+--------------------+\n|{null, �HDF\\r\\n\u001A\\...|\n+--------------------+\n\n" + ] + } + ], + "source": [ + "df_retile = (\n", + " df_subdivide\n", + " .repartition(df_subdivide.count(), \"tile\") # <- repartition important!\n", + " .select(\n", + " mos\n", + " .rst_retile(col(\"tile\"), F.lit(600), F.lit(600))\n", + " .alias(\"tile\")\n", + " )\n", + ")\n", + "print(f\"count? {df_retile.count():,}\") # <- go from 40 to 463 tiles\n", + "df_retile.limit(1).show() # <- `.display()` is prettier in databricks" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "943ab1ab-d881-4cd1-a1da-e7a012c0c1b1", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Render Raster to H3 Results\n", + "\n", + "> Use [rst_rastertogridavg](https://databrickslabs.github.io/mosaic/api/raster-functions.html#rst-rastertogridavg) to tessellate to grid (default is h3) and provide the average measure for the resolution chosen (in this case resolution `3`); also, creates a temp view & renders with Kepler.gl.\n", + "\n", + "Initial structure of a single `grid_avg` row looks something like...\n", + "\n", + "```\n", + "[\n", + " [\n", + " {\"cellID\":\"592144529759404031\",\"measure\":0},{\"cellID\":\"592849935188099071\",\"measure\":0.8013245033112583},{\"cellID\":\"592834816903217151\",\"measure\":0}, {\"cellID\":\"592823203311648767\",\"measure\":0.9726027397260274},{\"cellID\":\"592323818874208255\",\"measure\":0.028328611898016998}, \n", + " {\"cellID\":\"592306295407640575\",\"measure\":1.8468899521531101},{\"cellID\":\"592143224089346047\",\"measure\":1},{\"cellID\":\"592851447016587263\",\"measure\":0.9979123173277662}, \n", + " {\"cellID\":\"592849316712808447\",\"measure\":0.4621676891615542},{\"cellID\":\"592136833178009599\",\"measure\":0.06970509383378017}, \n", + " {\"cellID\":\"592314885342232575\",\"measure\":0}, {\"cellID\":\"592832274282577919\",\"measure\":0},{\"cellID\":\"592831861965717503\",\"measure\":0} \n", + " ... (truncated)\n", + " ]\n", + "]\n", + "```\n", + "\n", + "Data ultimately looks something like...\n", + "\n", + "| h3 | measure |\n", + "| --- | ------- |\n", + "| 593176490141548543 | 0 |\n", + "| 593386771740360703 | 2.0113207547169814 |\n", + "| 593308294097928191 | 0 |\n", + "| 593825202001936383 | 0.015432098765432098 |\n", + "| 593163914477305855 | 2.008650519031142 |\n", + "\n", + "__Hint: zoom back out once rendered; also, verify the `.contains()` string is actually in the data. Also, this can take a few minutes to run, recommend a few nodes (min. 3 to say 8) in your cluster to speed up processing__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0350f7f4-76b3-4260-943f-5a6ca4a93e28", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# here is the initial structure\n", + "# - notice the array nesting, which we will handle\n", + "# by exploding 2x\n", + "# display (\n", + "# df_retile\n", + "# .limit(5)\n", + "# .select(\n", + "# mos.rst_rastertogridavg(\"tile\", F.lit(3))\n", + "# .alias(\"grid_avg\")\n", + "# )\n", + "# )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "a4e90704-b929-406a-bfb0-13fe98ad919b", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Prepare a View for rendering with Kepler + other analysis._\n", + "\n", + "> This generates 241,486 rows (row per cellid at h3 resolution `3`)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "be6c49c3-de9b-4321-8921-d15d788dfd96", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 241486\n" + ] + } + ], + "source": [ + "# create view \"to_display\"\n", + "# - you could also write to Delta Lake \n", + "# at any point to avoid recomputing\n", + "(\n", + " df_retile\n", + " .repartition(df_retile.count(), \"tile\")\n", + " .select(mos.rst_rastertogridavg(\"tile\", F.lit(3)).alias(\"grid_avg\"))\n", + " .select(F.explode(col(\"grid_avg\")).alias(\"grid_avg\")) # <- explode-1 of 2d array\n", + " .select(F.explode(col(\"grid_avg\")).alias(\"grid_avg\")) # <- explode-2 of 2d array\n", + " .select(\n", + " F.col(\"grid_avg\").getItem(\"cellID\").alias(\"h3\"), # <- h3 cellid\n", + " F.col(\"grid_avg\").getItem(\"measure\").alias(\"measure\") # <- coral bleaching\n", + " )\n", + " .createOrReplaceTempView(\"to_display\")\n", + ")\n", + "\n", + "# optional: can work with the view in sql\n", + "# - you would probably want to write to delta lake \n", + "# to avoid recompute\n", + "# print(f\"\"\"count? {spark.table(\"to_display\").count():,}\"\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "5ac256db-8140-4176-90b0-0b09f3817eaa", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "%sql\n", + "-- optional: can work with the view in sql\n", + "-- you would probably want to write to delta lake \n", + "-- to avoid recompute\n", + "-- select * from to_display" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "23fa459c-c73e-4013-938c-c7cf138ace7a", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Render with Kepler.gl via Mosaic magic._\n", + "\n", + "> Hint: zoom out within the map viewport to see all available data rendered." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "31d5098d-c49c-4efe-8f38-8b19456363b5", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c7d7ae57-e9cf-4c3e-a8b4-368f732aeaab", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b1f68ace-3253-4a06-b110-e52463772043", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# \"to_display\" \"h3\" \"h3\" 250_000" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c371f1d0-7e8f-4426-bc35-096922f3a63c", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Databricks Lakehouse can read / write most any data format\n", + "\n", + "> Here are [built-in](https://docs.databricks.com/en/external-data/index.html) formats as well as Mosaic [readers](https://databrickslabs.github.io/mosaic/api/api.html). __Note: best performance with Delta Lake format__, ref [Databricks](https://docs.databricks.com/en/delta/index.html) and [OSS](https://docs.delta.io/latest/index.html) docs for Delta Lake. Beyond built-in formats, Databricks is a platform on which you can install a wide variety of libraries, e.g. [1](https://docs.databricks.com/en/libraries/index.html#python-environment-management) | [2](https://docs.databricks.com/en/compute/compatibility.html) | [3](https://docs.databricks.com/en/init-scripts/index.html).\n", + "\n", + "Example of [reading](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameReader.html?highlight=read#pyspark.sql.DataFrameReader) and [writing](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameWriter.html?highlight=pyspark%20sql%20dataframe%20writer#pyspark.sql.DataFrameWriter) a Spark DataFrame with Delta Lake format.\n", + "\n", + "```\n", + "# - `write.format(\"delta\")` is default in Databricks\n", + "# - can save to a specified path in the Lakehouse\n", + "# - can save as a table in the Databricks Metastore\n", + "df.write.save(\"\")\n", + "df.write.saveAsTable(\"\")\n", + "```\n", + "\n", + "Example of loading a Delta Lake Table as a Spark DataFrame.\n", + "\n", + "```\n", + "# - `read.format(\"delta\")` is default in Databricks\n", + "# - can load a specified path in the Lakehouse\n", + "# - can load a table in the Databricks Metastore\n", + "df.read.load(\"\")\n", + "df.table(\"\")\n", + "```\n", + "\n", + "More on [Unity Catalog](https://docs.databricks.com/en/data-governance/unity-catalog/index.html) in Databricks Lakehouse for Governing [Tables](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#tables) and [Volumes](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#volumes)." + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 85549841912349, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "mosaic_gdal_coral_bleaching", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/NetCDF/README.md b/notebooks/examples/python/NetCDF/README.md new file mode 100644 index 000000000..37d473bee --- /dev/null +++ b/notebooks/examples/python/NetCDF/README.md @@ -0,0 +1,5 @@ +# NetCDF Examples + +> Some examples loading NetCDF into Databricks. + +__Note: `ipynb` files can be previewed in GitHub and can also be imported into Databricks, more [here](https://docs.databricks.com/en/notebooks/notebook-export-import.html).__ diff --git a/notebooks/examples/python/NetCDF/Raster processing with netCDF + Mosaic.py b/notebooks/examples/python/NetCDF/Raster processing with netCDF + Mosaic.py deleted file mode 100644 index ba606fab5..000000000 --- a/notebooks/examples/python/NetCDF/Raster processing with netCDF + Mosaic.py +++ /dev/null @@ -1,625 +0,0 @@ -# Databricks notebook source -# MAGIC %md # Raster processing with netCDF + Mosaic -# MAGIC -# MAGIC **Prereqs:** -# MAGIC -# MAGIC * Install `netCDF4` from PyPI -# MAGIC * Install `org.locationtech.jts:jts-io:1.19.0` from Maven -# MAGIC * Install `mosaic-0.33` from [Project Mosaic (Release v0.3.3)](https://github.com/databrickslabs/mosaic/releases/tag/v0.3.3) -# MAGIC -# MAGIC **Notes:** -# MAGIC -# MAGIC * Requires [numpy](http://numpy.scipy.org) and netCDF/HDF5 C libraries. -# MAGIC * Github site: https://github.com/Unidata/netcdf4-python -# MAGIC * Online docs: http://unidata.github.io/netcdf4-python/ -# MAGIC * Based on Konrad Hinsen's old [Scientific.IO.NetCDF](http://dirac.cnrs-orleans.fr/plone/software/scientificpython/) API, with lots of added netcdf version 4 features. -# MAGIC * Developed by Jeff Whitaker at NOAA, with many contributions from users. - -# COMMAND ---------- - -# MAGIC %md -# MAGIC -# MAGIC ## Part I - Ingest netCDF in Parallel to Spark Dataframe - -# COMMAND ---------- - -import netCDF4 -import numpy as np - -# COMMAND ---------- - -# MAGIC %md -# MAGIC -# MAGIC #### Inspect netcdf file with driver code - -# COMMAND ---------- - -f = netCDF4.Dataset('/dbfs/ml/blogs/geospatial/data/netcdf/tables/SkyWise_CONUS_SurfaceAnalysis_Daily_20190220_000000-f4048.nc') -print(f) - -# COMMAND ---------- - -lat, lon, temp = f.variables['latitude'], f.variables['longitude'], f.variables['maximum_temperature'] -print(lat) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC -# MAGIC #### Get a parameter list - in this case, a list of ~20 files (replace this with thousands of files) - -# COMMAND ---------- - -file_list = [] -date_file_list = dbutils.fs.ls("/ml/blogs/geospatial/data/netcdf/tables") -for fi in date_file_list: - sub_list = dbutils.fs.ls(fi.path) - file_list.append(sub_list[0].path.replace("dbfs:", "/dbfs")) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC -# MAGIC #### Test out Single-threaded transformation - -# COMMAND ---------- - -import pandas as pd -from itertools import product - -def get_temp(filename): - current_file = filename - f = netCDF4.Dataset(current_file) - lat, lon, temp = f.variables['latitude'], f.variables['longitude'], f.variables['maximum_temperature'] - - ydim = len(lon[0,:]) - xdim = len(lat[:,0]) - - new_temp = temp[:].reshape([ydim*xdim, 1]) - prod = product(lat[:,0], lon[0,:]) - df = pd.DataFrame(prod, columns=['lat', 'lon']) - df['temp'] = new_temp - f.close() - return(df) - - -output_df = get_temp('/dbfs/ml/blogs/geospatial/data/netcdf/tables/SkyWise_CONUS_SurfaceAnalysis_Daily_20190220_000000-f4048.nc') -output_df.head() - -# COMMAND ---------- - -output_schema = spark.createDataFrame(output_df).schema -output_schema - -# COMMAND ---------- - -# MAGIC %md -# MAGIC -# MAGIC #### Write and Run Pandas UDF to coalesce File Info Into Spark Data Frame - -# COMMAND ---------- - -from pyspark.sql.functions import pandas_udf, col -from pyspark.sql.functions import PandasUDFType -from pyspark.sql.types import * - -sdf = spark.createDataFrame(sc.parallelize(file_list), StringType()) - -@pandas_udf(output_schema, functionType=PandasUDFType.GROUPED_MAP) -def p_get_temp(filename): - current_file = filename.iloc[0]['value'] - print('current_file type is', type(current_file)) - print('current_file is: ', current_file) - f = netCDF4.Dataset(current_file) - lat, lon, temp = f.variables['latitude'], f.variables['longitude'], f.variables['maximum_temperature'] - - ydim = len(lon[0,:]) - xdim = len(lat[:,0]) - - new_temp = temp[:].reshape([ydim*xdim, 1]) - prod = product(lat[:,0], lon[0,:]) - df = pd.DataFrame(prod, columns=['lat', 'lon']) - df['temp'] = new_temp - f.close() - return(df) - -output_df = sdf.groupBy(col("value")).apply(p_get_temp) - -# COMMAND ---------- - -display(output_df) - -# COMMAND ---------- - -output_df.createOrReplaceTempView("rp_weather_netcdf_delta") - -# COMMAND ---------- - -# MAGIC %md -# MAGIC -# MAGIC ## Part II - Add Geospatial Index for Large-Scale Geospatial Analytics - -# COMMAND ---------- - -# MAGIC %sh -# MAGIC -# MAGIC sudo apt-get install -y cmake - -# COMMAND ---------- - -# MAGIC %scala -# MAGIC -# MAGIC // UDFs for comparison with Mosaic -# MAGIC // using JTS + H3 directly -# MAGIC -# MAGIC import com.locationtech.jts.geom.{Coordinate, Geometry, GeometryFactory} -# MAGIC import com.uber.h3core.H3Core; -# MAGIC import com.uber.h3core.util.GeoCoord; -# MAGIC import scala.collection.JavaConversions._ -# MAGIC import scala.collection.mutable.ListBuffer -# MAGIC import scala.collection.JavaConverters._ -# MAGIC -# MAGIC object H3 extends Serializable { -# MAGIC private val _instance = H3Core.newInstance(); -# MAGIC def instance() = _instance -# MAGIC } -# MAGIC -# MAGIC def geoToH3 = udf((latitude:Double, longitude:Double, resolution:Int)=>{ -# MAGIC //h3.instance.geoToH3Address(latitude, longitude, resolution); //--> Long.toHexString(long h3) -# MAGIC H3.instance.geoToH3(latitude, longitude, resolution) -# MAGIC }) -# MAGIC -# MAGIC def polygonToH3 = udf((geometry: Geometry, resolution: Int)=>{ -# MAGIC var points: java.util.List[com.uber.h3core.util.GeoCoord] = List(); -# MAGIC var holes: java.util.List[java.util.List[com.uber.h3core.util.GeoCoord]] = List(); -# MAGIC if (geometry.getGeometryType == "Polygon"){ -# MAGIC points = ListBuffer(geometry.getCoordinates().toList.map(coord => new GeoCoord(coord.y,coord.x)) : _*); -# MAGIC } -# MAGIC asScalaBuffer(H3.instance.polyfill(points, holes ,resolution)).toList -# MAGIC }); -# MAGIC -# MAGIC def multiPolygonToH3 = udf((geometry: Geometry, resolution: Int)=>{ -# MAGIC var points: java.util.List[com.uber.h3core.util.GeoCoord] = List(); -# MAGIC var holes: java.util.List[java.util.List[com.uber.h3core.util.GeoCoord]] = List(); -# MAGIC if (geometry.getGeometryType == "MultiPolygon"){ -# MAGIC val numGeometries = geometry.getNumGeometries(); -# MAGIC if (numGeometries > 0){ -# MAGIC points = ListBuffer(geometry.getGeometryN(0).getCoordinates().toList.map(coord => new GeoCoord(coord.y,coord.x)): _*); -# MAGIC } -# MAGIC if (numGeometries >1){ -# MAGIC holes = ListBuffer((1 to (numGeometries-1)).toList.map(n => { -# MAGIC val templist: java.util.List[com.uber.h3core.util.GeoCoord] = ListBuffer(geometry.getGeometryN(n).getCoordinates().toList.map(coord => new GeoCoord(coord.y,coord.x)): _*) -# MAGIC templist -# MAGIC }): _*); -# MAGIC } -# MAGIC } -# MAGIC asScalaBuffer(H3.instance.polyfill(points, holes ,resolution)).toList -# MAGIC }); - -# COMMAND ---------- - -# MAGIC %python -# MAGIC -# MAGIC geoToH3 = udf(geo_to_h3) - -# COMMAND ---------- - -# MAGIC %scala -# MAGIC -# MAGIC import org.apache.spark.sql.functions._ -# MAGIC -# MAGIC val res = 8 -# MAGIC val weather_df = spark.sql("select temp, lat, lon from rp_weather_netcdf_delta").withColumn("h3_index", geoToH3(col("lat"), col("lon"), lit(res))) -# MAGIC weather_df.write.mode("overwrite").format("delta").saveAsTable("rp_weather_netcdf_delta_silver2") - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC -# MAGIC OPTIMIZE RP_WEATHER_NETCDF_DELTA_SILVER2 -# MAGIC ZORDER BY H3_INDEX - -# COMMAND ---------- - -# MAGIC %md -# MAGIC -# MAGIC ### For that Home Depot in Antarctica, What is the Temperature? -# MAGIC -# MAGIC - -# COMMAND ---------- - -# MAGIC %md -# MAGIC -# MAGIC As long as we set the resolution large enough, our hexagon will refer to a region where we can report the temperature for Home Depot. - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC -# MAGIC select * from RP_WEATHER_NETCDF_DELTA_SILVER2 - -# COMMAND ---------- - -# MAGIC %scala -# MAGIC -# MAGIC val res = 8 -# MAGIC val home_depot_lat_long = Seq((31, -100.80)) -# MAGIC -# MAGIC val h3_lat_range = home_depot_lat_long.toDF("lat", "lon").withColumn("hd_h3_idx", geoToH3(col("lat"), col("lon"), lit(res))) -# MAGIC -# MAGIC display(h3_lat_range) - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC -# MAGIC select * from RP_WEATHER_NETCDF_DELTA_SILVER2 -# MAGIC where h3_index = 613765671894908927 - -# COMMAND ---------- - -@pandas_udf(output_schema, functionType=PandasUDFType.GROUPED_MAP) -def p_get_raster(filename): - current_file = filename.iloc[0]['value'] - print('current_file type is', type(current_file)) - print('current_file is: ', current_file) - f = netCDF4.Dataset(current_file) - raster_data = netCDF4.raster(f) - lat, lon, temp = f.variables['latitude'], f.variables['longitude'], f.variables['maximum_temperature'] - - ydim = len(lon[0,:]) - xdim = len(lat[:,0]) - - new_temp = temp[:].reshape([ydim*xdim, 1]) - prod = product(lat[:,0], lon[0,:]) - df = pd.DataFrame(prod, columns=['lat', 'lon']) - df['raster'] = raster_data - df['temp'] = new_temp - f.close() - return(df) - -output_df = sdf.groupBy(col("value")).apply(p_get_raster) - -# COMMAND ---------- - - - -# COMMAND ---------- - - - -# COMMAND ---------- - -# MAGIC %md -# MAGIC Extract the CRS (coordinate reference system) associated with the dataset identifying where the raster is located in geographic space. - -# COMMAND ---------- - -@udf(returnType=StringType()) -def get_crs(content): - # Read the in-memory tiff file - with MemoryFile(bytes(content)) as memfile: - with memfile.open() as data: - # Use netcdf with the data object - return str(data.crs) - -df_bin.withColumn("crs", get_crs("content")).display() - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Extract masks from images -# MAGIC An image mask identifies the regions of the image where there is valid data to be processed. - -# COMMAND ---------- - -from pyspark.sql.types import ArrayType, StringType - -@udf(returnType=ArrayType(StringType())) -def get_mask_shapes(content): - geometries = [] - - # Read the in-memory tiff file - with MemoryFile(bytes(content)) as memfile: - with memfile.open() as data: - - # Read the dataset's valid data mask as a ndarray. - mask = data.dataset_mask() - - # Extract feature shapes and values from the array. - for geom, val in nc.features.shapes( - mask, transform=data.transform): - - if val > 0: # Only append shapes that have a positive maks value - - # Transform shapes from the dataset's own coordinate - # reference system to CRS84 (EPSG:4326). - geom = nc.warp.transform_geom( - data.crs, 'EPSG:4326', geom, precision=6) - - geometries.append(json.dumps(geom)) - - return geometries - - -# COMMAND ---------- - -df_masks = (df_bin - .withColumn("mask_json_shapes", get_mask_shapes("content")) - .withColumn("mask_json", explode("mask_json_shapes")) - # Convert geoJSON to WKB - .withColumn("mask_wkb", mos.st_aswkb(mos.st_geomfromgeojson("mask_json"))) - .drop("content", "mask_json_shapes", "mask_json") - .cache() # Caching while developing, TODO: Remove in prod - ) -df_masks.display() - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC df_masks "mask_wkb" "geometry" - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Tessellate with Mosaic - -# COMMAND ---------- - -df_chips = (df_masks - # Tessellate with Mosaic - .withColumn("chips", mos.grid_tessellateexplode("mask_wkb", lit(h3_resolution))) - .select("path", "modificationTime", "chips.*") - .withColumn("chip_geojson", mos.st_asgeojson("wkb")) - .cache() # TODO remove for distribution - ) -df_chips.display() - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC df_chips "wkb" "geometry" 10000 - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Pixels to chips - -# COMMAND ---------- - -import pyspark.sql.functions as F -import numpy as np -from pyspark.sql.types import ArrayType, StringType, DoubleType, StructType, StructField, LongType, IntegerType -import nc.mask - -schema = ArrayType( - StructType([ - StructField("values", ArrayType(DoubleType())), - StructField("nonzero_pixel_count", IntegerType()), - ])) - -@udf(returnType=schema) -def get_shapes_avg(content, chips): - chip_values = [] - - # Read the in-memory tiff file - with MemoryFile(bytes(content)) as memfile: - with memfile.open() as data: - - for chip in chips: - chip_geojson = json.loads(chip) # Chip in GeoJSON format - geom = nc.warp.transform_geom('EPSG:4326', data.crs, chip_geojson, precision=6) # Project chips to the image CRS - out_image, out_transform = nc.mask.mask(data, [geom], crop=True, filled=False) # Crop the image on a shape containing the chip - - val = np.average(out_image, axis=(1,2)).tolist() # Aggregated by band - nonzeroes = np.count_nonzero(out_image.mask) # Cound pixels within the chip shape - - chip_values.append({ - "values": val, # Aggregated pixel values by band - "nonzero_pixel_count": nonzeroes # Number of pixels within the mask shape - }) - - return chip_values - -df_chipped = (df_chips - .groupBy("path", "modificationTime") - .agg(F.collect_list(F.struct("chip_geojson", "index_id", "wkb", "is_core")).alias("chips")) # Collecting the list of chips - .join(df_bin, ["path", "modificationTime"]) # Join with the original data files - .withColumn("chip_values", get_shapes_avg(col("content"), F.expr("chips.chip_geojson"))) # Execute UDF to aggregate pixels for each chip - .withColumn("zipped_chip_values", F.arrays_zip("chips", "chip_values")) - .withColumn("zipped_chip_value", F.explode("zipped_chip_values")) # Explode result array in multiple rows - .select( # Select only relevant columns - col("path"), - col("modificationTime"), - F.expr("zipped_chip_value.chips.*"), - F.expr("zipped_chip_value.chip_values.*"), -# col("chip.index_id").cast("long").alias("index_id"), -# col("chip.nonzero_pixel_count").alias("nonzero_pixel_count"), - F.expr("zipped_chip_value.chip_values.values[0]").alias("value_band_0") - ) - .cache() # TODO: Remove in production - ) -df_chipped.display() - -# COMMAND ---------- - -import pyspark.sql.functions as F - -from pyspark.sql.types import ArrayType, StringType, DoubleType, StructType, StructField, LongType, IntegerType - -schema = ArrayType( - StructType([ - StructField("index_id", LongType()), - StructField("values", ArrayType(DoubleType())), - StructField("nonzero_pixel_count", IntegerType()), - ])) - -@udf(returnType=schema) -def get_shapes_avg(content, chips): - chip_values = [] - - # Read the in-memory tiff file - with MemoryFile(bytes(content)) as memfile: - with memfile.open() as data: - - for chip in chips: - chip_geojson = json.loads(chip["chip_geojson"]) # Chip in GeoJSON format - geom = nc.warp.transform_geom('EPSG:4326', data.crs, chip_geojson, precision=6) # Project chips to the image CRS - out_image, out_transform = nc.mask.mask(data, shapes, crop=True, filled=False) # Crop the image on a shape containing the chip - - val = np.average(out_image, axis=(1,2)).tolist() # Aggregated by band - nonzeroes = np.count_nonzero(out_image.mask) # Cound pixels within the chip shape - - chip_values.append({ - "index_id": chip["index_id"], # H3 index ID - "values": val, # Aggregated pixel values by band - "nonzero_pixel_count": nonzeroes # Number of pixels within the mask shape - }) - - return chip_values - -df_chipped = (df_chips - .groupBy("path", "modificationTime") - .agg(F.collect_list(F.struct("chip_geojson", "index_id", "wkb", "is_core")).alias("chips")) # Collecting the list of chips - .join(df_bin, ["path", "modificationTime"]) # Join with the original data files - .withColumn("chip_values", get_shapes_avg("content", "chips")) # Execute UDF to aggregate pixels for each chip - .withColumn("chip", F.explode("chip_values")) # Explode result array in multiple rows - .select( # Select only relevant columns - col("path"), - col("modificationTime"), - col("chip.index_id").cast("long").alias("index_id"), - col("chip.nonzero_pixel_count").alias("nonzero_pixel_count"), - F.expr("chip.values[0]").alias("value_band_0") - ) - .cache() # TODO: Remove in production - ) -df_chipped.display() - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC df_chipped "wkb" "geometry" 10000 - -# COMMAND ---------- - -# MAGIC %md -# MAGIC In the Raster TIFF file the shape is the rectangle that contains image (we can get this from bounds). We need to cut the image with the same technique, but on top of that we need find all the pixels that fall within each cell and run an aggregation for those pixels (min/max/average/median/etc.). -# MAGIC In order to do that we need to use functions like masking or rasterize to get the portion of the image that corresponds to each grid cell. -# MAGIC This will generate an aggregated information based on the grid cells. We can store that in a table and visualise it, join it with tesselated vectors etc. - -# COMMAND ---------- - -# MAGIC %md ## Join data - environmental exposure - -# COMMAND ---------- - -# Path to directory of the csv for impact assessment -EXP_FILE = "California_Fire_Perimeters.csv" -exposure_fire = spark.read.format("csv").option("header","true").load(DATA_DIR+"/"+EXP_FILE) - -# COMMAND ---------- - -display(exposure_fire) - -# COMMAND ---------- - -exposure_fire.count() - -# COMMAND ---------- - -exposure_fire_tf = ( - exposure_fire - .drop("ID") - .withColumn("latitude",col("latitude").cast(DoubleType())) - .withColumn("longitude",col("longitude").cast(DoubleType())) - .withColumn("geom", mos.st_astext(mos.st_point(col("longitude"), col("latitude")))) # First we need to creating a new Mosaic Point geometry, and afterwards translate a geometry into its Well-known Text (WKT) representation -) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We can use Mosaic functionality to identify how to best index our data based on the data inside the specific dataframe.
-# MAGIC Selecting an appropriate indexing resolution can have a considerable impact on the performance.
- -# COMMAND ---------- - -firesWithIndex = (exppsure_fire_tf - .withColumn("index_id", mos.grid_pointascellid(col("geom"), lit(h3_resolution))) -) - -# COMMAND ---------- - -display(firesWithIndex) - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC firesWithIndex "geom" "geometry" 100000 - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Aggregation - -# COMMAND ---------- - -withFirePerimeter = ( - firesWithIndex.join( - df_chipped, - on="index_id", - how="right") - .where( - # If the borough is a core chip (the chip is fully contained within the geometry), then we do not need - # to perform any intersection, because any point matching the same index will certainly be contained in - # the borough. Otherwise we need to perform an st_contains operation on the chip geometry. - col("is_core") | mos.st_contains(col("wkb"), col("geom"))) - .groupBy(["index_id", "wkb", "value_band_0", "nonzero_pixel_count", "is_core"]) - .agg(F.count("geom").alias("point_count")) - .cache() # TODO: Remove in production -# drop("count") -) - -display(withFirePerimeter) - -# COMMAND ---------- - -withFirePerimeter.count() - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC withFirePerimeter "wkb" "geometry" 100000 - -# COMMAND ---------- - -# MAGIC %md ### ```ST_Contains``` of Raster and exposure data - -# COMMAND ---------- - -withFirePerimeterExposure = ( - firesWithIndex.join( - df_chipped, - on="index_id", - how="inner") - .where( - # If the borough is a core chip (the chip is fully contained within the geometry), then we do not need - # to perform any intersection, because any point matching the same index will certainly be contained in - # the borough. Otherwise we need to perform an st_contains operation on the chip geometry. - col("is_core") | mos.st_contains(col("wkb"), col("geom"))) - .groupBy(["index_id", "wkb", "value_band_0", "nonzero_pixel_count", "is_core"]) - .agg(F.count("geom").alias("point_count")) - .cache() # TODO: Remove in production -# drop("count") -) - -display(withFirePerimeterExposure) - -# COMMAND ---------- - -display(withFirePremeterExposure) - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC withFirePerimeterExposure "wkb" "geometry" 100000 diff --git a/notebooks/examples/python/NetCDF/Xarray/distributed_slice netcdf_files.ipynb b/notebooks/examples/python/NetCDF/Xarray/distributed_slice netcdf_files.ipynb new file mode 100644 index 000000000..d11b87bdb --- /dev/null +++ b/notebooks/examples/python/NetCDF/Xarray/distributed_slice netcdf_files.ipynb @@ -0,0 +1,4839 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "fc0fc4ed-6933-4793-b939-612fd6fcd1f7", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Slice NetCDFs [Distributed]\n", + "\n", + "## Overview\n", + "\n", + "> This notebook demonstrates how to open and explore the netCDF file, and slice it using Spark + Xarray. Data is sliced by time, latitude, and longitude attributes.\n", + "\n", + "__Examples:__\n", + "\n", + "

\n", + "\n", + "* Single File: slice example with flattening\n", + "* Distributed: slice examples with / without flattening\n", + "\n", + "## Source Data\n", + "\n", + "The source data is NOAA Global Precipitation [Data](https://downloads.psl.noaa.gov/Datasets/cpc_global_precip/); contains all years since 1979, each ~60MB.\n", + "\n", + "## Prerequisites\n", + "\n", + "Python 3 or later. Python modules: we will add 'h5netcdf', 'xarray', and 'cftime'; also will update 'scipy' version (numpy, pandas, matplotlib already available)\n", + "\n", + "---\n", + "__Last Updated:__ 21 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "05d7ca66-92a2-4dfc-bb85-f721a6269466", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c3b90656-5a2f-4e31-a6b2-26dca4b4e77d", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "59b09f6b-850f-444b-af01-fc58a33c34da", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\nPython interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install h5netcdf cftime xarray scipy --quiet\n", + "%pip install databricks-mosaic --quiet" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "00873219-7fae-4987-af20-d277f218f5cc", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "GDAL enabled.\n\nGDAL 3.4.3, released 2022/04/22\n\n\n" + ] + }, + { + "output_type": "display_data", + "data": { + "application/vnd.databricks.v1+bamboolib_hint": "{\"pd.DataFrames\": [], \"version\": \"0.0.1\"}", + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "\n", + "# -- import databricks + spark functions\n", + "\n", + "from pyspark.databricks.sql import functions as dbf\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import col, udf\n", + "from pyspark.sql.types import *\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "mos.enable_gdal(spark)\n", + "\n", + "# -- other imports\n", + "import io\n", + "import json\n", + "import os\n", + "import pandas as pd\n", + "import xarray as xr" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4197a44c-3a73-41d5-8c45-6be19c9c3677", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Data\n", + "\n", + "> Adjust `nc_dir` to your preferred fuse path. _For simplicity, we are going to use DBFS, but this is all shifting with Unity Catalog [more [here](https://docs.databricks.com/en/dbfs/unity-catalog.html)]._ __Note: [DBFS](https://docs.databricks.com/en/dbfs/dbfs-root.html), [Workspace Files](https://docs.databricks.com/en/files/workspace.html), and [most recent] [Volumes](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#volumes), are FUSE mounted to the cluster nodes, looking like a local path.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b3cd8fea-ac3d-4e9f-a5aa-75d20cbae9d6", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "nc_dir = '/home/mjohns@databricks.com/geospatial/netcdf-precip'\n", + "nc_dir_fuse = f'/dbfs{nc_dir}'\n", + "os.makedirs(nc_dir_fuse, exist_ok=True)\n", + "\n", + "nc_sample_path = f'{nc_dir}/precip.2023.nc'\n", + "nc_sample_path_fuse = f'/dbfs{nc_sample_path}'\n", + "\n", + "os.environ['NC_DIR_FUSE'] = nc_dir_fuse\n", + "os.environ['NC_SAMPLE_PATH_FUSE'] = nc_sample_path_fuse\n", + "os.environ['NC_SAMPLE_FILE'] = 'precip.2023.nc'" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0e69191a-0a50-4d8c-9bd7-0484e9d54f55", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[3]: False" + ] + } + ], + "source": [ + "os.path.isfile('test.txt')" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "61ff37b0-1566-467e-bd4f-63a58f99f74a", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "def download_url(url:str, out_path:str, debug_level:int = 0):\n", + " \"\"\"\n", + " Download URL to out path\n", + " \"\"\"\n", + " import os\n", + " import requests\n", + "\n", + " if os.path.exists(out_path):\n", + " debug_level > 0 and print(f\"...skipping existing '{out_path}'\")\n", + " else:\n", + " r = requests.get(url) # create HTTP response object\n", + " with open(out_path,'wb') as f:\n", + " f.write(r.content)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "99f0ad90-0d23-4b7d-b650-d156ad37d51b", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "...skipping existing '/dbfs/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2023.nc'\n" + ] + } + ], + "source": [ + "# single year sample\n", + "year = \"2023\"\n", + "download_url(\n", + " f\"https://downloads.psl.noaa.gov/Datasets/cpc_global_precip/precip.{year}.nc\", \n", + " f\"{nc_dir_fuse}/precip.{year}.nc\", \n", + " debug_level=1\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6662e0df-96fb-416f-8e24-d416ee7443e7", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# - you can adjust the range to avoid so many files\n", + "# - reminder: range is not inclusive, so this is through 2022 as-is\n", + "for year in range(1979,2023):\n", + " download_url(f\"https://downloads.psl.noaa.gov/Datasets/cpc_global_precip/precip.{year}.nc\", f\"{nc_dir_fuse}/precip.{year}.nc\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ffe7b25a-6e61-4968-8f74-b6e97203e017", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "total 2.6G\n-rwxrwxrwx 1 root root 61M Nov 21 19:00 precip.1979.nc\n-rwxrwxrwx 1 root root 63M Nov 21 19:00 precip.1980.nc\n-rwxrwxrwx 1 root root 64M Nov 21 19:00 precip.1981.nc\n-rwxrwxrwx 1 root root 62M Nov 21 19:00 precip.1982.nc\n...\n-rwxrwxrwx 1 root root 58M Nov 21 19:02 precip.2019.nc\n-rwxrwxrwx 1 root root 57M Nov 21 19:02 precip.2020.nc\n-rwxrwxrwx 1 root root 58M Nov 21 19:02 precip.2021.nc\n-rwxrwxrwx 1 root root 64M Nov 21 19:02 precip.2022.nc\n-rwxrwxrwx 1 root root 55M Nov 21 19:00 precip.2023.nc\n" + ] + } + ], + "source": [ + "%sh\n", + "# avoid list all files\n", + "ls -lh $NC_DIR_FUSE | head -5\n", + "echo \"...\"\n", + "ls -lh $NC_DIR_FUSE | tail -5" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "9579a699-5a41-4e02-a2e0-daf50ca1be7d", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Helper Functions\n", + "\n", + "> These are used a couple of places in the examples, have UDF version of each." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c42d72ea-f36a-4f1b-a2d5-483a67f7c1d4", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "def from_360(lon):\n", + " \"\"\"\n", + " Standardize from 0:360 to -180:180 degrees.\n", + " - NetCDF does 0:360 for longitude\n", + " - See https://itecnote.com/tecnote/python-change-longitude-from-180-to-180-to-0-to-360/\n", + " \"\"\"\n", + " return ((lon - 180) % 360) - 180\n", + "\n", + "@udf(returnType=DoubleType())\n", + "def from_360_udf(lon):\n", + " return from_360(lon)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e483c91c-c0d2-4e4d-b4d7-539d0e77dc48", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "def from_180(lon):\n", + " \"\"\"\n", + " Standardize from -180:180 to 0:360 degrees.\n", + " - NetCDF does 0:360 for longitude\n", + " - See https://itecnote.com/tecnote/python-change-longitude-from-180-to-180-to-0-to-360/\n", + " \"\"\"\n", + " return lon % 360\n", + "\n", + "@udf(returnType=DoubleType())\n", + "def from_180_udf(lon):\n", + " return from_180(lon)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e4903a70-da0d-4014-bb48-f46f87e8a3f6", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Load Metadata [Spark]\n", + "\n", + "> We start with the Mosaic reader to load our NetCDFs, all 45 in this case. Loading results in various metadata about the NetCDFs." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ed8098d3-d22d-4dc5-a55a-a137b2e5d41c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 45\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "

pathmodificationTimelengthuuidx_sizey_sizebandCountmetadatasubdatasetssridtile
dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2023.nc1970-01-20T16:23:13.201+000057443346-7234899442207905050720360323Map(NC_GLOBAL#dataset_title -> CPC GLOBAL PRCP V1.0, precip#long_name -> Daily total of precipitation, time#delta_t -> 0000-00-01 00:00:00, time#long_name -> Time, lat#units -> degrees_north, NETCDF_DIM_time_VALUES -> {1078200,1078224,1078248,1078272,1078296,1078320,1078344,1078368,1078392,1078416,1078440,1078464,1078488,1078512,1078536,1078560,1078584,1078608,1078632,1078656,1078680,1078704,1078728,1078752,1078776,1078800,1078824,1078848,1078872,1078896,1078920,1078944,1078968,1078992,1079016,1079040,1079064,1079088,1079112,1079136,1079160,1079184,1079208,1079232,1079256,1079280,1079304,1079328,1079352,1079376,1079400,1079424,1079448,1079472,1079496,1079520,1079544,1079568,1079592,1079616,1079640,1079664,1079688,1079712,1079736,1079760,1079784,1079808,1079832,1079856,1079880,1079904,1079928,1079952,1079976,1080000,1080024,1080048,1080072,1080096,1080120,1080144,1080168,1080192,1080216,1080240,1080264,1080288,1080312,1080336,1080360,1080384,1080408,1080432,1080456,1080480,1080504,1080528,1080552,1080576,1080600,1080624,1080648,1080672,1080696,1080720,1080744,1080768,1080792,1080816,1080840,1080864,1080888,1080912,1080936,1080960,1080984,1081008,1081032,1081056,1081080,1081104,1081128,1081152,1081176,1081200,1081224,1081248,1081272,1081296,1081320,1081344,1081368,1081392,1081416,1081440,1081464,1081488,1081512,1081536,1081560,1081584,1081608,1081632,1081656,1081680,1081704,1081728,1081752,1081776,1081800,1081824,1081848,1081872,1081896,1081920,1081944,1081968,1081992,1082016,1082040,1082064,1082088,1082112,1082136,1082160,1082184,1082208,1082232,1082256,1082280,1082304,1082328,1082352,1082376,1082400,1082424,1082448,1082472,1082496,1082520,1082544,1082568,1082592,1082616,1082640,1082664,1082688,1082712,1082736,1082760,1082784,1082808,1082832,1082856,1082880,1082904,1082928,1082952,1082976,1083000,1083024,1083048,1083072,1083096,1083120,1083144,1083168,1083192,1083216,1083240,1083264,1083288,1083312,1083336,1083360,1083384,1083408,1083432,1083456,1083480,1083504,1083528,1083552,1083576,1083600,1083624,1083648,1083672,1083696,1083720,1083744,1083768,1083792,1083816,1083840,1083864,1083888,1083912,1083936,1083960,1083984,1084008,1084032,1084056,1084080,1084104,1084128,1084152,1084176,1084200,1084224,1084248,1084272,1084296,1084320,1084344,1084368,1084392,1084416,1084440,1084464,1084488,1084512,1084536,1084560,1084584,1084608,1084632,1084656,1084680,1084704,1084728,1084752,1084776,1084800,1084824,1084848,1084872,1084896,1084920,1084944,1084968,1084992,1085016,1085040,1085064,1085088,1085112,1085136,1085160,1085184,1085208,1085232,1085256,1085280,1085304,1085328,1085352,1085376,1085400,1085424,1085448,1085472,1085496,1085520,1085544,1085568,1085592,1085616,1085640,1085664,1085688,1085712,1085736,1085760,1085784,1085808,1085832,1085856,1085880,1085904,1085928}, time#axis -> T, precip#avg_period -> 0000-00-01 00:00:00, NC_GLOBAL#References -> https://www.psl.noaa.gov/data/gridded/data.cpc.globalprecip.html, lat#standard_name -> latitude, lat#actual_range -> {89.75,-89.75}, time#coordinate_defines -> start, NETCDF_DIM_EXTRA -> {time}, DERIVED_SUBDATASET_1_NAME -> DERIVED_SUBDATASET:LOGAMPLITUDE:/vsimem/6835514557054555330.nc, precip#cell_methods -> time: sum, lon#axis -> X, lon#standard_name -> longitude, NC_GLOBAL#title -> CPC GLOBAL PRCP V1.0 RT, precip#actual_range -> {0,776.75}, lon#long_name -> Longitude, lat#axis -> Y, NC_GLOBAL#version -> V1.0, NC_GLOBAL#Source -> ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/, lon#units -> degrees_east, precip#statistic -> Total, time#units -> hours since 1900-01-01 00:00:00, NETCDF_DIM_time_DEF -> {323,6}, lon#actual_range -> {0.25,359.75}, precip#var_desc -> Precipitation, DERIVED_SUBDATASET_1_DESC -> log10 of amplitude of input bands from /vsimem/6835514557054555330.nc, lat#coordinate_defines -> center, precip#valid_range -> {0,1000}, precip#parent_stat -> Other, precip#missing_value -> -9.96921e+36, precip#level_desc -> Surface, lon#coordinate_defines -> center, lat#long_name -> Latitude, time#standard_name -> time, precip#units -> mm, time#avg_period -> 0000-00-01 00:00:00, NC_GLOBAL#Conventions -> CF-1.0, precip#dataset -> CPC Global Precipitation, NC_GLOBAL#history -> Updated 2023-11-20 23:31:01, time#actual_range -> {1085832,1085928})Map()0List(null, iUhERg0KGgoAAAAAAAgIAAQAEAAAAAAAAAAAAAAAAAD//////////xKEbAMAAAAA//////////8AAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0hEUgINbgICIgAAAAAAAwQAAAAAAAAA//////////8= (truncated), dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2023.nc, netCDF)
dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2022.nc1970-01-20T16:23:13.349+000066268125-1649003126296939909720360365Map(NC_GLOBAL#dataset_title -> CPC GLOBAL PRCP V1.0, precip#long_name -> Daily total of precipitation, time#delta_t -> 0000-00-01 00:00:00, time#long_name -> Time, lat#units -> degrees_north, NETCDF_DIM_time_VALUES -> {1069440,1069464,1069488,1069512,1069536,1069560,1069584,1069608,1069632,1069656,1069680,1069704,1069728,1069752,1069776,1069800,1069824,1069848,1069872,1069896,1069920,1069944,1069968,1069992,1070016,1070040,1070064,1070088,1070112,1070136,1070160,1070184,1070208,1070232,1070256,1070280,1070304,1070328,1070352,1070376,1070400,1070424,1070448,1070472,1070496,1070520,1070544,1070568,1070592,1070616,1070640,1070664,1070688,1070712,1070736,1070760,1070784,1070808,1070832,1070856,1070880,1070904,1070928,1070952,1070976,1071000,1071024,1071048,1071072,1071096,1071120,1071144,1071168,1071192,1071216,1071240,1071264,1071288,1071312,1071336,1071360,1071384,1071408,1071432,1071456,1071480,1071504,1071528,1071552,1071576,1071600,1071624,1071648,1071672,1071696,1071720,1071744,1071768,1071792,1071816,1071840,1071864,1071888,1071912,1071936,1071960,1071984,1072008,1072032,1072056,1072080,1072104,1072128,1072152,1072176,1072200,1072224,1072248,1072272,1072296,1072320,1072344,1072368,1072392,1072416,1072440,1072464,1072488,1072512,1072536,1072560,1072584,1072608,1072632,1072656,1072680,1072704,1072728,1072752,1072776,1072800,1072824,1072848,1072872,1072896,1072920,1072944,1072968,1072992,1073016,1073040,1073064,1073088,1073112,1073136,1073160,1073184,1073208,1073232,1073256,1073280,1073304,1073328,1073352,1073376,1073400,1073424,1073448,1073472,1073496,1073520,1073544,1073568,1073592,1073616,1073640,1073664,1073688,1073712,1073736,1073760,1073784,1073808,1073832,1073856,1073880,1073904,1073928,1073952,1073976,1074000,1074024,1074048,1074072,1074096,1074120,1074144,1074168,1074192,1074216,1074240,1074264,1074288,1074312,1074336,1074360,1074384,1074408,1074432,1074456,1074480,1074504,1074528,1074552,1074576,1074600,1074624,1074648,1074672,1074696,1074720,1074744,1074768,1074792,1074816,1074840,1074864,1074888,1074912,1074936,1074960,1074984,1075008,1075032,1075056,1075080,1075104,1075128,1075152,1075176,1075200,1075224,1075248,1075272,1075296,1075320,1075344,1075368,1075392,1075416,1075440,1075464,1075488,1075512,1075536,1075560,1075584,1075608,1075632,1075656,1075680,1075704,1075728,1075752,1075776,1075800,1075824,1075848,1075872,1075896,1075920,1075944,1075968,1075992,1076016,1076040,1076064,1076088,1076112,1076136,1076160,1076184,1076208,1076232,1076256,1076280,1076304,1076328,1076352,1076376,1076400,1076424,1076448,1076472,1076496,1076520,1076544,1076568,1076592,1076616,1076640,1076664,1076688,1076712,1076736,1076760,1076784,1076808,1076832,1076856,1076880,1076904,1076928,1076952,1076976,1077000,1077024,1077048,1077072,1077096,1077120,1077144,1077168,1077192,1077216,1077240,1077264,1077288,1077312,1077336,1077360,1077384,1077408,1077432,1077456,1077480,1077504,1077528,1077552,1077576,1077600,1077624,1077648,1077672,1077696,1077720,1077744,1077768,1077792,1077816,1077840,1077864,1077888,1077912,1077936,1077960,1077984,1078008,1078032,1078056,1078080,1078104,1078128,1078152,1078176}, time#axis -> T, precip#avg_period -> 0000-00-01 00:00:00, NC_GLOBAL#References -> https://www.psl.noaa.gov/data/gridded/data.cpc.globalprecip.html, lat#standard_name -> latitude, lat#actual_range -> {89.75,-89.75}, time#coordinate_defines -> start, NETCDF_DIM_EXTRA -> {time}, DERIVED_SUBDATASET_1_NAME -> DERIVED_SUBDATASET:LOGAMPLITUDE:/vsimem/-7182182872443146294.nc, precip#cell_methods -> time: sum, lon#axis -> X, lon#standard_name -> longitude, NC_GLOBAL#title -> CPC GLOBAL PRCP V1.0 RT, precip#actual_range -> {0,776.75}, lon#long_name -> Longitude, lat#axis -> Y, NC_GLOBAL#version -> V1.0, NC_GLOBAL#Source -> ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/, lon#units -> degrees_east, precip#statistic -> Total, time#units -> hours since 1900-01-01 00:00:00, NETCDF_DIM_time_DEF -> {365,6}, lon#actual_range -> {0.25,359.75}, precip#var_desc -> Precipitation, DERIVED_SUBDATASET_1_DESC -> log10 of amplitude of input bands from /vsimem/-7182182872443146294.nc, lat#coordinate_defines -> center, precip#valid_range -> {0,1000}, precip#parent_stat -> Other, precip#missing_value -> -9.96921e+36, precip#level_desc -> Surface, lon#coordinate_defines -> center, lat#long_name -> Latitude, time#standard_name -> time, precip#units -> mm, time#avg_period -> 0000-00-01 00:00:00, NC_GLOBAL#Conventions -> CF-1.0, precip#dataset -> CPC Global Precipitation, NC_GLOBAL#history -> Updated 2023-01-02 23:31:13, time#actual_range -> {1078104,1078176})Map()0List(null, iUhERg0KGgoAAAAAAAgIAAQAEAAAAAAAAAAAAAAAAAD//////////90r8wMAAAAA//////////8AAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0hEUgINbgICIgAAAAAAAwQAAAAAAAAA//////////8= (truncated), dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2022.nc, netCDF)
dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2021.nc1970-01-20T16:23:13.347+000059910391-6545382777001061517720360365Map(NC_GLOBAL#dataset_title -> CPC GLOBAL PRCP V1.0, precip#long_name -> Daily total of precipitation, time#delta_t -> 0000-00-01 00:00:00, time#long_name -> Time, lat#units -> degrees_north, NETCDF_DIM_time_VALUES -> {1060680,1060704,1060728,1060752,1060776,1060800,1060824,1060848,1060872,1060896,1060920,1060944,1060968,1060992,1061016,1061040,1061064,1061088,1061112,1061136,1061160,1061184,1061208,1061232,1061256,1061280,1061304,1061328,1061352,1061376,1061400,1061424,1061448,1061472,1061496,1061520,1061544,1061568,1061592,1061616,1061640,1061664,1061688,1061712,1061736,1061760,1061784,1061808,1061832,1061856,1061880,1061904,1061928,1061952,1061976,1062000,1062024,1062048,1062072,1062096,1062120,1062144,1062168,1062192,1062216,1062240,1062264,1062288,1062312,1062336,1062360,1062384,1062408,1062432,1062456,1062480,1062504,1062528,1062552,1062576,1062600,1062624,1062648,1062672,1062696,1062720,1062744,1062768,1062792,1062816,1062840,1062864,1062888,1062912,1062936,1062960,1062984,1063008,1063032,1063056,1063080,1063104,1063128,1063152,1063176,1063200,1063224,1063248,1063272,1063296,1063320,1063344,1063368,1063392,1063416,1063440,1063464,1063488,1063512,1063536,1063560,1063584,1063608,1063632,1063656,1063680,1063704,1063728,1063752,1063776,1063800,1063824,1063848,1063872,1063896,1063920,1063944,1063968,1063992,1064016,1064040,1064064,1064088,1064112,1064136,1064160,1064184,1064208,1064232,1064256,1064280,1064304,1064328,1064352,1064376,1064400,1064424,1064448,1064472,1064496,1064520,1064544,1064568,1064592,1064616,1064640,1064664,1064688,1064712,1064736,1064760,1064784,1064808,1064832,1064856,1064880,1064904,1064928,1064952,1064976,1065000,1065024,1065048,1065072,1065096,1065120,1065144,1065168,1065192,1065216,1065240,1065264,1065288,1065312,1065336,1065360,1065384,1065408,1065432,1065456,1065480,1065504,1065528,1065552,1065576,1065600,1065624,1065648,1065672,1065696,1065720,1065744,1065768,1065792,1065816,1065840,1065864,1065888,1065912,1065936,1065960,1065984,1066008,1066032,1066056,1066080,1066104,1066128,1066152,1066176,1066200,1066224,1066248,1066272,1066296,1066320,1066344,1066368,1066392,1066416,1066440,1066464,1066488,1066512,1066536,1066560,1066584,1066608,1066632,1066656,1066680,1066704,1066728,1066752,1066776,1066800,1066824,1066848,1066872,1066896,1066920,1066944,1066968,1066992,1067016,1067040,1067064,1067088,1067112,1067136,1067160,1067184,1067208,1067232,1067256,1067280,1067304,1067328,1067352,1067376,1067400,1067424,1067448,1067472,1067496,1067520,1067544,1067568,1067592,1067616,1067640,1067664,1067688,1067712,1067736,1067760,1067784,1067808,1067832,1067856,1067880,1067904,1067928,1067952,1067976,1068000,1068024,1068048,1068072,1068096,1068120,1068144,1068168,1068192,1068216,1068240,1068264,1068288,1068312,1068336,1068360,1068384,1068408,1068432,1068456,1068480,1068504,1068528,1068552,1068576,1068600,1068624,1068648,1068672,1068696,1068720,1068744,1068768,1068792,1068816,1068840,1068864,1068888,1068912,1068936,1068960,1068984,1069008,1069032,1069056,1069080,1069104,1069128,1069152,1069176,1069200,1069224,1069248,1069272,1069296,1069320,1069344,1069368,1069392,1069416}, time#axis -> T, precip#avg_period -> 0000-00-01 00:00:00, NC_GLOBAL#References -> https://www.psl.noaa.gov/data/gridded/data.cpc.globalprecip.html, lat#standard_name -> latitude, lat#actual_range -> {89.75,-89.75}, time#coordinate_defines -> start, NETCDF_DIM_EXTRA -> {time}, DERIVED_SUBDATASET_1_NAME -> DERIVED_SUBDATASET:LOGAMPLITUDE:/vsimem/-6809554218790945837.nc, precip#cell_methods -> time: sum, lon#axis -> X, lon#standard_name -> longitude, NC_GLOBAL#title -> CPC GLOBAL PRCP V1.0 RT, precip#actual_range -> {0,776.75}, lon#long_name -> Longitude, lat#axis -> Y, NC_GLOBAL#version -> V1.0, NC_GLOBAL#Source -> ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/, lon#units -> degrees_east, precip#statistic -> Total, time#units -> hours since 1900-01-01 00:00:00, NETCDF_DIM_time_DEF -> {365,6}, lon#actual_range -> {0.25,359.75}, precip#var_desc -> Precipitation, DERIVED_SUBDATASET_1_DESC -> log10 of amplitude of input bands from /vsimem/-6809554218790945837.nc, lat#coordinate_defines -> center, precip#valid_range -> {0,1000}, precip#parent_stat -> Other, precip#missing_value -> -9.96921e+36, precip#level_desc -> Surface, lon#coordinate_defines -> center, lat#long_name -> Latitude, time#standard_name -> time, precip#units -> mm, time#avg_period -> 0000-00-01 00:00:00, NC_GLOBAL#Conventions -> CF-1.0, precip#dataset -> CPC Global Precipitation, NC_GLOBAL#history -> Updated 2022-01-02 23:30:58, time#actual_range -> {1060680,1069416})Map()0List(null, iUhERg0KGgoAAAAAAAgIAAQAEAAAAAAAAAAAAAAAAAD///////////cokgMAAAAA//////////8AAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0hEUgINbgICIgAAAAAAAwQAAAAAAAAA//////////8= (truncated), dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2021.nc, netCDF)
dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2020.nc1970-01-20T16:23:13.345+000059112656-7320144535504418501720360366Map(NC_GLOBAL#dataset_title -> CPC GLOBAL PRCP V1.0, precip#long_name -> Daily total of precipitation, time#delta_t -> 0000-00-01 00:00:00, time#long_name -> Time, lat#units -> degrees_north, NETCDF_DIM_time_VALUES -> {1051896,1051920,1051944,1051968,1051992,1052016,1052040,1052064,1052088,1052112,1052136,1052160,1052184,1052208,1052232,1052256,1052280,1052304,1052328,1052352,1052376,1052400,1052424,1052448,1052472,1052496,1052520,1052544,1052568,1052592,1052616,1052640,1052664,1052688,1052712,1052736,1052760,1052784,1052808,1052832,1052856,1052880,1052904,1052928,1052952,1052976,1053000,1053024,1053048,1053072,1053096,1053120,1053144,1053168,1053192,1053216,1053240,1053264,1053288,1053312,1053336,1053360,1053384,1053408,1053432,1053456,1053480,1053504,1053528,1053552,1053576,1053600,1053624,1053648,1053672,1053696,1053720,1053744,1053768,1053792,1053816,1053840,1053864,1053888,1053912,1053936,1053960,1053984,1054008,1054032,1054056,1054080,1054104,1054128,1054152,1054176,1054200,1054224,1054248,1054272,1054296,1054320,1054344,1054368,1054392,1054416,1054440,1054464,1054488,1054512,1054536,1054560,1054584,1054608,1054632,1054656,1054680,1054704,1054728,1054752,1054776,1054800,1054824,1054848,1054872,1054896,1054920,1054944,1054968,1054992,1055016,1055040,1055064,1055088,1055112,1055136,1055160,1055184,1055208,1055232,1055256,1055280,1055304,1055328,1055352,1055376,1055400,1055424,1055448,1055472,1055496,1055520,1055544,1055568,1055592,1055616,1055640,1055664,1055688,1055712,1055736,1055760,1055784,1055808,1055832,1055856,1055880,1055904,1055928,1055952,1055976,1056000,1056024,1056048,1056072,1056096,1056120,1056144,1056168,1056192,1056216,1056240,1056264,1056288,1056312,1056336,1056360,1056384,1056408,1056432,1056456,1056480,1056504,1056528,1056552,1056576,1056600,1056624,1056648,1056672,1056696,1056720,1056744,1056768,1056792,1056816,1056840,1056864,1056888,1056912,1056936,1056960,1056984,1057008,1057032,1057056,1057080,1057104,1057128,1057152,1057176,1057200,1057224,1057248,1057272,1057296,1057320,1057344,1057368,1057392,1057416,1057440,1057464,1057488,1057512,1057536,1057560,1057584,1057608,1057632,1057656,1057680,1057704,1057728,1057752,1057776,1057800,1057824,1057848,1057872,1057896,1057920,1057944,1057968,1057992,1058016,1058040,1058064,1058088,1058112,1058136,1058160,1058184,1058208,1058232,1058256,1058280,1058304,1058328,1058352,1058376,1058400,1058424,1058448,1058472,1058496,1058520,1058544,1058568,1058592,1058616,1058640,1058664,1058688,1058712,1058736,1058760,1058784,1058808,1058832,1058856,1058880,1058904,1058928,1058952,1058976,1059000,1059024,1059048,1059072,1059096,1059120,1059144,1059168,1059192,1059216,1059240,1059264,1059288,1059312,1059336,1059360,1059384,1059408,1059432,1059456,1059480,1059504,1059528,1059552,1059576,1059600,1059624,1059648,1059672,1059696,1059720,1059744,1059768,1059792,1059816,1059840,1059864,1059888,1059912,1059936,1059960,1059984,1060008,1060032,1060056,1060080,1060104,1060128,1060152,1060176,1060200,1060224,1060248,1060272,1060296,1060320,1060344,1060368,1060392,1060416,1060440,1060464,1060488,1060512,1060536,1060560,1060584,1060608,1060632,1060656}, time#axis -> T, precip#avg_period -> 0000-00-01 00:00:00, NC_GLOBAL#References -> https://www.psl.noaa.gov/data/gridded/data.cpc.globalprecip.html, lat#standard_name -> latitude, lat#actual_range -> {89.75,-89.75}, time#coordinate_defines -> start, NETCDF_DIM_EXTRA -> {time}, DERIVED_SUBDATASET_1_NAME -> DERIVED_SUBDATASET:LOGAMPLITUDE:/vsimem/-2945555412143531241.nc, precip#cell_methods -> time: sum, lon#axis -> X, lon#standard_name -> longitude, NC_GLOBAL#title -> CPC GLOBAL PRCP V1.0 RT, precip#actual_range -> {0,776.75}, lon#long_name -> Longitude, lat#axis -> Y, NC_GLOBAL#version -> V1.0, NC_GLOBAL#Source -> ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/, lon#units -> degrees_east, precip#statistic -> Total, time#units -> hours since 1900-01-01 00:00:00, NETCDF_DIM_time_DEF -> {366,6}, lon#actual_range -> {0.25,359.75}, precip#var_desc -> Precipitation, DERIVED_SUBDATASET_1_DESC -> log10 of amplitude of input bands from /vsimem/-2945555412143531241.nc, lat#coordinate_defines -> center, precip#valid_range -> {0,1000}, precip#parent_stat -> Other, precip#missing_value -> -9.96921e+36, precip#level_desc -> Surface, lon#coordinate_defines -> center, lat#long_name -> Latitude, time#standard_name -> time, precip#units -> mm, time#avg_period -> 0000-00-01 00:00:00, NC_GLOBAL#Conventions -> CF-1.0, precip#dataset -> CPC Global Precipitation, NC_GLOBAL#history -> Updated 2021-01-02 23:31:03, time#actual_range -> {1051896,1060656})Map()0List(null, iUhERg0KGgoAAAAAAAgIAAQAEAAAAAAAAAAAAAAAAAD//////////9D8hQMAAAAA//////////8AAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0hEUgINmQICIgAAAAAAAwQAAAAAAAAA//////////8= (truncated), dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2020.nc, netCDF)
dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2019.nc1970-01-20T16:23:13.341+000059798408-5859169813170941141720360365Map(NC_GLOBAL#dataset_title -> CPC GLOBAL PRCP V1.0, precip#long_name -> Daily total of precipitation, time#delta_t -> 0000-00-01 00:00:00, NC_GLOBAL#dataset -> CPC Global Precipitation, time#long_name -> Time, lat#units -> degrees_north, NETCDF_DIM_time_VALUES -> {1043136,1043160,1043184,1043208,1043232,1043256,1043280,1043304,1043328,1043352,1043376,1043400,1043424,1043448,1043472,1043496,1043520,1043544,1043568,1043592,1043616,1043640,1043664,1043688,1043712,1043736,1043760,1043784,1043808,1043832,1043856,1043880,1043904,1043928,1043952,1043976,1044000,1044024,1044048,1044072,1044096,1044120,1044144,1044168,1044192,1044216,1044240,1044264,1044288,1044312,1044336,1044360,1044384,1044408,1044432,1044456,1044480,1044504,1044528,1044552,1044576,1044600,1044624,1044648,1044672,1044696,1044720,1044744,1044768,1044792,1044816,1044840,1044864,1044888,1044912,1044936,1044960,1044984,1045008,1045032,1045056,1045080,1045104,1045128,1045152,1045176,1045200,1045224,1045248,1045272,1045296,1045320,1045344,1045368,1045392,1045416,1045440,1045464,1045488,1045512,1045536,1045560,1045584,1045608,1045632,1045656,1045680,1045704,1045728,1045752,1045776,1045800,1045824,1045848,1045872,1045896,1045920,1045944,1045968,1045992,1046016,1046040,1046064,1046088,1046112,1046136,1046160,1046184,1046208,1046232,1046256,1046280,1046304,1046328,1046352,1046376,1046400,1046424,1046448,1046472,1046496,1046520,1046544,1046568,1046592,1046616,1046640,1046664,1046688,1046712,1046736,1046760,1046784,1046808,1046832,1046856,1046880,1046904,1046928,1046952,1046976,1047000,1047024,1047048,1047072,1047096,1047120,1047144,1047168,1047192,1047216,1047240,1047264,1047288,1047312,1047336,1047360,1047384,1047408,1047432,1047456,1047480,1047504,1047528,1047552,1047576,1047600,1047624,1047648,1047672,1047696,1047720,1047744,1047768,1047792,1047816,1047840,1047864,1047888,1047912,1047936,1047960,1047984,1048008,1048032,1048056,1048080,1048104,1048128,1048152,1048176,1048200,1048224,1048248,1048272,1048296,1048320,1048344,1048368,1048392,1048416,1048440,1048464,1048488,1048512,1048536,1048560,1048584,1048608,1048632,1048656,1048680,1048704,1048728,1048752,1048776,1048800,1048824,1048848,1048872,1048896,1048920,1048944,1048968,1048992,1049016,1049040,1049064,1049088,1049112,1049136,1049160,1049184,1049208,1049232,1049256,1049280,1049304,1049328,1049352,1049376,1049400,1049424,1049448,1049472,1049496,1049520,1049544,1049568,1049592,1049616,1049640,1049664,1049688,1049712,1049736,1049760,1049784,1049808,1049832,1049856,1049880,1049904,1049928,1049952,1049976,1050000,1050024,1050048,1050072,1050096,1050120,1050144,1050168,1050192,1050216,1050240,1050264,1050288,1050312,1050336,1050360,1050384,1050408,1050432,1050456,1050480,1050504,1050528,1050552,1050576,1050600,1050624,1050648,1050672,1050696,1050720,1050744,1050768,1050792,1050816,1050840,1050864,1050888,1050912,1050936,1050960,1050984,1051008,1051032,1051056,1051080,1051104,1051128,1051152,1051176,1051200,1051224,1051248,1051272,1051296,1051320,1051344,1051368,1051392,1051416,1051440,1051464,1051488,1051512,1051536,1051560,1051584,1051608,1051632,1051656,1051680,1051704,1051728,1051752,1051776,1051800,1051824,1051848,1051872}, time#axis -> T, precip#avg_period -> 0000-00-01 00:00:00, NC_GLOBAL#References -> https://www.psl.noaa.gov/data/gridded/data.cpc.globalprecip.html, lat#standard_name -> latitude, lat#actual_range -> {89.75,-89.75}, time#coordinate_defines -> start, NETCDF_DIM_EXTRA -> {time}, DERIVED_SUBDATASET_1_NAME -> DERIVED_SUBDATASET:LOGAMPLITUDE:/vsimem/-8363922573784257297.nc, precip#cell_methods -> time: sum, lon#axis -> X, lon#standard_name -> longitude, NC_GLOBAL#title -> CPC GLOBAL PRCP V1.0 RT, precip#actual_range -> {0,776.75}, lon#long_name -> Longitude, lat#axis -> Y, NC_GLOBAL#version -> V1.0, NC_GLOBAL#Source -> ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/, lon#units -> degrees_east, precip#statistic -> Total, time#units -> hours since 1900-01-01 00:00:00, NETCDF_DIM_time_DEF -> {365,6}, lon#actual_range -> {0.25,359.75}, precip#var_desc -> Precipitation, DERIVED_SUBDATASET_1_DESC -> log10 of amplitude of input bands from /vsimem/-8363922573784257297.nc, lat#coordinate_defines -> center, precip#valid_range -> {0,1000}, precip#parent_stat -> Other, precip#missing_value -> -9.96921e+36, precip#level_desc -> Surface, lon#coordinate_defines -> center, lat#long_name -> Latitude, time#standard_name -> time, precip#units -> mm, time#avg_period -> 0000-00-01 00:00:00, NC_GLOBAL#Conventions -> CF-1.0, precip#dataset -> CPC Global Precip RT, NC_GLOBAL#history -> Updated 2020-01-02 23:31:10, time#actual_range -> {1043136,1051872})Map()0List(null, iUhERg0KGgoAAAAAAAgIAAQAEAAAAAAAAAAAAAAAAAD//////////4hzkAMAAAAA//////////8AAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0hEUgINoAICIgAAAAAAAwQAAAAAAAAA//////////8= (truncated), dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2019.nc, netCDF)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2023.nc", + "1970-01-20T16:23:13.201+0000", + 57443346, + -7234899442207905050, + 720, + 360, + 323, + { + "DERIVED_SUBDATASET_1_DESC": "log10 of amplitude of input bands from /vsimem/6835514557054555330.nc", + "DERIVED_SUBDATASET_1_NAME": "DERIVED_SUBDATASET:LOGAMPLITUDE:/vsimem/6835514557054555330.nc", + "NC_GLOBAL#Conventions": "CF-1.0", + "NC_GLOBAL#References": "https://www.psl.noaa.gov/data/gridded/data.cpc.globalprecip.html", + "NC_GLOBAL#Source": "ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/", + "NC_GLOBAL#dataset_title": "CPC GLOBAL PRCP V1.0", + "NC_GLOBAL#history": "Updated 2023-11-20 23:31:01", + "NC_GLOBAL#title": "CPC GLOBAL PRCP V1.0 RT", + "NC_GLOBAL#version": "V1.0", + "NETCDF_DIM_EXTRA": "{time}", + "NETCDF_DIM_time_DEF": "{323,6}", + "NETCDF_DIM_time_VALUES": "{1078200,1078224,1078248,1078272,1078296,1078320,1078344,1078368,1078392,1078416,1078440,1078464,1078488,1078512,1078536,1078560,1078584,1078608,1078632,1078656,1078680,1078704,1078728,1078752,1078776,1078800,1078824,1078848,1078872,1078896,1078920,1078944,1078968,1078992,1079016,1079040,1079064,1079088,1079112,1079136,1079160,1079184,1079208,1079232,1079256,1079280,1079304,1079328,1079352,1079376,1079400,1079424,1079448,1079472,1079496,1079520,1079544,1079568,1079592,1079616,1079640,1079664,1079688,1079712,1079736,1079760,1079784,1079808,1079832,1079856,1079880,1079904,1079928,1079952,1079976,1080000,1080024,1080048,1080072,1080096,1080120,1080144,1080168,1080192,1080216,1080240,1080264,1080288,1080312,1080336,1080360,1080384,1080408,1080432,1080456,1080480,1080504,1080528,1080552,1080576,1080600,1080624,1080648,1080672,1080696,1080720,1080744,1080768,1080792,1080816,1080840,1080864,1080888,1080912,1080936,1080960,1080984,1081008,1081032,1081056,1081080,1081104,1081128,1081152,1081176,1081200,1081224,1081248,1081272,1081296,1081320,1081344,1081368,1081392,1081416,1081440,1081464,1081488,1081512,1081536,1081560,1081584,1081608,1081632,1081656,1081680,1081704,1081728,1081752,1081776,1081800,1081824,1081848,1081872,1081896,1081920,1081944,1081968,1081992,1082016,1082040,1082064,1082088,1082112,1082136,1082160,1082184,1082208,1082232,1082256,1082280,1082304,1082328,1082352,1082376,1082400,1082424,1082448,1082472,1082496,1082520,1082544,1082568,1082592,1082616,1082640,1082664,1082688,1082712,1082736,1082760,1082784,1082808,1082832,1082856,1082880,1082904,1082928,1082952,1082976,1083000,1083024,1083048,1083072,1083096,1083120,1083144,1083168,1083192,1083216,1083240,1083264,1083288,1083312,1083336,1083360,1083384,1083408,1083432,1083456,1083480,1083504,1083528,1083552,1083576,1083600,1083624,1083648,1083672,1083696,1083720,1083744,1083768,1083792,1083816,1083840,1083864,1083888,1083912,1083936,1083960,1083984,1084008,1084032,1084056,1084080,1084104,1084128,1084152,1084176,1084200,1084224,1084248,1084272,1084296,1084320,1084344,1084368,1084392,1084416,1084440,1084464,1084488,1084512,1084536,1084560,1084584,1084608,1084632,1084656,1084680,1084704,1084728,1084752,1084776,1084800,1084824,1084848,1084872,1084896,1084920,1084944,1084968,1084992,1085016,1085040,1085064,1085088,1085112,1085136,1085160,1085184,1085208,1085232,1085256,1085280,1085304,1085328,1085352,1085376,1085400,1085424,1085448,1085472,1085496,1085520,1085544,1085568,1085592,1085616,1085640,1085664,1085688,1085712,1085736,1085760,1085784,1085808,1085832,1085856,1085880,1085904,1085928}", + "lat#actual_range": "{89.75,-89.75}", + "lat#axis": "Y", + "lat#coordinate_defines": "center", + "lat#long_name": "Latitude", + "lat#standard_name": "latitude", + "lat#units": "degrees_north", + "lon#actual_range": "{0.25,359.75}", + "lon#axis": "X", + "lon#coordinate_defines": "center", + "lon#long_name": "Longitude", + "lon#standard_name": "longitude", + "lon#units": "degrees_east", + "precip#actual_range": "{0,776.75}", + "precip#avg_period": "0000-00-01 00:00:00", + "precip#cell_methods": "time: sum", + "precip#dataset": "CPC Global Precipitation", + "precip#level_desc": "Surface", + "precip#long_name": "Daily total of precipitation", + "precip#missing_value": "-9.96921e+36", + "precip#parent_stat": "Other", + "precip#statistic": "Total", + "precip#units": "mm", + "precip#valid_range": "{0,1000}", + "precip#var_desc": "Precipitation", + "time#actual_range": "{1085832,1085928}", + "time#avg_period": "0000-00-01 00:00:00", + "time#axis": "T", + "time#coordinate_defines": "start", + "time#delta_t": "0000-00-01 00:00:00", + "time#long_name": "Time", + "time#standard_name": "time", + "time#units": "hours since 1900-01-01 00:00:00" + }, + {}, + 0, + [ + null, + "iUhERg0KGgoAAAAAAAgIAAQAEAAAAAAAAAAAAAAAAAD//////////xKEbAMAAAAA//////////8AAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0hEUgINbgICIgAAAAAAAwQAAAAAAAAA//////////8= (truncated)", + "dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2023.nc", + "netCDF" + ] + ], + [ + "dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2022.nc", + "1970-01-20T16:23:13.349+0000", + 66268125, + -1649003126296939909, + 720, + 360, + 365, + { + "DERIVED_SUBDATASET_1_DESC": "log10 of amplitude of input bands from /vsimem/-7182182872443146294.nc", + "DERIVED_SUBDATASET_1_NAME": "DERIVED_SUBDATASET:LOGAMPLITUDE:/vsimem/-7182182872443146294.nc", + "NC_GLOBAL#Conventions": "CF-1.0", + "NC_GLOBAL#References": "https://www.psl.noaa.gov/data/gridded/data.cpc.globalprecip.html", + "NC_GLOBAL#Source": "ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/", + "NC_GLOBAL#dataset_title": "CPC GLOBAL PRCP V1.0", + "NC_GLOBAL#history": "Updated 2023-01-02 23:31:13", + "NC_GLOBAL#title": "CPC GLOBAL PRCP V1.0 RT", + "NC_GLOBAL#version": "V1.0", + "NETCDF_DIM_EXTRA": "{time}", + "NETCDF_DIM_time_DEF": "{365,6}", + "NETCDF_DIM_time_VALUES": "{1069440,1069464,1069488,1069512,1069536,1069560,1069584,1069608,1069632,1069656,1069680,1069704,1069728,1069752,1069776,1069800,1069824,1069848,1069872,1069896,1069920,1069944,1069968,1069992,1070016,1070040,1070064,1070088,1070112,1070136,1070160,1070184,1070208,1070232,1070256,1070280,1070304,1070328,1070352,1070376,1070400,1070424,1070448,1070472,1070496,1070520,1070544,1070568,1070592,1070616,1070640,1070664,1070688,1070712,1070736,1070760,1070784,1070808,1070832,1070856,1070880,1070904,1070928,1070952,1070976,1071000,1071024,1071048,1071072,1071096,1071120,1071144,1071168,1071192,1071216,1071240,1071264,1071288,1071312,1071336,1071360,1071384,1071408,1071432,1071456,1071480,1071504,1071528,1071552,1071576,1071600,1071624,1071648,1071672,1071696,1071720,1071744,1071768,1071792,1071816,1071840,1071864,1071888,1071912,1071936,1071960,1071984,1072008,1072032,1072056,1072080,1072104,1072128,1072152,1072176,1072200,1072224,1072248,1072272,1072296,1072320,1072344,1072368,1072392,1072416,1072440,1072464,1072488,1072512,1072536,1072560,1072584,1072608,1072632,1072656,1072680,1072704,1072728,1072752,1072776,1072800,1072824,1072848,1072872,1072896,1072920,1072944,1072968,1072992,1073016,1073040,1073064,1073088,1073112,1073136,1073160,1073184,1073208,1073232,1073256,1073280,1073304,1073328,1073352,1073376,1073400,1073424,1073448,1073472,1073496,1073520,1073544,1073568,1073592,1073616,1073640,1073664,1073688,1073712,1073736,1073760,1073784,1073808,1073832,1073856,1073880,1073904,1073928,1073952,1073976,1074000,1074024,1074048,1074072,1074096,1074120,1074144,1074168,1074192,1074216,1074240,1074264,1074288,1074312,1074336,1074360,1074384,1074408,1074432,1074456,1074480,1074504,1074528,1074552,1074576,1074600,1074624,1074648,1074672,1074696,1074720,1074744,1074768,1074792,1074816,1074840,1074864,1074888,1074912,1074936,1074960,1074984,1075008,1075032,1075056,1075080,1075104,1075128,1075152,1075176,1075200,1075224,1075248,1075272,1075296,1075320,1075344,1075368,1075392,1075416,1075440,1075464,1075488,1075512,1075536,1075560,1075584,1075608,1075632,1075656,1075680,1075704,1075728,1075752,1075776,1075800,1075824,1075848,1075872,1075896,1075920,1075944,1075968,1075992,1076016,1076040,1076064,1076088,1076112,1076136,1076160,1076184,1076208,1076232,1076256,1076280,1076304,1076328,1076352,1076376,1076400,1076424,1076448,1076472,1076496,1076520,1076544,1076568,1076592,1076616,1076640,1076664,1076688,1076712,1076736,1076760,1076784,1076808,1076832,1076856,1076880,1076904,1076928,1076952,1076976,1077000,1077024,1077048,1077072,1077096,1077120,1077144,1077168,1077192,1077216,1077240,1077264,1077288,1077312,1077336,1077360,1077384,1077408,1077432,1077456,1077480,1077504,1077528,1077552,1077576,1077600,1077624,1077648,1077672,1077696,1077720,1077744,1077768,1077792,1077816,1077840,1077864,1077888,1077912,1077936,1077960,1077984,1078008,1078032,1078056,1078080,1078104,1078128,1078152,1078176}", + "lat#actual_range": "{89.75,-89.75}", + "lat#axis": "Y", + "lat#coordinate_defines": "center", + "lat#long_name": "Latitude", + "lat#standard_name": "latitude", + "lat#units": "degrees_north", + "lon#actual_range": "{0.25,359.75}", + "lon#axis": "X", + "lon#coordinate_defines": "center", + "lon#long_name": "Longitude", + "lon#standard_name": "longitude", + "lon#units": "degrees_east", + "precip#actual_range": "{0,776.75}", + "precip#avg_period": "0000-00-01 00:00:00", + "precip#cell_methods": "time: sum", + "precip#dataset": "CPC Global Precipitation", + "precip#level_desc": "Surface", + "precip#long_name": "Daily total of precipitation", + "precip#missing_value": "-9.96921e+36", + "precip#parent_stat": "Other", + "precip#statistic": "Total", + "precip#units": "mm", + "precip#valid_range": "{0,1000}", + "precip#var_desc": "Precipitation", + "time#actual_range": "{1078104,1078176}", + "time#avg_period": "0000-00-01 00:00:00", + "time#axis": "T", + "time#coordinate_defines": "start", + "time#delta_t": "0000-00-01 00:00:00", + "time#long_name": "Time", + "time#standard_name": "time", + "time#units": "hours since 1900-01-01 00:00:00" + }, + {}, + 0, + [ + null, + "iUhERg0KGgoAAAAAAAgIAAQAEAAAAAAAAAAAAAAAAAD//////////90r8wMAAAAA//////////8AAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0hEUgINbgICIgAAAAAAAwQAAAAAAAAA//////////8= (truncated)", + "dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2022.nc", + "netCDF" + ] + ], + [ + "dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2021.nc", + "1970-01-20T16:23:13.347+0000", + 59910391, + -6545382777001061517, + 720, + 360, + 365, + { + "DERIVED_SUBDATASET_1_DESC": "log10 of amplitude of input bands from /vsimem/-6809554218790945837.nc", + "DERIVED_SUBDATASET_1_NAME": "DERIVED_SUBDATASET:LOGAMPLITUDE:/vsimem/-6809554218790945837.nc", + "NC_GLOBAL#Conventions": "CF-1.0", + "NC_GLOBAL#References": "https://www.psl.noaa.gov/data/gridded/data.cpc.globalprecip.html", + "NC_GLOBAL#Source": "ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/", + "NC_GLOBAL#dataset_title": "CPC GLOBAL PRCP V1.0", + "NC_GLOBAL#history": "Updated 2022-01-02 23:30:58", + "NC_GLOBAL#title": "CPC GLOBAL PRCP V1.0 RT", + "NC_GLOBAL#version": "V1.0", + "NETCDF_DIM_EXTRA": "{time}", + "NETCDF_DIM_time_DEF": "{365,6}", + "NETCDF_DIM_time_VALUES": "{1060680,1060704,1060728,1060752,1060776,1060800,1060824,1060848,1060872,1060896,1060920,1060944,1060968,1060992,1061016,1061040,1061064,1061088,1061112,1061136,1061160,1061184,1061208,1061232,1061256,1061280,1061304,1061328,1061352,1061376,1061400,1061424,1061448,1061472,1061496,1061520,1061544,1061568,1061592,1061616,1061640,1061664,1061688,1061712,1061736,1061760,1061784,1061808,1061832,1061856,1061880,1061904,1061928,1061952,1061976,1062000,1062024,1062048,1062072,1062096,1062120,1062144,1062168,1062192,1062216,1062240,1062264,1062288,1062312,1062336,1062360,1062384,1062408,1062432,1062456,1062480,1062504,1062528,1062552,1062576,1062600,1062624,1062648,1062672,1062696,1062720,1062744,1062768,1062792,1062816,1062840,1062864,1062888,1062912,1062936,1062960,1062984,1063008,1063032,1063056,1063080,1063104,1063128,1063152,1063176,1063200,1063224,1063248,1063272,1063296,1063320,1063344,1063368,1063392,1063416,1063440,1063464,1063488,1063512,1063536,1063560,1063584,1063608,1063632,1063656,1063680,1063704,1063728,1063752,1063776,1063800,1063824,1063848,1063872,1063896,1063920,1063944,1063968,1063992,1064016,1064040,1064064,1064088,1064112,1064136,1064160,1064184,1064208,1064232,1064256,1064280,1064304,1064328,1064352,1064376,1064400,1064424,1064448,1064472,1064496,1064520,1064544,1064568,1064592,1064616,1064640,1064664,1064688,1064712,1064736,1064760,1064784,1064808,1064832,1064856,1064880,1064904,1064928,1064952,1064976,1065000,1065024,1065048,1065072,1065096,1065120,1065144,1065168,1065192,1065216,1065240,1065264,1065288,1065312,1065336,1065360,1065384,1065408,1065432,1065456,1065480,1065504,1065528,1065552,1065576,1065600,1065624,1065648,1065672,1065696,1065720,1065744,1065768,1065792,1065816,1065840,1065864,1065888,1065912,1065936,1065960,1065984,1066008,1066032,1066056,1066080,1066104,1066128,1066152,1066176,1066200,1066224,1066248,1066272,1066296,1066320,1066344,1066368,1066392,1066416,1066440,1066464,1066488,1066512,1066536,1066560,1066584,1066608,1066632,1066656,1066680,1066704,1066728,1066752,1066776,1066800,1066824,1066848,1066872,1066896,1066920,1066944,1066968,1066992,1067016,1067040,1067064,1067088,1067112,1067136,1067160,1067184,1067208,1067232,1067256,1067280,1067304,1067328,1067352,1067376,1067400,1067424,1067448,1067472,1067496,1067520,1067544,1067568,1067592,1067616,1067640,1067664,1067688,1067712,1067736,1067760,1067784,1067808,1067832,1067856,1067880,1067904,1067928,1067952,1067976,1068000,1068024,1068048,1068072,1068096,1068120,1068144,1068168,1068192,1068216,1068240,1068264,1068288,1068312,1068336,1068360,1068384,1068408,1068432,1068456,1068480,1068504,1068528,1068552,1068576,1068600,1068624,1068648,1068672,1068696,1068720,1068744,1068768,1068792,1068816,1068840,1068864,1068888,1068912,1068936,1068960,1068984,1069008,1069032,1069056,1069080,1069104,1069128,1069152,1069176,1069200,1069224,1069248,1069272,1069296,1069320,1069344,1069368,1069392,1069416}", + "lat#actual_range": "{89.75,-89.75}", + "lat#axis": "Y", + "lat#coordinate_defines": "center", + "lat#long_name": "Latitude", + "lat#standard_name": "latitude", + "lat#units": "degrees_north", + "lon#actual_range": "{0.25,359.75}", + "lon#axis": "X", + "lon#coordinate_defines": "center", + "lon#long_name": "Longitude", + "lon#standard_name": "longitude", + "lon#units": "degrees_east", + "precip#actual_range": "{0,776.75}", + "precip#avg_period": "0000-00-01 00:00:00", + "precip#cell_methods": "time: sum", + "precip#dataset": "CPC Global Precipitation", + "precip#level_desc": "Surface", + "precip#long_name": "Daily total of precipitation", + "precip#missing_value": "-9.96921e+36", + "precip#parent_stat": "Other", + "precip#statistic": "Total", + "precip#units": "mm", + "precip#valid_range": "{0,1000}", + "precip#var_desc": "Precipitation", + "time#actual_range": "{1060680,1069416}", + "time#avg_period": "0000-00-01 00:00:00", + "time#axis": "T", + "time#coordinate_defines": "start", + "time#delta_t": "0000-00-01 00:00:00", + "time#long_name": "Time", + "time#standard_name": "time", + "time#units": "hours since 1900-01-01 00:00:00" + }, + {}, + 0, + [ + null, + "iUhERg0KGgoAAAAAAAgIAAQAEAAAAAAAAAAAAAAAAAD///////////cokgMAAAAA//////////8AAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0hEUgINbgICIgAAAAAAAwQAAAAAAAAA//////////8= (truncated)", + "dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2021.nc", + "netCDF" + ] + ], + [ + "dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2020.nc", + "1970-01-20T16:23:13.345+0000", + 59112656, + -7320144535504418501, + 720, + 360, + 366, + { + "DERIVED_SUBDATASET_1_DESC": "log10 of amplitude of input bands from /vsimem/-2945555412143531241.nc", + "DERIVED_SUBDATASET_1_NAME": "DERIVED_SUBDATASET:LOGAMPLITUDE:/vsimem/-2945555412143531241.nc", + "NC_GLOBAL#Conventions": "CF-1.0", + "NC_GLOBAL#References": "https://www.psl.noaa.gov/data/gridded/data.cpc.globalprecip.html", + "NC_GLOBAL#Source": "ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/", + "NC_GLOBAL#dataset_title": "CPC GLOBAL PRCP V1.0", + "NC_GLOBAL#history": "Updated 2021-01-02 23:31:03", + "NC_GLOBAL#title": "CPC GLOBAL PRCP V1.0 RT", + "NC_GLOBAL#version": "V1.0", + "NETCDF_DIM_EXTRA": "{time}", + "NETCDF_DIM_time_DEF": "{366,6}", + "NETCDF_DIM_time_VALUES": "{1051896,1051920,1051944,1051968,1051992,1052016,1052040,1052064,1052088,1052112,1052136,1052160,1052184,1052208,1052232,1052256,1052280,1052304,1052328,1052352,1052376,1052400,1052424,1052448,1052472,1052496,1052520,1052544,1052568,1052592,1052616,1052640,1052664,1052688,1052712,1052736,1052760,1052784,1052808,1052832,1052856,1052880,1052904,1052928,1052952,1052976,1053000,1053024,1053048,1053072,1053096,1053120,1053144,1053168,1053192,1053216,1053240,1053264,1053288,1053312,1053336,1053360,1053384,1053408,1053432,1053456,1053480,1053504,1053528,1053552,1053576,1053600,1053624,1053648,1053672,1053696,1053720,1053744,1053768,1053792,1053816,1053840,1053864,1053888,1053912,1053936,1053960,1053984,1054008,1054032,1054056,1054080,1054104,1054128,1054152,1054176,1054200,1054224,1054248,1054272,1054296,1054320,1054344,1054368,1054392,1054416,1054440,1054464,1054488,1054512,1054536,1054560,1054584,1054608,1054632,1054656,1054680,1054704,1054728,1054752,1054776,1054800,1054824,1054848,1054872,1054896,1054920,1054944,1054968,1054992,1055016,1055040,1055064,1055088,1055112,1055136,1055160,1055184,1055208,1055232,1055256,1055280,1055304,1055328,1055352,1055376,1055400,1055424,1055448,1055472,1055496,1055520,1055544,1055568,1055592,1055616,1055640,1055664,1055688,1055712,1055736,1055760,1055784,1055808,1055832,1055856,1055880,1055904,1055928,1055952,1055976,1056000,1056024,1056048,1056072,1056096,1056120,1056144,1056168,1056192,1056216,1056240,1056264,1056288,1056312,1056336,1056360,1056384,1056408,1056432,1056456,1056480,1056504,1056528,1056552,1056576,1056600,1056624,1056648,1056672,1056696,1056720,1056744,1056768,1056792,1056816,1056840,1056864,1056888,1056912,1056936,1056960,1056984,1057008,1057032,1057056,1057080,1057104,1057128,1057152,1057176,1057200,1057224,1057248,1057272,1057296,1057320,1057344,1057368,1057392,1057416,1057440,1057464,1057488,1057512,1057536,1057560,1057584,1057608,1057632,1057656,1057680,1057704,1057728,1057752,1057776,1057800,1057824,1057848,1057872,1057896,1057920,1057944,1057968,1057992,1058016,1058040,1058064,1058088,1058112,1058136,1058160,1058184,1058208,1058232,1058256,1058280,1058304,1058328,1058352,1058376,1058400,1058424,1058448,1058472,1058496,1058520,1058544,1058568,1058592,1058616,1058640,1058664,1058688,1058712,1058736,1058760,1058784,1058808,1058832,1058856,1058880,1058904,1058928,1058952,1058976,1059000,1059024,1059048,1059072,1059096,1059120,1059144,1059168,1059192,1059216,1059240,1059264,1059288,1059312,1059336,1059360,1059384,1059408,1059432,1059456,1059480,1059504,1059528,1059552,1059576,1059600,1059624,1059648,1059672,1059696,1059720,1059744,1059768,1059792,1059816,1059840,1059864,1059888,1059912,1059936,1059960,1059984,1060008,1060032,1060056,1060080,1060104,1060128,1060152,1060176,1060200,1060224,1060248,1060272,1060296,1060320,1060344,1060368,1060392,1060416,1060440,1060464,1060488,1060512,1060536,1060560,1060584,1060608,1060632,1060656}", + "lat#actual_range": "{89.75,-89.75}", + "lat#axis": "Y", + "lat#coordinate_defines": "center", + "lat#long_name": "Latitude", + "lat#standard_name": "latitude", + "lat#units": "degrees_north", + "lon#actual_range": "{0.25,359.75}", + "lon#axis": "X", + "lon#coordinate_defines": "center", + "lon#long_name": "Longitude", + "lon#standard_name": "longitude", + "lon#units": "degrees_east", + "precip#actual_range": "{0,776.75}", + "precip#avg_period": "0000-00-01 00:00:00", + "precip#cell_methods": "time: sum", + "precip#dataset": "CPC Global Precipitation", + "precip#level_desc": "Surface", + "precip#long_name": "Daily total of precipitation", + "precip#missing_value": "-9.96921e+36", + "precip#parent_stat": "Other", + "precip#statistic": "Total", + "precip#units": "mm", + "precip#valid_range": "{0,1000}", + "precip#var_desc": "Precipitation", + "time#actual_range": "{1051896,1060656}", + "time#avg_period": "0000-00-01 00:00:00", + "time#axis": "T", + "time#coordinate_defines": "start", + "time#delta_t": "0000-00-01 00:00:00", + "time#long_name": "Time", + "time#standard_name": "time", + "time#units": "hours since 1900-01-01 00:00:00" + }, + {}, + 0, + [ + null, + "iUhERg0KGgoAAAAAAAgIAAQAEAAAAAAAAAAAAAAAAAD//////////9D8hQMAAAAA//////////8AAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0hEUgINmQICIgAAAAAAAwQAAAAAAAAA//////////8= (truncated)", + "dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2020.nc", + "netCDF" + ] + ], + [ + "dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2019.nc", + "1970-01-20T16:23:13.341+0000", + 59798408, + -5859169813170941141, + 720, + 360, + 365, + { + "DERIVED_SUBDATASET_1_DESC": "log10 of amplitude of input bands from /vsimem/-8363922573784257297.nc", + "DERIVED_SUBDATASET_1_NAME": "DERIVED_SUBDATASET:LOGAMPLITUDE:/vsimem/-8363922573784257297.nc", + "NC_GLOBAL#Conventions": "CF-1.0", + "NC_GLOBAL#References": "https://www.psl.noaa.gov/data/gridded/data.cpc.globalprecip.html", + "NC_GLOBAL#Source": "ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/", + "NC_GLOBAL#dataset": "CPC Global Precipitation", + "NC_GLOBAL#dataset_title": "CPC GLOBAL PRCP V1.0", + "NC_GLOBAL#history": "Updated 2020-01-02 23:31:10", + "NC_GLOBAL#title": "CPC GLOBAL PRCP V1.0 RT", + "NC_GLOBAL#version": "V1.0", + "NETCDF_DIM_EXTRA": "{time}", + "NETCDF_DIM_time_DEF": "{365,6}", + "NETCDF_DIM_time_VALUES": "{1043136,1043160,1043184,1043208,1043232,1043256,1043280,1043304,1043328,1043352,1043376,1043400,1043424,1043448,1043472,1043496,1043520,1043544,1043568,1043592,1043616,1043640,1043664,1043688,1043712,1043736,1043760,1043784,1043808,1043832,1043856,1043880,1043904,1043928,1043952,1043976,1044000,1044024,1044048,1044072,1044096,1044120,1044144,1044168,1044192,1044216,1044240,1044264,1044288,1044312,1044336,1044360,1044384,1044408,1044432,1044456,1044480,1044504,1044528,1044552,1044576,1044600,1044624,1044648,1044672,1044696,1044720,1044744,1044768,1044792,1044816,1044840,1044864,1044888,1044912,1044936,1044960,1044984,1045008,1045032,1045056,1045080,1045104,1045128,1045152,1045176,1045200,1045224,1045248,1045272,1045296,1045320,1045344,1045368,1045392,1045416,1045440,1045464,1045488,1045512,1045536,1045560,1045584,1045608,1045632,1045656,1045680,1045704,1045728,1045752,1045776,1045800,1045824,1045848,1045872,1045896,1045920,1045944,1045968,1045992,1046016,1046040,1046064,1046088,1046112,1046136,1046160,1046184,1046208,1046232,1046256,1046280,1046304,1046328,1046352,1046376,1046400,1046424,1046448,1046472,1046496,1046520,1046544,1046568,1046592,1046616,1046640,1046664,1046688,1046712,1046736,1046760,1046784,1046808,1046832,1046856,1046880,1046904,1046928,1046952,1046976,1047000,1047024,1047048,1047072,1047096,1047120,1047144,1047168,1047192,1047216,1047240,1047264,1047288,1047312,1047336,1047360,1047384,1047408,1047432,1047456,1047480,1047504,1047528,1047552,1047576,1047600,1047624,1047648,1047672,1047696,1047720,1047744,1047768,1047792,1047816,1047840,1047864,1047888,1047912,1047936,1047960,1047984,1048008,1048032,1048056,1048080,1048104,1048128,1048152,1048176,1048200,1048224,1048248,1048272,1048296,1048320,1048344,1048368,1048392,1048416,1048440,1048464,1048488,1048512,1048536,1048560,1048584,1048608,1048632,1048656,1048680,1048704,1048728,1048752,1048776,1048800,1048824,1048848,1048872,1048896,1048920,1048944,1048968,1048992,1049016,1049040,1049064,1049088,1049112,1049136,1049160,1049184,1049208,1049232,1049256,1049280,1049304,1049328,1049352,1049376,1049400,1049424,1049448,1049472,1049496,1049520,1049544,1049568,1049592,1049616,1049640,1049664,1049688,1049712,1049736,1049760,1049784,1049808,1049832,1049856,1049880,1049904,1049928,1049952,1049976,1050000,1050024,1050048,1050072,1050096,1050120,1050144,1050168,1050192,1050216,1050240,1050264,1050288,1050312,1050336,1050360,1050384,1050408,1050432,1050456,1050480,1050504,1050528,1050552,1050576,1050600,1050624,1050648,1050672,1050696,1050720,1050744,1050768,1050792,1050816,1050840,1050864,1050888,1050912,1050936,1050960,1050984,1051008,1051032,1051056,1051080,1051104,1051128,1051152,1051176,1051200,1051224,1051248,1051272,1051296,1051320,1051344,1051368,1051392,1051416,1051440,1051464,1051488,1051512,1051536,1051560,1051584,1051608,1051632,1051656,1051680,1051704,1051728,1051752,1051776,1051800,1051824,1051848,1051872}", + "lat#actual_range": "{89.75,-89.75}", + "lat#axis": "Y", + "lat#coordinate_defines": "center", + "lat#long_name": "Latitude", + "lat#standard_name": "latitude", + "lat#units": "degrees_north", + "lon#actual_range": "{0.25,359.75}", + "lon#axis": "X", + "lon#coordinate_defines": "center", + "lon#long_name": "Longitude", + "lon#standard_name": "longitude", + "lon#units": "degrees_east", + "precip#actual_range": "{0,776.75}", + "precip#avg_period": "0000-00-01 00:00:00", + "precip#cell_methods": "time: sum", + "precip#dataset": "CPC Global Precip RT", + "precip#level_desc": "Surface", + "precip#long_name": "Daily total of precipitation", + "precip#missing_value": "-9.96921e+36", + "precip#parent_stat": "Other", + "precip#statistic": "Total", + "precip#units": "mm", + "precip#valid_range": "{0,1000}", + "precip#var_desc": "Precipitation", + "time#actual_range": "{1043136,1051872}", + "time#avg_period": "0000-00-01 00:00:00", + "time#axis": "T", + "time#coordinate_defines": "start", + "time#delta_t": "0000-00-01 00:00:00", + "time#long_name": "Time", + "time#standard_name": "time", + "time#units": "hours since 1900-01-01 00:00:00" + }, + {}, + 0, + [ + null, + "iUhERg0KGgoAAAAAAAgIAAQAEAAAAAAAAAAAAAAAAAD//////////4hzkAMAAAAA//////////8AAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0hEUgINoAICIgAAAAAAAwQAAAAAAAAA//////////8= (truncated)", + "dbfs:/home/mjohns@databricks.com/geospatial/netcdf-precip/precip.2019.nc", + "netCDF" + ] + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "path", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "modificationTime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "length", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "uuid", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "x_size", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "y_size", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "bandCount", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "metadata", + "type": "{\"type\":\"map\",\"keyType\":\"string\",\"valueType\":\"string\",\"valueContainsNull\":true}" + }, + { + "metadata": "{}", + "name": "subdatasets", + "type": "{\"type\":\"map\",\"keyType\":\"string\",\"valueType\":\"string\",\"valueContainsNull\":true}" + }, + { + "metadata": "{}", + "name": "srid", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "tile", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"index_id\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"raster\",\"type\":\"binary\",\"nullable\":true,\"metadata\":{}},{\"name\":\"parentPath\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"driver\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}}]}" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df_mos = (\n", + " spark\n", + " .read.format(\"gdal\")\n", + " .option(\"driverName\", \"NetCDF\")\n", + " .load(nc_dir)\n", + ")\n", + "print(f\"count? {df_mos.count():,}\")\n", + "df_mos.orderBy(F.desc(\"path\")).limit(5).display() # <- limiting display for ipynb output only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e0a70c99-fc13-4f85-9549-8211c29e0b78", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Slice Example-1: Single File [with Flattening]\n", + "\n", + "> Before we move to distributed with Xarray, let's consider what slicing a single file might look like." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "53df9be9-5016-4966-baa4-273dd005b1da", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Read XArray Dataset_" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "174489ac-fb1b-4af7-b127-31a776e7592c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:  (lat: 360, lon: 720, time: 323)\n",
+       "Coordinates:\n",
+       "  * lat      (lat) float32 89.75 89.25 88.75 88.25 ... -88.75 -89.25 -89.75\n",
+       "  * lon      (lon) float32 0.25 0.75 1.25 1.75 2.25 ... 358.2 358.8 359.2 359.8\n",
+       "  * time     (time) datetime64[ns] 2023-01-01 2023-01-02 ... 2023-11-19\n",
+       "Data variables:\n",
+       "    precip   (time, lat, lon) float32 ...\n",
+       "Attributes:\n",
+       "    Conventions:    CF-1.0\n",
+       "    version:        V1.0\n",
+       "    title:          CPC GLOBAL PRCP V1.0 RT\n",
+       "    References:     https://www.psl.noaa.gov/data/gridded/data.cpc.globalprec...\n",
+       "    dataset_title:  CPC GLOBAL PRCP V1.0\n",
+       "    Source:         ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/\n",
+       "    history:        Updated 2023-11-20 23:31:01
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
<xarray.Dataset>\nDimensions:  (lat: 360, lon: 720, time: 323)\nCoordinates:\n  * lat      (lat) float32 89.75 89.25 88.75 88.25 ... -88.75 -89.25 -89.75\n  * lon      (lon) float32 0.25 0.75 1.25 1.75 2.25 ... 358.2 358.8 359.2 359.8\n  * time     (time) datetime64[ns] 2023-01-01 2023-01-02 ... 2023-11-19\nData variables:\n    precip   (time, lat, lon) float32 ...\nAttributes:\n    Conventions:    CF-1.0\n    version:        V1.0\n    title:          CPC GLOBAL PRCP V1.0 RT\n    References:     https://www.psl.noaa.gov/data/gridded/data.cpc.globalprec...\n    dataset_title:  CPC GLOBAL PRCP V1.0\n    Source:         ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/\n    history:        Updated 2023-11-20 23:31:01
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "xds = xr.open_dataset(nc_sample_path_fuse)\n", + "xds" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6b542d80-07d1-4482-ab73-f273d98d15cd", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Slice Dataset_" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "8d522d40-a715-428d-bc6e-1c27c0cf896c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:  (lat: 360, lon: 720, time: 31)\n",
+       "Coordinates:\n",
+       "  * lat      (lat) float32 89.75 89.25 88.75 88.25 ... -88.75 -89.25 -89.75\n",
+       "  * lon      (lon) float32 0.25 0.75 1.25 1.75 2.25 ... 358.2 358.8 359.2 359.8\n",
+       "  * time     (time) datetime64[ns] 2023-01-01 2023-01-02 ... 2023-01-31\n",
+       "Data variables:\n",
+       "    precip   (time, lat, lon) float32 ...\n",
+       "Attributes:\n",
+       "    Conventions:    CF-1.0\n",
+       "    version:        V1.0\n",
+       "    title:          CPC GLOBAL PRCP V1.0 RT\n",
+       "    References:     https://www.psl.noaa.gov/data/gridded/data.cpc.globalprec...\n",
+       "    dataset_title:  CPC GLOBAL PRCP V1.0\n",
+       "    Source:         ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/\n",
+       "    history:        Updated 2023-11-20 23:31:01
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
<xarray.Dataset>\nDimensions:  (lat: 360, lon: 720, time: 31)\nCoordinates:\n  * lat      (lat) float32 89.75 89.25 88.75 88.25 ... -88.75 -89.25 -89.75\n  * lon      (lon) float32 0.25 0.75 1.25 1.75 2.25 ... 358.2 358.8 359.2 359.8\n  * time     (time) datetime64[ns] 2023-01-01 2023-01-02 ... 2023-01-31\nData variables:\n    precip   (time, lat, lon) float32 ...\nAttributes:\n    Conventions:    CF-1.0\n    version:        V1.0\n    title:          CPC GLOBAL PRCP V1.0 RT\n    References:     https://www.psl.noaa.gov/data/gridded/data.cpc.globalprec...\n    dataset_title:  CPC GLOBAL PRCP V1.0\n    Source:         ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/\n    history:        Updated 2023-11-20 23:31:01
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "xds.sel(time=slice('2023-01-01','2023-01-31'))" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e6cd1401-833a-474b-b335-f23ddcf042ba", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:  (lat: 2, lon: 2, time: 323)\n",
+       "Coordinates:\n",
+       "  * lat      (lat) float32 88.75 88.25\n",
+       "  * lon      (lon) float32 0.25 0.75\n",
+       "  * time     (time) datetime64[ns] 2023-01-01 2023-01-02 ... 2023-11-19\n",
+       "Data variables:\n",
+       "    precip   (time, lat, lon) float32 ...\n",
+       "Attributes:\n",
+       "    Conventions:    CF-1.0\n",
+       "    version:        V1.0\n",
+       "    title:          CPC GLOBAL PRCP V1.0 RT\n",
+       "    References:     https://www.psl.noaa.gov/data/gridded/data.cpc.globalprec...\n",
+       "    dataset_title:  CPC GLOBAL PRCP V1.0\n",
+       "    Source:         ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/\n",
+       "    history:        Updated 2023-11-20 23:31:01
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
<xarray.Dataset>\nDimensions:  (lat: 2, lon: 2, time: 323)\nCoordinates:\n  * lat      (lat) float32 88.75 88.25\n  * lon      (lon) float32 0.25 0.75\n  * time     (time) datetime64[ns] 2023-01-01 2023-01-02 ... 2023-11-19\nData variables:\n    precip   (time, lat, lon) float32 ...\nAttributes:\n    Conventions:    CF-1.0\n    version:        V1.0\n    title:          CPC GLOBAL PRCP V1.0 RT\n    References:     https://www.psl.noaa.gov/data/gridded/data.cpc.globalprec...\n    dataset_title:  CPC GLOBAL PRCP V1.0\n    Source:         ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/\n    history:        Updated 2023-11-20 23:31:01
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "xds.sel(lat=slice(89.0,88.0), lon=slice(0.25,0.75))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "23b64d64-c40b-43d7-b7f8-2a1d6aeac2cb", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Convert to Pandas & Flatten_" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "dd8d636e-8a79-4759-a683-610663099001", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "rows? 83,721,600, cols? 1\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
precip
latlontime
89.750.252023-01-01NaN
2023-01-02NaN
2023-01-03NaN
2023-01-04NaN
2023-01-05NaN
\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
precip
latlontime
89.750.252023-01-01NaN
2023-01-02NaN
2023-01-03NaN
2023-01-04NaN
2023-01-05NaN
\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "if 'time' in xds.dims.keys() and not isinstance(xds.indexes['time'], pd.DatetimeIndex):\n", + " xds['time'] = xds.indexes['time'].to_datetimeindex()\n", + "pdf = xds.to_dataframe() # <- this is the right move (get a multi-index)\n", + "print(f'rows? {pdf.shape[0]:,}, cols? {pdf.shape[1]}')\n", + "pdf.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a1f924cc-2731-4f91-828e-d35e2b675b56", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "rows? 30,052,731, cols? 1\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
precip
latlontime
83.75323.252023-01-010.000000
2023-01-020.000000
2023-01-030.000000
2023-01-040.000000
2023-01-050.022191
\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
precip
latlontime
83.75323.252023-01-010.000000
2023-01-020.000000
2023-01-030.000000
2023-01-040.000000
2023-01-050.022191
\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "pdf.dropna(inplace=True)\n", + "print(f'rows? {pdf.shape[0]:,}, cols? {pdf.shape[1]}')\n", + "pdf.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "47901e3b-b004-402d-8cde-723e16495f6c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "rows? 30,052,731, cols? 4\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
latlontimeprecip
083.75323.252023-01-010.000000
183.75323.252023-01-020.000000
283.75323.252023-01-030.000000
383.75323.252023-01-040.000000
483.75323.252023-01-050.022191
\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
latlontimeprecip
083.75323.252023-01-010.000000
183.75323.252023-01-020.000000
283.75323.252023-01-030.000000
383.75323.252023-01-040.000000
483.75323.252023-01-050.022191
\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "pdf_flat = pdf.reset_index()\n", + "print(f'rows? {pdf_flat.shape[0]:,}, cols? {pdf_flat.shape[1]}')\n", + "pdf_flat.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "74d5ffe4-e2ba-484f-a0fe-c82fc9ba9617", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Get the [spark] schema from the flattened [pandas] sample_\n", + "\n", + "> This will be used in our distributed execution (below)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d3b0de2e-afbe-4ec0-a823-2a72f6661f27", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 30,052,731\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
latlontimeprecip
83.75323.252023-01-01T00:00:00.000+00000.0
83.75323.252023-01-02T00:00:00.000+00000.0
83.75323.252023-01-03T00:00:00.000+00000.0
83.75323.252023-01-04T00:00:00.000+00000.0
83.75323.252023-01-05T00:00:00.000+00000.022190852
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 83.75, + 323.25, + "2023-01-01T00:00:00.000+0000", + 0.0 + ], + [ + 83.75, + 323.25, + "2023-01-02T00:00:00.000+0000", + 0.0 + ], + [ + 83.75, + 323.25, + "2023-01-03T00:00:00.000+0000", + 0.0 + ], + [ + 83.75, + 323.25, + "2023-01-04T00:00:00.000+0000", + 0.0 + ], + [ + 83.75, + 323.25, + "2023-01-05T00:00:00.000+0000", + 0.022190852 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "lat", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "lon", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "time", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "precip", + "type": "\"float\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df = spark.createDataFrame(pdf_flat)\n", + "print(f\"count? {df.count():,}\")\n", + "df.limit(5).display()" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "94614086-173e-46c1-8c2b-15a0e34f09fa", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[18]: StructType([StructField('lat', DoubleType(), True), StructField('lon', DoubleType(), True), StructField('time', TimestampType(), True), StructField('precip', FloatType(), True)])" + ] + } + ], + "source": [ + "df.schema" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6dfd2b8f-de57-49fa-b751-30ae9e69533d", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Slice Example-2: Vectorized UDF [with Flattening]\n", + "\n", + "> Use `applyInPandas` UDF to work more directly with the netCDF [outside of Moasaic + GDAL]. __Note: Will enforce grouping by path.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b486864e-1fa4-40bb-8cc7-1c3039d5464e", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[11]: StructType([StructField('lon', DoubleType(), True), StructField('lat', DoubleType(), True), StructField('time', TimestampType(), True), StructField('precip', FloatType(), True)])" + ] + } + ], + "source": [ + "# idenfified earlier in sample\n", + "flat_schema = (\n", + " StructType(\n", + " [\n", + " StructField('lon', DoubleType(), True), \n", + " StructField('lat', DoubleType(), True), \n", + " StructField('time', TimestampType(), True), \n", + " StructField('precip', FloatType(), True), \n", + " ]\n", + " )\n", + ")\n", + "flat_schema" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "88fc03f6-426e-4d12-a53e-8452226d6c97", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "def slice_flatten_path(key, input_pdf: pd.DataFrame) -> pd.DataFrame:\n", + " \"\"\"\n", + " slice the `path` column [optimal w/single path]:\n", + " - based on provided time, lat, lon slices\n", + " - Read with XArray using h5netcdf engine\n", + " - Handles conversion to pandas\n", + " - flattens out multi-dimensions\n", + " - drops na values (much smaller)\n", + " Returns pandas dataframe\n", + " \"\"\"\n", + " import io\n", + " import pandas as pd\n", + " import xarray as xr \n", + "\n", + " # -- iterate over pdf --\n", + " # - this may just be 1 path,\n", + " # depends on groupBy\n", + " # - to further optimize, consider enforcing 1 path\n", + " # and not doing the `pd.concat` call, just returning \n", + " pdf_arr = []\n", + " for index, row in input_pdf.iterrows():\n", + " path_fuse = row['path'].replace(\"dbfs:\",\"/dbfs\")\n", + " xds = xr.open_dataset(path_fuse)\n", + "\n", + " xds_slice = xds\n", + " if 'time_slice' in input_pdf:\n", + " xds_slice = xds_slice.sel(time=slice(*row['time_slice']))\n", + " if 'lat_slice' in input_pdf:\n", + " xds_slice = xds_slice.sel(lat=slice(*row['lat_slice']))\n", + " if 'lon_slice' in input_pdf:\n", + " xds_slice = xds_slice.sel(lon=slice(*row['lon_slice']))\n", + " \n", + " if 'time' in xds_slice.dims.keys() and not isinstance(xds_slice.indexes['time'], pd.DatetimeIndex):\n", + " xds_slice['time'] = xds_slice.indexes['time'].to_datetimeindex()\n", + " pdf = xds_slice.to_dataframe() # <- handle drops in xdf for large files\n", + " pdf.dropna(inplace=True)\n", + " pdf_arr.append(pdf.reset_index())\n", + " \n", + " return pd.concat(pdf_arr)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d1a2abdc-6441-4567-b300-93283b8457b6", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[13]: 277.0" + ] + } + ], + "source": [ + "from_180(-83.0) # <- becomes min" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "af5d2795-cc5b-492b-82f5-7fe6041ee22e", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[14]: 279.1" + ] + } + ], + "source": [ + "from_180(-80.9) # <- becomes max" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "1e157bb4-30b7-4bfb-b2f6-082100a5dfb5", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 372\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
lonlattimeprecipyearmonthdaygeom_wkt
277.2528.252023-01-01T00:00:00.000+00008.654497202311POINT (-82.75 28.25)
277.2528.252023-01-02T00:00:00.000+00000.12019344202312POINT (-82.75 28.25)
277.2528.252023-01-03T00:00:00.000+00000.0202313POINT (-82.75 28.25)
277.2528.252023-01-04T00:00:00.000+00000.0202314POINT (-82.75 28.25)
277.2528.252023-01-05T00:00:00.000+00006.124646202315POINT (-82.75 28.25)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 277.25, + 28.25, + "2023-01-01T00:00:00.000+0000", + 8.654497, + 2023, + 1, + 1, + "POINT (-82.75 28.25)" + ], + [ + 277.25, + 28.25, + "2023-01-02T00:00:00.000+0000", + 0.12019344, + 2023, + 1, + 2, + "POINT (-82.75 28.25)" + ], + [ + 277.25, + 28.25, + "2023-01-03T00:00:00.000+0000", + 0.0, + 2023, + 1, + 3, + "POINT (-82.75 28.25)" + ], + [ + 277.25, + 28.25, + "2023-01-04T00:00:00.000+0000", + 0.0, + 2023, + 1, + 4, + "POINT (-82.75 28.25)" + ], + [ + 277.25, + 28.25, + "2023-01-05T00:00:00.000+0000", + 6.124646, + 2023, + 1, + 5, + "POINT (-82.75 28.25)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "lon", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "lat", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "time", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "precip", + "type": "\"float\"" + }, + { + "metadata": "{}", + "name": "year", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "month", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "day", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "spark.catalog.clearCache() # <- cache for dev, help avoid recomputes\n", + "\n", + "df_path = (\n", + " df_mos\n", + " .repartition(df_mos.count(), \"path\") # <- repartition is important!\n", + " .withColumn(\n", + " \"time_slice\", \n", + " F.array([F.lit(x) for x in ['2023-01-01', '2023-01-31']])\n", + " )\n", + " .withColumn(\n", + " \"lat_slice\", \n", + " F.array([F.lit(x) for x in [28.6, 26.9]]) # <- max, min\n", + " )\n", + " .withColumn(\n", + " \"lon_slice\", \n", + " F.array([F.lit(x) for x in [from_180(-83.0), from_180(-80.9)]]) # <- min, max ... convert to 360 \n", + " )\n", + " .groupBy(\"path\")\n", + " .applyInPandas(slice_flatten_path, schema=flat_schema) # <- applyInPandas UDF \n", + " .withColumn(\"year\", F.year(\"time\"))\n", + " .withColumn(\"month\", F.month(\"time\"))\n", + " .withColumn(\"day\", F.dayofmonth(\"time\"))\n", + " .withColumn(\"geom_wkt\", mos.st_astext(mos.st_point(from_360_udf(\"lon\"), \"lat\"))) # <- convert to -180:180\n", + " .cache()\n", + ")\n", + "\n", + "print(f\"count? {df_path.count():,}\")\n", + "display(df_path.limit(5)) # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "cdbbbd15-233a-46e3-be51-2fdc87baa925", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Render average precipitation through the years_\n", + "\n", + "> This is per collected location __[our slice in Florida]__. Note: `precip` units are in millimeters." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "32888e11-e814-4add-b754-5e461bf0f5c9", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "df_kepler = (\n", + " df_path\n", + " .groupBy(\"geom_wkt\")\n", + " .agg(F.avg(\"precip\").alias(\"avg_precip\"))\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a1914b8b-2c62-43cb-898c-e13db7628341", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "919763df-97ea-4b61-8ee7-d438d551b14d", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "92e43404-515d-4fe9-9ff7-2fca55d2715e", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# df_kepler \"geom_wkt\" \"geometry\" 1_000" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b2765745-f1e6-4404-b65f-097341a06f7f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Slice Example-3: Vecorized UDF [without Flatten]\n", + "\n", + "> Use `applyInPandas` UDF to work more directly with the netCDF [outside of Mosaic + GDAL]. This shows two variations on maintaining a nested structure within a Delta Table: [a] Store Slices as NetCDF binary and [b] Store slices as JSON. __Note: Will enforce grouping by path.__" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "9e8f1d65-7419-4261-b29e-f7a4b078aff0", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Option-[a]: Return Slice as NetCDF" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "73672011-a624-4391-b321-d431ee74c254", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_This will be binary type in our UDF._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b0684772-86b6-4ae5-bcc6-fa760f052e14", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "nc_slice = xds.sel(time=slice('2023-01-01','2023-01-31'), lat=slice(89.0,88.0), lon=slice(0.25,0.75)).to_netcdf()\n", + "# nc_slice # <- this is binary" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "eb8b536f-8481-4b33-8013-e15b522360d3", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "nc_slice_schema = StructType([StructField('content', BinaryType(), True)])" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a26c2b89-dbf7-4879-8288-6913ec4227e6", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "def slice_path_nc(key, input_pdf: pd.DataFrame) -> pd.DataFrame:\n", + " \"\"\"\n", + " slice the `path` column [optimal w/single path]:\n", + " - based on provided time, lat, lon slices\n", + " - Read with XArray using h5netcdf engine\n", + " - maintains the sliced netcdf as binary\n", + " Returns pandas dataframe\n", + " \"\"\"\n", + " import io\n", + " import pandas as pd\n", + " import xarray as xr \n", + "\n", + " # -- iterate over pdf --\n", + " # - this may just be 1 path,\n", + " # depends on groupBy\n", + " # - to further optimize, consider enforcing 1 path\n", + " # and not doing the `pd.concat` call, just returning \n", + " pdf_arr = []\n", + " for index, row in input_pdf.iterrows():\n", + " path_fuse = row['path'].replace(\"dbfs:\",\"/dbfs\")\n", + " xds = xr.open_dataset(path_fuse)\n", + "\n", + " xds_slice = xds\n", + " if 'time_slice' in input_pdf:\n", + " xds_slice = xds_slice.sel(time=slice(*row['time_slice']))\n", + " if 'lat_slice' in input_pdf:\n", + " xds_slice = xds_slice.sel(lat=slice(*row['lat_slice']))\n", + " if 'lon_slice' in input_pdf:\n", + " xds_slice = xds_slice.sel(lon=slice(*row['lon_slice']))\n", + " \n", + " pdf_arr.append(\n", + " pd.DataFrame([xds_slice.to_netcdf()], columns=['content'])\n", + " )\n", + " \n", + " return pd.concat(pdf_arr)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e81241ca-a489-4a32-a2c7-e536e44282d7", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 45\n+--------------------+\n| content|\n+--------------------+\n|[43 44 46 02 00 0...|\n+--------------------+\n\n" + ] + } + ], + "source": [ + "spark.catalog.clearCache() # <- cache for dev, help avoid recomputes\n", + "\n", + "df_nc_slice = (\n", + " df_mos\n", + " .repartition(df_mos.count(), \"path\") # <- repartition is important!\n", + " .withColumn(\n", + " \"time_slice\", \n", + " F.array([F.lit(x) for x in ['2023-01-01', '2023-01-31']])\n", + " )\n", + " .withColumn(\n", + " \"lat_slice\", \n", + " F.array([F.lit(x) for x in [28.6, 26.9]]) # <- max, min\n", + " )\n", + " .withColumn(\n", + " \"lon_slice\", \n", + " F.array([F.lit(x) for x in [from_180(-83.0), from_180(-80.9)]]) # <- min, max ... convert to 360 \n", + " )\n", + " .groupBy(\"path\")\n", + " .applyInPandas(slice_path_nc, schema=nc_slice_schema) # <- applyInPandas UDF \n", + " .cache()\n", + ")\n", + "\n", + "print(f\"count? {df_nc_slice.count():,}\")\n", + "df_nc_slice.limit(1).show() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "73e444db-9eb6-4b22-a358-3ed32c36a455", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Example flattening from the slices_\n", + "\n", + "> Though not explicitely shown here, you could have written out your slices to Delta Lake and then later decided to work with them again as field data. __Note: the use of BytesIO to load straight from the Delta Lake field data: `xds = xr.open_dataset(io.BytesIO(row['content']))`!__ " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "9a9e9457-218c-4910-a1d0-1cd3e3c53eca", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "def explode_content(key, input_pdf: pd.DataFrame) -> pd.DataFrame:\n", + " \"\"\"\n", + " Explode the expected `contents` column:\n", + " - Read with XArray using h5netcdf engine\n", + " - Handles conversion to pandas\n", + " - flattens out multi-dimensions\n", + " - drops na values (much smaller)\n", + " Returns pandas dataframe\n", + " \"\"\"\n", + " import io\n", + " import pandas as pd\n", + " import xarray as xr\n", + "\n", + " # -- iterate over pdf --\n", + " # - this may just be 1 path,\n", + " # depends on groupBy\n", + " # - to further optimize, consider enforcing 1 path\n", + " # and not doing the `pd.concat` call, just returning \n", + " pdf_arr = []\n", + "\n", + " for index, row in input_pdf.iterrows():\n", + " xds = xr.open_dataset(io.BytesIO(row['content']))\n", + " if 'time' in xds.dims.keys() and not isinstance(xds.indexes['time'], pd.DatetimeIndex):\n", + " xds['time'] = xds.indexes['time'].to_datetimeindex()\n", + " pdf = xds.to_dataframe()\n", + " pdf.dropna(inplace=True) # <- handle drops in xdf for large files\n", + " pdf_arr.append(pdf.reset_index())\n", + " \n", + " return pd.concat(pdf_arr)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "93396017-084e-46d9-b60a-c5d01d513c40", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 372\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
lonlattimeprecipyearmonthdaygeom_wkt
277.2528.252023-01-01T00:00:00.000+00008.654497202311POINT (-82.75 28.25)
277.2528.252023-01-02T00:00:00.000+00000.12019344202312POINT (-82.75 28.25)
277.2528.252023-01-03T00:00:00.000+00000.0202313POINT (-82.75 28.25)
277.2528.252023-01-04T00:00:00.000+00000.0202314POINT (-82.75 28.25)
277.2528.252023-01-05T00:00:00.000+00006.124646202315POINT (-82.75 28.25)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 277.25, + 28.25, + "2023-01-01T00:00:00.000+0000", + 8.654497, + 2023, + 1, + 1, + "POINT (-82.75 28.25)" + ], + [ + 277.25, + 28.25, + "2023-01-02T00:00:00.000+0000", + 0.12019344, + 2023, + 1, + 2, + "POINT (-82.75 28.25)" + ], + [ + 277.25, + 28.25, + "2023-01-03T00:00:00.000+0000", + 0.0, + 2023, + 1, + 3, + "POINT (-82.75 28.25)" + ], + [ + 277.25, + 28.25, + "2023-01-04T00:00:00.000+0000", + 0.0, + 2023, + 1, + 4, + "POINT (-82.75 28.25)" + ], + [ + 277.25, + 28.25, + "2023-01-05T00:00:00.000+0000", + 6.124646, + 2023, + 1, + 5, + "POINT (-82.75 28.25)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "lon", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "lat", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "time", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "precip", + "type": "\"float\"" + }, + { + "metadata": "{}", + "name": "year", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "month", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "day", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df_flat_slice = (\n", + " df_nc_slice\n", + " .groupBy(\"content\")\n", + " .applyInPandas(explode_content, schema=flat_schema)\n", + " .withColumn(\"year\", F.year(\"time\"))\n", + " .withColumn(\"month\", F.month(\"time\"))\n", + " .withColumn(\"day\", F.dayofmonth(\"time\"))\n", + " .withColumn(\"geom_wkt\", mos.st_astext(mos.st_point(from_360_udf(\"lon\"), \"lat\"))) # <- to -180:180\n", + " .cache()\n", + ")\n", + "\n", + "print(f\"count? {df_flat_slice.count():,}\")\n", + "display(df_flat_slice.limit(5)) # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "9ce1b6f1-a915-4242-87e6-c8878c874a3d", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Render average precipitation through the years_\n", + "\n", + "> This is per collected location __[AKA our \"same\" slice in Florida]__. Note: `precip` units are in millimeters." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "f9cf3b4e-7c62-4a72-a251-757d8e8e8cb3", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "df_flat_slice_kepler = (\n", + " df_flat_slice\n", + " .groupBy(\"geom_wkt\")\n", + " .agg(F.avg(\"precip\").alias(\"avg_precip\"))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "7b6e4652-1f4c-45e9-8c6b-dd0624b68be0", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results [essentially same as the screenshot shown in the earlier example]._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "8fb07c0d-b42c-4400-9ee3-5270b4dae19a", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# df_flat_slice_kepler \"geom_wkt\" \"geometry\" 1_000" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ffe6af84-9f69-4d1b-9a84-3934c1f49bbf", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Option-[b]: Slice as JSON\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "4386d7f0-b9a6-4888-a85a-66ffbeaebb73", + "showTitle": false, + "title": "" + } + }, + "source": [ + "#### Single File Example \n", + "\n", + "> Just to understand before moving to distributed." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7e01a67d-9190-4ba9-901a-0154ab117b7b", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "rows? 372, cols? 1\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
precip
latlontime
28.25277.252023-01-018.654497
2023-01-020.120193
2023-01-030.000000
2023-01-040.000000
2023-01-056.124646
\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
precip
latlontime
28.25277.252023-01-018.654497
2023-01-020.120193
2023-01-030.000000
2023-01-040.000000
2023-01-056.124646
\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "pdf_slice = (\n", + " xds.sel(\n", + " time=slice('2023-01-01','2023-01-31'),\n", + " lat=slice(28.6, 26.9), \n", + " lon=slice(from_180(-83.0), from_180(-80.9))\n", + " ).to_dataframe()\n", + ")\n", + "print(f'rows? {pdf_slice.shape[0]:,}, cols? {pdf_slice.shape[1]}')\n", + "pdf_slice.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "df9986a1-1991-4164-a14a-8c1a433e9bc5", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[38]: [{'columns': ['precip'],\n 'index': [[28.25, 277.25, 1672531200000]],\n 'data': [[8.6544971466]]},\n {'columns': ['precip'],\n 'index': [[28.25, 277.25, 1672617600000]],\n 'data': [[0.1201934367]]},\n {'columns': ['precip'],\n 'index': [[28.25, 277.25, 1672704000000]],\n 'data': [[0.0]]}]" + ] + } + ], + "source": [ + "data_out = pdf_slice.groupby(['lat','lon','time']).apply(lambda x : x.to_json(orient='split')).values.tolist()\n", + "json_data = [json.loads(x) for x in data_out]\n", + "json_data[:3]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "daf7f0f9-dff7-4560-85e7-cc3e028612e7", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Get the [spark] schema from the flattened [pandas] sample_\n", + "\n", + "> This will be used in our distributed execution (below)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6a871d20-1cbc-4430-81fc-ee6be65e8dde", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+\n| nc_json|\n+--------------------+\n|[{[precip], [[8.6...|\n+--------------------+\n\n" + ] + } + ], + "source": [ + "df_slice_json = spark.createDataFrame(pd.DataFrame([[json_data]], columns=['nc_json']))\n", + "df_slice_json.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4e844320-ae01-441b-a26c-0b9fa9a3906e", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[44]: StructType([StructField('nc_json', ArrayType(StructType([StructField('columns', ArrayType(StringType(), True), True), StructField('data', ArrayType(ArrayType(DoubleType(), True), True), True), StructField('index', ArrayType(ArrayType(DoubleType(), True), True), True)]), True), True)])" + ] + } + ], + "source": [ + "df_slice_json.schema" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "6d8ff9d7-eaa4-4814-8ea7-012717c4517f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "#### Distributed Example" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "323ab7fd-f855-4678-9ed0-f1f7e27647a9", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "json_schema = (\n", + " StructType([\n", + " StructField(\n", + " 'nc_json', \n", + " ArrayType(\n", + " StructType([\n", + " StructField('columns', ArrayType(StringType(), True), True), \n", + " StructField('data', ArrayType(ArrayType(DoubleType(), True), True), True),\n", + " StructField('index', ArrayType(ArrayType(DoubleType(), True), True), True)\n", + " ]),\n", + " True\n", + " ),\n", + " True\n", + " )\n", + " ])\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "fdd5cd72-2cb9-4837-ac50-21fdf4696271", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "def slice_path_json(key, input_pdf: pd.DataFrame) -> pd.DataFrame:\n", + " \"\"\"\n", + " slice the `path` column [optimal w/single path]:\n", + " - based on provided time, lat, lon slices\n", + " - Read with XArray using h5netcdf engine\n", + " - drops na values\n", + " - returns slice as json\n", + " Returns pandas dataframe\n", + " \"\"\"\n", + " import io\n", + " import json\n", + " import pandas as pd\n", + " import xarray as xr \n", + "\n", + " # -- iterate over pdf --\n", + " # - this may just be 1 path,\n", + " # depends on groupBy\n", + " # - to further optimize, consider enforcing 1 path\n", + " # and not doing the `pd.concat` call, just returning \n", + " pdf_arr = []\n", + " for index, row in input_pdf.iterrows():\n", + " path_fuse = row['path'].replace(\"dbfs:\",\"/dbfs\")\n", + " xds = xr.open_dataset(path_fuse)\n", + "\n", + " xds_slice = xds\n", + " if 'time_slice' in input_pdf:\n", + " xds_slice = xds_slice.sel(time=slice(*row['time_slice']))\n", + " if 'lat_slice' in input_pdf:\n", + " xds_slice = xds_slice.sel(lat=slice(*row['lat_slice']))\n", + " if 'lon_slice' in input_pdf:\n", + " xds_slice = xds_slice.sel(lon=slice(*row['lon_slice']))\n", + " \n", + " if 'time' in xds_slice.dims.keys() and not isinstance(xds_slice.indexes['time'], pd.DatetimeIndex):\n", + " xds_slice['time'] = xds_slice.indexes['time'].to_datetimeindex()\n", + " pdf = xds_slice.to_dataframe() # <- handle drops in xdf for large files\n", + " pdf.dropna(inplace=True)\n", + "\n", + " pdf_arr.append(pdf.groupby(['lat','lon','time']).apply(lambda x : x.to_json(orient='split')))\n", + " \n", + " pdf_list = pd.concat(pdf_arr).values.tolist()\n", + " json_data = [json.loads(x) for x in pdf_list]\n", + " \n", + " return pd.DataFrame([[json_data]], columns=['nc_json'])" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "bd38e3ee-9a03-45ab-8b57-d85ca65c0d61", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 1\n+--------------------+\n| nc_json|\n+--------------------+\n|[{[precip], [[8.6...|\n+--------------------+\n\n" + ] + } + ], + "source": [ + "spark.catalog.clearCache() # <- cache for dev, help avoid recomputes\n", + "\n", + "df_json_slice = (\n", + " df_mos\n", + " .repartition(df_mos.count(), \"path\") # <- repartition is important!\n", + " .withColumn(\n", + " \"time_slice\", \n", + " F.array([F.lit(x) for x in ['2023-01-01', '2023-01-31']])\n", + " )\n", + " .withColumn(\n", + " \"lat_slice\", \n", + " F.array([F.lit(x) for x in [28.6, 26.9]]) # <- max, min\n", + " )\n", + " .withColumn(\n", + " \"lon_slice\", \n", + " F.array([F.lit(x) for x in [from_180(-83.0), from_180(-80.9)]]) # <- min, max ... convert to 360 \n", + " )\n", + " .groupBy(\"path\")\n", + " .applyInPandas(slice_path_json, schema=json_schema) # <- applyInPandas UDF\n", + " .filter(F.size(\"nc_json\") > 0)\n", + " .cache()\n", + ")\n", + "\n", + "print(f\"count? {df_json_slice.count():,}\") # <- this is all consolidated into a single json\n", + "df_json_slice.show() # <- not display, too big (see just the one row with results)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ba40df01-eb62-4c55-ad06-94061cacae87", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_We can explode the (consolidated) json with Spark to have a more manageable structure._ " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ba213b31-1ae3-40cc-9c34-6fc240008dde", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 372\n+--------+----------------+--------------------+\n| columns| data| index|\n+--------+----------------+--------------------+\n|[precip]|[[8.6544971466]]|[[28.25, 277.25, ...|\n|[precip]|[[0.1201934367]]|[[28.25, 277.25, ...|\n|[precip]| [[0.0]]|[[28.25, 277.25, ...|\n|[precip]| [[0.0]]|[[28.25, 277.25, ...|\n|[precip]|[[6.1246461868]]|[[28.25, 277.25, ...|\n|[precip]|[[0.7794950008]]|[[28.25, 277.25, ...|\n|[precip]|[[0.0298616886]]|[[28.25, 277.25, ...|\n|[precip]|[[0.1123939902]]|[[28.25, 277.25, ...|\n|[precip]| [[0.0]]|[[28.25, 277.25, ...|\n|[precip]| [[0.0]]|[[28.25, 277.25, ...|\n|[precip]| [[0.0]]|[[28.25, 277.25, ...|\n|[precip]| [[0.0]]|[[28.25, 277.25, ...|\n|[precip]|[[18.437210083]]|[[28.25, 277.25, ...|\n|[precip]|[[3.1411890984]]|[[28.25, 277.25, ...|\n|[precip]| [[0.0]]|[[28.25, 277.25, ...|\n|[precip]| [[0.0]]|[[28.25, 277.25, ...|\n|[precip]| [[0.0]]|[[28.25, 277.25, ...|\n|[precip]| [[0.0]]|[[28.25, 277.25, ...|\n|[precip]| [[0.0]]|[[28.25, 277.25, ...|\n|[precip]|[[0.4759106636]]|[[28.25, 277.25, ...|\n+--------+----------------+--------------------+\nonly showing top 20 rows\n\n" + ] + } + ], + "source": [ + "df_explode_slice = (\n", + " df_json_slice\n", + " .select(F.explode(\"nc_json\"))\n", + " .select(\"col.*\")\n", + ")\n", + "print(f\"count? {df_explode_slice.count():,}\")\n", + "df_explode_slice.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "a9ecc31a-0037-4094-9640-026b2e0c85f9", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_We can further extract a measure from the exploded structure._\n", + "\n", + "> The following shows precipitation, but you could pick another column as needed. __Note: There is still some nesting (handled further below).__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2966e6e9-3e33-4415-a51c-f2717263d280", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 372\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
measureindex
8.6544971466List(28.25, 277.25, 1.6725312E12)
0.1201934367List(28.25, 277.25, 1.6726176E12)
0.0List(28.25, 277.25, 1.672704E12)
0.0List(28.25, 277.25, 1.6727904E12)
6.1246461868List(28.25, 277.25, 1.6728768E12)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 8.6544971466, + [ + 28.25, + 277.25, + 1.6725312E12 + ] + ], + [ + 0.1201934367, + [ + 28.25, + 277.25, + 1.6726176E12 + ] + ], + [ + 0.0, + [ + 28.25, + 277.25, + 1.672704E12 + ] + ], + [ + 0.0, + [ + 28.25, + 277.25, + 1.6727904E12 + ] + ], + [ + 6.1246461868, + [ + 28.25, + 277.25, + 1.6728768E12 + ] + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "measure", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "index", + "type": "{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true}" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "precip_idx = 1 # <- could be multiple data columns\n", + "\n", + "df_precip_slice = (\n", + " df_explode_slice\n", + " .select(\n", + " F.element_at(\"data\", precip_idx)[0].alias(\"measure\"),\n", + " F.element_at(\"index\", precip_idx).alias(\"index\"),\n", + " )\n", + ")\n", + "\n", + "print(f\"count? {df_precip_slice.count():,}\")\n", + "display(df_precip_slice.limit(5)) # <- limiting output for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "8d1b3401-40d6-42a9-8b6b-b15fe17a524b", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Here is an example of fully flattening from the precipitation slice._\n", + "\n", + "\n", + "__Notes:__\n", + "\n", + "

\n", + "\n", + "* This standardizes from 0:360 degrees to -180:180, see [here](https://pratiman-91.github.io/2020/08/01/NetCDF-to-GeoTIFF-using-Python.html) for pattern `( + 180) % 360 - 180`\n", + "* Also, adjust double value for timestamp by `/1000`" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "79b77b80-a428-4a78-89c6-8a6315971a80", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 372\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "

timelatlonmeasurelon_360geom_wkt
2023-01-0128.25-82.758.6544971466277.25POINT (-82.75 28.25)
2023-01-0228.25-82.750.1201934367277.25POINT (-82.75 28.25)
2023-01-0328.25-82.750.0277.25POINT (-82.75 28.25)
2023-01-0428.25-82.750.0277.25POINT (-82.75 28.25)
2023-01-0528.25-82.756.1246461868277.25POINT (-82.75 28.25)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "2023-01-01", + 28.25, + -82.75, + 8.6544971466, + 277.25, + "POINT (-82.75 28.25)" + ], + [ + "2023-01-02", + 28.25, + -82.75, + 0.1201934367, + 277.25, + "POINT (-82.75 28.25)" + ], + [ + "2023-01-03", + 28.25, + -82.75, + 0.0, + 277.25, + "POINT (-82.75 28.25)" + ], + [ + "2023-01-04", + 28.25, + -82.75, + 0.0, + 277.25, + "POINT (-82.75 28.25)" + ], + [ + "2023-01-05", + 28.25, + -82.75, + 6.1246461868, + 277.25, + "POINT (-82.75 28.25)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "time", + "type": "\"date\"" + }, + { + "metadata": "{}", + "name": "lat", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "lon", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "measure", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "lon_360", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df_precip_slice_flat = (\n", + " df_precip_slice\n", + " .select(\n", + " (F.element_at(\"index\", 3) / 1000.0).cast(\"timestamp\").cast(\"date\").alias(\"time\"),\n", + " F.element_at(\"index\", 1).alias(\"lat\"),\n", + " from_360_udf(F.element_at(\"index\",2)).alias(\"lon\"),\n", + " \"measure\",\n", + " F.element_at(\"index\", 2).alias(\"lon_360\"),\n", + " )\n", + " .select(\"*\", mos.st_astext(mos.st_point(\"lon\", \"lat\")).alias(\"geom_wkt\"))\n", + ")\n", + "print(f\"count? {df_precip_slice_flat.count():,}\")\n", + "display(df_precip_slice_flat.limit(5)) # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "2b2a88f5-c99c-4d9e-a9d8-8d736d46aeab", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Render average precipitation through the years_\n", + "\n", + "> This is per collected location __[AKA our \"same\" slice in Florida]__. Note: `precip` units are in millimeters." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "07fa3e84-f2c6-4e2f-9fba-6ae88846c247", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "df_precip_slice_kepler = (\n", + " df_precip_slice_flat\n", + " .groupBy(\"geom_wkt\")\n", + " .agg(F.avg(\"measure\").alias(\"avg_precip\"))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ac82bc4e-8af0-4e3e-924d-483e891d1558", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results [essentially same as the screenshot shown in the earlier example]._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "3ec182af-7be5-470d-a8e1-9d35f674bfd0", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# df_precip_slice_kepler \"geom_wkt\" \"geometry\" 1_000" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d4ca1918-ad0b-4a44-a2e3-3ad50ecc4419", + "showTitle": false, + "title": "" + } + }, + "source": [ + "#### Databricks Lakehouse can read / write most any data format\n", + "\n", + "> Here are [built-in](https://docs.databricks.com/en/external-data/index.html) formats as well as Mosaic [readers](https://databrickslabs.github.io/mosaic/api/api.html). __Note: best performance with Delta Lake format__, ref [Databricks](https://docs.databricks.com/en/delta/index.html) and [OSS](https://docs.delta.io/latest/index.html) docs for Delta Lake. Beyond built-in formats, Databricks is a platform on which you can install a wide variety of libraries, e.g. [1](https://docs.databricks.com/en/libraries/index.html#python-environment-management) | [2](https://docs.databricks.com/en/compute/compatibility.html) | [3](https://docs.databricks.com/en/init-scripts/index.html).\n", + "\n", + "Example of [reading](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameReader.html?highlight=read#pyspark.sql.DataFrameReader) and [writing](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameWriter.html?highlight=pyspark%20sql%20dataframe%20writer#pyspark.sql.DataFrameWriter) a Spark DataFrame with Delta Lake format.\n", + "\n", + "```\n", + "# - `write.format(\"delta\")` is default in Databricks\n", + "# - can save to a specified path in the Lakehouse\n", + "# - can save as a table in the Databricks Metastore\n", + "df.write.save(\"\")\n", + "df.write.saveAsTable(\"\")\n", + "```\n", + "\n", + "Example of loading a Delta Lake Table as a Spark DataFrame.\n", + "\n", + "```\n", + "# - `read.format(\"delta\")` is default in Databricks\n", + "# - can load a specified path in the Lakehouse\n", + "# - can load a table in the Databricks Metastore\n", + "df.read.load(\"\")\n", + "df.table(\"\")\n", + "```\n", + "\n", + "More on [Unity Catalog](https://docs.databricks.com/en/data-governance/unity-catalog/index.html) in Databricks Lakehouse for Governing [Tables](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#tables) and [Volumes](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#volumes)." + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 85549841921965, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "distributed_slice netcdf_files", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/NetCDF/Xarray/single_node_netcdf_files.ipynb b/notebooks/examples/python/NetCDF/Xarray/single_node_netcdf_files.ipynb new file mode 100644 index 000000000..192069872 --- /dev/null +++ b/notebooks/examples/python/NetCDF/Xarray/single_node_netcdf_files.ipynb @@ -0,0 +1,3063 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "08fbb986-c3d0-45c9-9ab7-7fd842c78692", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Single Node: Opening + visualizing a netCDF file (Python)\n", + "\n", + "## Overview\n", + "\n", + "> This notebook demonstrates how to open and explore the netCDF file, visualize the data, and convert it to Pandas as well as Spark DataFrames. This is for users just getting familiar with [netCDF climate and forecast (CF) metadata conventions](http://cfconventions.org/cf-conventions/v1.6.0/cf-conventions.html). __The example is mostly single node / non-distributed__; until the spark call at the end, it runs only on the cluster driver, which is something like running on a \"laptop in the sky\". \n", + "\n", + "## Source Data\n", + "\n", + "The source data is a netCDF file, you can swap out for any data you are working with and follow the same basic pattern.\n", + "\n", + "## Prerequisites\n", + "\n", + "Python 3 or later. Python modules: we will add 'netCDF4', 'xarray', 'nc-time-axis', and 'cartopy' (numpy, pandas, matplotlib already available)\n", + "\n", + "---\n", + "__Last Update:__ 07 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "dbc09cd9-d0b1-48e4-a950-024c387b3a8a", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### 1. Import python modules\n", + "First import the required modules:" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "838d465f-5fcd-40ef-b19e-b9c0e3931027", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\nscipy 1.7.3 requires numpy<1.23.0,>=1.16.5, but you have numpy 1.26.2 which is incompatible.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install netCDF4 xarray nc-time-axis cartopy --quiet" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "84144f3b-6ef4-457a-be6c-ea67f758b94c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "application/vnd.databricks.v1+bamboolib_hint": "{\"pd.DataFrames\": [], \"version\": \"0.0.1\"}", + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import cartopy.crs as ccrs\n", + "import matplotlib.pyplot as plt\n", + "import netCDF4 as nc\n", + "import numpy as np\n", + "import pandas as pd\n", + "import xarray as xr" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "f06b12c2-cd29-451b-b98b-0894e07bba2f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### 2. Read and explore the netCDF file\n", + "\n", + "> Example of reading in the netCDF file -- this is [Community Climate\n", + " System Model project](https://www.cesm.ucar.edu/models/ccsm). Printing `in_nc` displays important information about the data sets, such as *global attributes*, *data dimensions*, and *variable names*. Global attributes in a netCDF file contains information about the data such as data authors, publisher, data contacts, etc.\n", + "\n", + "__DataArray__\n", + "\n", + "xarray.DataArray is an implementation of a labelled, multi-dimensional array for a single variable, such as precipitation, temperature etc. It has the following key properties:\n", + "\n", + "

\n", + "\n", + "* `values`: a numpy.ndarray holding the array’s values\n", + "* `dims`: dimension names for each axis (e.g., ('lat', 'lon', 'z', 'time'))\n", + "* `coords`: a dict-like container of arrays (coordinates) that label each point (e.g., 1-dim arrays of numbers, * DateTime objects, or strings)\n", + "* `attrs`: an OrderedDict to hold arbitrary metadata (attributes)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "5d04345d-d214-4cd0-ad1d-4c4842591ba3", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "--2023-11-21 16:12:04-- https://www.unidata.ucar.edu/software/netcdf/examples/sresa1b_ncar_ccsm3-example.nc\nResolving www.unidata.ucar.edu (www.unidata.ucar.edu)... 128.117.149.20\nConnecting to www.unidata.ucar.edu (www.unidata.ucar.edu)|128.117.149.20|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 2767916 (2.6M) [application/x-netcdf]\nSaving to: ‘sresa1b_ncar_ccsm3-example.nc’\n\n 0K .......... .......... .......... .......... .......... 1% 703K 4s\n 50K .......... .......... .......... .......... .......... 3% 2.03M 2s\n 100K .......... .......... .......... .......... .......... 5% 1.02M 2s\n 150K .......... .......... .......... .......... .......... 7% 1.98M 2s\n 200K .......... .......... .......... .......... .......... 9% 2.05M 2s\n 250K .......... .......... .......... .......... .......... 11% 2.07M 2s\n 300K .......... .......... .......... .......... .......... 12% 2.03M 2s\n 350K .......... .......... .......... .......... .......... 14% 2.02M 2s\n 400K .......... .......... .......... .......... .......... 16% 129M 1s\n 450K .......... .......... .......... .......... .......... 18% 2.05M 1s\n 500K .......... .......... .......... .......... .......... 20% 229M 1s\n 550K .......... .......... .......... .......... .......... 22% 1.96M 1s\n 600K .......... .......... .......... .......... .......... 24% 90.5M 1s\n 650K .......... .......... .......... .......... .......... 25% 1.94M 1s\n 700K .......... .......... .......... .......... .......... 27% 124M 1s\n 750K .......... .......... .......... .......... .......... 29% 2.07M 1s\n 800K .......... .......... .......... .......... .......... 31% 24.9M 1s\n 850K .......... .......... .......... .......... .......... 33% 124M 1s\n 900K .......... .......... .......... .......... .......... 35% 2.24M 1s\n 950K .......... .......... .......... .......... .......... 36% 19.0M 1s\n 1000K .......... .......... .......... .......... .......... 38% 98.6M 1s\n 1050K .......... .......... .......... .......... .......... 40% 2.28M 1s\n 1100K .......... .......... .......... .......... .......... 42% 14.0M 1s\n 1150K .......... .......... .......... .......... .......... 44% 157M 1s\n 1200K .......... .......... .......... .......... .......... 46% 2.40M 1s\n 1250K .......... .......... .......... .......... .......... 48% 17.6M 0s\n 1300K .......... .......... .......... .......... .......... 49% 81.0M 0s\n 1350K .......... .......... .......... .......... .......... 51% 2.16M 0s\n 1400K .......... .......... .......... .......... .......... 53% 123M 0s\n 1450K .......... .......... .......... .......... .......... 55% 40.4M 0s\n 1500K .......... .......... .......... .......... .......... 57% 2.34M 0s\n 1550K .......... .......... .......... .......... .......... 59% 20.4M 0s\n 1600K .......... .......... .......... .......... .......... 61% 26.4M 0s\n 1650K .......... .......... .......... .......... .......... 62% 127M 0s\n 1700K .......... .......... .......... .......... .......... 64% 2.50M 0s\n 1750K .......... .......... .......... .......... .......... 66% 10.5M 0s\n 1800K .......... .......... .......... .......... .......... 68% 133M 0s\n 1850K .......... .......... .......... .......... .......... 70% 116M 0s\n 1900K .......... .......... .......... .......... .......... 72% 2.76M 0s\n 1950K .......... .......... .......... .......... .......... 73% 17.8M 0s\n 2000K .......... .......... .......... .......... .......... 75% 12.4M 0s\n 2050K .......... .......... .......... .......... .......... 77% 135M 0s\n 2100K .......... .......... .......... .......... .......... 79% 3.03M 0s\n 2150K .......... .......... .......... .......... .......... 81% 17.0M 0s\n 2200K .......... .......... .......... .......... .......... 83% 15.6M 0s\n 2250K .......... .......... .......... .......... .......... 85% 21.4M 0s\n 2300K .......... .......... .......... .......... .......... 86% 150M 0s\n 2350K .......... .......... .......... .......... .......... 88% 3.02M 0s\n 2400K .......... .......... .......... .......... .......... 90% 18.0M 0s\n 2450K .......... .......... .......... .......... .......... 92% 11.1M 0s\n 2500K .......... .......... .......... .......... .......... 94% 42.3M 0s\n 2550K .......... .......... .......... .......... .......... 96% 172M 0s\n 2600K .......... .......... .......... .......... .......... 98% 3.26M 0s\n 2650K .......... .......... .......... .......... .......... 99% 17.9M 0s\n 2700K ... 100% 33.4M=0.6s\n\n2023-11-21 16:12:05 (4.36 MB/s) - ‘sresa1b_ncar_ccsm3-example.nc’ saved [2767916/2767916]\n\ntotal 4.0M\ndrwxr-xr-x 2 root root 4.0K Nov 21 16:07 azure\ndrwxr-xr-x 1 root root 4.0K Nov 21 16:07 conf\ndrwxr-xr-x 3 root root 4.0K Nov 21 16:10 eventlogs\n-r-xr-xr-x 1 root root 2.7K Nov 21 16:07 hadoop_accessed_config.lst\ndrwxr-xr-x 2 root root 4.0K Nov 21 16:10 logs\n-r-xr-xr-x 1 root root 1.3M Nov 21 16:07 preload_class.lst\n-rw-r--r-- 1 root root 2.7M Sep 12 2012 sresa1b_ncar_ccsm3-example.nc\n" + ] + } + ], + "source": [ + "%sh \n", + "# - again, this is single node\n", + "# - can just download to the driver and start working with it\n", + "wget https://www.unidata.ucar.edu/software/netcdf/examples/sresa1b_ncar_ccsm3-example.nc\n", + "ls -lh" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2efd02b1-c112-4bed-b8f9-2e8ce415f762", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "\nDimensions: (lat: 128, lon: 256, bnds: 2, plev: 17, time: 1)\nCoordinates:\n * lat (lat) float32 -88.93 -87.54 -86.14 -84.74 ... 86.14 87.54 88.93\n * lon (lon) float32 0.0 1.406 2.812 4.219 ... 354.4 355.8 357.2 358.6\n * plev (plev) float64 1e+05 9.25e+04 8.5e+04 7e+04 ... 3e+03 2e+03 1e+03\n * time (time) object 2000-05-16 12:00:00\nDimensions without coordinates: bnds\nData variables:\n area (lat, lon) float32 ...\n lat_bnds (lat, bnds) float64 ...\n lon_bnds (lon, bnds) float64 ...\n msk_rgn (lat, lon) int32 ...\n pr (time, lat, lon) float32 ...\n tas (time, lat, lon) float32 ...\n time_bnds (time, bnds) object ...\n ua (time, plev, lat, lon) float32 ...\nAttributes: (12/18)\n CVS_Id: $Id$\n creation_date: \n prg_ID: Source file unknown Version unknown Date unknown\n cmd_ln: bds -x 256 -y 128 -m 23 -o /data/zender/data/dst_T85.nc\n history: Tue Oct 25 15:08:51 2005: ncks -O -x -v va -m sresa1...\n table_id: Table A1\n ... ...\n references: Collins, W.D., et al., 2005:\\n The Community Climate...\n acknowledgment: Any use of CCSM data should acknowledge the contrib...\n realization: 1\n experiment_id: 720 ppm stabilization experiment (SRESA1B)\n comment: This simulation was initiated from year 2000 of \\n C...\n model_name_english: NCAR CCSM\n" + ] + } + ], + "source": [ + "ds = xr.open_dataset(\"sresa1b_ncar_ccsm3-example.nc\")\n", + "print(ds)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "549c000f-3860-4a0a-9ba2-169faeac58c8", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "

\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' (time: 1, lat: 128, lon: 256)>\n",
+       "[32768 values with dtype=float32]\n",
+       "Coordinates:\n",
+       "  * lat      (lat) float32 -88.93 -87.54 -86.14 -84.74 ... 86.14 87.54 88.93\n",
+       "  * lon      (lon) float32 0.0 1.406 2.812 4.219 ... 354.4 355.8 357.2 358.6\n",
+       "  * time     (time) object 2000-05-16 12:00:00\n",
+       "Attributes:\n",
+       "    comment:         Created using NCL code CCSM_atmm_2cf.ncl on\\n machine ea...\n",
+       "    cell_methods:    time: mean (interval: 1 month)\n",
+       "    history:         Added height coordinate\n",
+       "    original_units:  K\n",
+       "    original_name:   TREFHT\n",
+       "    standard_name:   air_temperature\n",
+       "    units:           K\n",
+       "    long_name:       air_temperature\n",
+       "    cell_method:     time: mean
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
<xarray.DataArray 'tas' (time: 1, lat: 128, lon: 256)>\n[32768 values with dtype=float32]\nCoordinates:\n  * lat      (lat) float32 -88.93 -87.54 -86.14 -84.74 ... 86.14 87.54 88.93\n  * lon      (lon) float32 0.0 1.406 2.812 4.219 ... 354.4 355.8 357.2 358.6\n  * time     (time) object 2000-05-16 12:00:00\nAttributes:\n    comment:         Created using NCL code CCSM_atmm_2cf.ncl on\\n machine ea...\n    cell_methods:    time: mean (interval: 1 month)\n    history:         Added height coordinate\n    original_units:  K\n    original_name:   TREFHT\n    standard_name:   air_temperature\n    units:           K\n    long_name:       air_temperature\n    cell_method:     time: mean
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "ds.tas" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "45a3ebde-3845-4d5c-9d02-a52b66ce1210", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### 3. Plot a Variable\n", + "\n", + "> In this case air temperature ('tas') in Kelvins." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4bb705bd-236d-401f-a8db-a14dd1934c90", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[7]: " + ] + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n" + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "data:image/png;base64,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\n", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "image" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "# - Example-1: a simple plot\n", + "ax = plt.axes(projection=ccrs.PlateCarree()) # equidistance\n", + "ax.coastlines() \n", + "ds.tas.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c0c48f6c-d63d-418b-a89d-6e8860a185df", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n" + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "data:image/png;base64,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\n", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "image" + } + }, + "output_type": "display_data" + } + ], + "source": [ + " # Example-2\n", + " # - pick the center\n", + " # - handle data and plot projection\n", + " p = ds.tas.plot(\n", + " transform=ccrs.PlateCarree(), # data's projection (equidistance)\n", + " col=\"time\", # time\n", + " col_wrap=1, # multiplot settings\n", + " aspect=ds.dims[\"lon\"] / ds.dims[\"lat\"], # for a sensible figsize\n", + " subplot_kws={ # plot projection (conic)\n", + " \"projection\": \n", + " ccrs.LambertConformal(\n", + " central_longitude=-95, central_latitude=45\n", + " )},\n", + ")\n", + "\n", + "# set options\n", + "for ax in p.axs.flat:\n", + " ax.coastlines()\n", + " ax.set_extent([-160, -30, 5, 75])" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "3efd3a2a-2653-49cf-a7a2-53643390bd8b", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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1wOjgLRaGa9La9aQCZwP/B3IASbWrMfhT5jGFbuBn4BHbNv+uoXPrcO27fXADZhAKwOzV+immocDMW3SM4GDwK3AObZtN5bdAtPRsAS4GPhjzZ8vr3mtbOAs4E7MvqR7gLNt2z7YyLnuq3n+PcBlNX++r+axazBB9Z9rZw0dT7Qs69IjMojPA58Da4F1mDbyz9esqxzTdv0KIBe4qub7LHf2uURExLDqNgMSERERERGRtlIGS0RERERExEkUYImIiIiIiDiJAiwREREREREnUYAlIiIiIiLiJAHuXkBLJCQk2L1793b3MkRERERERABYsWLFQdu2E4+83ysCrN69e7N8+XJ3L0NERERERAQAy7J2N3S/SgRFREREREScRAGWiIiIiIiIkyjAEhERERERcRKXBViWZYVYlrXUsqzVlmWttyzrLzX397Esa4llWdssy3rPsqwgV61BRERERESkI7kyg1UGHG/b9khgFHCqZVmTgIeBx23b7g/kAFe7cA0iIiIiIiIdxmUBlm0U1vw1sObLBo4H/ldz/2vAOa5ag4iIiIiISEdy6R4sy7L8LctaBWQA3wHbgVzbtitrDtkHpDTy3Ossy1puWdbyzMxMVy5TRERERETEKVwaYNm2XWXb9iigOzABGNyK575g2/Y427bHJSbWm98lIiIiIiLicTqki6Bt27nAD8BkIMayLMeA4+5AakesQURERERExNVc2UUw0bKsmJo/hwInARsxgdYFNYddCXzqqjWIiIiIiIh0pIDmD2mzrsBrlmX5YwK5923bnm1Z1gbgXcuy/gb8ArzswjWIiIiIiIh0GJcFWLZtrwFGN3D/Dsx+LBEREREREZ/SIXuwREREREREOgMFWCIiIiIiIk6iAEtERERERMRJFGCJiIiIiIg4iQIsERERERERJ1GAJSIiIiIi4iQKsERERERERJxEAZaIiIiIiIiTKMASERERERFxEgVYIiIiIiIiTqIAS0RERERExEkUYIlIXbYN1dXuXoWIiIiIVwpw9wJExAMUpMHyVyB1OaSuhMBQuPgd6DrS3SsTERER8SrKYIl0dnuWwPNTYd4/TaA1eAZYfvDqGbB7kbtXJyIinc2GT+HDa9y9CpE2U4Al0pktfwVenQGBYXDDArhxAZz9FFz1NUQkwxvnwtY5HbumVW/D5q869jVFRMQzlOTA57fD2g9U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REREpMMpwJL2SRkLpz0M2+bAR9dAXF+4/mcYcKK7VyYiIiIi0uECXHViy7J6AK8DyYANvGDb9r8ty4oD3gN6A7uAi2zbznHVOqQDjP01lORAYDhMuFbdA0VERESk03JlBqsS+J1t20OBScDNlmUNBe4BvrdtewDwfc3fxZtZFhz7O5h0g4IrEREREenUXBZg2bZ9wLbtlTV/LgA2AinA2YCjt/drwDmuWoOIiIiIiEhH6pA9WJZl9QZGA0uAZNu2D9Q8lIYpIWzoOddZlrXcsqzlmZmZHbFMERERERGRdnF5gGVZVgTwIXC7bdv5tR+zbdvG7M+qx7btF2zbHmfb9rjExERXL1NERERERKTdXBpgWZYViAmu3rJt+6Oau9Mty+pa83hXIMOVaxAREREREekoLguwLMuygJeBjbZtP1broc+AK2v+fCXwqavWICIiIiIi0pFc1qYdOBq4HFhrWdaqmvvuBR4C3rcs62pgN3CRC9cgIiIiIiLSYVwWYNm2PR+wGnn4BFe9roiIiIiIiLt0SBdBERERERGRzkABloiIiIiIiJMowBIREREREXESBVgiIiIiIiJOogBLRERERETESRRgiYiIiIiIOIkCLBERERERESdRgCUiIiIiIuIkCrBEREREREScRAGWiIiIiIiIkyjAEhERERERcRIFWCIiIiIiIk6iAEtERERERMRJFGCJiIiIiIg4iQIsERERERERJ1GAJSIiIiIi4iQKsERERERERJxEAZaIiIiIiIiTKMASERERERFxEgVY4hTL0pYxZ/ccyqrK3L0UERERERG3CXD3AsQ33Df/PvYX7SciMIITep7ADSNvoHtkd3cvS0RERESkQynAknazbZuMkgym9ZhGTHAMs7fPJjIokrsn3O3upYmIiIiIdCgFWNJu+eX5VFZXMqHLBC4fejkbsjawr2Cfu5clIiIiItLhtAdL2u1gyUEAEkITAOge0Z19hQqwRERERKTzUYAl7VYvwIrszr6Cfdi27c5liYiIiIh0OAVY0m6OACs+NB6AlIgUSqtKySrNcueyREREREQ6nAIsabeGMliA9mGJiIiISKejAEvaLaskiyC/ICIDI4FaAZb2YYmIiIhIJ6MAS9otsySThNAELMsCTIkgKIMlIiIiIp2PAixp0J78PfxjyT8orSxt9tiDJQcPlQcCBPsHkxSapABL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N97YqrJLIYQQoi0aR7Ba06o9vzJfGlwIIY7LbhcaPh6tNQ899BBLlizBYDCQkZFBTk6ORY69dOlSpk+fjru7OwBnnXUWYB41W758Oeeff37Tvo2jN8ezZMkSvvvuOwBOP/10/Pz8APNI0Lp16xg2bBgAVVVVBAcHs3r1ak466ST8/f0BOP/889m9e3fT8c4//3wcHByOG88ff/zB9u3bm7aXlpZSXl7OmDFjuOuuu7jkkks499xziYiIaDbu4cOHNz2elJREamoqXl5exMTEEB8fD8AVV1zBW2+9xR133AFw3MQV4NxzzwVg6NChTb8TIYQQoqP4ufrhqBxbPYIl86+EEMfTJROsWbNmkZeXx7p163ByciI6OrrVi9I6OjpiMpmavj/R800mE76+vmzcuLEtIR9Fa80VV1zBs88+e9j2H3744bjP8/DwOGE8JpOJlStX4urqetj2Bx54gNNPP525c+cyZswY5s+fT9++fY95HhcXl6avHRwcWjTnqzG25jQes6XHE0IIIdrDoAwEuge2eg5WnF9cB0YlhLB3XbJEsKSkhODgYJycnPjrr79IS0sDwMvLq9l5RUc+Fh0dzfr16wFYv349KSkpAIwfP54ffviBqqoqysrK+PnnnwHw9vYmJiaGr7/+GjAnSJs2bTphrOPHj+d///sfAL/99htFRUUATJw4kW+++YbcXPObfmFhIWlpaQwbNozFixdTVFREfX0933777TGPe7x4Jk+ezBtvvNG0b2MStm/fPhITE7n//vsZNmxYq+dB9enTh9TUVPbu3QvA559/zkknnXTMfY93LYQQQojOEuwW3OISwTpjHXlVeYR5hHVwVEIIe9YlE6xLLrmEtWvXkpiYyGeffdY0ChMQEMCYMWMYMGAA995772HPOfnkk9m+fXtTk4sZM2ZQWFhIQkICb775ZlPZ25AhQ7jwwgsZNGgQ06ZNayrhA/PI2UcffcSgQYNISEhoaq5xPI8//jhLliwhISGB7777jqioKAD69+/PU089xeTJkxk4cCCTJk0iKyuL8PBwHnroIYYPH86YMWOIjo7Gx8fnmMduLp7XX3+dtWvXMnDgQPr378+7774LwKuvvsqAAQMYOHAgTk5OTJs2rVW/d1dXVz755BPOP/98EhMTMRgM3HDDDcfct7Ehx6FNLoQQQojOFugW2OISwZzKHDRaEiwh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2Wd58803efLJJ5k/fz5JSUksXLiQffv2MWnSJMaNG4e3tzeRkZFs3ryZzMxMzjnnHM477zz8/f1555132LBhA7Gxsdx66608++yzPPLIIxb6aYUQQojONy1mGk+vepo3N7xJb9/eDAsdZu2QhBB2xBpNLoYDe7XW+7XWtcAc4GwrxGEzwsPDOXjwYNP36enphIeHH3PfOXPmcPHFF5/wueHh4aSnp5/wmJdccgnffvstAJ988gnnnnsuSil69+5NTEwMO3fuPGz/Hj16MGDAAJYuXcrGjRsB6NWrF0opLrjgApYvX976X4AQQghhQ07teSoGZSCvKo9L+13aVEovhBAtYY0EKxw4eMj36Q3bDqOUuk4ptVYptTYvL6/TgrOGYcOGsWfPHlJSUqitrWXOnDmcddZZR+23c+dOioqKGDVqVNO2KVOm8Pvvv1NUVERRURG///47U6ZMISwsDG9vb1auXInWms8++4yzzzbnsXv27Gl6/o8//kjfvn0BiIqK4s8//wQgJyeHXbt2ERsbS3p6OlVVVQAUFRXx999/06dPH8LDw9m+fTuN12fBggX069evY35JQgghRCcJdAtkROgIfF18OT32dGuHI4SwMzbb5EJr/T7wPkBycrK2cjgdytHRkTfffJMpU6ZgNBq5+uqrSUhI4LHHHiM5Obkp2ZozZw4XXXTRYXfS/P39efTRRxk2zFy+8NhjjzU1vHj77be58sorqaqqYtq0aUybNg2ABx54gF27dmEwGOjZs2dT2/VHH32UK6+8ksTERLTWPP/88wQGBrJgwQLuvvtulFJorbnnnntITEwE4PHHH2f8+PE4OTnRs2dPPv300876tQkhhBAd5umxT1NWV4aro6u1QxFC2BmldefmLkqpUcATWuspDd8/CKC1fra55yQnJ+u1a9cetm3Hjh0yWtLNyd+AEEIIIYSwFqXUOq118pHbrVEiuAaIU0rFKKWcgYuAn6wQhxBCCCGEEEJYVKeXCGqt65VStwDzMbdp/1hrva2z4xBCCCGEEEIIS7PKHCyt9VxgrjXOLYQQQgghhBAdxRolgkIIIYQQQgjRJUmCJYQQQgghhBAWIgmWEEIIIYQQQliIJFg2wmg0MnjwYM444wwArrzySmJiYkhKSiIpKYmNGzce83kODg5N+xy6OPEll1xCnz59GDBgAFdffTV1dXWHPW/NmjU4OjryzTffNG277777SEhIoF+/ftx22200tvCfMGECffr0aTpPbm6uhX96IYQQQgghugabXWi4u3nttdfo168fpaWlTdteeOEFzjvvvOM+z83N7ZjJ1yWXXMIXX3wBwL/+9S8+/PBDbrzxRsCczN1///1Mnjy5af/ly5ezbNkyNm/eDMDYsWNZvHgxEyZMAGDWrFkkJx/V5l8IIYQQQghxCEmwDvH86ufZWbjTosfs69+X+4fff9x90tPT+fXXX3n44Yd5+eWXLXLe0047renr4cOHk56e3vT9G2+8wYwZM1izZk3TNqUU1dXV1NbWorWmrq6OkJAQi8QihBBCCCFEdyElgjbgjjvu4L///S8Gw+GX4+GHH2bgwIHceeed1NTUHPO51dXVJCcnM3LkSH744YejHq+rq+Pzzz9n6tSpAGRkZPD99983jWY1GjVqFCeffDJhYWGEhYUxZcoU+vXr1/T4VVddRVJSEv/5z3+aSgeFEEIIIYQQh5MRrEOcaKSpI/zyyy8EBwczdOhQFi1a1LT92WefJTQ0lNraWq677jqef/55HnvssaOen5aWRnh4OPv37+eUU04hMTGRXr16NT1+0003MX78eMaNGweYk7nnn3/+qGRu79697Nixo2mka9KkSSxdupRx48Yxa9YswsPDKSsrY8aMGXz++edcfvnlHfDbEEIIIYQQwr5JgmVly5Yt46effmLu3LlUV1dTWlrKpZde2jR/ysXFhauuuooXX3zxmM8PDw8HIDY2lgkTJrBhw4amBOvJJ58kLy+P9957r2n/tWvXctFFFwGQn5/P3LlzcXR0ZM+ePYwcORJPT08Apk2bxooVKxg3blzTOby8vPjXv/7F6tWrJcESQgghhBDiGKRE0MqeffZZ0tPTSU1NZc6cOZxyyil88cUXZGVlAaC15ocffmDAgAFHPbeoqKipdDA/P59ly5bRv39/AD788EPmz5/P7NmzDxutSklJITU1ldTUVM477zzefvttzjnnHKKioli8eDH19fXU1dWxePFi+vXrR319Pfn5+YC53PCXX345ZixCCCGEEEIIGcGyWZdccgl5eXlorUlKSuLdd98FzCNQ7777Lh9++CE7duzg+uuvx2AwYDKZeOCBB5oSrBtuuIGePXsyatQoAM4999xjlhg2Ou+881i4cCGJiYkopZg6dSpnnnkmFRUV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\n" + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA1gAAAKACAYAAACBhdleAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOzddZxc5fXH8c9dd5ckG3ch7gFCgkNwS/AW90JLgVL4taUClCKluBT34sFDgBA34u7JJitZd72/P56dZDfruzM7st/367WvSWbu3Hl2CTtz7jnPOZZt24iIiIiIiEj7+bl7ASIiIiIiIr5CAZaIiIiIiIiTKMASERERERFxEgVYIiIiIiIiTqIAS0RERERExEkUYImIiIiIiDiJAiwRES9iWVZPy7IKLcvyd/daREREpD4FWCIiHsyyrF2WZZ3o+Ltt23ts246wbbvKnetqjGVZwZZlvWxZ1m7Lsgosy1plWdZpRxxzgmVZmyzLKrYs6wfLsnod8fz/WpaVb1lWmmVZv23pcxtZzyU1aymyLOsTy7Liaj32o2VZpTUBa6FlWZubOddfLctaa1lWpWVZf27g8UTLst62LCvPsqwcy7LeauJct1iWtdyyrDLLsl494rFJlmV9Z1lWtmVZmZZlfWBZVtcmzmVZlvWwZVlZNV8PW5Zl1Xp8lGVZK2p+ZissyxrVEecSEemsFGCJiIgzBQB7geOAaOA+4H3LsnoDWJaVAHwE3A/EAcuB92o9/8/AAKAXMB24y7KsU1v43DosyxoGPA9cDiQDxcAzRxx2S03AGmHb9qBmvrdtwF3AF408/hGQBvQEkoB/NXGu/cDfgP828Fgs8ALQG/NzKABeaeJc1wHnACOBEcCZwPUAlmUFAZ8Cb9ac9zXg05r7XX0uEZFOSQGWiIiHsizrDcyH9c9rMix3WZbV27Is27KsgJpjfrQs62+WZS2sOeZzy7LiLct6qyYLtMwR3NQcP7hWdmSzZVkXOXPNtm0X2bb9Z9u2d9m2XW3b9mxgJzC25pDzgPW2bX9g23YpJqAaaVnW4JrHrwT+att2jm3bG4EXgV+18LlHuhT43LbtebZtF2ICs/Msy4ps4/f2mm3bX2ECnjosyzoZ6AH83rbtPNu2K2zb/qWJc31k2/YnQFYDj31V8z3m27ZdDDwFHN3E0q4EHrVte59t26nAoxz+mU3DBL1P2LZdZtv2k4AFHN8B5xIR6ZQUYImIeCjbti8H9gBn1mRY/tnIobMwWZoUoB+wCJPxiAM2An8CsCwrHPgOeBuTYZkFPGNZ1tCGTmpZ1jOWZeU28rWmJd+DZVnJwEBgfc1dw4DVtb7HImA7MMyyrFiga+3Ha/48rLnnNvLyRx6/HSivWY/Dg5ZlHbQsa4FlWdNa8j01YhKwGXitprRumWVZx7XjfLVN5fDPz1H2WPvnX+f7pP7PbI1t23atx9c4HnfmuURExFCAJSLi/V6xbXu7bdt5wFfAdtu259i2XQl8AIyuOe4MYJdt26/Ytl1Zk2H5ELiwoZPatn2TbdsxjXyNaG5RlmUFAm8Br9m2vanm7ggg74hD84DImsc44nHHY809tyHNHX830BcTmL6AyRT2a+Jbakp34GTgB6ALJvPzaU1ZY5tZljUC+D/g9477bNt++4if/5HfZx4QUbN3qsmfgTPPJSIihgIsERHvl17rzyUN/N0RuPQCJtbORGHK6Lo4e0GWZfkBb2AyRrfUeqgQiDri8ChM2V1hrb8f+ViTz7Us69hazSrWN3c8gG3bS2zbLqgpd3sNWACcXrP+9bXOd2wLvuUSTPD6ck154LuYvWhNlfY1ybKs/piA+Te2bf/cxKFHfp9RQGFNpqnJn4GLzyUi0ikpwBIR8Wx284e02F7gpyMyURG2bd/Y0MGWZT1XK8g48mt9Q8+peZ4FvIxpLHG+bdsVtR5ej2mg4Dg2HFPWuN627RzgQO3Ha/68vgXP/blWs4phjRzfFwgGtjSydBuzpwjbtofVOl9TwY3DGur/t2rzfzvLdEecg9mP9kYzh9f5Pqn/MxtRuxMgpnlFY//9nHkuEZFOSQGWiIhnS8eUsTnDbGCgZVmXW5YVWPM13rKsIQ0dbNv2DbWCjCO/mtp38ywwBLN3rOSIxz4GjrIs63zLskIw5W9rapUQvg7cZ1lWbE3zimuBV1v43CO9BZxZk90KBx4APrJtu8CyrBjLsk6xLCvEsqwAy7Iuxex1+rqxb6rm5xWCee8MqHmuYx7Zx0CsZVlXWpblb1nWBZiywQWNnCug5lz+gL9jHTWPpQBzgads236usfXU8jrwW8uyUizL6gb8rtbP7EegCrjNMi3wHdnEuR1wLhGRTkkBloiIZ3sQE3DkWpZ1Z3tOZNt2AWaf0CxMm/A04GFMVscpajIv1wOjgLRaGa9La9aQCZwP/B3IASbWrMfhT5jGFbuBn4BHbNv+uoXPrcO27fXADZhAKwOzV+immocDMW3SM4GDwK3AObZtN5bdAtPRsAS4GPhjzZ8vr3mtbOAs4E7MvqR7gLNt2z7YyLnuq3n+PcBlNX++r+axazBB9Z9rZw0dT7Qs69IjMojPA58Da4F1mDbyz9esqxzTdv0KIBe4qub7LHf2uURExLDqNgMSERERERGRtlIGS0RERERExEkUYImIiIiIiDiJAiwREREREREnUYAlIiIiIiLiJAHuXkBLJCQk2L1793b3MkRERERERABYsWLFQdu2E4+83ysCrN69e7N8+XJ3L0NERERERAQAy7J2N3S/SgRFREREREScRAGWiIiIiIiIkyjAEhERERERcRKXBViWZYVYlrXUsqzVlmWttyzrLzX397Esa4llWdssy3rPsqwgV61BRERERESkI7kyg1UGHG/b9khgFHCqZVmTgIeBx23b7g/kAFe7cA0iIiIiIiIdxmUBlm0U1vw1sObLBo4H/ldz/2vAOa5ag4iIiIiISEdy6R4sy7L8LctaBWQA3wHbgVzbtitrDtkHpDTy3Ossy1puWdbyzMxMVy5TRERERETEKVwaYNm2XWXb9iigOzABGNyK575g2/Y427bHJSbWm98lIiIiIiLicTqki6Bt27nAD8BkIMayLMeA4+5AakesQURERERExNVc2UUw0bKsmJo/hwInARsxgdYFNYddCXzqqjWIiIiIiIh0pIDmD2mzrsBrlmX5YwK5923bnm1Z1gbgXcuy/gb8ArzswjWIiIiIiIh0GJcFWLZtrwFGN3D/Dsx+LBEREREREZ/SIXuwREREREREOgMFWCIiIiIiIk6iAEtERERERMRJFGCJiIiIiIg4iQIsERERERERJ1GAJSIiIiIi4iQKsERERERERJxEAZaIiIiIiIiTKMASERERERFxEgVYIiIiIiIiTqIAS0RERERExEkUYIlIXbYN1dXuXoWIiIiIVwpw9wJExAMUpMHyVyB1OaSuhMBQuPgd6DrS3SsTERER8SrKYIl0dnuWwPNTYd4/TaA1eAZYfvDqGbB7kbtXJyIinc2GT+HDa9y9CpE2U4Al0pktfwVenQGBYXDDArhxAZz9FFz1NUQkwxvnwtY5HbumVW/D5q869jVFRMQzlOTA57fD2g9U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REREpMMpwJL2SRkLpz0M2+bAR9dAXF+4/mcYcKK7VyYiIiIi0uECXHViy7J6AK8DyYANvGDb9r8ty4oD3gN6A7uAi2zbznHVOqQDjP01lORAYDhMuFbdA0VERESk03JlBqsS+J1t20OBScDNlmUNBe4BvrdtewDwfc3fxZtZFhz7O5h0g4IrEREREenUXBZg2bZ9wLbtlTV/LgA2AinA2YCjt/drwDmuWoOIiIiIiEhH6pA9WJZl9QZGA0uAZNu2D9Q8lIYpIWzoOddZlrXcsqzlmZmZHbFMERERERGRdnF5gGVZVgTwIXC7bdv5tR+zbdvG7M+qx7btF2zbHmfb9rjExERXL1NERERERKTdXBpgWZYViAmu3rJt+6Oau9Mty+pa83hXIMOVaxAREREREekoLguwLMuygJeBjbZtP1broc+AK2v+fCXwqavWICIiIiIi0pFc1qYdOBq4HFhrWdaqmvvuBR4C3rcs62pgN3CRC9cgIiIiIiLSYVwWYNm2PR+wGnn4BFe9roiIiIiIiLt0SBdBERERERGRzkABloiIiIiIiJMowBIREREREXESBVgiIiIiIiJOogBLRERERETESRRgiYiIiIiIOIkCLBERERERESdRgCUiIiIiIuIkCrBEREREREScRAGWiIiIiIiIkyjAEhERERERcRIFWCIiIiIiIk6iAEtERERERMRJFGCJiIiIiIg4iQIsERERERERJ1GAJSIiIiIi4iQKsERERERERJxEAZaIiIiIiIiTKMASERERERFxEgVY4hTL0pYxZ/ccyqrK3L0UERERERG3CXD3AsQ33Df/PvYX7SciMIITep7ADSNvoHtkd3cvS0RERESkQynAknazbZuMkgym9ZhGTHAMs7fPJjIokrsn3O3upYmIiIiIdCgFWNJu+eX5VFZXMqHLBC4fejkbsjawr2Cfu5clIiIiItLhtAdL2u1gyUEAEkITAOge0Z19hQqwRERERKTzUYAl7VYvwIrszr6Cfdi27c5liYiIiIh0OAVY0m6OACs+NB6AlIgUSqtKySrNcueyREREREQ6nAIsabeGMliA9mGJiIiISKejAEvaLaskiyC/ICIDI4FaAZb2YYmIiIhIJ6MAS9otsySThNAELMsCTIkgKIMlIiIiIp2PAixp0J78PfxjyT8orSxt9tiDJQcPlQcCBPsHkxSapABL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N97YqrJLIYQQoi0aR7Ba06o9vzJfGlwIIY7LbhcaPh6tNQ899BBLlizBYDCQkZFBTk6ORY69dOlSpk+fjru7OwBnnXUWYB41W758Oeeff37Tvo2jN8ezZMkSvvvuOwBOP/10/Pz8APNI0Lp16xg2bBgAVVVVBAcHs3r1ak466ST8/f0BOP/889m9e3fT8c4//3wcHByOG88ff/zB9u3bm7aXlpZSXl7OmDFjuOuuu7jkkks499xziYiIaDbu4cOHNz2elJREamoqXl5exMTEEB8fD8AVV1zBW2+9xR133AFw3MQV4NxzzwVg6NChTb8TIYQQoqP4ufrhqBxbPYIl86+EEMfTJROsWbNmkZeXx7p163ByciI6OrrVi9I6OjpiMpmavj/R800mE76+vmzcuLEtIR9Fa80VV1zBs88+e9j2H3744bjP8/DwOGE8JpOJlStX4urqetj2Bx54gNNPP525c+cyZswY5s+fT9++fY95HhcXl6avHRwcWjTnqzG25jQes6XHE0IIIdrDoAwEuge2eg5WnF9cB0YlhLB3XbJEsKSkhODgYJycnPjrr79IS0sDwMvLq9l5RUc+Fh0dzfr16wFYv349KSkpAIwfP54ffviBqqoqysrK+PnnnwHw9vYmJiaGr7/+GjAnSJs2bTphrOPHj+d///sfAL/99htFRUUATJw4kW+++YbcXPObfmFhIWlpaQwbNozFixdTVFREfX0933777TGPe7x4Jk+ezBtvvNG0b2MStm/fPhITE7n//vsZNmxYq+dB9enTh9TUVPbu3QvA559/zkknnXTMfY93LYQQQojOEuwW3OISwTpjHXlVeYR5hHVwVEIIe9YlE6xLLrmEtWvXkpiYyGeffdY0ChMQEMCYMWMYMGAA995772HPOfnkk9m+fXtTk4sZM2ZQWFhIQkICb775ZlPZ25AhQ7jwwgsZNGgQ06ZNayrhA/PI2UcffcSgQYNISEhoaq5xPI8//jhLliwhISGB7777jqioKAD69+/PU089xeTJkxk4cCCTJk0iKyuL8PBwHnroIYYPH86YMWOIjo7Gx8fnmMduLp7XX3+dtWvXMnDgQPr378+7774LwKuvvsqAAQMYOHAgTk5OTJs2rVW/d1dXVz755BPOP/98EhMTMRgM3HDDDcfct7Ehx6FNLoQQQojOFugW2OISwZzKHDRaEiwh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2Wd58803efLJJ5k/fz5JSUksXLiQffv2MWnSJMaNG4e3tzeRkZFs3ryZzMxMzjnnHM477zz8/f1555132LBhA7Gxsdx66608++yzPPLIIxb6aYUQQojONy1mGk+vepo3N7xJb9/eDAsdZu2QhBB2xBpNLoYDe7XW+7XWtcAc4GwrxGEzwsPDOXjwYNP36enphIeHH3PfOXPmcPHFF5/wueHh4aSnp5/wmJdccgnffvstAJ988gnnnnsuSil69+5NTEwMO3fuPGz/Hj16MGDAAJYuXcrGjRsB6NWrF0opLrjgApYvX976X4AQQghhQ07teSoGZSCvKo9L+13aVEovhBAtYY0EKxw4eMj36Q3bDqOUuk4ptVYptTYvL6/TgrOGYcOGsWfPHlJSUqitrWXOnDmcddZZR+23c+dOioqKGDVqVNO2KVOm8Pvvv1NUVERRURG///47U6ZMISwsDG9vb1auXInWms8++4yzzzbnsXv27Gl6/o8//kjfvn0BiIqK4s8//wQgJyeHXbt2ERsbS3p6OlVVVQAUFRXx999/06dPH8LDw9m+fTuN12fBggX069evY35JQgghRCcJdAtkROgIfF18OT32dGuHI4SwMzbb5EJr/T7wPkBycrK2cjgdytHRkTfffJMpU6ZgNBq5+uqrSUhI4LHHHiM5Obkp2ZozZw4XXXTRYXfS/P39efTRRxk2zFy+8NhjjzU1vHj77be58sorqaqqYtq0aUybNg2ABx54gF27dmEwGOjZs2dT2/VHH32UK6+8ksTERLTWPP/88wQGBrJgwQLuvvtulFJorbnnnntITEwE4PHHH2f8+PE4OTnRs2dPPv300876tQkhhBAd5umxT1NWV4aro6u1QxFC2BmldefmLkqpUcATWuspDd8/CKC1fra55yQnJ+u1a9cetm3Hjh0yWtLNyd+AEEIIIYSwFqXUOq118pHbrVEiuAaIU0rFKKWcgYuAn6wQhxBCCCGEEEJYVKeXCGqt65VStwDzMbdp/1hrva2z4xBCCCGEEEIIS7PKHCyt9VxgrjXOLYQQQgghhBAdxRolgkIIIYQQQgjRJUmCJYQQQgghhBAWIgmWEEIIIYQQQliIJFg2wmg0MnjwYM444wwArrzySmJiYkhKSiIpKYmNGzce83kODg5N+xy6OPEll1xCnz59GDBgAFdffTV1dXWHPW/NmjU4OjryzTffNG277777SEhIoF+/ftx22200tvCfMGECffr0aTpPbm6uhX96IYQQQgghugabXWi4u3nttdfo168fpaWlTdteeOEFzjvvvOM+z83N7ZjJ1yWXXMIXX3wBwL/+9S8+/PBDbrzxRsCczN1///1Mnjy5af/ly5ezbNkyNm/eDMDYsWNZvHgxEyZMAGDWrFkkJx/V5l8IIYQQQghxCEmwDvH86ufZWbjTosfs69+X+4fff9x90tPT+fXXX3n44Yd5+eWXLXLe0047renr4cOHk56e3vT9G2+8wYwZM1izZk3TNqUU1dXV1NbWorWmrq6OkJAQi8QihBBCCCFEdyElgjbgjjvu4L///S8Gw+GX4+GHH2bgwIHceeed1NTUHPO51dXVJCcnM3LkSH744YejHq+rq+Pzzz9n6tSpAGRkZPD99983jWY1GjVqFCeffDJhYWGEhYUxZcoU+vXr1/T4VVddRVJSEv/5z3+aSgeFEEIIIYQQh5MRrEOcaKSpI/zyyy8EBwczdOhQFi1a1LT92WefJTQ0lNraWq677jqef/55HnvssaOen5aWRnh4OPv37+eUU04hMTGRXr16NT1+0003MX78eMaNGweYk7nnn3/+qGRu79697Nixo2mka9KkSSxdupRx48Yxa9YswsPDKSsrY8aMGXz++edcfvnlHfDbEEIIIYQQwr5JgmVly5Yt46effmLu3LlUV1dTWlrKpZde2jR/ysXFhauuuooXX3zxmM8PDw8HIDY2lgkTJrBhw4amBOvJJ58kLy+P9957r2n/tWvXctFFFwGQn5/P3LlzcXR0ZM+ePYwcORJPT08Apk2bxooVKxg3blzTOby8vPjXv/7F6tWrJcESQgghhBDiGKRE0MqeffZZ0tPTSU1NZc6cOZxyyil88cUXZGVlAaC15ocffmDAgAFHPbeoqKipdDA/P59ly5bRv39/AD788EPmz5/P7NmzDxutSklJITU1ldTUVM477zzefvttzjnnHKKioli8eDH19fXU1dWxePFi+vXrR319Pfn5+YC53PCXX345ZixCCCGEEEIIGcGyWZdccgl5eXlorUlKSuLdd98FzCNQ7777Lh9++CE7duzg+uuvx2AwYDKZeOCBB5oSrBtuuIGePXsyatQoAM4999xjlhg2Ou+881i4cCGJiYkopZg6dSpnnnkmFRUV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\n", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "image" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "# Example-3: Kelvin to Celsius\n", + "airc = ds.tas - 273.15 \n", + "\n", + "# Figure\n", + "# - can easily adjust this for multipe subplots\n", + "f, ax1 = plt.subplots(1, 1, figsize=(12, 9), sharey=True)\n", + "\n", + "# Selected latitude indices\n", + "# - there are 128 lats, so 64 is around equator\n", + "isel_lats = [32, 64, 96]\n", + "\n", + "# Temperature vs longitude plot \n", + "# - lons are 0..360\n", + "# - we are filtering to just 1 day (in this case that's all there is)\n", + "airc.isel(time=0, lat=isel_lats).plot.line(ax=ax1, hue=\"lat\")\n", + "ax1.set_ylabel(\"°C\")\n", + "\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "384a07a4-8046-4e76-abb2-2e1ad8a1b33a", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' ()>\n",
+       "array(67.66379, dtype=float32)\n",
+       "Coordinates:\n",
+       "    lat      float32 -25.91\n",
+       "    lon      float32 0.0\n",
+       "    time     object 2000-05-16 12:00:00
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
<xarray.DataArray 'tas' ()>\narray(67.66379, dtype=float32)\nCoordinates:\n    lat      float32 -25.91\n    lon      float32 0.0\n    time     object 2000-05-16 12:00:00
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "# convert air temp from kelvins to fahrenheit (for fun)\n", + "airf = (ds.tas * 1.8) - 459.67\n", + "airf[0][45][0] # <- here is a reading at time[0], lat[45], lon[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "0a560e37-48cc-425b-8afb-b72e2fe52d28", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### 4. Output to Pandas and Spark DataFrames\n", + "\n", + "> We see that each variable and coordinate in the Dataset is now a column in the DataFrame, with the exception of indexes which are in the index. To convert the DataFrame to any other convenient representation, use DataFrame methods like `reset_index()`, `stack()` and `unstack()`.\n", + "\n", + "_Note: We can save the Xarray Dataset to various formats, just focusing on Pandas for brevity._" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "a92ada6a-438d-427b-984b-38873dc15a10", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__First let's convert time to DateTime Index (from CFTimeIndex)__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6c50c9fd-cac6-4397-bb8b-091ff0105846", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "DatetimeIndex(['2000-05-16 12:00:00'], dtype='datetime64[ns]', freq=None)\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "output_type": "stream", + "text": [ + ":3: RuntimeWarning: Converting a CFTimeIndex with dates from a non-standard calendar, 'noleap', to a pandas.DatetimeIndex, which uses dates from the standard calendar. This may lead to subtle errors in operations that depend on the length of time between dates.\n ds_times = ds.indexes['time'].to_datetimeindex()\n" + ] + } + ], + "source": [ + "from datetime import datetime\n", + "\n", + "ds_times = ds.indexes['time'].to_datetimeindex()\n", + "print(ds_times)\n", + "\n", + "ds['time'] = ds_times" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "812cdcbc-d6f8-4858-a656-b59f9eca945a", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "rows? 1,114,112, cols? 13\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
latlonbndsplevtimearealat_bndslon_bndsmsk_rgnprtastime_bndsua
0-88.9277340.00100000.02000-05-16 12:00:00473460608.0-90.0-0.70312500.000001215.8934942000-05-01 00:00:00NaN
1-88.9277340.0092500.02000-05-16 12:00:00473460608.0-90.0-0.70312500.000001215.8934942000-05-01 00:00:00NaN
2-88.9277340.0085000.02000-05-16 12:00:00473460608.0-90.0-0.70312500.000001215.8934942000-05-01 00:00:00NaN
3-88.9277340.0070000.02000-05-16 12:00:00473460608.0-90.0-0.70312500.000001215.8934942000-05-01 00:00:00NaN
4-88.9277340.0060000.02000-05-16 12:00:00473460608.0-90.0-0.70312500.000001215.8934942000-05-01 00:00:00-0.703753
\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
latlonbndsplevtimearealat_bndslon_bndsmsk_rgnprtastime_bndsua
0-88.9277340.00100000.02000-05-16 12:00:00473460608.0-90.0-0.70312500.000001215.8934942000-05-01 00:00:00NaN
1-88.9277340.0092500.02000-05-16 12:00:00473460608.0-90.0-0.70312500.000001215.8934942000-05-01 00:00:00NaN
2-88.9277340.0085000.02000-05-16 12:00:00473460608.0-90.0-0.70312500.000001215.8934942000-05-01 00:00:00NaN
3-88.9277340.0070000.02000-05-16 12:00:00473460608.0-90.0-0.70312500.000001215.8934942000-05-01 00:00:00NaN
4-88.9277340.0060000.02000-05-16 12:00:00473460608.0-90.0-0.70312500.000001215.8934942000-05-01 00:00:00-0.703753
\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "pdf = ds.to_dataframe().reset_index() # <- pandas\n", + "print(f'rows? {pdf.shape[0]:,}, cols? {pdf.shape[1]}')\n", + "pdf.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "50d35ced-e330-46bb-bd3f-4700a8e97323", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[14]: lat float64\nlon float64\nbnds int64\nplev float64\ntime datetime64[ns]\narea float32\nlat_bnds float64\nlon_bnds float64\nmsk_rgn int32\npr float32\ntas float32\ntime_bnds object\nua float32\ndtype: object" + ] + } + ], + "source": [ + "pdf.dtypes" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "f2e86510-edff-4d96-b34b-a52e21d83d99", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Can convert to a Spark DataFrame.__\n", + "\n", + "> Note: we are dropping \"*_bnds\" and \"msk_rgn\" columns for simplicity." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "370c5f4f-485c-44dc-aa37-0b3ca13b2643", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 1,114,112\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
latlonplevtimeareaprtasua
-88.9277343750.0100000.02000-05-16T12:00:00.000+00004.73460608E81.0915462E-6215.8935null
-88.9277343750.092500.02000-05-16T12:00:00.000+00004.73460608E81.0915462E-6215.8935null
-88.9277343750.085000.02000-05-16T12:00:00.000+00004.73460608E81.0915462E-6215.8935null
-88.9277343750.070000.02000-05-16T12:00:00.000+00004.73460608E81.0915462E-6215.8935null
-88.9277343750.060000.02000-05-16T12:00:00.000+00004.73460608E81.0915462E-6215.8935-0.70375293
-88.9277343750.050000.02000-05-16T12:00:00.000+00004.73460608E81.0915462E-6215.8935-1.4543961
-88.9277343750.040000.02000-05-16T12:00:00.000+00004.73460608E81.0915462E-6215.8935-2.1575398
-88.9277343750.030000.02000-05-16T12:00:00.000+00004.73460608E81.0915462E-6215.8935-2.320977
-88.9277343750.025000.02000-05-16T12:00:00.000+00004.73460608E81.0915462E-6215.8935-1.9883183
-88.9277343750.020000.02000-05-16T12:00:00.000+00004.73460608E81.0915462E-6215.8935-1.5386307
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + -88.927734375, + 0.0, + 100000.0, + "2000-05-16T12:00:00.000+0000", + 4.73460608E8, + 1.0915462E-6, + 215.8935, + null + ], + [ + -88.927734375, + 0.0, + 92500.0, + "2000-05-16T12:00:00.000+0000", + 4.73460608E8, + 1.0915462E-6, + 215.8935, + null + ], + [ + -88.927734375, + 0.0, + 85000.0, + "2000-05-16T12:00:00.000+0000", + 4.73460608E8, + 1.0915462E-6, + 215.8935, + null + ], + [ + -88.927734375, + 0.0, + 70000.0, + "2000-05-16T12:00:00.000+0000", + 4.73460608E8, + 1.0915462E-6, + 215.8935, + null + ], + [ + -88.927734375, + 0.0, + 60000.0, + "2000-05-16T12:00:00.000+0000", + 4.73460608E8, + 1.0915462E-6, + 215.8935, + -0.70375293 + ], + [ + -88.927734375, + 0.0, + 50000.0, + "2000-05-16T12:00:00.000+0000", + 4.73460608E8, + 1.0915462E-6, + 215.8935, + -1.4543961 + ], + [ + -88.927734375, + 0.0, + 40000.0, + "2000-05-16T12:00:00.000+0000", + 4.73460608E8, + 1.0915462E-6, + 215.8935, + -2.1575398 + ], + [ + -88.927734375, + 0.0, + 30000.0, + "2000-05-16T12:00:00.000+0000", + 4.73460608E8, + 1.0915462E-6, + 215.8935, + -2.320977 + ], + [ + -88.927734375, + 0.0, + 25000.0, + "2000-05-16T12:00:00.000+0000", + 4.73460608E8, + 1.0915462E-6, + 215.8935, + -1.9883183 + ], + [ + -88.927734375, + 0.0, + 20000.0, + "2000-05-16T12:00:00.000+0000", + 4.73460608E8, + 1.0915462E-6, + 215.8935, + -1.5386307 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "lat", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "lon", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "plev", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "time", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "area", + "type": "\"float\"" + }, + { + "metadata": "{}", + "name": "pr", + "type": "\"float\"" + }, + { + "metadata": "{}", + "name": "tas", + "type": "\"float\"" + }, + { + "metadata": "{}", + "name": "ua", + "type": "\"float\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df = (\n", + " spark\n", + " .createDataFrame(\n", + " pdf.drop(columns=[\"bnds\", \"time_bnds\", \"lat_bnds\", \"lon_bnds\", \"msk_rgn\"])\n", + " )\n", + " #.distinct() # <- not needed\n", + ")\n", + "print(f\"count? {df.count():,}\")\n", + "df.limit(10).display()" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "69db8a1f-dc69-40a0-ad92-9a4e122c75a0", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import col" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "63304e95-eb36-49a9-9e3a-43d24baa3185", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
lat_degreeplev_avgpr_avgtas_avgua_avg
-8836205.8823529411751.407552143284363E-6217.075331270694730.715708841607833
-8736205.8823529411751.468051382458313E-6219.76243400573731.6284686288521613
-8636205.8823529411751.5245482806180988E-6223.064042150974272.7873747913918647
-8436205.8823529411751.6745170340337623E-6225.779721975326544.2820890932200335
-8336205.8823529411751.8137844463028685E-6227.50417834520345.726601821867347
-8136205.8823529411751.7317814833273104E-6227.75531798601157.4828300487098796
-8036205.8823529411752.092438653955586E-6227.44362866878519.309421336565226
-7936205.8823529411753.095372376971106E-6227.9950541853904710.981656906893834
-7736205.8823529411755.237449556383389E-6229.6767591238021912.499625367135527
-7636205.8823529411757.134318825485764E-6231.3214695453643813.954102117710605
-7436205.8823529411758.911818972112684E-6233.6075807213783315.063077128260037
-7336205.8823529411751.0271408606765675E-5236.791002452373516.332507042848015
-7236205.8823529411751.1347927823646131E-5240.5600757002830517.600392201925374
-7036205.8823529411751.2949680546547881E-5244.9671499729156518.899724136071168
-6936205.8823529411751.5240858808773794E-5249.1242272853851319.85490629388062
-6636205.8823529411752.335175603462858E-5257.027713716030122.567665543444722
-6736205.8823529411751.9055666367506774E-5253.3175278306007421.33403223093976
-6536205.8823529411752.642416576748019E-5260.051078259944924.121534322192588
-6336205.8823529411753.0250296504163998E-5263.9410998821258526.061645990507714
-6236205.8823529411753.363296142566696E-5267.645325303077727.7609099962865
-6036205.8823529411753.658373520920577E-5270.2537860870361329.078597813728265
-5936205.8823529411753.8627924396905655E-5272.071479320526129.962373270187527
-5836205.8823529411753.977384552200647E-5273.323612689971930.45397131307982
-5536205.8823529411753.922717606741344E-5275.2435662746429430.342048638500273
-5636205.8823529411754.0021182847738146E-5274.3404514789581330.584524759324268
-5336205.8823529411753.8147845707214856E-5276.090158581733729.754980638157576
-5236205.8823529411753.6586314010378373E-5276.9588081836700428.917417611693963
-5136205.8823529411753.56162929406878E-5277.869970321655327.919671651674435
-4936205.8823529411753.547756497823684E-5278.820172071456926.817347396863624
-4836205.8823529411753.5915758296312106E-5279.826328396797225.356595777202013
-4536205.8823529411753.8973745198234155E-5281.848015308380122.624973117723833
-4636205.8823529411753.7044281562259584E-5280.8009599447250423.865529830570377
-4436205.8823529411753.937726972225164E-5282.989215731620821.511043656515977
-4236205.8823529411753.800691258071254E-5284.167769193649320.561248390903543
-4136205.8823529411753.761225878129437E-5285.447011113166819.710598713910464
-3936205.8823529411753.737289180705261E-5286.5937551259994518.991576121728247
-3836205.8823529411753.6070513374397706E-5287.539517641067518.40325901697045
-3736205.8823529411753.361257644485249E-5288.425348043441817.92410158707894
-3536205.8823529411753.186514219599701E-5289.186974167823817.534759012915742
-3436205.8823529411753.129685891067879E-5289.8049093484878517.26623534235839
-3236205.8823529411753.1867615610359223E-5290.3188040256517.062277284440455
-3136205.8823529411753.091571664759485E-5290.867923378944416.901856414547666
-3036205.8823529411752.8989225321129908E-5291.5200726985931416.66400538279219
-2836205.8823529411752.7917650087916357E-5292.190698027610816.228677592839944
-2736205.8823529411752.663895256738158E-5292.8712266683578515.591127863293181
-2536205.8823529411752.504328327868066E-5293.586828351020814.647611196294921
-2436205.8823529411752.3760702883679485E-5294.342584013938913.429689861707075
-2336205.8823529411752.2775894214399628E-5295.1134769916534411.923323967396803
-2136205.8823529411752.200307770061638E-5295.817610859870910.232726991354179
-2036205.8823529411752.169744915965087E-5296.45769536495218.451828995326595
-1836205.8823529411752.2563958886465205E-5297.022237658500676.630378416227909
-1736205.8823529411752.3807533069953472E-5297.52763557434084.866297666888033
-1636205.8823529411752.5782454218972674E-5298.021517038345343.1784555008326856
-1436205.8823529411753.0783642704299875E-5298.54498910903931.631938779288713
-1336205.8823529411753.885846786269706E-5299.03565943241120.2651273898080488
-1136205.8823529411754.6388930301947094E-5299.48440730571747-0.8592761338746177
-1036205.8823529411755.611159023176035E-5299.8747184276581-1.7270243766819258
-936205.8823529411756.736855016609145E-5300.064936876297-2.3546500064878466
-736205.8823529411757.888406363054656E-5300.1867402791977-2.7568328289501225
-636205.8823529411758.453085083259815E-5300.21373772621155-2.966069584627585
-436205.8823529411757.22098972909535E-5300.1345340013504-3.0291564527349566
-336205.8823529411756.17253456989264E-5299.9818021059036-2.9979388670644367
-236205.8823529411756.221974441666944E-5299.83054459095-2.9469196503050625
036205.8823529411755.889521054225355E-5299.6397006511688-2.941949666653154
136205.8823529411755.421492519053217E-5299.6047521829605-3.012444794654725
336205.8823529411755.896429902119138E-5299.77970588207245-3.21287120971011
436205.8823529411758.234097119785844E-5299.9592877626419-3.625886762240949
536205.8823529411758.366640793466829E-5299.98875296115875-4.165366051782663
736205.8823529411756.616698960426604E-5299.9502363204956-4.580509089940484
1036205.8823529411754.2954371996362095E-5299.73693549633026-4.771790233790217
836205.8823529411755.5249429811610185E-5299.82291972637177-4.772187882197364
1136205.8823529411753.531368289863557E-5299.5046976804733-4.580618888885045
1236205.8823529411753.0785425306489866E-5299.27507412433624-4.169953896092391
1436205.8823529411752.6882649195368244E-5299.17446398735046-3.549184047331177
1536205.8823529411752.2885766425326167E-5299.21928918361664-2.7441951802861047
1736205.8823529411752.0384059304227802E-5299.26371693611145-1.7883517546554617
1836205.8823529411752.0790263808273264E-5299.3160631656647-0.7174469160352669
1936205.8823529411752.3547091964045168E-5299.147697806358340.43744630606911733
2136205.8823529411752.2832696491790363E-5298.89616751670841.6132969536313366
2236205.8823529411752.178873426439416E-5298.54990839958192.8055290518530933
2436205.8823529411752.0740196643588218E-5298.07691216468813.964794905403176
2536205.8823529411751.774813630320921E-5297.423513650894175.058618271370385
2636205.8823529411751.6223084839307217E-5296.7325634956366.063541283554576
2836205.8823529411751.632987075590908E-5295.838605165481577.008807920183934
2936205.8823529411751.5369384776683278E-5294.664321064949047.868744953782849
3136205.8823529411751.678816827054702E-5293.27915751934058.601543619596798
3236205.8823529411751.7429461815949426E-5291.83599483966839.175114817848021
3336205.8823529411751.8117643652375975E-5290.50454056262979.621874967636325
3536205.8823529411751.955390670117796E-5289.436612486839310.041328847475105
3636205.8823529411752.129450458772386E-5288.681814312934910.42841895321429
3836205.8823529411752.2790912938865093E-5288.1380276679992710.827813545657351
3936205.8823529411752.1596644427357425E-5287.636707305908211.149618975753539
4236205.8823529411752.1708571755651995E-5285.963031888008111.653115103018783
4036205.8823529411752.096218664687788E-5287.0181226730346711.439079338695977
4336205.8823529411752.3629241329370387E-5284.7048951387405411.809871168746234
4536205.8823529411752.5237222078811072E-5283.7178472280502311.85068867350996
4636205.8823529411752.503286689536921E-5282.952270746231111.781795795693562
4736205.8823529411752.563926795229321E-5282.204720973968511.610528457889167
4936205.8823529411752.733612904037841E-5281.443157196044911.357871455883723
5036205.8823529411752.7512512897232E-5280.671113848686211.037044279385107
5236205.8823529411752.7612559133416426E-5280.066786170005810.631961508018351
5336205.8823529411752.7535040423742885E-5279.563749074935910.122838367281862
5436205.8823529411752.7008159129593423E-5279.00816929340369.557985360001865
5636205.8823529411752.52276799308504E-5278.27589380741128.863281032040106
5736205.8823529411752.3354141770681736E-5277.51602780818948.045447692465611
5936205.8823529411752.3222815306311873E-5276.896544337272647.14694831198156
6036205.8823529411752.5113261845177703E-5276.1807048320776.130267364519796
6136205.8823529411752.5752178828497563E-5275.32207179069525.133624380103912
6336205.8823529411752.451439545936296E-5274.540047407150274.231104789147489
6436205.8823529411752.2735587961619785E-5273.78710925579073.4881211109904653
6636205.8823529411752.0525798589687838E-5272.99530339241032.908634777729333
6736205.8823529411751.879029821871825E-5272.164831042289732.503968360230367
6836205.8823529411751.712034589829159E-5271.335730552673342.249409265256777
7036205.8823529411751.4604347343905033E-5270.43958628177642.078202474317823
7136205.8823529411751.1892302612004357E-5269.654697239398961.9389573841849588
7436205.8823529411751.0404651441309198E-5268.723317265510561.7664747506720284
7336205.8823529411751.0299419310744184E-5269.202671408653261.8324613151466245
7536205.8823529411759.97003277625197E-6268.230050444602971.7331573905556625
7736205.8823529411759.39069850725005E-6267.7129188179971.7297824485295452
7836205.8823529411759.353685972879333E-6267.19857645034791.7234866682749332
8036205.8823529411759.348147517407313E-6266.64522719383241.694802076628088
8136205.8823529411758.977633049855882E-6265.928640723228451.6786359874904684
8236205.8823529411758.330678127776991E-6265.47684335708621.708944203726163
8436205.8823529411757.683479836373408E-6265.48405694961551.776776054355016
8536205.8823529411757.2926797098915586E-6265.632208228111271.8246638329583718
8736205.8823529411757.94587144525849E-6265.768729686737061.7291501955064734
8836205.8823529411759.113501825197545E-6265.82334959506991.3286047701541577
8936205.8823529411758.562256367028453E-6265.83681964874270.6457764548329692
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + -88, + 36205.882352941175, + 1.407552143284363E-6, + 217.07533127069473, + 0.715708841607833 + ], + [ + -87, + 36205.882352941175, + 1.468051382458313E-6, + 219.7624340057373, + 1.6284686288521613 + ], + [ + -86, + 36205.882352941175, + 1.5245482806180988E-6, + 223.06404215097427, + 2.7873747913918647 + ], + [ + -84, + 36205.882352941175, + 1.6745170340337623E-6, + 225.77972197532654, + 4.2820890932200335 + ], + [ + -83, + 36205.882352941175, + 1.8137844463028685E-6, + 227.5041783452034, + 5.726601821867347 + ], + [ + -81, + 36205.882352941175, + 1.7317814833273104E-6, + 227.7553179860115, + 7.4828300487098796 + ], + [ + -80, + 36205.882352941175, + 2.092438653955586E-6, + 227.4436286687851, + 9.309421336565226 + ], + [ + -79, + 36205.882352941175, + 3.095372376971106E-6, + 227.99505418539047, + 10.981656906893834 + ], + [ + -77, + 36205.882352941175, + 5.237449556383389E-6, + 229.67675912380219, + 12.499625367135527 + ], + [ + -76, + 36205.882352941175, + 7.134318825485764E-6, + 231.32146954536438, + 13.954102117710605 + ], + [ + -74, + 36205.882352941175, + 8.911818972112684E-6, + 233.60758072137833, + 15.063077128260037 + ], + [ + -73, + 36205.882352941175, + 1.0271408606765675E-5, + 236.7910024523735, + 16.332507042848015 + ], + [ + -72, + 36205.882352941175, + 1.1347927823646131E-5, + 240.56007570028305, + 17.600392201925374 + ], + [ + -70, + 36205.882352941175, + 1.2949680546547881E-5, + 244.96714997291565, + 18.899724136071168 + ], + [ + -69, + 36205.882352941175, + 1.5240858808773794E-5, + 249.12422728538513, + 19.85490629388062 + ], + [ + -66, + 36205.882352941175, + 2.335175603462858E-5, + 257.0277137160301, + 22.567665543444722 + ], + [ + -67, + 36205.882352941175, + 1.9055666367506774E-5, + 253.31752783060074, + 21.33403223093976 + ], + [ + -65, + 36205.882352941175, + 2.642416576748019E-5, + 260.0510782599449, + 24.121534322192588 + ], + [ + -63, + 36205.882352941175, + 3.0250296504163998E-5, + 263.94109988212585, + 26.061645990507714 + ], + [ + -62, + 36205.882352941175, + 3.363296142566696E-5, + 267.6453253030777, + 27.7609099962865 + ], + [ + -60, + 36205.882352941175, + 3.658373520920577E-5, + 270.25378608703613, + 29.078597813728265 + ], + [ + -59, + 36205.882352941175, + 3.8627924396905655E-5, + 272.0714793205261, + 29.962373270187527 + ], + [ + -58, + 36205.882352941175, + 3.977384552200647E-5, + 273.3236126899719, + 30.45397131307982 + ], + [ + -55, + 36205.882352941175, + 3.922717606741344E-5, + 275.24356627464294, + 30.342048638500273 + ], + [ + -56, + 36205.882352941175, + 4.0021182847738146E-5, + 274.34045147895813, + 30.584524759324268 + ], + [ + -53, + 36205.882352941175, + 3.8147845707214856E-5, + 276.0901585817337, + 29.754980638157576 + ], + [ + -52, + 36205.882352941175, + 3.6586314010378373E-5, + 276.95880818367004, + 28.917417611693963 + ], + [ + -51, + 36205.882352941175, + 3.56162929406878E-5, + 277.8699703216553, + 27.919671651674435 + ], + [ + -49, + 36205.882352941175, + 3.547756497823684E-5, + 278.8201720714569, + 26.817347396863624 + ], + [ + -48, + 36205.882352941175, + 3.5915758296312106E-5, + 279.8263283967972, + 25.356595777202013 + ], + [ + -45, + 36205.882352941175, + 3.8973745198234155E-5, + 281.8480153083801, + 22.624973117723833 + ], + [ + -46, + 36205.882352941175, + 3.7044281562259584E-5, + 280.80095994472504, + 23.865529830570377 + ], + [ + -44, + 36205.882352941175, + 3.937726972225164E-5, + 282.9892157316208, + 21.511043656515977 + ], + [ + -42, + 36205.882352941175, + 3.800691258071254E-5, + 284.1677691936493, + 20.561248390903543 + ], + [ + -41, + 36205.882352941175, + 3.761225878129437E-5, + 285.4470111131668, + 19.710598713910464 + ], + [ + -39, + 36205.882352941175, + 3.737289180705261E-5, + 286.59375512599945, + 18.991576121728247 + ], + [ + -38, + 36205.882352941175, + 3.6070513374397706E-5, + 287.5395176410675, + 18.40325901697045 + ], + [ + -37, + 36205.882352941175, + 3.361257644485249E-5, + 288.4253480434418, + 17.92410158707894 + ], + [ + -35, + 36205.882352941175, + 3.186514219599701E-5, + 289.1869741678238, + 17.534759012915742 + ], + [ + -34, + 36205.882352941175, + 3.129685891067879E-5, + 289.80490934848785, + 17.26623534235839 + ], + [ + -32, + 36205.882352941175, + 3.1867615610359223E-5, + 290.31880402565, + 17.062277284440455 + ], + [ + -31, + 36205.882352941175, + 3.091571664759485E-5, + 290.8679233789444, + 16.901856414547666 + ], + [ + -30, + 36205.882352941175, + 2.8989225321129908E-5, + 291.52007269859314, + 16.66400538279219 + ], + [ + -28, + 36205.882352941175, + 2.7917650087916357E-5, + 292.1906980276108, + 16.228677592839944 + ], + [ + -27, + 36205.882352941175, + 2.663895256738158E-5, + 292.87122666835785, + 15.591127863293181 + ], + [ + -25, + 36205.882352941175, + 2.504328327868066E-5, + 293.5868283510208, + 14.647611196294921 + ], + [ + -24, + 36205.882352941175, + 2.3760702883679485E-5, + 294.3425840139389, + 13.429689861707075 + ], + [ + -23, + 36205.882352941175, + 2.2775894214399628E-5, + 295.11347699165344, + 11.923323967396803 + ], + [ + -21, + 36205.882352941175, + 2.200307770061638E-5, + 295.8176108598709, + 10.232726991354179 + ], + [ + -20, + 36205.882352941175, + 2.169744915965087E-5, + 296.4576953649521, + 8.451828995326595 + ], + [ + -18, + 36205.882352941175, + 2.2563958886465205E-5, + 297.02223765850067, + 6.630378416227909 + ], + [ + -17, + 36205.882352941175, + 2.3807533069953472E-5, + 297.5276355743408, + 4.866297666888033 + ], + [ + -16, + 36205.882352941175, + 2.5782454218972674E-5, + 298.02151703834534, + 3.1784555008326856 + ], + [ + -14, + 36205.882352941175, + 3.0783642704299875E-5, + 298.5449891090393, + 1.631938779288713 + ], + [ + -13, + 36205.882352941175, + 3.885846786269706E-5, + 299.0356594324112, + 0.2651273898080488 + ], + [ + -11, + 36205.882352941175, + 4.6388930301947094E-5, + 299.48440730571747, + -0.8592761338746177 + ], + [ + -10, + 36205.882352941175, + 5.611159023176035E-5, + 299.8747184276581, + -1.7270243766819258 + ], + [ + -9, + 36205.882352941175, + 6.736855016609145E-5, + 300.064936876297, + -2.3546500064878466 + ], + [ + -7, + 36205.882352941175, + 7.888406363054656E-5, + 300.1867402791977, + -2.7568328289501225 + ], + [ + -6, + 36205.882352941175, + 8.453085083259815E-5, + 300.21373772621155, + -2.966069584627585 + ], + [ + -4, + 36205.882352941175, + 7.22098972909535E-5, + 300.1345340013504, + -3.0291564527349566 + ], + [ + -3, + 36205.882352941175, + 6.17253456989264E-5, + 299.9818021059036, + -2.9979388670644367 + ], + [ + -2, + 36205.882352941175, + 6.221974441666944E-5, + 299.83054459095, + -2.9469196503050625 + ], + [ + 0, + 36205.882352941175, + 5.889521054225355E-5, + 299.6397006511688, + -2.941949666653154 + ], + [ + 1, + 36205.882352941175, + 5.421492519053217E-5, + 299.6047521829605, + -3.012444794654725 + ], + [ + 3, + 36205.882352941175, + 5.896429902119138E-5, + 299.77970588207245, + -3.21287120971011 + ], + [ + 4, + 36205.882352941175, + 8.234097119785844E-5, + 299.9592877626419, + -3.625886762240949 + ], + [ + 5, + 36205.882352941175, + 8.366640793466829E-5, + 299.98875296115875, + -4.165366051782663 + ], + [ + 7, + 36205.882352941175, + 6.616698960426604E-5, + 299.9502363204956, + -4.580509089940484 + ], + [ + 10, + 36205.882352941175, + 4.2954371996362095E-5, + 299.73693549633026, + -4.771790233790217 + ], + [ + 8, + 36205.882352941175, + 5.5249429811610185E-5, + 299.82291972637177, + -4.772187882197364 + ], + [ + 11, + 36205.882352941175, + 3.531368289863557E-5, + 299.5046976804733, + -4.580618888885045 + ], + [ + 12, + 36205.882352941175, + 3.0785425306489866E-5, + 299.27507412433624, + -4.169953896092391 + ], + [ + 14, + 36205.882352941175, + 2.6882649195368244E-5, + 299.17446398735046, + -3.549184047331177 + ], + [ + 15, + 36205.882352941175, + 2.2885766425326167E-5, + 299.21928918361664, + -2.7441951802861047 + ], + [ + 17, + 36205.882352941175, + 2.0384059304227802E-5, + 299.26371693611145, + -1.7883517546554617 + ], + [ + 18, + 36205.882352941175, + 2.0790263808273264E-5, + 299.3160631656647, + -0.7174469160352669 + ], + [ + 19, + 36205.882352941175, + 2.3547091964045168E-5, + 299.14769780635834, + 0.43744630606911733 + ], + [ + 21, + 36205.882352941175, + 2.2832696491790363E-5, + 298.8961675167084, + 1.6132969536313366 + ], + [ + 22, + 36205.882352941175, + 2.178873426439416E-5, + 298.5499083995819, + 2.8055290518530933 + ], + [ + 24, + 36205.882352941175, + 2.0740196643588218E-5, + 298.0769121646881, + 3.964794905403176 + ], + [ + 25, + 36205.882352941175, + 1.774813630320921E-5, + 297.42351365089417, + 5.058618271370385 + ], + [ + 26, + 36205.882352941175, + 1.6223084839307217E-5, + 296.732563495636, + 6.063541283554576 + ], + [ + 28, + 36205.882352941175, + 1.632987075590908E-5, + 295.83860516548157, + 7.008807920183934 + ], + [ + 29, + 36205.882352941175, + 1.5369384776683278E-5, + 294.66432106494904, + 7.868744953782849 + ], + [ + 31, + 36205.882352941175, + 1.678816827054702E-5, + 293.2791575193405, + 8.601543619596798 + ], + [ + 32, + 36205.882352941175, + 1.7429461815949426E-5, + 291.8359948396683, + 9.175114817848021 + ], + [ + 33, + 36205.882352941175, + 1.8117643652375975E-5, + 290.5045405626297, + 9.621874967636325 + ], + [ + 35, + 36205.882352941175, + 1.955390670117796E-5, + 289.4366124868393, + 10.041328847475105 + ], + [ + 36, + 36205.882352941175, + 2.129450458772386E-5, + 288.6818143129349, + 10.42841895321429 + ], + [ + 38, + 36205.882352941175, + 2.2790912938865093E-5, + 288.13802766799927, + 10.827813545657351 + ], + [ + 39, + 36205.882352941175, + 2.1596644427357425E-5, + 287.6367073059082, + 11.149618975753539 + ], + [ + 42, + 36205.882352941175, + 2.1708571755651995E-5, + 285.9630318880081, + 11.653115103018783 + ], + [ + 40, + 36205.882352941175, + 2.096218664687788E-5, + 287.01812267303467, + 11.439079338695977 + ], + [ + 43, + 36205.882352941175, + 2.3629241329370387E-5, + 284.70489513874054, + 11.809871168746234 + ], + [ + 45, + 36205.882352941175, + 2.5237222078811072E-5, + 283.71784722805023, + 11.85068867350996 + ], + [ + 46, + 36205.882352941175, + 2.503286689536921E-5, + 282.9522707462311, + 11.781795795693562 + ], + [ + 47, + 36205.882352941175, + 2.563926795229321E-5, + 282.2047209739685, + 11.610528457889167 + ], + [ + 49, + 36205.882352941175, + 2.733612904037841E-5, + 281.4431571960449, + 11.357871455883723 + ], + [ + 50, + 36205.882352941175, + 2.7512512897232E-5, + 280.6711138486862, + 11.037044279385107 + ], + [ + 52, + 36205.882352941175, + 2.7612559133416426E-5, + 280.0667861700058, + 10.631961508018351 + ], + [ + 53, + 36205.882352941175, + 2.7535040423742885E-5, + 279.5637490749359, + 10.122838367281862 + ], + [ + 54, + 36205.882352941175, + 2.7008159129593423E-5, + 279.0081692934036, + 9.557985360001865 + ], + [ + 56, + 36205.882352941175, + 2.52276799308504E-5, + 278.2758938074112, + 8.863281032040106 + ], + [ + 57, + 36205.882352941175, + 2.3354141770681736E-5, + 277.5160278081894, + 8.045447692465611 + ], + [ + 59, + 36205.882352941175, + 2.3222815306311873E-5, + 276.89654433727264, + 7.14694831198156 + ], + [ + 60, + 36205.882352941175, + 2.5113261845177703E-5, + 276.180704832077, + 6.130267364519796 + ], + [ + 61, + 36205.882352941175, + 2.5752178828497563E-5, + 275.3220717906952, + 5.133624380103912 + ], + [ + 63, + 36205.882352941175, + 2.451439545936296E-5, + 274.54004740715027, + 4.231104789147489 + ], + [ + 64, + 36205.882352941175, + 2.2735587961619785E-5, + 273.7871092557907, + 3.4881211109904653 + ], + [ + 66, + 36205.882352941175, + 2.0525798589687838E-5, + 272.9953033924103, + 2.908634777729333 + ], + [ + 67, + 36205.882352941175, + 1.879029821871825E-5, + 272.16483104228973, + 2.503968360230367 + ], + [ + 68, + 36205.882352941175, + 1.712034589829159E-5, + 271.33573055267334, + 2.249409265256777 + ], + [ + 70, + 36205.882352941175, + 1.4604347343905033E-5, + 270.4395862817764, + 2.078202474317823 + ], + [ + 71, + 36205.882352941175, + 1.1892302612004357E-5, + 269.65469723939896, + 1.9389573841849588 + ], + [ + 74, + 36205.882352941175, + 1.0404651441309198E-5, + 268.72331726551056, + 1.7664747506720284 + ], + [ + 73, + 36205.882352941175, + 1.0299419310744184E-5, + 269.20267140865326, + 1.8324613151466245 + ], + [ + 75, + 36205.882352941175, + 9.97003277625197E-6, + 268.23005044460297, + 1.7331573905556625 + ], + [ + 77, + 36205.882352941175, + 9.39069850725005E-6, + 267.712918817997, + 1.7297824485295452 + ], + [ + 78, + 36205.882352941175, + 9.353685972879333E-6, + 267.1985764503479, + 1.7234866682749332 + ], + [ + 80, + 36205.882352941175, + 9.348147517407313E-6, + 266.6452271938324, + 1.694802076628088 + ], + [ + 81, + 36205.882352941175, + 8.977633049855882E-6, + 265.92864072322845, + 1.6786359874904684 + ], + [ + 82, + 36205.882352941175, + 8.330678127776991E-6, + 265.4768433570862, + 1.708944203726163 + ], + [ + 84, + 36205.882352941175, + 7.683479836373408E-6, + 265.4840569496155, + 1.776776054355016 + ], + [ + 85, + 36205.882352941175, + 7.2926797098915586E-6, + 265.63220822811127, + 1.8246638329583718 + ], + [ + 87, + 36205.882352941175, + 7.94587144525849E-6, + 265.76872968673706, + 1.7291501955064734 + ], + [ + 88, + 36205.882352941175, + 9.113501825197545E-6, + 265.8233495950699, + 1.3286047701541577 + ], + [ + 89, + 36205.882352941175, + 8.562256367028453E-6, + 265.8368196487427, + 0.6457764548329692 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "lat_degree", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "plev_avg", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pr_avg", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tas_avg", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "ua_avg", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Databricks visualization. Run in Databricks to view." + ] + }, + "metadata": { + "application/vnd.databricks.v1.subcommand+json": { + "bindings": {}, + "collapsed": false, + "command": "%python\n__backend_agg_display_orig = display\n__backend_agg_dfs = []\ndef __backend_agg_display_new(df):\n __backend_agg_df_modules = [\"pandas.core.frame\", \"databricks.koalas.frame\", \"pyspark.sql.dataframe\", \"pyspark.pandas.frame\", \"pyspark.sql.connect.dataframe\"]\n if (type(df).__module__ in __backend_agg_df_modules and type(df).__name__ == 'DataFrame') or isinstance(df, list):\n __backend_agg_dfs.append(df)\n\ndisplay = __backend_agg_display_new\n\ndef __backend_agg_user_code_fn():\n import base64\n exec(base64.standard_b64decode(\"ZGlzcGxheSgKICBkZgogICAgLmdyb3VwQnkoRi5leHByKCJjZWlsKGxhdCkgYXMgbGF0X2RlZ3JlZSIpKQogICAgLmFnZygKICAgICAgRi5tZWFuKGNvbCgicGxldiIpKS5hbGlhcygicGxldl9hdmciKSwKICAgICAgRi5tZWFuKGNvbCgicHIiKSkuYWxpYXMoInByX2F2ZyIpLAogICAgICBGLm1lYW4oY29sKCJ0YXMiKSkuYWxpYXMoInRhc19hdmciKSwKICAgICAgRi5tZWFuKGNvbCgidWEiKSkuYWxpYXMoInVhX2F2ZyIpCiAgICApCik=\").decode())\n\ntry:\n # run user code\n __backend_agg_user_code_fn()\n\n #reset display function\n display = __backend_agg_display_orig\n\n if len(__backend_agg_dfs) > 0:\n # create a temp view\n if type(__backend_agg_dfs[0]).__module__ == \"databricks.koalas.frame\":\n # koalas dataframe\n __backend_agg_dfs[0].to_spark().createOrReplaceTempView(\"DatabricksView81cdc06\")\n elif type(__backend_agg_dfs[0]).__module__ == \"pandas.core.frame\" or isinstance(__backend_agg_dfs[0], list):\n # pandas dataframe\n spark.createDataFrame(__backend_agg_dfs[0]).createOrReplaceTempView(\"DatabricksView81cdc06\")\n else:\n __backend_agg_dfs[0].createOrReplaceTempView(\"DatabricksView81cdc06\")\n #run backend agg\n display(spark.sql(\"\"\"WITH q AS (select * from DatabricksView81cdc06) SELECT `lat_degree`,`plev_avg`,`pr_avg`,`tas_avg`,`ua_avg` FROM q\"\"\"))\n else:\n displayHTML(\"dataframe no longer exists. If you're using dataframe.display(), use display(dataframe) instead.\")\n\n\nfinally:\n spark.sql(\"drop view if exists DatabricksView81cdc06\")\n display = __backend_agg_display_orig\n del __backend_agg_display_new\n del __backend_agg_display_orig\n del __backend_agg_dfs\n del __backend_agg_user_code_fn\n\n", + "commandTitle": "Visualization 1", + "commandType": "auto", + "commandVersion": 0, + "commentThread": [], + "commentsVisible": false, + "contentSha256Hex": null, + "customPlotOptions": { + "redashChart": [ + { + "key": "type", + "value": "CHART" + }, + { + "key": "options", + "value": { + "alignYAxesAtZero": true, + "coefficient": 1, + "columnConfigurationMap": { + "x": { + "column": "lat_degree", + "id": "column_4bc17458205" + }, + "y": [ + { + "column": "plev_avg", + "id": "column_4bc17458217" + }, + { + "column": "pr_avg", + "id": "column_4bc17458218" + }, + { + "column": "tas_avg", + "id": "column_4bc17458219" + }, + { + "column": "ua_avg", + "id": "column_4bc17458220" + } + ] + }, + "dateTimeFormat": "DD/MM/YYYY HH:mm", + "direction": { + "type": "counterclockwise" + }, + "error_y": { + "type": "data", + "visible": true + }, + "globalSeriesType": "scatter", + "legend": { + "traceorder": "normal" + }, + "missingValuesAsZero": true, + "numberFormat": "0,0[.]00000", + "percentFormat": "0[.]00%", + "series": { + "error_y": { + "type": "data", + "visible": true + }, + "stacking": null + }, + "seriesOptions": { + "plev_avg": { + "type": "scatter", + "yAxis": 0 + }, + "pr_avg": { + "type": "scatter", + "yAxis": 0 + }, + "tas_avg": { + "type": "scatter", + "yAxis": 0 + }, + "ua_avg": { + "type": "scatter", + "yAxis": 0 + } + }, + "showDataLabels": false, + "sizemode": "diameter", + "sortX": true, + "sortY": true, + "swappedAxes": false, + "textFormat": "", + "useAggregationsUi": true, + "valuesOptions": {}, + "version": 2, + "xAxis": { + "labels": { + "enabled": true + }, + "type": "-" + }, + "yAxis": [ + { + "type": "logarithmic" + }, + { + "opposite": true, + "type": "-" + } + ] + } + } + ] + }, + "datasetPreviewNameToCmdIdMap": {}, + "diffDeletes": [], + "diffInserts": [], + "displayType": "redashChart", + "error": null, + "errorDetails": null, + "errorSummary": null, + "errorTraceType": null, + "finishTime": 0, + "globalVars": {}, + "guid": "", + "height": "auto", + "hideCommandCode": false, + "hideCommandResult": false, + "iPythonMetadata": null, + "inputWidgets": {}, + "isLockedInExamMode": false, + "latestUser": "a user", + "latestUserId": null, + "listResultMetadata": null, + "metadata": {}, + "nuid": "5a586138-49a5-419a-9517-9cc7c9fbae4e", + "origId": 0, + "parentHierarchy": [], + "pivotAggregation": null, + "pivotColumns": null, + "position": 23.921875, + "resultDbfsErrorMessage": null, + "resultDbfsStatus": "INLINED_IN_TREE", + "results": null, + "showCommandTitle": false, + "startTime": 0, + "state": "input", + "streamStates": {}, + "subcommandOptions": { + "queryPlan": { + "selects": [ + { + "column": "lat_degree", + "type": "column" + }, + { + "column": "plev_avg", + "type": "column" + }, + { + "column": "pr_avg", + "type": "column" + }, + { + "column": "tas_avg", + "type": "column" + }, + { + "column": "ua_avg", + "type": "column" + } + ] + } + }, + "submitTime": 0, + "subtype": "tableResultSubCmd.visualization", + "tableResultIndex": 0, + "useConsistentColors": false, + "version": "CommandV1", + "width": "auto", + "workflows": [], + "xColumns": null, + "yColumns": null + } + }, + "output_type": "display_data" + } + ], + "source": [ + "# You can visualize this plot in Databricks\n", + "# - hint: press the '+' button below\n", + "display(\n", + " df\n", + " .groupBy(F.expr(\"ceil(lat) as lat_degree\"))\n", + " .agg(\n", + " F.mean(col(\"plev\")).alias(\"plev_avg\"),\n", + " F.mean(col(\"pr\")).alias(\"pr_avg\"),\n", + " F.mean(col(\"tas\")).alias(\"tas_avg\"),\n", + " F.mean(col(\"ua\")).alias(\"ua_avg\")\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "88fcde55-6ee6-4043-bcad-52226b395d61", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### 5. Databricks Lakehouse can read / write most any data format\n", + "\n", + "> Here are [built-in](https://docs.databricks.com/en/external-data/index.html) formats as well as Mosaic [readers](https://databrickslabs.github.io/mosaic/api/api.html). __Note: best performance with Delta Lake format__, ref [Databricks](https://docs.databricks.com/en/delta/index.html) and [OSS](https://docs.delta.io/latest/index.html) docs for Delta Lake. Beyond built-in formats, Databricks is a platform on which you can install a wide variety of libraries, e.g. [1](https://docs.databricks.com/en/libraries/index.html#python-environment-management) | [2](https://docs.databricks.com/en/compute/compatibility.html) | [3](https://docs.databricks.com/en/init-scripts/index.html).\n", + "\n", + "Example of [reading](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameReader.html?highlight=read#pyspark.sql.DataFrameReader) and [writing](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameWriter.html?highlight=pyspark%20sql%20dataframe%20writer#pyspark.sql.DataFrameWriter) a Spark DataFrame with Delta Lake format.\n", + "\n", + "```\n", + "# - `write.format(\"delta\")` is default in Databricks\n", + "# - can save to a specified path in the Lakehouse\n", + "# - can save as a table in the Databricks Metastore\n", + "df.write.save(\"\")\n", + "df.write.saveAsTable(\"\")\n", + "```\n", + "\n", + "Example of loading a Delta Lake Table as a Spark DataFrame.\n", + "\n", + "```\n", + "# - `read.format(\"delta\")` is default in Databricks\n", + "# - can load a specified path in the Lakehouse\n", + "# - can load a table in the Databricks Metastore\n", + "df.read.load(\"\")\n", + "df.table(\"\")\n", + "```\n", + "\n", + "More on [Unity Catalog](https://docs.databricks.com/en/data-governance/unity-catalog/index.html) in Databricks Lakehouse for Governing [Tables](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#tables) and [Volumes](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#volumes)." + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 2486404516283409, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "single_node_netcdf_files", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/NetCDF/load_netcdf_files.py b/notebooks/examples/python/NetCDF/load_netcdf_files.py deleted file mode 100644 index 37d752db7..000000000 --- a/notebooks/examples/python/NetCDF/load_netcdf_files.py +++ /dev/null @@ -1,140 +0,0 @@ -# Databricks notebook source -# MAGIC %md -# MAGIC # Opening and visualizing a netCDF file (Python) - -# COMMAND ---------- - -## Overview - -This notebook demonstrates how to open and explore the netCDF file, visualize the data, and export to a comma-separated file (CSV). This tutorial is intended for the users with novice-level programming skills. However, it is expected that the users familiarize themselves with key aspects of [netCDF climate and forecast (CF) metadata convention](http://cfconventions.org/cf-conventions/v1.6.0/cf-conventions.html) before starting the tutorials. - -![Volumetric soil moisture at various soil depths](https://raw.githubusercontent.com/ornldaac/netcdf_open_visualize_csv/master/resources/py-nc-visualize.png) - -## Source Data - -The source data is a netCDF file ([soil_moist_20min_Kendall_AZ_n1400.nc](https://daac.ornl.gov/daacdata/eos_land_val/SoilSCAPE/data//soil_moist_20min_Kendall_AZ_n1400.nc)) consisting of volumetric root zone soil moisture data from a location in Kendall, Arizona, USA. This data was collected as a part of SoilSCAPE (Soil moisture Sensing Controller and oPtimal Estimator) project (https://daac.ornl.gov/cgi-bin/dsviewer.pl?ds_id=1339) - -## Prerequisites - -Python 3 or later. Python modules: netCDF4, numpy, pandas, matplotlib - -## Tutorial -In this tutorial, we will open and explore the netCDF file, visualize the data, and export to a comma-separated file (CSV). - -### 1. Import python modules -First import the required modules: - -# COMMAND ---------- - -# MAGIC %matplotlib inline -# MAGIC # above generates plots in line within this page -# MAGIC -# MAGIC import pandas as pd # pandas module -# MAGIC import numpy as np # numpy module -# MAGIC import netCDF4 as nc # netcdf module -# MAGIC import matplotlib.pyplot as plt # plot from matplotlib module - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 2. Read and explore the netCDF file -# MAGIC Read in the netCDF file at folder /data/indata/ into 'in_nc'. Printing 'in_nc' displays important information about the data sets, such as *global attributes*, *data dimensions*, and *variable names*. Global attributes in a netCDF file contains information about the data such as data authors, publisher, data contacts, etc. - -# COMMAND ---------- - -in_nc = nc.Dataset("dbfs:/ml/blogs/geospatial/data/netcdf/indata/soil_moist_20min_Kendall_AZ_n1400.nc") # read file -print(in_nc) # print file information - -# COMMAND ---------- - -# MAGIC %md -# MAGIC In the above print output, we can get the variables names and dimension names/sizes. For example, "lat", "lon" variables with geographic coordinates, and "soil moisture" variable with the volumetric soil moisture data. Let us print the location: - -# COMMAND ---------- - -y = in_nc.variables['lat'][:] # read latitutde variable -x = in_nc.variables['lon'][:] # read longitude variable -print("Latitude: %.5f, Longitude: %.5f" % (y,x)) # print latitutde, longitude - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 3. Read in variables and check attributes -# MAGIC In this step we will read in variables we are interested in and print their attributes (e.g. units of measurements, detailed names etc). - -# COMMAND ---------- - -soil_moisture = in_nc.variables['soil_moisture'][:] # read soil moisture variable -print(in_nc.variables['soil_moisture']) # print the variable attributes - -# COMMAND ---------- - -depth = in_nc.variables['depth'][:] # read depth variable -print(in_nc.variables['depth']) # print the variable attributes - -# COMMAND ---------- - -time = in_nc.variables['time'][:] # read time variable -print(in_nc.variables['time']) # print the variable attributes - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 4. Convert time values -# MAGIC As you may have noticed, the time units in most netCDFs are relative to a fixed date (e.g. minutes since 2011-01-01 in this case). To convert it to corresponding meaningful date/time values, we will use 'num2date' command: - -# COMMAND ---------- - -time_unit = in_nc.variables["time"].getncattr('units') # first read the 'units' attributes from the variable time -time_cal = in_nc.variables["time"].getncattr('calendar') # read calendar type -local_time = nc.num2date(time, units=time_unit, calendar=time_cal) # convert time -print("Original time %s is now converted as %s" % (time[0], local_time[0])) # check conversion - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 5. Create daily average soil moisture plot -# MAGIC To create soil moisture plots aggregated by day, we will first put the data into a *pandas dataframe*, which let you organize data in a meaningful tabular data structure and does time aggregation easily. - -# COMMAND ---------- - -sm_df = pd.DataFrame(soil_moisture, columns=depth, index=local_time.tolist()) # read into pandas dataframe -print(sm_df[:5]) # print the first 5 rows of dataframe - -# COMMAND ---------- - -# MAGIC %md -# MAGIC Now we will convert the original (~ half-hourly) data to daily using *Pandas's TimeGrouper"*. '1D' means daily, '6M' means six-monthly etc. More aliases are listed [here](http://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases). Notice that we are using "numpy's nanmean" instead of "mean" to exclude all NaN values. Ignore any run time warning messages. - -# COMMAND ---------- - -sm_df_daily = sm_df.groupby(pd.TimeGrouper('1D')).aggregate(np.nanmean) # convert to daily. -print(sm_df_daily[:5]) # print the first 5 rows - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We will now create plot of daily time series of soil moisture measured at soil depths (5, 15 and 30cm) using python's matplotlib module: - -# COMMAND ---------- - -ylabel_name = in_nc.variables["soil_moisture"].getncattr('long_name') + ' (' + \ - in_nc.variables["soil_moisture"].getncattr('units') + ')' # Label for y-axis -series_name = in_nc.variables["depth"].getncattr('long_name') + ' (' + \ - in_nc.variables["depth"].getncattr('units') + ')' # Legend title -# plot -plt.figure() -sm_df_daily.plot() -plt.legend(title=series_name) -plt.ylabel(ylabel_name) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 6. Output to CSV -# MAGIC We can also convert pandas dataframes (both daily and original) to separate comma-separated-values(CSV) files, to be used for further analysis, etc. - -# COMMAND ---------- - -sm_df_daily.to_csv("dbfs:/ml/blogs/geospatial/data/netcdf/outdata/daily_soilscape.csv", index_label="DateTime") # Daily -sm_df.to_csv("dbfs:/ml/blogs/geospatial/data/netcdf/outdata/original_soilscape.csv", index_label="DateTime") # Original diff --git a/notebooks/examples/python/Quickstart/QuickstartNotebook.ipynb b/notebooks/examples/python/Quickstart/QuickstartNotebook.ipynb new file mode 100644 index 000000000..d45e3b986 --- /dev/null +++ b/notebooks/examples/python/Quickstart/QuickstartNotebook.ipynb @@ -0,0 +1,2308 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "db1d4ea7-d138-4740-ac41-74998430b3df", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Mosaic Quickstart\n", + "\n", + "> Perform a point-in-polygon spatial join between NYC Taxi trips and zones. __Note: this does not get into performance tweaks that are available for scaled joins.__\n", + "\n", + "1. To use Databricks Labs [Mosaic](https://databrickslabs.github.io/mosaic/index.html) library for geospatial data engineering, analysis, and visualization functionality:\n", + " * Install with `%pip install databricks-mosaic`\n", + " * Import and use with the following:\n", + " ```\n", + " import mosaic as mos\n", + " mos.enable_mosaic(spark, dbutils)\n", + " ```\n", + "

\n", + "\n", + "2. To use [KeplerGl](https://kepler.gl/) OSS library for map layer rendering:\n", + " * Already installed with Mosaic, use `%%mosaic_kepler` magic [[Mosaic Docs](https://databrickslabs.github.io/mosaic/usage/kepler.html)]\n", + " * Import with `from keplergl import KeplerGl` to use directly\n", + "\n", + "If you have trouble with Volume access:\n", + "\n", + "* For Mosaic 0.3 series (< DBR 13) - you can copy resources to DBFS as a workaround\n", + "* For Mosaic 0.4 series (DBR 13.3 LTS) - you will need to either copy resources to DBFS or setup for Unity Catalog + Shared Access which will involve your workspace admin. Instructions, as updated, will be [here](https://databrickslabs.github.io/mosaic/usage/install-gdal.html).\n", + "\n", + "--- \n", + " __Last Update__ 28 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d6cbd7f0-cfa1-41f9-88dc-dccd355343d4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Install Mosaic\n", + "\n", + "> Mosaic framework is available via pip install and it comes with bindings for Python, SQL, Scala and R. The wheel file coming with pip installation is registering any necessary jars for other language support." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2fb6d01c-9da4-471a-b765-eb4578600eb1", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet # <- Mosaic 0.3 series\n", + "# %pip install \"databricks-mosaic<0.5,>=0.4\" --quiet # <- Mosaic 0.4 series (as available)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "3444513e-7349-4159-8dda-c5bff1225a12", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "spark.conf.set(\"spark.sql.shuffle.partitions\", 1_024) # <-- default is 200\n", + "\n", + "# -- import databricks + spark functions\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import col, udf\n", + "from pyspark.sql.types import *\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "# mos.enable_gdal(spark) # <- not needed for this example\n", + "\n", + "# --other imports\n", + "import os\n", + "import pathlib\n", + "import requests\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "9251d814-2e9f-4287-8fd9-769f0bf40c68", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup Data" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c1f01df5-a33a-4d99-91f3-3dbe066ecc98", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Initial data stored in '/tmp/mosaic/mjohns@databricks.com'\n" + ] + } + ], + "source": [ + "user_name = dbutils.notebook.entry_point.getDbutils().notebook().getContext().userName().get()\n", + "\n", + "data_dir = f\"/tmp/mosaic/{user_name}\"\n", + "print(f\"Initial data stored in '{data_dir}'\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "293022d3-40c6-4928-946b-7bfe8a6fbb1e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Download NYC Taxi Zones\n", + "\n", + "> Make sure we have New York City Taxi zone shapes available in our environment." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e3283b3f-4b81-459c-b513-2d782e9acc7f", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "ZONE_DIR_FUSE? '/dbfs/tmp/mosaic/mjohns@databricks.com/taxi_zones'\n" + ] + } + ], + "source": [ + "zone_dir = f\"{data_dir}/taxi_zones\"\n", + "zone_dir_fuse = f\"/dbfs{zone_dir}\"\n", + "dbutils.fs.mkdirs(zone_dir)\n", + "\n", + "os.environ['ZONE_DIR_FUSE'] = zone_dir_fuse\n", + "print(f\"ZONE_DIR_FUSE? '{zone_dir_fuse}'\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "941175c3-4142-4254-b47d-c8e813dfe95c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "...skipping '/dbfs/tmp/mosaic/mjohns@databricks.com/taxi_zones/nyc_taxi_zones.geojson', already exits.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "

pathnamesizemodificationTime
dbfs:/tmp/mosaic/mjohns@databricks.com/taxi_zones/nyc_taxi_zones.geojsonnyc_taxi_zones.geojson38924781701183475000
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "dbfs:/tmp/mosaic/mjohns@databricks.com/taxi_zones/nyc_taxi_zones.geojson", + "nyc_taxi_zones.geojson", + 3892478, + 1701183475000 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "path", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "size", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "modificationTime", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "zone_url = 'https://data.cityofnewyork.us/api/geospatial/d3c5-ddgc?method=export&format=GeoJSON'\n", + "\n", + "zone_fuse_path = pathlib.Path(zone_dir_fuse) / 'nyc_taxi_zones.geojson'\n", + "if not zone_fuse_path.exists():\n", + " req = requests.get(zone_url)\n", + " with open(zone_fuse_path, 'wb') as f:\n", + " f.write(req.content)\n", + "else:\n", + " print(f\"...skipping '{zone_fuse_path}', already exits.\")\n", + "\n", + "display(dbutils.fs.ls(zone_dir))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "56b5edd3-3e43-428b-b13d-752c2a3a18a3", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Initial Taxi Zone from GeoJSON [Polygons]\n", + "\n", + "> With the functionality Mosaic brings we can easily load GeoJSON files. " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "172476a3-aa95-45cd-91e8-040d865b37d1", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 263\n+-----------------+--------------------+--------------------+--------------------+\n| type| properties| json_geometry| geometry|\n+-----------------+--------------------+--------------------+--------------------+\n|FeatureCollection|{EWR, 1, 1, 0.000...|{\"coordinates\":[[...|MULTIPOLYGON (((-...|\n|FeatureCollection|{Queens, 2, 2, 0....|{\"coordinates\":[[...|MULTIPOLYGON (((-...|\n|FeatureCollection|{Bronx, 3, 3, 0.0...|{\"coordinates\":[[...|MULTIPOLYGON (((-...|\n+-----------------+--------------------+--------------------+--------------------+\n\n" + ] + } + ], + "source": [ + "neighbourhoods = (\n", + " spark.read\n", + " .option(\"multiline\", \"true\")\n", + " .format(\"json\")\n", + " .load(zone_dir)\n", + " .select(\"type\", explode(col(\"features\")).alias(\"feature\"))\n", + " .select(\"type\", col(\"feature.properties\").alias(\"properties\"), to_json(col(\"feature.geometry\")).alias(\"json_geometry\"))\n", + " .withColumn(\"geometry\", mos.st_aswkt(mos.st_geomfromgeojson(\"json_geometry\")))\n", + ")\n", + "\n", + "print(f\"count? {neighbourhoods.count():,}\")\n", + "neighbourhoods.limit(3).show() # <- limiting + show for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3738db02-9bc9-437b-a723-00c438a6fb87", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Compute some basic geometry attributes" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "5a4d0baf-a36f-4e15-828d-991b46b76a02", + "showTitle": false, + "title": "" + } + }, + "source": [ + "Mosaic provides a number of functions for extracting the properties of geometries. Here are some that are relevant to Polygon geometries:" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "31304e6e-07ec-4179-bcc3-1dd94e1eb756", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+--------------------+-------------------+\n| geometry| calculatedArea| calculatedLength|\n+--------------------+--------------------+-------------------+\n|MULTIPOLYGON (((-...|7.823067885002558E-4|0.11635745318867867|\n|MULTIPOLYGON (((-...|0.001422779097814599| 0.8431218810128791|\n|MULTIPOLYGON (((-...|3.144141568206508E-4| 0.0843411059010578|\n+--------------------+--------------------+-------------------+\n\n" + ] + } + ], + "source": [ + "display(\n", + " neighbourhoods\n", + " .withColumn(\"calculatedArea\", mos.st_area(col(\"geometry\")))\n", + " .withColumn(\"calculatedLength\", mos.st_length(col(\"geometry\")))\n", + " # Note: The unit of measure of the area and length depends on the CRS used.\n", + " # For GPS locations it will be square radians and radians\n", + " .select(\"geometry\", \"calculatedArea\", \"calculatedLength\")\n", + " .limit(3)\n", + " .show() # <- limiting + show for ipynb only\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "704024a0-8171-4218-a95e-ff8ef6ace37c", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Initial Trips Data [Points]\n", + "\n", + "> We will load some Taxi trips data to represent point data; this data is coming from Databricks public datasets available in your environment. __Note: this is 1.6 billion trips as-is; while it is no problem to process this, to keep this to a quickstart level, we are going to use just 1/10th of 1% or ~1.6 million.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "909bb39e-22c8-46e2-a537-23f6db32ebc6", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 1,609,513\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
row_idvendor_idpickup_datetimedropoff_datetimepassenger_counttrip_distancepickup_longitudepickup_latituderate_code_iddropoff_longitudedropoff_latitudefare_amountextramta_taxtip_amounttolls_amounttotal_amountpickup_geomdropoff_geom
2129013916481179996CMT2012-09-22T11:15:03.000+00002012-09-22T11:21:08.000+000011.0-73.9712840.7642321-73.95890740.7688856.00.00.50.00.06.5POINT (-73.97128 40.764232)POINT (-73.958907 40.768885)
-187451197385687112CMT2012-09-22T11:57:33.000+00002012-09-22T12:05:04.000+000021.1-73.9681240.7592431-73.96028740.7738727.50.00.50.00.08.0POINT (-73.96812 40.759243)POINT (-73.960287 40.773872)
-5307413836615879790CMT2012-09-22T13:19:36.000+00002012-09-22T13:29:27.000+000011.8-73.96730140.7602731-73.94736340.7756889.00.00.50.00.09.5POINT (-73.967301 40.760273)POINT (-73.947363 40.775688)
-8038135963231314765CMT2012-09-22T15:23:44.000+00002012-09-22T15:27:24.000+000011.0-73.97370840.7662341-73.98404240.7493045.00.00.50.00.05.5POINT (-73.973708 40.766234)POINT (-73.984042 40.749304)
9153652317280220397CMT2012-09-22T15:38:33.000+00002012-09-22T15:44:19.000+000011.0-73.97251740.7540821-73.97818740.744666.00.00.50.00.06.5POINT (-73.972517 40.754082)POINT (-73.978187 40.74466)
7276234971418044547CMT2012-09-22T16:36:46.000+00002012-09-22T16:40:46.000+000010.7-73.9688340.7672831-73.97005740.7630125.00.00.50.00.05.5POINT (-73.96883 40.767283)POINT (-73.970057 40.763012)
-5272651262997334143CMT2012-09-22T18:51:39.000+00002012-09-22T19:01:32.000+000021.5-73.965840.7625051-73.98477540.7568578.50.00.50.00.09.0POINT (-73.9658 40.762505)POINT (-73.984775 40.756857)
6354727495669002224CMT2012-09-22T19:34:39.000+00002012-09-22T19:52:28.000+000013.1-73.96528640.7591021-73.98143440.78625115.00.00.50.00.015.5POINT (-73.965286 40.759102)POINT (-73.981434 40.786251)
6519124484930989871CMT2012-09-22T19:30:54.000+00002012-09-22T19:35:05.000+000020.9-73.96946540.7666111-73.98254240.7726015.00.00.50.00.05.5POINT (-73.969465 40.766611)POINT (-73.982542 40.772601)
-5496030646103797643CMT2012-09-22T19:47:41.000+00002012-09-22T20:06:02.000+000034.7-73.92642540.7657561-73.98676140.74807417.50.00.50.00.018.0POINT (-73.926425 40.765756)POINT (-73.986761 40.748074)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 2129013916481179996, + "CMT", + "2012-09-22T11:15:03.000+0000", + "2012-09-22T11:21:08.000+0000", + 1, + 1.0, + -73.97128, + 40.764232, + 1, + -73.958907, + 40.768885, + 6.0, + 0.0, + 0.5, + 0.0, + 0.0, + 6.5, + "POINT (-73.97128 40.764232)", + "POINT (-73.958907 40.768885)" + ], + [ + -187451197385687112, + "CMT", + "2012-09-22T11:57:33.000+0000", + "2012-09-22T12:05:04.000+0000", + 2, + 1.1, + -73.96812, + 40.759243, + 1, + -73.960287, + 40.773872, + 7.5, + 0.0, + 0.5, + 0.0, + 0.0, + 8.0, + "POINT (-73.96812 40.759243)", + "POINT (-73.960287 40.773872)" + ], + [ + -5307413836615879790, + "CMT", + "2012-09-22T13:19:36.000+0000", + "2012-09-22T13:29:27.000+0000", + 1, + 1.8, + -73.967301, + 40.760273, + 1, + -73.947363, + 40.775688, + 9.0, + 0.0, + 0.5, + 0.0, + 0.0, + 9.5, + "POINT (-73.967301 40.760273)", + "POINT (-73.947363 40.775688)" + ], + [ + -8038135963231314765, + "CMT", + "2012-09-22T15:23:44.000+0000", + "2012-09-22T15:27:24.000+0000", + 1, + 1.0, + -73.973708, + 40.766234, + 1, + -73.984042, + 40.749304, + 5.0, + 0.0, + 0.5, + 0.0, + 0.0, + 5.5, + "POINT (-73.973708 40.766234)", + "POINT (-73.984042 40.749304)" + ], + [ + 9153652317280220397, + "CMT", + "2012-09-22T15:38:33.000+0000", + "2012-09-22T15:44:19.000+0000", + 1, + 1.0, + -73.972517, + 40.754082, + 1, + -73.978187, + 40.74466, + 6.0, + 0.0, + 0.5, + 0.0, + 0.0, + 6.5, + "POINT (-73.972517 40.754082)", + "POINT (-73.978187 40.74466)" + ], + [ + 7276234971418044547, + "CMT", + "2012-09-22T16:36:46.000+0000", + "2012-09-22T16:40:46.000+0000", + 1, + 0.7, + -73.96883, + 40.767283, + 1, + -73.970057, + 40.763012, + 5.0, + 0.0, + 0.5, + 0.0, + 0.0, + 5.5, + "POINT (-73.96883 40.767283)", + "POINT (-73.970057 40.763012)" + ], + [ + -5272651262997334143, + "CMT", + "2012-09-22T18:51:39.000+0000", + "2012-09-22T19:01:32.000+0000", + 2, + 1.5, + -73.9658, + 40.762505, + 1, + -73.984775, + 40.756857, + 8.5, + 0.0, + 0.5, + 0.0, + 0.0, + 9.0, + "POINT (-73.9658 40.762505)", + "POINT (-73.984775 40.756857)" + ], + [ + 6354727495669002224, + "CMT", + "2012-09-22T19:34:39.000+0000", + "2012-09-22T19:52:28.000+0000", + 1, + 3.1, + -73.965286, + 40.759102, + 1, + -73.981434, + 40.786251, + 15.0, + 0.0, + 0.5, + 0.0, + 0.0, + 15.5, + "POINT (-73.965286 40.759102)", + "POINT (-73.981434 40.786251)" + ], + [ + 6519124484930989871, + "CMT", + "2012-09-22T19:30:54.000+0000", + "2012-09-22T19:35:05.000+0000", + 2, + 0.9, + -73.969465, + 40.766611, + 1, + -73.982542, + 40.772601, + 5.0, + 0.0, + 0.5, + 0.0, + 0.0, + 5.5, + "POINT (-73.969465 40.766611)", + "POINT (-73.982542 40.772601)" + ], + [ + -5496030646103797643, + "CMT", + "2012-09-22T19:47:41.000+0000", + "2012-09-22T20:06:02.000+0000", + 3, + 4.7, + -73.926425, + 40.765756, + 1, + -73.986761, + 40.748074, + 17.5, + 0.0, + 0.5, + 0.0, + 0.0, + 18.0, + "POINT (-73.926425 40.765756)", + "POINT (-73.986761 40.748074)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "row_id", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "vendor_id", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "dropoff_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "passenger_count", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_longitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_latitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "rate_code_id", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "dropoff_longitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "dropoff_latitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "fare_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "extra", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "mta_tax", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tip_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tolls_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "total_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_geom", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "trips = (\n", + " spark.table(\"delta.`/databricks-datasets/nyctaxi/tables/nyctaxi_yellow`\")\n", + " # - .1% sample\n", + " .sample(.001)\n", + " .drop(\"vendorId\", \"rateCodeId\", \"store_and_fwd_flag\", \"payment_type\")\n", + " .withColumn(\"pickup_geom\", mos.st_astext(mos.st_point(col(\"pickup_longitude\"), col(\"pickup_latitude\"))))\n", + " .withColumn(\"dropoff_geom\", mos.st_astext(mos.st_point(col(\"dropoff_longitude\"), col(\"dropoff_latitude\"))))\n", + " # - adding a row id\n", + " .selectExpr(\n", + " \"xxhash64(pickup_datetime, dropoff_datetime, pickup_geom, dropoff_geom) as row_id\", \"*\"\n", + " )\n", + ")\n", + "print(f\"count? {trips.count():,}\")\n", + "trips.limit(10).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d905fbe9-5104-4a09-bdee-4b5adba23bcf", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Spatial Joins\n", + "\n", + "> We can use Mosaic to perform spatial joins both with and without Mosaic indexing strategies. Indexing is very important when handling very different geometries both in size and in shape (ie. number of vertices)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e9ff1fa2-ca0b-4472-8c8a-1b317da11e76", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Getting the optimal resolution\n", + "\n", + "> We can use Mosaic functionality to identify how to best index our data based on the data inside the specific dataframe. Selecting an appropriate indexing resolution can have a considerable impact on the performance." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2bff2755-9a4f-481b-a00f-93e0fd2ebd8a", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimal resolution is 9\n" + ] + } + ], + "source": [ + "from mosaic import MosaicFrame\n", + "\n", + "neighbourhoods_mosaic_frame = MosaicFrame(neighbourhoods, \"geometry\")\n", + "optimal_resolution = neighbourhoods_mosaic_frame.get_optimal_resolution(sample_fraction=0.75)\n", + "\n", + "print(f\"Optimal resolution is {optimal_resolution}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "b28464a3-f420-4264-b58b-a7e7d79329ad", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> Not every resolution will yield performance improvements. By a rule of thumb it is always better to under-index than over-index - if not sure select a lower resolution. Higher resolutions are needed when we have very imbalanced geometries with respect to their size or with respect to the number of vertices. In such case indexing with more indices will considerably increase the parallel nature of the operations. You can think of Mosaic as a way to partition an overly complex row into multiple rows that have a balanced amount of computation each." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6129062a-c951-4e1d-aac7-e146225dc9d8", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
resolutionmean_index_areamean_geometry_areapercentile_25_geometry_areapercentile_50_geometry_areapercentile_75_geometry_area
101.613031989295642E-6209.2813735025822366.88836237217488140.47899017489053277.457697890302
91.129122336468363E-529.897340555608889.55548081312268720.06842816384189739.63681595151253
112.3043288507855827E-71464.9712436152888468.2190572805376983.35402474692811942.206045030451
87.90392229801954E-54.2710130172709331.36505729876610032.86689439030573875.662355037138002
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 10, + 1.613031989295642E-6, + 209.28137350258223, + 66.88836237217488, + 140.47899017489053, + 277.457697890302 + ], + [ + 9, + 1.129122336468363E-5, + 29.89734055560888, + 9.555480813122687, + 20.068428163841897, + 39.63681595151253 + ], + [ + 11, + 2.3043288507855827E-7, + 1464.9712436152888, + 468.2190572805376, + 983.3540247469281, + 1942.206045030451 + ], + [ + 8, + 7.90392229801954E-5, + 4.271013017270933, + 1.3650572987661003, + 2.8668943903057387, + 5.662355037138002 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "resolution", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "mean_index_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "mean_geometry_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "percentile_25_geometry_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "percentile_50_geometry_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "percentile_75_geometry_area", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "display(\n", + " neighbourhoods_mosaic_frame.get_resolution_metrics(sample_rows=150)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "eb868752-f425-4c70-aab9-9a7f0d45f049", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Indexing using the optimal resolution\n", + "\n", + "> We will use mosaic sql functions to index our points data. Here we will use resolution 9, index resolution depends on the dataset in use." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0ce69d9e-be91-4b8d-bd29-50fa9f569e9f", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
row_idpickup_h3dropoff_h3vendor_idpickup_datetimedropoff_datetimepassenger_counttrip_distancepickup_longitudepickup_latituderate_code_iddropoff_longitudedropoff_latitudefare_amountextramta_taxtip_amounttolls_amounttotal_amountpickup_geomdropoff_geom
2129013916481179996617733123866886143617733122576875519CMT2012-09-22T11:15:03.000+00002012-09-22T11:21:08.000+000011.0-73.9712840.7642321-73.95890740.7688856.00.00.50.00.06.5POINT (-73.97128 40.764232)POINT (-73.958907 40.768885)
-187451197385687112617733123876847615617733122577661951CMT2012-09-22T11:57:33.000+00002012-09-22T12:05:04.000+000021.1-73.9681240.7592431-73.96028740.7738727.50.00.50.00.08.0POINT (-73.96812 40.759243)POINT (-73.960287 40.773872)
-5307413836615879790617733123867148287617733122584739839CMT2012-09-22T13:19:36.000+00002012-09-22T13:29:27.000+000011.8-73.96730140.7602731-73.94736340.7756889.00.00.50.00.09.5POINT (-73.967301 40.760273)POINT (-73.947363 40.775688)
-8038135963231314765617733123878682623617733123812622335CMT2012-09-22T15:23:44.000+00002012-09-22T15:27:24.000+000011.0-73.97370840.7662341-73.98404240.7493045.00.00.50.00.05.5POINT (-73.973708 40.766234)POINT (-73.984042 40.749304)
9153652317280220397617733123869507583617733123807379455CMT2012-09-22T15:38:33.000+00002012-09-22T15:44:19.000+000011.0-73.97251740.7540821-73.97818740.744666.00.00.50.00.06.5POINT (-73.972517 40.754082)POINT (-73.978187 40.74466)
7276234971418044547617733123874750463617733123866886143CMT2012-09-22T16:36:46.000+00002012-09-22T16:40:46.000+000010.7-73.9688340.7672831-73.97005740.7630125.00.00.50.00.05.5POINT (-73.96883 40.767283)POINT (-73.970057 40.763012)
-5272651262997334143617733123875012607617733123873701887CMT2012-09-22T18:51:39.000+00002012-09-22T19:01:32.000+000021.5-73.965840.7625051-73.98477540.7568578.50.00.50.00.09.0POINT (-73.9658 40.762505)POINT (-73.984775 40.756857)
6354727495669002224617733123876847615617733122617507839CMT2012-09-22T19:34:39.000+00002012-09-22T19:52:28.000+000013.1-73.96528640.7591021-73.98143440.78625115.00.00.50.00.015.5POINT (-73.965286 40.759102)POINT (-73.981434 40.786251)
6519124484930989871617733123874750463617733122610954239CMT2012-09-22T19:30:54.000+00002012-09-22T19:35:05.000+000020.9-73.96946540.7666111-73.98254240.7726015.00.00.50.00.05.5POINT (-73.969465 40.766611)POINT (-73.982542 40.772601)
-5496030646103797643617733124358143999617733123811573759CMT2012-09-22T19:47:41.000+00002012-09-22T20:06:02.000+000034.7-73.92642540.7657561-73.98676140.74807417.50.00.50.00.018.0POINT (-73.926425 40.765756)POINT (-73.986761 40.748074)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 2129013916481179996, + 617733123866886143, + 617733122576875519, + "CMT", + "2012-09-22T11:15:03.000+0000", + "2012-09-22T11:21:08.000+0000", + 1, + 1.0, + -73.97128, + 40.764232, + 1, + -73.958907, + 40.768885, + 6.0, + 0.0, + 0.5, + 0.0, + 0.0, + 6.5, + "POINT (-73.97128 40.764232)", + "POINT (-73.958907 40.768885)" + ], + [ + -187451197385687112, + 617733123876847615, + 617733122577661951, + "CMT", + "2012-09-22T11:57:33.000+0000", + "2012-09-22T12:05:04.000+0000", + 2, + 1.1, + -73.96812, + 40.759243, + 1, + -73.960287, + 40.773872, + 7.5, + 0.0, + 0.5, + 0.0, + 0.0, + 8.0, + "POINT (-73.96812 40.759243)", + "POINT (-73.960287 40.773872)" + ], + [ + -5307413836615879790, + 617733123867148287, + 617733122584739839, + "CMT", + "2012-09-22T13:19:36.000+0000", + "2012-09-22T13:29:27.000+0000", + 1, + 1.8, + -73.967301, + 40.760273, + 1, + -73.947363, + 40.775688, + 9.0, + 0.0, + 0.5, + 0.0, + 0.0, + 9.5, + "POINT (-73.967301 40.760273)", + "POINT (-73.947363 40.775688)" + ], + [ + -8038135963231314765, + 617733123878682623, + 617733123812622335, + "CMT", + "2012-09-22T15:23:44.000+0000", + "2012-09-22T15:27:24.000+0000", + 1, + 1.0, + -73.973708, + 40.766234, + 1, + -73.984042, + 40.749304, + 5.0, + 0.0, + 0.5, + 0.0, + 0.0, + 5.5, + "POINT (-73.973708 40.766234)", + "POINT (-73.984042 40.749304)" + ], + [ + 9153652317280220397, + 617733123869507583, + 617733123807379455, + "CMT", + "2012-09-22T15:38:33.000+0000", + "2012-09-22T15:44:19.000+0000", + 1, + 1.0, + -73.972517, + 40.754082, + 1, + -73.978187, + 40.74466, + 6.0, + 0.0, + 0.5, + 0.0, + 0.0, + 6.5, + "POINT (-73.972517 40.754082)", + "POINT (-73.978187 40.74466)" + ], + [ + 7276234971418044547, + 617733123874750463, + 617733123866886143, + "CMT", + "2012-09-22T16:36:46.000+0000", + "2012-09-22T16:40:46.000+0000", + 1, + 0.7, + -73.96883, + 40.767283, + 1, + -73.970057, + 40.763012, + 5.0, + 0.0, + 0.5, + 0.0, + 0.0, + 5.5, + "POINT (-73.96883 40.767283)", + "POINT (-73.970057 40.763012)" + ], + [ + -5272651262997334143, + 617733123875012607, + 617733123873701887, + "CMT", + "2012-09-22T18:51:39.000+0000", + "2012-09-22T19:01:32.000+0000", + 2, + 1.5, + -73.9658, + 40.762505, + 1, + -73.984775, + 40.756857, + 8.5, + 0.0, + 0.5, + 0.0, + 0.0, + 9.0, + "POINT (-73.9658 40.762505)", + "POINT (-73.984775 40.756857)" + ], + [ + 6354727495669002224, + 617733123876847615, + 617733122617507839, + "CMT", + "2012-09-22T19:34:39.000+0000", + "2012-09-22T19:52:28.000+0000", + 1, + 3.1, + -73.965286, + 40.759102, + 1, + -73.981434, + 40.786251, + 15.0, + 0.0, + 0.5, + 0.0, + 0.0, + 15.5, + "POINT (-73.965286 40.759102)", + "POINT (-73.981434 40.786251)" + ], + [ + 6519124484930989871, + 617733123874750463, + 617733122610954239, + "CMT", + "2012-09-22T19:30:54.000+0000", + "2012-09-22T19:35:05.000+0000", + 2, + 0.9, + -73.969465, + 40.766611, + 1, + -73.982542, + 40.772601, + 5.0, + 0.0, + 0.5, + 0.0, + 0.0, + 5.5, + "POINT (-73.969465 40.766611)", + "POINT (-73.982542 40.772601)" + ], + [ + -5496030646103797643, + 617733124358143999, + 617733123811573759, + "CMT", + "2012-09-22T19:47:41.000+0000", + "2012-09-22T20:06:02.000+0000", + 3, + 4.7, + -73.926425, + 40.765756, + 1, + -73.986761, + 40.748074, + 17.5, + 0.0, + 0.5, + 0.0, + 0.0, + 18.0, + "POINT (-73.926425 40.765756)", + "POINT (-73.986761 40.748074)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "row_id", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "pickup_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "dropoff_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "vendor_id", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "dropoff_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "passenger_count", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_longitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_latitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "rate_code_id", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "dropoff_longitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "dropoff_latitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "fare_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "extra", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "mta_tax", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tip_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tolls_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "total_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_geom", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "tripsWithIndex = (\n", + " trips\n", + " .withColumn(\"pickup_h3\", mos.grid_pointascellid(col(\"pickup_geom\"), lit(optimal_resolution)))\n", + " .withColumn(\"dropoff_h3\", mos.grid_pointascellid(col(\"dropoff_geom\"), lit(optimal_resolution)))\n", + " # - beneficial to have index in first 32 table cols\n", + " .selectExpr(\n", + " \"row_id\", \"pickup_h3\", \"dropoff_h3\", \"* except(row_id, pickup_h3, dropoff_h3)\"\n", + " )\n", + ")\n", + "display(tripsWithIndex.limit(10))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e519823d-b03b-4984-9a6a-4988aff54648", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> We will also index our neighbourhoods using a built in generator function." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "32321c65-39c0-4d9a-9124-2d3de4ad61a0", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 11,885\n+-----------------+--------------------+--------------------+\n| type| properties| mosaic_index|\n+-----------------+--------------------+--------------------+\n|FeatureCollection|{EWR, 1, 1, 0.000...|{true, 6177331507...|\n|FeatureCollection|{EWR, 1, 1, 0.000...|{true, 6177331508...|\n|FeatureCollection|{EWR, 1, 1, 0.000...|{true, 6177331508...|\n|FeatureCollection|{EWR, 1, 1, 0.000...|{true, 6177331507...|\n|FeatureCollection|{EWR, 1, 1, 0.000...|{true, 6177331508...|\n+-----------------+--------------------+--------------------+\n\n" + ] + } + ], + "source": [ + "neighbourhoodsWithIndex = (\n", + " neighbourhoods\n", + " # We break down the original geometry in multiple smaller mosaic chips, each with its\n", + " # own index\n", + " .withColumn(\n", + " \"mosaic_index\", \n", + " mos.grid_tessellateexplode(col(\"geometry\"), lit(optimal_resolution))\n", + " )\n", + "\n", + " # We don't need the original geometry any more, since we have broken it down into\n", + " # Smaller mosaic chips.\n", + " .drop(\"json_geometry\", \"geometry\")\n", + ")\n", + "\n", + "print(f\"count? {neighbourhoodsWithIndex.count():,}\") # <- notice the explode results in more rows\n", + "neighbourhoodsWithIndex.limit(5).show() # <- limiting + show for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "a8028556-2f1e-4f84-9ef0-e400815908d1", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Performing the spatial join\n", + "\n", + "> We can now do spatial joins to both pickup and drop off zones based on geolocations in our datasets." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "03a98ce7-18ea-402f-8cb6-396ce0c4b14c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
trip_distancepickup_geompickup_zonedropoff_geompickup_h3dropoff_h3
1.05POINT (-73.95499 40.777475)Upper East Side NorthPOINT (-73.968848 40.785197)617733122574254079617733122579234815
1.5POINT (-73.95782 40.769567)Lenox Hill WestPOINT (-73.977888 40.76625)617733122576875519617733123879206911
1.2POINT (-73.957921 40.776327)Upper East Side NorthPOINT (-73.957664 40.776225)617733122574254079617733122574254079
10.1POINT (-73.951195 40.794134)East Harlem SouthPOINT (-73.986655 40.703102)617733122648440831617733151096045567
0.61POINT (-73.955828 40.768823)Lenox Hill WestPOINT (-73.956868 40.77482)617733122576351231617733122577661951
1.19POINT (-73.95152 40.810228)Central HarlemPOINT (-73.943287 40.799235)617733122635595775617733122641100799
8.17POINT (-73.870643 40.773607)LaGuardia AirportPOINT (-73.955632 40.782498)617733124388552703617733122575040511
1.3POINT (-73.961098 40.80209)Morningside HeightsPOINT (-73.9723 40.78674)617733122645819391617733122560098303
1.66POINT (-73.96123 40.811963)Morningside HeightsPOINT (-73.974852 40.790805)617733122627993599617733122559836159
11.0POINT (-73.862835 40.768945)LaGuardia AirportPOINT (-73.970477 40.757715)617733124072407039617733123866099711
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 1.05, + "POINT (-73.95499 40.777475)", + "Upper East Side North", + "POINT (-73.968848 40.785197)", + 617733122574254079, + 617733122579234815 + ], + [ + 1.5, + "POINT (-73.95782 40.769567)", + "Lenox Hill West", + "POINT (-73.977888 40.76625)", + 617733122576875519, + 617733123879206911 + ], + [ + 1.2, + "POINT (-73.957921 40.776327)", + "Upper East Side North", + "POINT (-73.957664 40.776225)", + 617733122574254079, + 617733122574254079 + ], + [ + 10.1, + "POINT (-73.951195 40.794134)", + "East Harlem South", + "POINT (-73.986655 40.703102)", + 617733122648440831, + 617733151096045567 + ], + [ + 0.61, + "POINT (-73.955828 40.768823)", + "Lenox Hill West", + "POINT (-73.956868 40.77482)", + 617733122576351231, + 617733122577661951 + ], + [ + 1.19, + "POINT (-73.95152 40.810228)", + "Central Harlem", + "POINT (-73.943287 40.799235)", + 617733122635595775, + 617733122641100799 + ], + [ + 8.17, + "POINT (-73.870643 40.773607)", + "LaGuardia Airport", + "POINT (-73.955632 40.782498)", + 617733124388552703, + 617733122575040511 + ], + [ + 1.3, + "POINT (-73.961098 40.80209)", + "Morningside Heights", + "POINT (-73.9723 40.78674)", + 617733122645819391, + 617733122560098303 + ], + [ + 1.66, + "POINT (-73.96123 40.811963)", + "Morningside Heights", + "POINT (-73.974852 40.790805)", + 617733122627993599, + 617733122559836159 + ], + [ + 11.0, + "POINT (-73.862835 40.768945)", + "LaGuardia Airport", + "POINT (-73.970477 40.757715)", + 617733124072407039, + 617733123866099711 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_zone", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "dropoff_h3", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "pickupNeighbourhoods = neighbourhoodsWithIndex.select(col(\"properties.zone\").alias(\"pickup_zone\"), col(\"mosaic_index\"))\n", + "\n", + "withPickupZone = (\n", + " tripsWithIndex.join(\n", + " pickupNeighbourhoods,\n", + " tripsWithIndex[\"pickup_h3\"] == pickupNeighbourhoods[\"mosaic_index.index_id\"]\n", + " ).where(\n", + " # If the borough is a core chip (the chip is fully contained within the geometry), then we do not need\n", + " # to perform any intersection, because any point matching the same index will certainly be contained in\n", + " # the borough. Otherwise we need to perform an st_contains operation on the chip geometry.\n", + " col(\"mosaic_index.is_core\") | mos.st_contains(col(\"mosaic_index.wkb\"), col(\"pickup_geom\"))\n", + " ).select(\n", + " \"trip_distance\", \"pickup_geom\", \"pickup_zone\", \"dropoff_geom\", \"pickup_h3\", \"dropoff_h3\"\n", + " )\n", + ")\n", + "\n", + "display(withPickupZone.limit(10)) # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "db947fdf-b039-4675-838f-0d16fdd4516f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> We can easily perform a similar join for the drop off location. __Note: in this case using `withPickupZone` from above as the left sid of the join.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0b2e6289-93a4-42d5-b47d-70ea00325bb5", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
trip_distancepickup_geompickup_zonedropoff_geomdropoff_zonepickup_h3dropoff_h3trip_line
1.05POINT (-73.95499 40.777475)Upper East Side NorthPOINT (-73.968848 40.785197)Central Park617733122574254079617733122579234815LINESTRING (-73.95499 40.777475, -73.968848 40.785197)
1.5POINT (-73.95782 40.769567)Lenox Hill WestPOINT (-73.977888 40.76625)Midtown North617733122576875519617733123879206911LINESTRING (-73.95782 40.769567, -73.977888 40.76625)
1.2POINT (-73.957921 40.776327)Upper East Side NorthPOINT (-73.957664 40.776225)Upper East Side North617733122574254079617733122574254079LINESTRING (-73.957921 40.776327, -73.957664 40.776225)
10.1POINT (-73.951195 40.794134)East Harlem SouthPOINT (-73.986655 40.703102)DUMBO/Vinegar Hill617733122648440831617733151096045567LINESTRING (-73.951195 40.794134, -73.986655 40.703102)
0.61POINT (-73.955828 40.768823)Lenox Hill WestPOINT (-73.956868 40.77482)Yorkville West617733122576351231617733122577661951LINESTRING (-73.955828 40.768823, -73.956868 40.77482)
1.19POINT (-73.95152 40.810228)Central HarlemPOINT (-73.943287 40.799235)East Harlem North617733122635595775617733122641100799LINESTRING (-73.95152 40.810228, -73.943287 40.799235)
8.17POINT (-73.870643 40.773607)LaGuardia AirportPOINT (-73.955632 40.782498)Upper East Side North617733124388552703617733122575040511LINESTRING (-73.870643 40.773607, -73.955632 40.782498)
1.3POINT (-73.961098 40.80209)Morningside HeightsPOINT (-73.9723 40.78674)Upper West Side North617733122645819391617733122560098303LINESTRING (-73.961098 40.80209, -73.9723 40.78674)
1.66POINT (-73.96123 40.811963)Morningside HeightsPOINT (-73.974852 40.790805)Upper West Side North617733122627993599617733122559836159LINESTRING (-73.96123 40.811963, -73.974852 40.790805)
11.0POINT (-73.862835 40.768945)LaGuardia AirportPOINT (-73.970477 40.757715)Midtown East617733124072407039617733123866099711LINESTRING (-73.862835 40.768945, -73.970477 40.757715)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 1.05, + "POINT (-73.95499 40.777475)", + "Upper East Side North", + "POINT (-73.968848 40.785197)", + "Central Park", + 617733122574254079, + 617733122579234815, + "LINESTRING (-73.95499 40.777475, -73.968848 40.785197)" + ], + [ + 1.5, + "POINT (-73.95782 40.769567)", + "Lenox Hill West", + "POINT (-73.977888 40.76625)", + "Midtown North", + 617733122576875519, + 617733123879206911, + "LINESTRING (-73.95782 40.769567, -73.977888 40.76625)" + ], + [ + 1.2, + "POINT (-73.957921 40.776327)", + "Upper East Side North", + "POINT (-73.957664 40.776225)", + "Upper East Side North", + 617733122574254079, + 617733122574254079, + "LINESTRING (-73.957921 40.776327, -73.957664 40.776225)" + ], + [ + 10.1, + "POINT (-73.951195 40.794134)", + "East Harlem South", + "POINT (-73.986655 40.703102)", + "DUMBO/Vinegar Hill", + 617733122648440831, + 617733151096045567, + "LINESTRING (-73.951195 40.794134, -73.986655 40.703102)" + ], + [ + 0.61, + "POINT (-73.955828 40.768823)", + "Lenox Hill West", + "POINT (-73.956868 40.77482)", + "Yorkville West", + 617733122576351231, + 617733122577661951, + "LINESTRING (-73.955828 40.768823, -73.956868 40.77482)" + ], + [ + 1.19, + "POINT (-73.95152 40.810228)", + "Central Harlem", + "POINT (-73.943287 40.799235)", + "East Harlem North", + 617733122635595775, + 617733122641100799, + "LINESTRING (-73.95152 40.810228, -73.943287 40.799235)" + ], + [ + 8.17, + "POINT (-73.870643 40.773607)", + "LaGuardia Airport", + "POINT (-73.955632 40.782498)", + "Upper East Side North", + 617733124388552703, + 617733122575040511, + "LINESTRING (-73.870643 40.773607, -73.955632 40.782498)" + ], + [ + 1.3, + "POINT (-73.961098 40.80209)", + "Morningside Heights", + "POINT (-73.9723 40.78674)", + "Upper West Side North", + 617733122645819391, + 617733122560098303, + "LINESTRING (-73.961098 40.80209, -73.9723 40.78674)" + ], + [ + 1.66, + "POINT (-73.96123 40.811963)", + "Morningside Heights", + "POINT (-73.974852 40.790805)", + "Upper West Side North", + 617733122627993599, + 617733122559836159, + "LINESTRING (-73.96123 40.811963, -73.974852 40.790805)" + ], + [ + 11.0, + "POINT (-73.862835 40.768945)", + "LaGuardia Airport", + "POINT (-73.970477 40.757715)", + "Midtown East", + 617733124072407039, + 617733123866099711, + "LINESTRING (-73.862835 40.768945, -73.970477 40.757715)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_zone", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_zone", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "dropoff_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "trip_line", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "dropoffNeighbourhoods = neighbourhoodsWithIndex.select(col(\"properties.zone\").alias(\"dropoff_zone\"), col(\"mosaic_index\"))\n", + "\n", + "withDropoffZone = (\n", + " withPickupZone.join(\n", + " dropoffNeighbourhoods,\n", + " withPickupZone[\"dropoff_h3\"] == dropoffNeighbourhoods[\"mosaic_index.index_id\"]\n", + " ).where(\n", + " col(\"mosaic_index.is_core\") | mos.st_contains(col(\"mosaic_index.wkb\"), col(\"dropoff_geom\"))\n", + " ).select(\n", + " \"trip_distance\", \"pickup_geom\", \"pickup_zone\", \"dropoff_geom\", \"dropoff_zone\", \"pickup_h3\", \"dropoff_h3\"\n", + " )\n", + " .withColumn(\"trip_line\", mos.st_astext(mos.st_makeline(array(mos.st_geomfromwkt(col(\"pickup_geom\")), mos.st_geomfromwkt(col(\"dropoff_geom\"))))))\n", + ")\n", + "\n", + "display(withDropoffZone.limit(10)) # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "30d4507b-7189-455e-9a4e-681d2f4714ac", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Visualise the results in Kepler\n", + "\n", + "> Mosaic abstracts interaction with Kepler in python through the use of the `%%mosaic_kepler` magic. When python is not the notebook language, you can prepend `%python` before the magic to make the switch." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "17c9cbeb-f411-4b2d-94d7-6737aaf1e1c4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Here is the initial rendering with trip lines._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "81d92d32-c979-4dd8-9e7b-1a19d2507f13", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d331fd71-d383-485e-bb6f-6bcd2302dae7", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Here is with trip lines off and some other adjustments._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4c1c94de-97bb-41e3-abd2-955b6ea3effd", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e1311242-147c-461e-9689-e10e02bd66e8", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results. Hint: you can toggle layers on/off and adjust properties._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0a093833-f267-4194-b06e-5575001727d2", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# withDropoffZone \"pickup_h3\" \"h3\" 5000" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c1466346-8537-4e15-9afc-54056129af5a", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Databricks Lakehouse can read / write most any data format\n", + "\n", + "> Here are [built-in](https://docs.databricks.com/en/external-data/index.html) formats as well as Mosaic [readers](https://databrickslabs.github.io/mosaic/api/api.html). __Note: best performance with Delta Lake format__, ref [Databricks](https://docs.databricks.com/en/delta/index.html) and [OSS](https://docs.delta.io/latest/index.html) docs for Delta Lake. Beyond built-in formats, Databricks is a platform on which you can install a wide variety of libraries, e.g. [1](https://docs.databricks.com/en/libraries/index.html#python-environment-management) | [2](https://docs.databricks.com/en/compute/compatibility.html) | [3](https://docs.databricks.com/en/init-scripts/index.html).\n", + "\n", + "Example of [reading](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameReader.html?highlight=read#pyspark.sql.DataFrameReader) and [writing](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameWriter.html?highlight=pyspark%20sql%20dataframe%20writer#pyspark.sql.DataFrameWriter) a Spark DataFrame with Delta Lake format.\n", + "\n", + "```\n", + "# - `write.format(\"delta\")` is default in Databricks\n", + "# - can save to a specified path in the Lakehouse\n", + "# - can save as a table in the Databricks Metastore\n", + "df.write.save(\"\")\n", + "df.write.saveAsTable(\"\")\n", + "```\n", + "\n", + "Example of loading a Delta Lake Table as a Spark DataFrame.\n", + "\n", + "```\n", + "# - `read.format(\"delta\")` is default in Databricks\n", + "# - can load a specified path in the Lakehouse\n", + "# - can load a table in the Databricks Metastore\n", + "df.read.load(\"\")\n", + "df.table(\"\")\n", + "```\n", + "\n", + "More on [Unity Catalog](https://docs.databricks.com/en/data-governance/unity-catalog/index.html) in Databricks Lakehouse for Governing [Tables](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#tables) and [Volumes](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#volumes)." + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "pythonIndentUnit": 2 + }, + "notebookName": "QuickstartNotebook", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/QuickstartNotebook.py b/notebooks/examples/python/QuickstartNotebook.py deleted file mode 100644 index 1205a2ed6..000000000 --- a/notebooks/examples/python/QuickstartNotebook.py +++ /dev/null @@ -1,270 +0,0 @@ -# Databricks notebook source -# MAGIC %md -# MAGIC ## Setup NYC taxi zones -# MAGIC In order to setup the data please run the notebook available at "../../data/DownloadNYCTaxiZones".
-# MAGIC DownloadNYCTaxiZones notebook will make sure we have New York City Taxi zone shapes available in our environment. - -# COMMAND ---------- - -# MAGIC %pip install databricks-mosaic - -# COMMAND ---------- - -user_name = dbutils.notebook.entry_point.getDbutils().notebook().getContext().userName().get() - -raw_path = f"dbfs:/tmp/mosaic/{user_name}" -raw_taxi_zones_path = f"{raw_path}/taxi_zones" - -print(f"The raw data is stored in {raw_path}") - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Enable Mosaic in the notebook -# MAGIC To get started, you'll need to attach the wheel to your cluster and import instances as in the cell below. - -# COMMAND ---------- - -from pyspark.sql.functions import * -import mosaic as mos -mos.enable_mosaic(spark, dbutils) - -# COMMAND ---------- - -# MAGIC %md ## Read polygons from GeoJson - -# COMMAND ---------- - -# MAGIC %md -# MAGIC With the functionality Mosaic brings we can easily load GeoJSON files using spark.
-# MAGIC In the past this required GeoPandas in python and conversion to spark dataframe.
- -# COMMAND ---------- - -neighbourhoods = ( - spark.read - .option("multiline", "true") - .format("json") - .load(raw_taxi_zones_path) - .select("type", explode(col("features")).alias("feature")) - .select("type", col("feature.properties").alias("properties"), to_json(col("feature.geometry")).alias("json_geometry")) - .withColumn("geometry", mos.st_aswkt(mos.st_geomfromgeojson("json_geometry"))) -) - -display( - neighbourhoods -) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Compute some basic geometry attributes - -# COMMAND ---------- - -# MAGIC %md -# MAGIC Mosaic provides a number of functions for extracting the properties of geometries. Here are some that are relevant to Polygon geometries: - -# COMMAND ---------- - -display( - neighbourhoods - .withColumn("calculatedArea", mos.st_area(col("geometry"))) - .withColumn("calculatedLength", mos.st_length(col("geometry"))) - # Note: The unit of measure of the area and length depends on the CRS used. - # For GPS locations it will be square radians and radians - .select("geometry", "calculatedArea", "calculatedLength") -) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Read points data - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We will load some Taxi trips data to represent point data.
-# MAGIC We already loaded some shapes representing polygons that correspond to NYC neighbourhoods.
- -# COMMAND ---------- - -tripsTable = spark.table("delta.`/databricks-datasets/nyctaxi/tables/nyctaxi_yellow`") - -# COMMAND ---------- - -trips = ( - tripsTable - .drop("vendorId", "rateCodeId", "store_and_fwd_flag", "payment_type") - .withColumn("pickup_geom", mos.st_astext(mos.st_point(col("pickup_longitude"), col("pickup_latitude")))) - .withColumn("dropoff_geom", mos.st_astext(mos.st_point(col("dropoff_longitude"), col("dropoff_latitude")))) -) - -# COMMAND ---------- - -display(trips.select("pickup_geom", "dropoff_geom")) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Spatial Joins - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We can use Mosaic to perform spatial joins both with and without Mosaic indexing strategies.
-# MAGIC Indexing is very important when handling very different geometries both in size and in shape (ie. number of vertices).
- -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### Getting the optimal resolution - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We can use Mosaic functionality to identify how to best index our data based on the data inside the specific dataframe.
-# MAGIC Selecting an appropriate indexing resolution can have a considerable impact on the performance.
- -# COMMAND ---------- - -from mosaic import MosaicFrame - -neighbourhoods_mosaic_frame = MosaicFrame(neighbourhoods, "geometry") -optimal_resolution = neighbourhoods_mosaic_frame.get_optimal_resolution(sample_fraction=0.75) - -print(f"Optimal resolution is {optimal_resolution}") - -# COMMAND ---------- - -# MAGIC %md -# MAGIC Not every resolution will yield performance improvements.
-# MAGIC By a rule of thumb it is always better to under-index than over-index - if not sure select a lower resolution.
-# MAGIC Higher resolutions are needed when we have very imbalanced geometries with respect to their size or with respect to the number of vertices.
-# MAGIC In such case indexing with more indices will considerably increase the parallel nature of the operations.
-# MAGIC You can think of Mosaic as a way to partition an overly complex row into multiple rows that have a balanced amount of computation each. - -# COMMAND ---------- - -display( - neighbourhoods_mosaic_frame.get_resolution_metrics(sample_rows=150) -) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### Indexing using the optimal resolution - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We will use mosaic sql functions to index our points data.
-# MAGIC Here we will use resolution 9, index resolution depends on the dataset in use. - -# COMMAND ---------- - -tripsWithIndex = (trips - .withColumn("pickup_h3", mos.grid_pointascellid(col("pickup_geom"), lit(optimal_resolution))) - .withColumn("dropoff_h3", mos.grid_pointascellid(col("dropoff_geom"), lit(optimal_resolution))) -) - -# COMMAND ---------- - -display(tripsWithIndex) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We will also index our neighbourhoods using a built in generator function. - -# COMMAND ---------- - -neighbourhoodsWithIndex = (neighbourhoods - - # We break down the original geometry in multiple smaller mosaic chips, each with its - # own index - .withColumn("mosaic_index", mos.grid_tessellateexplode(col("geometry"), lit(optimal_resolution))) - - # We don't need the original geometry any more, since we have broken it down into - # Smaller mosaic chips. - .drop("json_geometry", "geometry") - ) - -# COMMAND ---------- - -display(neighbourhoodsWithIndex) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### Performing the spatial join - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We can now do spatial joins to both pickup and drop off zones based on geolocations in our datasets. - -# COMMAND ---------- - -pickupNeighbourhoods = neighbourhoodsWithIndex.select(col("properties.zone").alias("pickup_zone"), col("mosaic_index")) - -withPickupZone = ( - tripsWithIndex.join( - pickupNeighbourhoods, - tripsWithIndex["pickup_h3"] == pickupNeighbourhoods["mosaic_index.index_id"] - ).where( - # If the borough is a core chip (the chip is fully contained within the geometry), then we do not need - # to perform any intersection, because any point matching the same index will certainly be contained in - # the borough. Otherwise we need to perform an st_contains operation on the chip geometry. - col("mosaic_index.is_core") | mos.st_contains(col("mosaic_index.wkb"), col("pickup_geom")) - ).select( - "trip_distance", "pickup_geom", "pickup_zone", "dropoff_geom", "pickup_h3", "dropoff_h3" - ) -) - -display(withPickupZone) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC We can easily perform a similar join for the drop off location. - -# COMMAND ---------- - -dropoffNeighbourhoods = neighbourhoodsWithIndex.select(col("properties.zone").alias("dropoff_zone"), col("mosaic_index")) - -withDropoffZone = ( - withPickupZone.join( - dropoffNeighbourhoods, - withPickupZone["dropoff_h3"] == dropoffNeighbourhoods["mosaic_index.index_id"] - ).where( - col("mosaic_index.is_core") | mos.st_contains(col("mosaic_index.wkb"), col("dropoff_geom")) - ).select( - "trip_distance", "pickup_geom", "pickup_zone", "dropoff_geom", "dropoff_zone", "pickup_h3", "dropoff_h3" - ) - .withColumn("trip_line", mos.st_astext(mos.st_makeline(array(mos.st_geomfromwkt(col("pickup_geom")), mos.st_geomfromwkt(col("dropoff_geom")))))) -) - -display(withDropoffZone) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Visualise the results in Kepler - -# COMMAND ---------- - -# MAGIC %md -# MAGIC For visualisation there simply aren't good options in scala.
-# MAGIC Luckily in our notebooks you can easily switch to python just for UI.
-# MAGIC Mosaic abstracts interaction with Kepler in python. - -# COMMAND ---------- - -# MAGIC %python -# MAGIC %%mosaic_kepler -# MAGIC withDropoffZone "pickup_h3" "h3" 5000 - -# COMMAND ---------- - - diff --git a/notebooks/examples/python/Sedona/MosaicAndSedona.ipynb b/notebooks/examples/python/Sedona/MosaicAndSedona.ipynb new file mode 100644 index 000000000..9407100a6 --- /dev/null +++ b/notebooks/examples/python/Sedona/MosaicAndSedona.ipynb @@ -0,0 +1,808 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "bf98136c-9276-4388-8eef-b567621fe1a4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Mosaic & Sedona\n", + "\n", + "> You can combine the usage of [Mosaic](https://databrickslabs.github.io/mosaic/index.html) with other geospatial libraries. In this example we combine it with [Sedona](https://sedona.apache.org).\n", + "\n", + "## Setup\n", + "\n", + "This notebook will run if you have both Mosaic and Sedona installed on your cluster.\n", + "\n", + "### Install sedona\n", + "\n", + "To install Sedona, follow the [official Sedona instructions](https://sedona.apache.org/1.5.0/setup/databricks/).\n", + "\n", + "E.g. Add the following maven coordinates to a non-photon cluster [[1](https://docs.databricks.com/en/libraries/package-repositories.html)]. This is showing DBR 12.2 LTS. \n", + "\n", + "```\n", + "org.apache.sedona:sedona-spark-shaded-3.0_2.12:1.5.0\n", + "org.datasyslab:geotools-wrapper:1.5.0-28.2\n", + "```\n", + "\n", + "### Notes\n", + "\n", + "* See instructions for `SedonaContext.create(spark)` [[1](https://sedona.apache.org/1.5.0/tutorial/sql/?h=sedonacontext#initiate-sedonacontext)]. \n", + "* Also, notice we are downgrading pandas from default DBR version for Sedona Python bindings\n", + "* And, Sedona identifies that it might have issues if executed on a [Photon](https://www.databricks.com/product/photon) cluster\n", + "\n", + "--- \n", + " __Last Update__ 30 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a0b2b41f-3769-4cc3-b88f-79b60b28654a", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\nPython interpreter will be restarted.\nPython interpreter will be restarted.\nPython interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"pandas<=1.3.5\" \"shapely<= 1.8.4\" \"geopandas<=0.10.2\" --quiet # <- Sedona 1.5 dep versions\n", + "%pip install keplergl==0.3.2 pydeck==0.8.0 --quiet # <- Sedona 1.5 dep versions\n", + "%pip install \"apache-sedona<1.6,>=1.5\" --quiet # <- Sedona 1.5 series\n", + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet # <- Mosaic 0.3 series [install last]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "5bdb06ce-0c5b-4e4a-89b9-58e593e964c4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Verify our Sedona dependency versions_" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "f6b0188a-5535-4588-afd7-cdc3c51f76d7", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "application/vnd.databricks.v1+bamboolib_hint": "{\"pd.DataFrames\": [], \"version\": \"0.0.1\"}", + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "output_type": "display_data", + "data": { + "application/vnd.databricks.v1+h3_hint": "", + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "pandas version? 1.3.5\ngeopandas version? 0.10.2\nshapely version? 1.8.4\nkepler version? 0.3.2\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import shapely\n", + "import geopandas as gpd\n", + "import keplergl\n", + "\n", + "print(f\"pandas version? {pd.__version__}\")\n", + "print(f\"geopandas version? {gpd.__version__}\")\n", + "print(f\"shapely version? {shapely.__version__}\")\n", + "print(f\"kepler version? {keplergl.__version__}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "46dcda8a-cd24-4016-acf9-6ede54978d2f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Main imports_" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "63686169-877d-4d31-8e6d-dbf6595753e8", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "import pyspark.sql.functions as F\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "\n", + "# -- setup sedona\n", + "from sedona.spark import *\n", + "\n", + "sedona = SedonaContext.create(spark)\n", + "\n", + "# --other imports\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "6dd1e21d-7a84-4c5e-b5f6-b02831d846b0", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Setup simple DataFrame_\n", + "\n", + "> Showing blending Mosaic calls (namespaced as `mos.`) with Sedona (sql) calls." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d00cc61f-65f8-4f10-ace9-54eb895c6d7c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+-----------+-----------+--------------------+\n| wkt|mosaic_area|sedona_area| sedona_flipped|\n+--------------------+-----------+-----------+--------------------+\n|POLYGON ((30 10, ...| 550.0| 550.0|POLYGON ((10 30, ...|\n+--------------------+-----------+-----------+--------------------+\n\n" + ] + } + ], + "source": [ + "df = spark.createDataFrame([{'wkt': 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'}])\n", + "(df\n", + " # Mosaic\n", + " .withColumn(\"mosaic_area\", mos.st_area('wkt'))\n", + " # Sedona\n", + " .withColumn(\"sedona_area\", F.expr(\"ST_Area(ST_GeomFromWKT(wkt))\"))\n", + " # Sedona function not available in Mosaic\n", + " .withColumn(\"sedona_flipped\", F.expr(\"ST_FlipCoordinates(ST_GeomFromWKT(wkt))\"))\n", + ").show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "213a41b5-664c-4a06-b3ee-b7d32d9dc2bb", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Mosaic + Kepler\n", + "\n", + "> Mosaic has the ability to render tables / views + dataframes with `%%mosaic_kepler` magic [[1](https://databrickslabs.github.io/mosaic/usage/kepler.html)]." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0d0af2ac-bd49-45b7-8abc-e8de78e77727", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "f75ca032-47cc-4807-b282-883703bf4b52", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results. Hint: you can toggle layers on/off and adjust properties._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "61d8d0c3-6b94-4131-a94c-587e7a6aa54d", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# df \"wkt\" \"geometry\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d6e266b4-82ff-40bb-bf9e-793ebf0d73c4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Sedona\n", + "\n", + "> Converting to a Sedona DataFrame. __Note: there are a few ways to do this.__" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "5463d1e5-e12d-413e-a664-3137d01c844f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_[1] Spark DataFrame `df` to Pandas DataFrame `pdf`._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0ebb4450-0a76-4b79-9df6-0be79e3afd97", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
wkt
0POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n
wkt
0POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "pdf = df.toPandas()\n", + "pdf" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "26c76d91-1ac8-446c-b394-67c3c0ffe4d9", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_[2] Pandas DataFrame `pdf` to GeoPandas DataFrame `gdf`._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "952779e8-1dde-4059-9c04-bf6b1cab611e", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
geometry
0POLYGON ((30.00000 10.00000, 40.00000 40.00000...
\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n
geometry
0POLYGON ((30.00000 10.00000, 40.00000 40.00000...
\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "gdf = gpd.GeoDataFrame(\n", + " pdf, geometry=gpd.geoseries.from_wkt(pdf['wkt'], crs=\"EPSG:4326\")\n", + ")\n", + "gdf.drop('wkt', axis=1, inplace=True)\n", + "gdf" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3330a57c-907e-4af8-95c0-71d77a6621c2", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_[3] GeoPandas DataFrame `gdf` to Sedona DataFrame `sdf`._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "78a6965c-ec03-4b08-a723-e1efaf4568c2", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+\n| geometry|\n+--------------------+\n|POLYGON ((30 10, ...|\n+--------------------+\n\n" + ] + } + ], + "source": [ + "sdf = sedona.createDataFrame(gdf)\n", + "sdf.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e48b657c-67bc-4bc7-9ec5-470fb6a85c9c", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### SedonaKepler\n", + "\n", + "> Sedona also has some ability to render Kepler [[1](https://sedona.apache.org/1.5.0/api/sql/Visualization_SedonaKepler/)]. " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "41cc2bc5-89af-4989-9efd-1e8c7820a107", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d9e1ce9e-0523-41d2-b58b-b0015593b972", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results. Hint: you can toggle layers on/off and adjust properties._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6ca39d58-65b9-47f7-8a18-7cca12e8f079", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# SedonaKepler.create_map(df=sdf, name=\"MySedona\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "09b88855-1895-4805-b31b-4a1f0e7a2c37", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### SedonaPyDeck\n", + "\n", + "> Sedona also has a pydeck renderer [[1](https://sedona.apache.org/1.5.0/api/sql/Visualization_SedonaPyDeck/)]." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e45072f9-d367-461a-bd18-716e500e54fe", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "1b0dc412-0690-492b-9ac7-111ba488e861", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results. Hint: you __cannot__ toggle layers on/off and adjust properties with `SedonaPyDeck`._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "be450a6b-b780-4610-81a4-284a2fcd86f9", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# SedonaPyDeck.create_geometry_map(sdf)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "17c9df98-ed13-47e8-8865-8038aaf167e4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Sedona provided notebooks are [here](https://github.com/apache/sedona/tree/master/binder) you can explore and potentially execute on Databricks, following the setup instructions identified in this notebook._" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "pythonIndentUnit": 2 + }, + "notebookName": "MosaicAndSedona", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/Sedona/README.md b/notebooks/examples/python/Sedona/README.md new file mode 100644 index 000000000..0d42fed45 --- /dev/null +++ b/notebooks/examples/python/Sedona/README.md @@ -0,0 +1,2 @@ +# Sedona Examples +> Note: `ipynb` files can be previewed in GitHub and can also be imported into Databricks, more [here](https://docs.databricks.com/en/notebooks/notebook-export-import.html). diff --git a/notebooks/examples/python/Shapefiles/GeoPandasUDF/shapefiles_geopandas_udf.ipynb b/notebooks/examples/python/Shapefiles/GeoPandasUDF/shapefiles_geopandas_udf.ipynb new file mode 100644 index 000000000..3d8373196 --- /dev/null +++ b/notebooks/examples/python/Shapefiles/GeoPandasUDF/shapefiles_geopandas_udf.ipynb @@ -0,0 +1,2577 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ae9da0c3-a134-462a-a41f-afbb8dd35a98", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# GeoPandas Shapefiles UDF Example\n", + "\n", + "> These are Census address blocks; download Shapefile(s) from https://www2.census.gov/geo/tiger/TIGER_RD18/LAYER/ADDR/\n", + "\n", + "__Artifacts Generated__\n", + "

\n", + "\n", + "1. Volume - `..census_data/address_block_shapefiles`\n", + "1. Table - `..shape_address_block`\n", + "\n", + "--- \n", + "__Last Update:__ 22 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "4bca5d5c-92da-45e1-b8fe-cb37e7a807c2", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup\n", + "

\n", + "\n", + "1. [GeoPandas](https://pypi.org/project/geopandas/) - used for Shapefile reading and rendering \n", + "1. [Contextily](https://pypi.org/project/contextily/) - used to add basemap to GeoPandas, supports WGS84 (4326) and Spheric Mercator (3857)\n", + "1. Import Databricks columnar functions (including H3) for DBR / DBSQL Photon with `from pyspark.databricks.sql.functions import *`\n", + "\n", + "__Note: If you hit `H3_NOT_ENABLED` [[docs](https://docs.databricks.com/error-messages/h3-not-enabled-error-class.html#h3_not_enabled-error-class)]__\n", + "\n", + "> `h3Expression` is disabled or unsupported. Consider enabling Photon or switch to a tier that supports H3 expressions. [[AWS](https://www.databricks.com/product/aws-pricing) | [Azure](https://azure.microsoft.com/en-us/pricing/details/databricks/) | [GCP](https://www.databricks.com/product/gcp-pricing)]\n", + "\n", + "__Note:__ _Recommend run on DBR 14.1+ for better [Volumes](https://docs.databricks.com/en/sql/language-manual/sql-ref-volumes.html) support._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "57cf168a-2337-413d-8bda-ca1549da216c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install geopandas contextily --quiet" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "5dbcc88a-f311-408d-824d-ab7553909f3a", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "from pyspark.databricks.sql import functions as dbf\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import udf, col\n", + "from pyspark.sql.types import *\n", + "\n", + "import contextily as cx\n", + "import fiona\n", + "import geopandas as gpd\n", + "import os\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "9dc45265-6f12-42cb-8244-f17f1ad4bde9", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "spark.conf.set(\"spark.sql.shuffle.partitions\", 10_000) # <-- default is 200\n", + "\n", + "# https://spark.apache.org/docs/latest/sql-performance-tuning.html#adaptive-query-execution\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", True) # <-- default is true [nuclear option]\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <-- default is true [softer option]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "0140ec49-a07e-45af-a768-65296c68a465", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Configure Database + Username__\n", + "\n", + "> Note: Adjust this to your own specified [Unity Catalog](https://docs.databricks.com/en/data-governance/unity-catalog/manage-privileges/admin-privileges.html#managing-unity-catalog-metastores) Schema." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "416e37e6-b250-4d0a-afa4-ec2a55c1df62", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[3]: DataFrame[]" + ] + } + ], + "source": [ + "catalog_name = \"mjohns\"\n", + "db_name = \"census\"\n", + "\n", + "sql(f\"use catalog {catalog_name}\")\n", + "sql(f\"use schema {db_name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "fb979e77-e604-43f1-b2d9-9ceca2e804d2", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %sql show tables" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "077c6054-1634-4b80-86e5-2c77d7eeb145", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Setup `ETL_DIR` + `ETL_DIR_FUSE`__\n", + "\n", + "> Note: Adjust this to your own specified [Volume](https://docs.databricks.com/en/ingestion/add-data/upload-to-volume.html#upload-files-to-a-unity-catalog-volume) (under a schema). _You must already have setup the Volume path._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0bbff310-7d73-4087-9fc8-fb5887d167e3", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "...ETL_DIR: '/Volumes/mjohns/census/census_data/address_block_shapefiles' (create)\n" + ] + } + ], + "source": [ + "ETL_DIR = f'/Volumes/{catalog_name}/{db_name}/census_data/address_block_shapefiles'\n", + "os.environ['ETL_DIR'] = ETL_DIR\n", + "\n", + "dbutils.fs.mkdirs(ETL_DIR)\n", + "print(f\"...ETL_DIR: '{ETL_DIR}' (create)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d7c307ec-aa2c-4003-ac31-142add84923d", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001B[0m\u001B[34;42maddress_block_shapefiles\u001B[0m/\r\n" + ] + } + ], + "source": [ + "ls $ETL_DIR/.." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3e10da79-5774-486a-b88c-f420056b6aa7", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Get All GA Addresses (Shapefiles)\n", + "

\n", + "\n", + "* Look for pattern https://www2.census.gov/geo/tiger/TIGER_RD18/LAYER/ADDRFEAT/tl_rd22_13*.zip (13 is GA number)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ce9f0f90-71d4-4ec0-9628-0466aee9f287", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "state_num = \"13\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "2eda22a5-11b7-4f01-ad9e-9f8ee73493c7", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Make `address_features` directory.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "694a2f2f-bcb0-4a47-bcfb-dcdd483e85f1", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[9]: True" + ] + } + ], + "source": [ + "dbutils.fs.mkdirs(f\"{ETL_DIR}/address_features\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "88055f32-6bfa-4c91-9861-4a8ba63cbe5b", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Get List of Shapefile ZIPs" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "3468e630-c073-44c2-aed7-a0b3c09ebcec", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "/databricks/driver\nFile ‘address_features.txt’ already there; not retrieving.\n" + ] + } + ], + "source": [ + "%sh \n", + "echo \"$PWD\"\n", + "wget -O address_features.txt -nc \"https://www2.census.gov/geo/tiger/TIGER_RD18/LAYER/ADDRFEAT/\"" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a778d810-30a9-4cf5-9c45-1a00b42c3210", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "

pathnamesizemodificationTime
dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/address_features/01700668858233
dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features.txtaddress_features.txt7741321700668858000
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/", + "address_features/", + 0, + 1700668858233 + ], + [ + "dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features.txt", + "address_features.txt", + 774132, + 1700668858000 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "path", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "size", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "modificationTime", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "dbutils.fs.cp(\"file:/databricks/driver/address_features.txt\", ETL_DIR)\n", + "display(dbutils.fs.ls(ETL_DIR))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "f6fffcb8-a376-4419-872e-ad05785c50f9", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Figure out which rows are within the `` tag and extract the filenames.__\n", + "\n", + "> Since this is all in one file being read on one node, get consistent ordered id for `row_num` (not always true)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a030a498-2613-4ff7-b1dd-2922a965a3ea", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "tbl_start_row: 237, tbl_end_row: 3463\n" + ] + } + ], + "source": [ + "tbl_start_row = (\n", + " spark.read.text(f\"{ETL_DIR}/address_features.txt\")\n", + " .withColumn(\"row_num\", F.monotonically_increasing_id())\n", + " .withColumn(\"tbl_start_row\", F.trim(\"value\") == '
')\n", + " .filter(\"tbl_start_row = True\")\n", + " .select(\"row_num\")\n", + ").collect()[0][0]\n", + "\n", + "tbl_end_row = (\n", + " spark.read.text(f\"{ETL_DIR}/address_features.txt\")\n", + " .withColumn(\"row_num\", F.monotonically_increasing_id())\n", + " .withColumn(\"tbl_end_row\", F.trim(\"value\") == '
')\n", + " .filter(\"tbl_end_row = True\")\n", + " .select(\"row_num\")\n", + ").collect()[0][0]\n", + "\n", + "print(f\"tbl_start_row: {tbl_start_row}, tbl_end_row: {tbl_end_row}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "5715c3c9-4c68-4412-8fb7-521fe8881bd1", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "len state files? 159\nOut[16]: ['tl_rd22_13001_addrfeat.zip',\n 'tl_rd22_13003_addrfeat.zip',\n 'tl_rd22_13005_addrfeat.zip',\n 'tl_rd22_13007_addrfeat.zip',\n 'tl_rd22_13009_addrfeat.zip']" + ] + } + ], + "source": [ + "state_files = [r[1] for r in (\n", + " spark.read.text(f\"{ETL_DIR}/address_features.txt\")\n", + " .withColumn(\"row_num\", F.monotonically_increasing_id())\n", + " .filter(f\"row_num > {tbl_start_row}\")\n", + " .filter(f\"row_num < {tbl_end_row}\")\n", + " .withColumn(\"href_start\", F.substring_index(\"value\", 'href=\"', -1))\n", + " .withColumn(\"href\", F.substring_index(\"href_start\", '\">', 1))\n", + " .filter(col(\"href\").startswith(f\"tl_rd22_{state_num}\")) \n", + " .select(\"row_num\",\"href\")\n", + ").collect()]\n", + "\n", + "print(f\"len state files? {len(state_files):,}\")\n", + "state_files[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "4668ed64-7da6-4a22-8cea-32d4b0693d62", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Download Shapefile ZIPs (159)\n", + "\n", + "> Could do this in parallel, but keeping on just driver for now so as to not overload Census server with requests.\n", + "\n", + "__Note: writing locally to driver, then copying to volume with `dbutils`.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b618ca99-bfe5-4b15-a9d8-e5c62b23ca1b", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + " 0 --> 'tl_rd22_13001_addrfeat.zip' exists...skipping\n 1 --> 'tl_rd22_13003_addrfeat.zip' exists...skipping\n 2 --> 'tl_rd22_13005_addrfeat.zip' exists...skipping\n 3 --> 'tl_rd22_13007_addrfeat.zip' exists...skipping\n 4 --> 'tl_rd22_13009_addrfeat.zip' exists...skipping\n 5 --> 'tl_rd22_13011_addrfeat.zip' exists...skipping\n 6 --> 'tl_rd22_13013_addrfeat.zip' exists...skipping\n 7 --> 'tl_rd22_13015_addrfeat.zip' exists...skipping\n 8 --> 'tl_rd22_13017_addrfeat.zip' exists...skipping\n 9 --> 'tl_rd22_13019_addrfeat.zip' exists...skipping\n 10 --> 'tl_rd22_13021_addrfeat.zip' exists...skipping\n 11 --> 'tl_rd22_13023_addrfeat.zip' exists...skipping\n 12 --> 'tl_rd22_13025_addrfeat.zip' exists...skipping\n 13 --> 'tl_rd22_13027_addrfeat.zip' exists...skipping\n 14 --> 'tl_rd22_13029_addrfeat.zip' exists...skipping\n 15 --> 'tl_rd22_13031_addrfeat.zip' exists...skipping\n 16 --> 'tl_rd22_13033_addrfeat.zip' exists...skipping\n 17 --> 'tl_rd22_13035_addrfeat.zip' exists...skipping\n 18 --> 'tl_rd22_13037_addrfeat.zip' exists...skipping\n 19 --> 'tl_rd22_13039_addrfeat.zip' exists...skipping\n 20 --> 'tl_rd22_13043_addrfeat.zip' exists...skipping\n 21 --> 'tl_rd22_13045_addrfeat.zip' exists...skipping\n 22 --> 'tl_rd22_13047_addrfeat.zip' exists...skipping\n 23 --> 'tl_rd22_13049_addrfeat.zip' exists...skipping\n 24 --> 'tl_rd22_13051_addrfeat.zip' exists...skipping\n 25 --> 'tl_rd22_13053_addrfeat.zip' exists...skipping\n 26 --> 'tl_rd22_13055_addrfeat.zip' exists...skipping\n 27 --> 'tl_rd22_13057_addrfeat.zip' exists...skipping\n 28 --> 'tl_rd22_13059_addrfeat.zip' exists...skipping\n 29 --> 'tl_rd22_13061_addrfeat.zip' exists...skipping\n 30 --> 'tl_rd22_13063_addrfeat.zip' exists...skipping\n 31 --> 'tl_rd22_13065_addrfeat.zip' exists...skipping\n 32 --> 'tl_rd22_13067_addrfeat.zip' exists...skipping\n 33 --> 'tl_rd22_13069_addrfeat.zip' exists...skipping\n 34 --> 'tl_rd22_13071_addrfeat.zip' exists...skipping\n 35 --> 'tl_rd22_13073_addrfeat.zip' exists...skipping\n 36 --> 'tl_rd22_13075_addrfeat.zip' exists...skipping\n 37 --> 'tl_rd22_13077_addrfeat.zip' exists...skipping\n 38 --> 'tl_rd22_13079_addrfeat.zip' exists...skipping\n 39 --> 'tl_rd22_13081_addrfeat.zip' exists...skipping\n 40 --> 'tl_rd22_13083_addrfeat.zip' exists...skipping\n 41 --> 'tl_rd22_13085_addrfeat.zip' exists...skipping\n 42 --> 'tl_rd22_13087_addrfeat.zip' exists...skipping\n 43 --> 'tl_rd22_13089_addrfeat.zip' exists...skipping\n 44 --> 'tl_rd22_13091_addrfeat.zip' exists...skipping\n 45 --> 'tl_rd22_13093_addrfeat.zip' exists...skipping\n 46 --> 'tl_rd22_13095_addrfeat.zip' exists...skipping\n 47 --> 'tl_rd22_13097_addrfeat.zip' exists...skipping\n 48 --> 'tl_rd22_13099_addrfeat.zip' exists...skipping\n 49 --> 'tl_rd22_13101_addrfeat.zip' exists...skipping\n 50 --> 'tl_rd22_13103_addrfeat.zip' exists...skipping\n 51 --> 'tl_rd22_13105_addrfeat.zip' exists...skipping\n 52 --> 'tl_rd22_13107_addrfeat.zip' exists...skipping\n 53 --> 'tl_rd22_13109_addrfeat.zip' exists...skipping\n 54 --> 'tl_rd22_13111_addrfeat.zip' exists...skipping\n 55 --> 'tl_rd22_13113_addrfeat.zip' exists...skipping\n 56 --> 'tl_rd22_13115_addrfeat.zip' exists...skipping\n 57 --> 'tl_rd22_13117_addrfeat.zip' exists...skipping\n 58 --> 'tl_rd22_13119_addrfeat.zip' exists...skipping\n 59 --> 'tl_rd22_13121_addrfeat.zip' exists...skipping\n 60 --> 'tl_rd22_13123_addrfeat.zip' exists...skipping\n 61 --> 'tl_rd22_13125_addrfeat.zip' exists...skipping\n 62 --> 'tl_rd22_13127_addrfeat.zip' exists...skipping\n 63 --> 'tl_rd22_13129_addrfeat.zip' exists...skipping\n 64 --> 'tl_rd22_13131_addrfeat.zip' exists...skipping\n 65 --> 'tl_rd22_13133_addrfeat.zip' exists...skipping\n 66 --> 'tl_rd22_13135_addrfeat.zip' exists...skipping\n 67 --> 'tl_rd22_13137_addrfeat.zip' exists...skipping\n 68 --> 'tl_rd22_13139_addrfeat.zip' exists...skipping\n 69 --> 'tl_rd22_13141_addrfeat.zip' exists...skipping\n 70 --> 'tl_rd22_13143_addrfeat.zip' exists...skipping\n 71 --> 'tl_rd22_13145_addrfeat.zip' exists...skipping\n 72 --> 'tl_rd22_13147_addrfeat.zip' exists...skipping\n 73 --> 'tl_rd22_13149_addrfeat.zip' exists...skipping\n 74 --> 'tl_rd22_13151_addrfeat.zip' exists...skipping\n 75 --> 'tl_rd22_13153_addrfeat.zip' exists...skipping\n 76 --> 'tl_rd22_13155_addrfeat.zip' exists...skipping\n 77 --> 'tl_rd22_13157_addrfeat.zip' exists...skipping\n 78 --> 'tl_rd22_13159_addrfeat.zip' exists...skipping\n 79 --> 'tl_rd22_13161_addrfeat.zip' exists...skipping\n 80 --> 'tl_rd22_13163_addrfeat.zip' exists...skipping\n 81 --> 'tl_rd22_13165_addrfeat.zip' exists...skipping\n 82 --> 'tl_rd22_13167_addrfeat.zip' exists...skipping\n 83 --> 'tl_rd22_13169_addrfeat.zip' exists...skipping\n 84 --> 'tl_rd22_13171_addrfeat.zip' exists...skipping\n 85 --> 'tl_rd22_13173_addrfeat.zip' exists...skipping\n 86 --> 'tl_rd22_13175_addrfeat.zip' exists...skipping\n 87 --> 'tl_rd22_13177_addrfeat.zip' exists...skipping\n 88 --> 'tl_rd22_13179_addrfeat.zip' exists...skipping\n 89 --> 'tl_rd22_13181_addrfeat.zip' exists...skipping\n 90 --> 'tl_rd22_13183_addrfeat.zip' exists...skipping\n 91 --> 'tl_rd22_13185_addrfeat.zip' exists...skipping\n 92 --> 'tl_rd22_13187_addrfeat.zip' exists...skipping\n 93 --> 'tl_rd22_13189_addrfeat.zip' exists...skipping\n 94 --> 'tl_rd22_13191_addrfeat.zip' exists...skipping\n 95 --> 'tl_rd22_13193_addrfeat.zip' exists...skipping\n 96 --> 'tl_rd22_13195_addrfeat.zip' exists...skipping\n 97 --> 'tl_rd22_13197_addrfeat.zip' exists...skipping\n 98 --> 'tl_rd22_13199_addrfeat.zip' exists...skipping\n 99 --> 'tl_rd22_13201_addrfeat.zip' exists...skipping\n 100 --> 'tl_rd22_13205_addrfeat.zip' exists...skipping\n 101 --> 'tl_rd22_13207_addrfeat.zip' exists...skipping\n 102 --> 'tl_rd22_13209_addrfeat.zip' exists...skipping\n 103 --> 'tl_rd22_13211_addrfeat.zip' exists...skipping\n 104 --> 'tl_rd22_13213_addrfeat.zip' exists...skipping\n 105 --> 'tl_rd22_13215_addrfeat.zip' exists...skipping\n 106 --> 'tl_rd22_13217_addrfeat.zip' exists...skipping\n 107 --> 'tl_rd22_13219_addrfeat.zip' exists...skipping\n 108 --> 'tl_rd22_13221_addrfeat.zip' exists...skipping\n 109 --> 'tl_rd22_13223_addrfeat.zip' exists...skipping\n 110 --> 'tl_rd22_13225_addrfeat.zip' exists...skipping\n 111 --> 'tl_rd22_13227_addrfeat.zip' exists...skipping\n 112 --> 'tl_rd22_13229_addrfeat.zip' exists...skipping\n 113 --> 'tl_rd22_13231_addrfeat.zip' exists...skipping\n 114 --> 'tl_rd22_13233_addrfeat.zip' exists...skipping\n 115 --> 'tl_rd22_13235_addrfeat.zip' exists...skipping\n 116 --> 'tl_rd22_13237_addrfeat.zip' exists...skipping\n 117 --> 'tl_rd22_13239_addrfeat.zip' exists...skipping\n 118 --> 'tl_rd22_13241_addrfeat.zip' exists...skipping\n 119 --> 'tl_rd22_13243_addrfeat.zip' exists...skipping\n 120 --> 'tl_rd22_13245_addrfeat.zip' exists...skipping\n 121 --> 'tl_rd22_13247_addrfeat.zip' exists...skipping\n 122 --> 'tl_rd22_13249_addrfeat.zip' exists...skipping\n 123 --> 'tl_rd22_13251_addrfeat.zip' exists...skipping\n 124 --> 'tl_rd22_13253_addrfeat.zip' exists...skipping\n 125 --> 'tl_rd22_13255_addrfeat.zip' exists...skipping\n 126 --> 'tl_rd22_13257_addrfeat.zip' exists...skipping\n 127 --> 'tl_rd22_13259_addrfeat.zip' exists...skipping\n 128 --> 'tl_rd22_13261_addrfeat.zip' exists...skipping\n 129 --> 'tl_rd22_13263_addrfeat.zip' exists...skipping\n 130 --> 'tl_rd22_13265_addrfeat.zip' exists...skipping\n 131 --> 'tl_rd22_13267_addrfeat.zip' exists...skipping\n 132 --> 'tl_rd22_13269_addrfeat.zip' exists...skipping\n 133 --> 'tl_rd22_13271_addrfeat.zip' exists...skipping\n 134 --> 'tl_rd22_13273_addrfeat.zip' exists...skipping\n 135 --> 'tl_rd22_13275_addrfeat.zip' exists...skipping\n 136 --> 'tl_rd22_13277_addrfeat.zip' exists...skipping\n 137 --> 'tl_rd22_13279_addrfeat.zip' exists...skipping\n 138 --> 'tl_rd22_13281_addrfeat.zip' exists...skipping\n 139 --> 'tl_rd22_13283_addrfeat.zip' exists...skipping\n 140 --> 'tl_rd22_13285_addrfeat.zip' exists...skipping\n 141 --> 'tl_rd22_13287_addrfeat.zip' exists...skipping\n 142 --> 'tl_rd22_13289_addrfeat.zip' exists...skipping\n 143 --> 'tl_rd22_13291_addrfeat.zip' exists...skipping\n 144 --> 'tl_rd22_13293_addrfeat.zip' exists...skipping\n 145 --> 'tl_rd22_13295_addrfeat.zip' exists...skipping\n 146 --> 'tl_rd22_13297_addrfeat.zip' exists...skipping\n 147 --> 'tl_rd22_13299_addrfeat.zip' exists...skipping\n 148 --> 'tl_rd22_13301_addrfeat.zip' exists...skipping\n 149 --> 'tl_rd22_13303_addrfeat.zip' exists...skipping\n 150 --> 'tl_rd22_13305_addrfeat.zip' exists...skipping\n 151 --> 'tl_rd22_13307_addrfeat.zip' exists...skipping\n 152 --> 'tl_rd22_13309_addrfeat.zip' exists...skipping\n 153 --> 'tl_rd22_13311_addrfeat.zip' exists...skipping\n 154 --> 'tl_rd22_13313_addrfeat.zip' exists...skipping\n 155 --> 'tl_rd22_13315_addrfeat.zip' exists...skipping\n 156 --> 'tl_rd22_13317_addrfeat.zip' exists...skipping\n 157 --> 'tl_rd22_13319_addrfeat.zip' exists...skipping\n 158 --> 'tl_rd22_13321_addrfeat.zip' exists...skipping\n" + ] + } + ], + "source": [ + "import pathlib\n", + "import requests\n", + "\n", + "vol_path = pathlib.Path(f\"{ETL_DIR}/address_features\")\n", + "local_path = pathlib.Path(f\"address_features\")\n", + "local_path.mkdir(parents=True, exist_ok=True)\n", + "\n", + "for idx,f in enumerate(state_files):\n", + " idx_str = str(idx).rjust(4)\n", + " \n", + " vol_file = vol_path / f\n", + " if not vol_file.exists():\n", + " local_file = local_path / f \n", + " print(f\"{idx_str} --> '{f}'\")\n", + " req = requests.get(f'https://www2.census.gov/geo/tiger/TIGER_RD18/LAYER/ADDRFEAT/{f}')\n", + " with open(local_file, 'wb') as f:\n", + " f.write(req.content)\n", + " else:\n", + " print(f\"{idx_str} --> '{f}' exists...skipping\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "20c476a8-9a3f-4ca9-9d3b-f99914f861a7", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[39]: True" + ] + } + ], + "source": [ + "dbutils.fs.cp(\"file:/databricks/driver/address_features\", f\"{ETL_DIR}/address_features\", recurse=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "1563023f-d74b-4e70-82c4-aa9a8c79c8f9", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "total 366M\n-rwxrwxrwx 1 nobody nogroup 1.8M Oct 23 14:53 tl_rd22_13001_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 888K Oct 23 14:53 tl_rd22_13003_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 814K Oct 23 14:53 tl_rd22_13005_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 447K Oct 23 14:53 tl_rd22_13007_addrfeat.zip\n...\n-rwxrwxrwx 1 nobody nogroup 4.2M Oct 23 14:53 tl_rd22_13313_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 966K Oct 23 14:53 tl_rd22_13315_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 1.1M Oct 23 14:53 tl_rd22_13317_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 1.1M Oct 23 14:53 tl_rd22_13319_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 1.9M Oct 23 14:53 tl_rd22_13321_addrfeat.zip\n" + ] + } + ], + "source": [ + "%sh\n", + "# avoid list all files\n", + "ls -lh $ETL_DIR/address_features | head -5\n", + "echo \"...\"\n", + "ls -lh $ETL_DIR/address_features | tail -5" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "db241304-a937-42b5-9613-70ad1b953204", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Test Render with GeoPandas\n", + "\n", + "> Just rendering the first file `tl_rd22_13001_addrfeat.zip` for an example. " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "70934189-e1c5-4d4a-a68d-df318acb7738", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %sh\n", + "# - Can copy locally to driver (but don't have to)\n", + "# mkdir -p $PWD/address_features\n", + "# cp $ETL_DIR/address_features/tl_rd22_13001_addrfeat.zip $PWD/address_features\n", + "# ls -lh $PWD/address_features" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "1e353ca2-7d9c-4c89-b492-30adb73f38e9", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Get layer information_\n", + "\n", + "> Fiona is a dependency of GeoPandas." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7f029910-81ed-4bc8-9377-4f28d6239f35", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[22]: ['tl_rd22_13001_addrfeat']" + ] + } + ], + "source": [ + "fiona.listlayers(f\"zip://{ETL_DIR}/address_features/tl_rd22_13001_addrfeat.zip\") # <- 'zip://' is required here" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d821fbc8-e2c4-45d4-a3bd-035aed0e9c00", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "rows? 3,762, cols? 26\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TLIDTFIDLTFIDRARIDLARIDRLINEARIDFULLNAMELFROMHNLTOHNRFROMHN...PARITYRPLUS4LPLUS4RLFROMTYPLTOTYPRFROMTYPRTOTYPOFFSETLOFFSETRgeometry
04465900209153283259208815None40060416405411105646216480Holmesville RdNoneNone10401...ONoneNoneNoneNoneNoneNoneNNLINESTRING (-82.22232 31.64547, -82.22300 31.6...
14466075209150399209150092None400204692323391105646216633Herbert Rentz RdNoneNone599...ONoneNoneNoneNoneNoneNoneNNLINESTRING (-82.26755 31.61842, -82.26755 31.6...
2645523094209151387209151389None400204680414101105646216724Milton HallmanNoneNone1094...ENoneNoneNoneNoneNoneNoneNNLINESTRING (-82.26705 31.88152, -82.26705 31.8...
3645523094209151387209151389None400204680407431105646216724Milton HallmanNoneNone1062...ENoneNoneNoneNoneNoneNoneNNLINESTRING (-82.26705 31.88152, -82.26705 31.8...
4634061234264401804264782725None40039956216671106087813821Heath StNoneNone300...ENoneNoneNoneNoneNoneNoneNNLINESTRING (-82.33666 31.73849, -82.33635 31.7...
\n", + "

5 rows × 26 columns

\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
TLIDTFIDLTFIDRARIDLARIDRLINEARIDFULLNAMELFROMHNLTOHNRFROMHN...PARITYRPLUS4LPLUS4RLFROMTYPLTOTYPRFROMTYPRTOTYPOFFSETLOFFSETRgeometry
04465900209153283259208815None40060416405411105646216480Holmesville RdNoneNone10401...ONoneNoneNoneNoneNoneNoneNNLINESTRING (-82.22232 31.64547, -82.22300 31.6...
14466075209150399209150092None400204692323391105646216633Herbert Rentz RdNoneNone599...ONoneNoneNoneNoneNoneNoneNNLINESTRING (-82.26755 31.61842, -82.26755 31.6...
2645523094209151387209151389None400204680414101105646216724Milton HallmanNoneNone1094...ENoneNoneNoneNoneNoneNoneNNLINESTRING (-82.26705 31.88152, -82.26705 31.8...
3645523094209151387209151389None400204680407431105646216724Milton HallmanNoneNone1062...ENoneNoneNoneNoneNoneNoneNNLINESTRING (-82.26705 31.88152, -82.26705 31.8...
4634061234264401804264782725None40039956216671106087813821Heath StNoneNone300...ENoneNoneNoneNoneNoneNoneNNLINESTRING (-82.33666 31.73849, -82.33635 31.7...
\n

5 rows × 26 columns

\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "#options: driver='shapefile', layer=0; also, 'zip://' is optional\n", + "gdf = gpd.read_file(f\"{ETL_DIR}/address_features/tl_rd22_13001_addrfeat.zip\")\n", + "print(f'rows? {gdf.shape[0]:,}, cols? {gdf.shape[1]}')\n", + "gdf.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "7462661f-ac9a-42d3-b5c0-6901e668a399", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Map Rendering_\n", + "\n", + "> Convert to WGS84 (EPSG=4326) for rendering + this is recommended as baseline for all data layers." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "43c35084-fb20-427a-9de3-28ca808ea7c5", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[26]: \nName: NAD83\nAxis Info [ellipsoidal]:\n- Lat[north]: Geodetic latitude (degree)\n- Lon[east]: Geodetic longitude (degree)\nArea of Use:\n- name: North America - onshore and offshore: Canada - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon. Puerto Rico. United States (USA) - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Hawaii; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Virgin Islands. British Virgin Islands.\n- bounds: (167.65, 14.92, -40.73, 86.45)\nDatum: North American Datum 1983\n- Ellipsoid: GRS 1980\n- Prime Meridian: Greenwich" + ] + } + ], + "source": [ + "gdf.crs" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d01e2ea4-a145-4546-998b-c7fb1b0c2918", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[25]: 'EPSG:4326'" + ] + } + ], + "source": [ + "gdf_4326 = gdf.to_crs(epsg=4326)\n", + "gdf_4326.crs.to_string() # <- will be used with contextily" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c9a4d22a-15fa-4756-80b6-8452b25af5c1", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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O9/5Tn72Z3+Wt7/97fz5n/85xhj27t3LTTfdxLve9S6MMRw+fJj/9t/+G+9///v5vd/7PR796Efzspe9jF/8xV/kwx/+MG9605uoqopPfvKTvP3tb+exj30sj3jEI3je857H3XffzS233MILvvmbsLZEKcP73/9+brvtNr7qCY/jK3ffzc/+7M/yrne9i7e97W187dd+LTfeeCNf/vKXue2223jpy17Ka1/7WoqiYP/+/bzyla/kCU94Ak972tN4znOew+c//3l+/Md/nGuvvRbnHEIIrr32WkRNSo3b3stf/nJe+cpXcs011/CYxzyGq666it/6rd9ix44dLCws8KY3vYkPfehDfOQjHyHPc2644Qae/exnT7Z/8YtfDMCzn/1sPvrRj9LpdHjyk5/M5z73OQB++Zd/mcXFRT772c/yoz/6ozzjGc/gq7/6q3niE5/IYDDga77ma3jlD/4AVTWiKvs8+lGPIM1aNJtNnvjEJ/LhD3+Yt73tbTSbTa677jp+9Ed/lLe97W2sra3x6U9/mv/8n/8zT3nKU3j84x/P0572NL7yla/wmMc8hqIo+NSnPsV73/terrnmiiNKV37u536O2dlZ9u7dy//4H/+Dj3/847zlLa/iyiuvxBjDO9/5Tm677TaSJKGqKl796lfz53/+5zSbTe655x6+7du+je/7vu+btO3f+I3f4P777+bVr341j3vc4/ibv/kbnv3sZx/Rdquq4gd/8AcnROhP//RP863f+q386Z/+Kd57nvOc5/DRj34UiGTnr/7qr/KGN7yB666bw/khb3jDG/jVX/1VXv3qV3PzzTfznOc8hzvvvJMf//Ef5+lPfzqvfOUrMcZw77338mM/9mNcfPHFPP/5z+dZz3oWn/3sZ3nrW9/K7Ows3nuUUlx//fUAfPSjH53cy1tvvZXv+Z7v4YYbbuBJT3oSs7Oz/M//+T/pdDpcccUV/PiP/zi/9mu/xj/+4z8ipeRJT3oSX/VVX3VEPwbwNV/zNfzDP/wDvV6Pr/u6r+Oee+4B4Od//ufp9/t86lOf4md+5md40pOexKMf/Wie9rSnsbKywvOe9zxuueW7jyg/bLfbXHrppSil+MhHPsIv/MIv8MQnPpFbb72V9773vbTbbT7xiU/wwQ9+EL/c46abnsazn/1sPve5z/GmN72Jpz71qXz/93//pAzmJ37iJ/j0pz/N+9//fvbs2UOe57ztF36hVjVuDSilyLIUJRVKK7TeEsOWLYEQKpwv8G4Yv4dyXcK/UcYfNpbCyQ0TII2YlKoCpSNUJaGIJMpkbCoEQiVRhZJ3YirPOZ48yzSatJqZGYKtImnQ68ayn26XanWNqtfFDob4qsLXP5eHDqHyPJIqM51oVtvpYNqdmlQx20IlFbzH9vvY3nrfoNMU02ye0XN03jPoDyYLQHqmPZ0mngVIYin1clFyYDCk8A0ubopTJlJOBrFEWIFKUCou9q2rWFzdz9TEii8npcbeVwRf4v0Ia12tgqsJlppYQci4vRtNFmfHnn4xWTKvS4POXCsS1D4aWrGQJbSMjkakG/bS0IrA8VNeztxRxBLtKc4epBA0zcMbU2yJEYkQks9//vPceOONEAJ79+7lBS94Aa6WM48Hoo1Gh5WVFWSdXiCEYO/evVx11VV4bwne0Wi0KYq4YjsajXjnO99Jnuc885nP5PWvfz3vete7eM973oMQgte85jX88A//MM45br/9drTW3HjjjfzYj/0YH/zgB7n99tv51Kc+xbd+67fyEz/xEzzucY/jrW99K61Wi49+9KN83/d9H8997nN5xStewXd+53dyxRVX8MEPfpCPf/zjvOMd7+DWW29ldnaWd7zjHdx///089alP5bWvfS1XX30173vf+3jMYx7DH/7hH/Lf//t/50UvehFvf/vbAbjpppsAOHjwIB/60Ie47bbbAHjNa17DYx/7WF7xildw5513cuUVl4AQ/Mu//AtZlvGOd/wKwXuUjpOnj370oyRJwv/z//w/vPa1r52sqM7OzvK85z2PSy65hCc84Qm8+c1vZnZ2lo997GO84hWv4MYbb+Qf//EfJ/en3W7znve8h9FoxDd90zfxghe84Jh7+DVf8zVcf/31/NIv/RIhBG699Vb+/u//Hu89T3/603npS19KVVX86q/+Kmma8oIXvICXv/zlPPvZz6bVam0oaVmH2+B1E6P2jvU9+J3f+R0e+chH8k3f9E1cccUVfOhDHwLg8Y9/PC972cvYs2fPpNRICMkdd9zBrbfeyrOe9SyazSY333wzu3fv5gUv+Ga+8IU7eOc738m73/1u/uqv/oo3vvGN/M3f/A0A73vf+/j6r/96nvzkJ/Nnf/Zn/OEf/iHf8e0vnnhEFEXBu9/9btI05elPfzqvfe1rSdOUffv38xd/8Rd8+7d/++Rvx/i93/s9/vVf/xWA+++//8QPCPDCF76Ql73sZbz0pS/lW7/1W3nyk588UTt88zd/M0mScPXVV/OhD32IW265BYCf+qmfYseOHZO/G+Pmm2/msssu45u+6RsRQvKiF72IL37xi3zgAx9g//79ADz/+c/nVa96JYuLS5PtXvGKV/DXf/3XAPzu7/4uj33sY2m1WrzrXe9icXGRH/qhH+KF3/IChIgy771793LjjTfivMU7y1VXXcXevXsB2LlzJ+9617vo9Xq86EUv4oorruBLX/oSb3zjGxmNRvzyL/8yH/jAB7j44ot55zvfyb/927/xX//rf+Ud73gHb3zjG3nd617H3XffzU//9E/zzd/8zZO2N74Xv/Irv0K73eapT30qv/RLv4RSite97nWTPuHd7343Qgh+5Ed+hNe85jVHbP/ud7+bb/u2b+Nd73oXeZ7zgz/4g7zhDW8A4Hu+53v43//7fzMzM8Nv/MZv8IxnPGPSrrXWPOMZz+C2226rS4CO9SC5/fbbede73jXZ9+te9zpe+tKX8tGPfpQ8z/nN3/xNnvKUp6C15t3vfjf33HMPP/iDP8if/umf8id/8id85CMf4ZU/+AM41p+FW2+9la/92q/lhS98Id1ul7e//e186EMfYmFhjpe85NvZu3cvd955J69+9at55jOfSaPR4Oabb+a6667j5ptv5i1veQvPfOYzeepTn8pHPvIR/uAP/oBPfvKT/NIv/RKPf/zjecUrXnFUawwURcEv/MIvMDc3xzd+4zdireX666/nM5/5DPfffz833nhjjD8lrniN++n+MN7/q6++mg9+8IMAXHbZZdx+++0sLi7y8pe/nDzPWVpa4kd+5EdYXV3l9ttv521vextXXx2Ve//0T//EH//xH/PmN7+ZV73qVfzQD/0Q9913H29961u58cYbuf766/nFX/xFhBCUZcl73vMesizjyU9+Mu985zuPuPbvf//7ec973gPAa1/7Wm699dYj2gLAd37nd/Le976X0WjEq1/9at72trcB8LKXvYy//Mu/JEkSfuu3fosnPelJhBB473vfC8CznvUsvvd7v/cIIuXv/u7veNOb3sTu3bv5qq/6Kp7+9Kfz1re+BSEkr3rVq/j7v/97Dh8+zJ/8yZ/wDd/wDVx55ZXcfvvt/N//+3/5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gNYwDOKJOOXl5ViWRTFfINOdieYExcBRKuNbYVnUxGxMTcPxfQreie0t0kzr1yJehNc9dMJqFroew9ATGEYKwyjHNKqwrBHY1jnYVh22XUfMHhVUzrTOwTJrsIwRWGYtMauemD0K2zonEpQNqgINbLpnaazqWiDaWxWzTkJXZjDorU2nGGyOJ5J9Ik6LiBTf97jssst45513mDt3Dvfddx833XQTsVgs0kj5zne+Q8eBg4wZMyaq2uP7HldddRWPPvooP378J1xyySU8+uijfOtb3wKgq6uLn/zkJ4wbNw5d10mlUjQ2NiKlZMqUKfzpT386Zsf+67/9G3PmzKGjowPP86ioqKCuro6nn36aK664AgidOr7Hn//5n/PKK69w//33s2PHDmKxGLfddhsffvghS5Ys4eOPPyaZTFJXV8eqVav6RAh8+ctfZs6cOX3K3XV0dFBbW8vGjRtpa+uJCPjRj37EokWL2LBhAw899FAYkiuYOXMm3/3ud6PUqIsuuojJkyezdOlS6uvr0TQtci4dTl1dHStXruSqq66Kzulw3nrrLVavXs3u3buZMmUKELz137DhddasWRNtp+s6L7zwAlOmTKG2tpann15JPp9n9OjRfY6taQavvPIKTU1NtLe3s337diZMmMAzzzzD3Xf/VeTIkX7PjVce40a8YMECvvGNb7BkyRJyuRymafLaa69x4YUX8td//dcsXbq01/fqrF+/nmuvvZbW1lZ27txJXV0d69atY+zYsTQ2NrJkyRLuv/9+3n333T4RJLfccgs//OEPWbhwIQcPHsSyQt2XkLa2tiiCIpFIYBg6s2fP5sEHH6SxsRHbMnGcI6tJeV4RIezo/5/73OdYvnw56XQ6ioaJ+qCP66bHOZJOp6mpqeGll16KorGOR11dHS+//DLnn39+pIvR2dnJm2++GW1z+DgoFot4nkd5eTk/+9nPiMePX4rV8xzuueceFixYQHV1NYlEgocffjiKQnjttdfYsOF13n//fa688koaGxvJZrPU1dVRXV1NR0fHUY+7a9cunnnmmWi+KC3Gfd9nzZo1TJkyJWq757nMmTOHdDrNnDlz+OCDD0gmk0ydOhXf92lsbGTr1q3Bm7RYjOeee45LwhQygO9+97t9HJklXZfKykp++ctfRr/ft28f//mf/0l1dXWoh3T0BxlN05gxYwau6zJ1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\n" + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "data:image/png;base64,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O9/5Tn72Z3+Wt7/97fz5n/85xhj27t3LTTfdxLve9S6MMRw+fJj/9t/+G+9///v5vd/7PR796Efzspe9jF/8xV/kwx/+MG9605uoqopPfvKTvP3tb+exj30sj3jEI3je857H3XffzS233MILvvmbsLZEKcP73/9+brvtNr7qCY/jK3ffzc/+7M/yrne9i7e97W187dd+LTfeeCNf/vKXue2223jpy17Ka1/7WoqiYP/+/bzyla/kCU94Ak972tN4znOew+c//3l+/Md/nGuvvRbnHEIIrr32WkRNSo3b3stf/nJe+cpXcs011/CYxzyGq666it/6rd9ix44dLCws8KY3vYkPfehDfOQjHyHPc2644Qae/exnT7Z/8YtfDMCzn/1sPvrRj9LpdHjyk5/M5z73OQB++Zd/mcXFRT772c/yoz/6ozzjGc/gq7/6q3niE5/IYDDga77ma3jlD/4AVTWiKvs8+lGPIM1aNJtNnvjEJ/LhD3+Yt73tbTSbTa677jp+9Ed/lLe97W2sra3x6U9/mv/8n/8zT3nKU3j84x/P0572NL7yla/wmMc8hqIo+NSnPsV73/terrnmiiNKV37u536O2dlZ9u7dy//4H/+Dj3/847zlLa/iyiuvxBjDO9/5Tm677TaSJKGqKl796lfz53/+5zSbTe655x6+7du+je/7vu+btO3f+I3f4P777+bVr341j3vc4/ibv/kbnv3sZx/Rdquq4gd/8AcnROhP//RP863f+q386Z/+Kd57nvOc5/DRj34UiGTnr/7qr/KGN7yB666bw/khb3jDG/jVX/1VXv3qV3PzzTfznOc8hzvvvJMf//Ef5+lPfzqvfOUrMcZw77338mM/9mNcfPHFPP/5z+dZz3oWn/3sZ3nrW9/K7Ows3nuUUlx//fUAfPSjH53cy1tvvZXv+Z7v4YYbbuBJT3oSs7Oz/M//+T/pdDpcccUV/PiP/zi/9mu/xj/+4z8ipeRJT3oSX/VVX3VEPwbwNV/zNfzDP/wDvV6Pr/u6r+Oee+4B4Od//ufp9/t86lOf4md+5md40pOexKMf/Wie9rSnsbKywvOe9zxuueW7jyg/bLfbXHrppSil+MhHPsIv/MIv8MQnPpFbb72V9773vbTbbT7xiU/wwQ9+EL/c46abnsazn/1sPve5z/GmN72Jpz71qXz/93//pAzmJ37iJ/j0pz/N+9//fvbs2UOe57ztF36hVjVuDSilyLIUJRVKK7TeEsOWLYEQKpwv8G4Yv4dyXcK/UcYfNpbCyQ0TII2YlKoCpSNUJaGIJMpkbCoEQiVRhZJ3YirPOZ48yzSatJqZGYKtImnQ68ayn26XanWNqtfFDob4qsLXP5eHDqHyPJIqM51oVtvpYNqdmlQx20IlFbzH9vvY3nrfoNMU02ye0XN03jPoDyYLQHqmPZ0mngVIYin1clFyYDCk8A0ubopTJlJOBrFEWIFKUCou9q2rWFzdz9TEii8npcbeVwRf4v0Ia12tgqsJlppYQci4vRtNFmfHnn4xWTKvS4POXCsS1D4aWrGQJbSMjkakG/bS0IrA8VNeztxRxBLtKc4epBA0zcMbU2yJEYkQks9//vPceOONEAJ79+7lBS94Aa6WM48Hoo1Gh5WVFWSdXiCEYO/evVx11VV4bwne0Wi0KYq4YjsajXjnO99Jnuc885nP5PWvfz3vete7eM973oMQgte85jX88A//MM45br/9drTW3HjjjfzYj/0YH/zgB7n99tv51Kc+xbd+67fyEz/xEzzucY/jrW99K61Wi49+9KN83/d9H8997nN5xStewXd+53dyxRVX8MEPfpCPf/zjvOMd7+DWW29ldnaWd7zjHdx///089alP5bWvfS1XX30173vf+3jMYx7DH/7hH/Lf//t/50UvehFvf/vbAbjpppsAOHjwIB/60Ie47bbbAHjNa17DYx/7WF7xildw5513cuUVl4AQ/Mu//AtZlvGOd/wKwXuUjpOnj370oyRJwv/z//w/vPa1r52sqM7OzvK85z2PSy65hCc84Qm8+c1vZnZ2lo997GO84hWv4MYbb+Qf//EfJ/en3W7znve8h9FoxDd90zfxghe84Jh7+DVf8zVcf/31/NIv/RIhBG699Vb+/u//Hu89T3/603npS19KVVX86q/+Kmma8oIXvICXv/zlPPvZz6bVam0oaVmH2+B1E6P2jvU9+J3f+R0e+chH8k3f9E1cccUVfOhDHwLg8Y9/PC972cvYs2fPpNRICMkdd9zBrbfeyrOe9SyazSY333wzu3fv5gUv+Ga+8IU7eOc738m73/1u/uqv/oo3vvGN/M3f/A0A73vf+/j6r/96nvzkJ/Nnf/Zn/OEf/iHf8e0vnnhEFEXBu9/9btI05elPfzqvfe1rSdOUffv38xd/8Rd8+7d/++Rvx/i93/s9/vVf/xWA+++//8QPCPDCF76Ql73sZbz0pS/lW7/1W3nyk588UTt88zd/M0mScPXVV/OhD32IW265BYCf+qmfYseOHZO/G+Pmm2/msssu45u+6RsRQvKiF72IL37xi3zgAx9g//79ADz/+c/nVa96JYuLS5PtXvGKV/DXf/3XAPzu7/4uj33sY2m1WrzrXe9icXGRH/qhH+KF3/IChIgy771793LjjTfivMU7y1VXXcXevXsB2LlzJ+9617vo9Xq86EUv4oorruBLX/oSb3zjGxmNRvzyL/8yH/jAB7j44ot55zvfyb/927/xX//rf+Ud73gHb3zjG3nd617H3XffzU//9E/zzd/8zZO2N74Xv/Irv0K73eapT30qv/RLv4RSite97nWTPuHd7343Qgh+5Ed+hNe85jVHbP/ud7+bb/u2b+Nd73oXeZ7zgz/4g7zhDW8A4Hu+53v43//7fzMzM8Nv/MZv8IxnPGPSrrXWPOMZz+C2226rS4CO9SC5/fbbede73jXZ9+te9zpe+tKX8tGPfpQ8z/nN3/xNnvKUp6C15t3vfjf33HMPP/iDP8if/umf8id/8id85CMf4ZU/+AM41p+FW2+9la/92q/lhS98Id1ul7e//e186EMfYmFhjpe85NvZu3cvd955J69+9at55jOfSaPR4Oabb+a6667j5ptv5i1veQvPfOYzeepTn8pHPvIR/uAP/oBPfvKT/NIv/RKPf/zjecUrXnFUawwURcEv/MIvMDc3xzd+4zdireX666/nM5/5DPfffz833nhjjD8lrniN++n+MN7/q6++mg9+8IMAXHbZZdx+++0sLi7y8pe/nDzPWVpa4kd+5EdYXV3l9ttv521vextXXx2Ve//0T//EH//xH/PmN7+ZV73qVfzQD/0Q9913H29961u58cYbuf766/nFX/xFhBCUZcl73vMesizjyU9+Mu985zuPuPbvf//7ec973gPAa1/7Wm699dYj2gLAd37nd/Le976X0WjEq1/9at72trcB8LKXvYy//Mu/JEkSfuu3fosnPelJhBB473vfC8CznvUsvvd7v/cIIuXv/u7veNOb3sTu3bv5qq/6Kp7+9Kfz1re+BSEkr3rVq/j7v/97Dh8+zJ/8yZ/wDd/wDVx55ZXcfvvt/N//+3/5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gNYwDOKJOOXl5ViWRTFfINOdieYExcBRKuNbYVnUxGxMTcPxfQreie0t0kzr1yJehNc9dMJqFroew9ATGEYKwyjHNKqwrBHY1jnYVh22XUfMHhVUzrTOwTJrsIwRWGYtMauemD0K2zonEpQNqgINbLpnaazqWiDaWxWzTkJXZjDorU2nGGyOJ5J9Ik6LiBTf97jssst45513mDt3Dvfddx833XQTsVgs0kj5zne+Q8eBg4wZMyaq2uP7HldddRWPPvooP378J1xyySU8+uijfOtb3wKgq6uLn/zkJ4wbNw5d10mlUjQ2NiKlZMqUKfzpT386Zsf+67/9G3PmzKGjowPP86ioqKCuro6nn36aK664AgidOr7Hn//5n/PKK69w//33s2PHDmKxGLfddhsffvghS5Ys4eOPPyaZTFJXV8eqVav6RAh8+ctfZs6cOX3K3XV0dFBbW8vGjRtpa+uJCPjRj37EokWL2LBhAw899FAYkiuYOXMm3/3ud6PUqIsuuojJkyezdOlS6uvr0TQtci4dTl1dHStXruSqq66Kzulw3nrrLVavXs3u3buZMmUKELz137DhddasWRNtp+s6L7zwAlOmTKG2tpann15JPp9n9OjRfY6taQavvPIKTU1NtLe3s337diZMmMAzzzzD3Xf/VeTIkX7PjVce40a8YMECvvGNb7BkyRJyuRymafLaa69x4YUX8td//dcsXbq01/fqrF+/nmuvvZbW1lZ27txJXV0d69atY+zYsTQ2NrJkyRLuv/9+3n333T4RJLfccgs//OEPWbhwIQcPHsSyQt2XkLa2tiiCIpFIYBg6s2fP5sEHH6SxsRHbMnGcI6tJeV4RIezo/5/73OdYvnw56XQ6ioaJ+qCP66bHOZJOp6mpqeGll16KorGOR11dHS+//DLnn39+pIvR2dnJm2++GW1z+DgoFot4nkd5eTk/+9nPiMePX4rV8xzuueceFixYQHV1NYlEgocffjiKQnjttdfYsOF13n//fa688koaGxvJZrPU1dVRXV1NR0fHUY+7a9cunnnmmWi+KC3Gfd9nzZo1TJkyJWq757nMmTOHdDrNnDlz+OCDD0gmk0ydOhXf92lsbGTr1q3Bm7RYjOeee45LwhQygO9+97t9HJklXZfKykp++ctfRr/ft28f//mf/0l1dXWoh3T0BxlN05gxYwau6zJ16lS2bt0KBJFzlZWVPPXUU8ft05Plhhtu4F/+5V+4+uqr+eCDD5g4cSIrV67k+uuvp6Wlhd27d0fjvqGhgVtvvZXHHnuMRYsWRdpMN9xwA4899hiLFy9m5cqVLFy4sM93SCn5/ve/z/Tp02ltbaWuro66ujr27NlDMpmktraGQr4bKV0cN83XvvY1br31VpLJf0DTNB577DGWLVuG67q89NJLrF//Kq+++irXXHMNM2fO5JFHHqGhoYFkMkk2e3Tx6o8//piXX36ZqVOnRjYPwVhdu3Ytl156aTQWpPSZOXMmhUKByy67jC1btlBRUcEFF1yAaZpMmjSJ5ubm6DqV5rESjzzyCJqmRePBdV2KxSIVFRUsW7Ys2m7btm0sX74cTdNoaGg4agU533MjJ02pfSWNmHg8zurVq5k7d27v3o4+XX755Tz88MNRqtXkyZOj+ey6665j8+bNx4zwOxYyrP7gun4gZSWCalwl3VfP9chl86Tb23vtE9x/TcsikUyQSCYRdo/YsAxTvx3Hpburm0yvdAJfBtVfLMsmVZ4inohjaiYydOLokQCv4kSUquoEpUuzFN02HKcD1+tGSg/TKMPQy9D1ZFTNK4g80aPPkcgvcKJ+F7qFsHWEbqIZdlixpxM/3x2U6i5mkV4R38kjnSJ6Mih9TFimdOjfvgqEJtA1Dd00kYkEZnl5IEJbW4uTzQaVf9rbKXZ04Gaz+IVCWN0mj+jupmga6HbgcDDCtB+rogKjrCwQaTWMPo6I3ufYE5nRRT6bQw8dDUOKlEjPw8vngwicMI1YM030WBwtFkMboHQQTdMwTZNUWQopfbo6u3EdJ0rzUQwcItRLqRAmhhB0Fh10TVD0PWL6id6hhw6QwUxcieaVYBlaGmGlOatHyJogiixMHxqqcRLozQisUxRvIEsRKUpsdtgjhpsXeOqljXL9+nVH/N4wE9xxxx08+eSTuE6BbK7AypUraW1tZe7cuTQ2NvK9732P6dOnM2P6pZEzRWg6um7z29/+lr179zJnzhwmTfocmqYzf/58vvnNb7JlyxbuuOMOUqk4oLNixQp2797NZZddxqxZs1i9ejXz5s0FBGvXrqWpqYmXX36ZN998k0QiwcKFCxk5spZMJsfzzz/PuHHj8H2fCRMmEI/pmFaCDRte57XXXmPUqFHccsst2LbNiy++yB//+EfGjh3LTTfdhOM4rFq1ipEjR1JTU4NhGJzXUI8vfUwzxvPPv8D8+fPZu3cvTz75JJMnT0bTNJqamrj99tv56le/yqZNm1i0aBHnnlvXI7irWxw81M6KFSuwLIs777wTXddZtmwZmUyGxYsXk0qlWLNmDU1NTfi+x0svraOpqYmuri6ee+45xo4dC8DYsWNJJW3SnVlaWlq46KKLWLduHfv37yefz7NkyRKEkOzcuZunn36aq6++Oqps9Mknn/DKK69w+eWXM3LkSH75y1+i6zqLFy/Gtu2efpaS1Wte5J133mHs2LHccsstPPPMM+zZs4ev3P1XuG7gDCgUipSVV7Nq1SrmzJ6FlJJN77zLtGnT2LlzJ8lkklGj6tm2rZlnn32WeDzOokWL2L9/Py+88ALJZDLQlokFpYUtO8mqVc/x/vvvM2HCBBYtWoSUkhdeeCHSctmxYwcPPPAAy578f3iey+b3P2T06NFUVVXy3nubWbt2LZWVlcE1tjSk9LHsJC++uBbP89i2bRtLliwhEbfRDYu77rqLBx54oI8GjKab/OlP20kkEoyqr0U3bJ577nluvPFGPM/jV7/6VTS+Lr74Yvbs2UMqlWLkyAr++McPmDRpEolEjLVr13HNNdewY8cOnnrqKaZOnYrjODQ1NbF69erwWru89NLLNDU1sX79ei699FIsy2L16tX4vs+8efP4xS9+gWEYTJw4kUmTJtHa2oplWdTX1eDLQEj3qquu4tVXX2XDhg3MnTsX13WZPn16uOibg5SCV155hauuuiJyhOm6SVd3jqeffhrHcfjCF75AZUUZ+YLDvffey4IFCwC444472PLhDupGVbF8+XJyuRzz589nzJgxvPHGG1wx8zJy+SKbN2+msbGRVatW8fHHH1NfX8/NN99MLGaxZ08Lr776KrNmzeKjjz6iqWkexUIW00rw29/+lm3btnHxxRdz3XXX4ThONAfMmDGD2bNns2/fPtatW8fUqVPZt28fU6ZMwTRLNzeD9evXM2/ePDZt2sSaNWuYN28eXV1dzJ49m+uvv56vf/3r7Ny5kzvvvBPLFH3S0OxYimefXcUNN9yA53msWLGCXbt2MX36dObMmcNbb73FunXrmDt3LtlsliuvvDKylWLR4a233uLyyy/jwIGDHDx4kIkXjI9Eat/646ZgPMRtXtvwBtOmTcO2g/nwk08+4bbbbmPkyJGsXLmSjz76iAsuuICFCxfi+z7PP/88QXWi+bz77ru8+OKLVFRUcMstt1BRUcHvfvc7du/eTWNjI+PGjaOiPIGUPqYVZ+3adcRiMd5++21uv/12qqsr0DWTv//Wt7juuuuYNWsmnlug6LSRL+zFtqtxirWsXLkSKWXoYKvkk0/28tBDDzFr1ixisRi33347vufQ3tHJr3/9axzHidLvNm/ezLRpl9LdHQjgTpo0iWeffZZt27bR0NDAzTffjGnq7Nixi9dff52mpibee+895s2bGwqNx1mxYgU7d+5k6tSpzJ07l2KxyPLly9m7dy9XXHEFM2fOZM+ePdE8tmPHDi6//HKECK6n40jefvttZs2axcaNG/nDH/7A3LlzyefzzJw5k+uvv5777ruPffv28Zd/+ZdoInhgFEKjrb2LvXv38vnPT8L3PA4cbKe7u5tx40ZjGDbPP/8CW7ZsifpizJgxbNq0icYLGiiaFWzdupWplzayb39rNNcvWbKEWCzG7373O7Zs2cKkSZO44Yb5R6kKdWyklDiOSzabQ/qE6UMmmibQdIHv+aGIZKbPPp7nouk6dszGjtmYViCIXgorFyJwOOVzefL5Hgdv6e20rhvE4jaWbWFECzkRfK8qgXxS+L6L52Vx3Hbyhb24XhcgMI0yLLMWwygLQ+Tto0T79HzuWbucuN+jqj++j3TyePluvGwHbtehoHqPlCA0NMPGKKvGSFWjx8rB6H/6SH/p8zwsJb7nB3opuSxuPouT7qTY3kGhrY1iVxd+oRCEaZWiXCwLvVTpJpnErq7Crh6BVVWFZgcR1L3PMZvN0tnRSbojjWlajKitpryifEj7QXoeXqFAdu9eOrdsIbd3LwiBVVFB+cSJpMaOxUwkgo0HoF2lPnYcJ4iqlYHobH/eCCuOTqmvPSlxPB9J4AS3e1V/kp6Ll+vE6diHm+lAeg6ancQsrw1sMz60aVcnWpOe6WNESh/Py5Lu3ozrdhKPnUsiPiYs6XzaJJGcccQTFW9JKacd7W+njSNFNyzefvtdJk6cSMwORDy1ULBM+h6GGWPNmhe59tprj/K2TQSl29DwZVAu0o6VMX/+fJ577jmcYj7QUAnLRwZVVETwICA9hKb3LHI1PazwEpbAC9NeZPiqTtN6PPdBlERpPyPa3gvzhku/kzKowhI8JOp90h96FlxBu2RYyreUjoKU6IbJ4sVf4sc//jGpZBwv1IPp0wNCCxWwZXiugYgvEP1f0/XwnGX42Qsn3l7nFKYeCS0oTSalH7ZZ9Dk3oenRflL6QQUbofX0mfTRtTClJnwrq+lhP8u+fSOAXbtbOO+88/C9AqU3sIVCge6uLL7nky/kKEulqK4N0hyCCSfoP6HpaGFVnKA6kUBoeti/bp+JO7j2va9JcO10w2Tjxrf49re/zSOPPMJFky/E9100zQhqHfgemqYf47gi6GshQAb9bVpxHnzwH2htbeWnP/3JEQubnmvlEYRYSly3k2KxHd2wKJWi87wiplmBrsVAGphmMvBj+xLdMMKqUwLw8LwshWIrxWKaROw8DL0ChB5tJzQtvP5+aFuEaV4919eXfviWotSXwTX1PbdnjEN0nOBvpT7XjngDH6TL9YwD13UpOpL777+fX/3qV+zf20rz1j2kOzKUVSQZdW4tlq2B9IgnbVKpMnzfjd5u+DK8DqKvrUVjL7LNnrDr6Jr7flQqu/ccEB2/z/4+vatiHbUPpI9lJbj++uvDeSZ3xHgr9YHQjKhvDv/uw49ZulaH92tgbyJyIpfGUTBW/HD+8HtsFsJQ/+4obcJzs+QK+/B9B8sqRwiDYrED26rGMqsQwgrmCmFhmPHgoUaKaF4tjffSOUTj3Yzxr//2KBs3buS///u/yWYP4rid5AstuG4nQujE7Xri8YawJHPwPmb//jb+6Z/+iccffxynmIuiwIL5rHS+XnSNg2sVLFZOdiyU5pyg780+fd/bdo8YC2GF9pMaC76PZR9/LBx+/Y74f6+5STp5nO52/EI3hUO70WPlGPFytGQlRrIK3TDDc3PD+fzwMX7y+J5PPl+g7dAhhNBIlaVIpYLKa0ITYfSJj9s7ok5KPN+PNE10XUfTe4v1iXBKkWH1PL/XrjLq29J+Wq/KBYHMxZn9MN0/ZPgwnqPotgcRKG4nviyi68koDcfQUwjNRBMGpQjGgerXaFxLD+k6+E4eN5vGy3RE0SkIgWbF0BMVmKkRgQitYQ6rxUKQ9hLc333PxS8U8HL5nuo/nZ2RWK2XzwfPK5qG0HU0wwgq/ySTGKlUIFJbUYFZlkKPJ/ARdKY76exIk8/nqTmnlrLyMixr4BxKruuFKc8iqHqlHems8F0XN5Ohq7mZ7h07KLa1gRAkGxooGz+e+KhRGCeIMP20lFL7pB9UitJDR6my64GnZIt+z+NoEOPQ25GS7cDp2I+b7UB67il1pJzt9DhS3sN1O0nEziMeP185Uk4xZ4QjBYKH3NIi9XBKD9ae70YPxcfDMGP4flDR7XDNj9MNXTeR6OiawHFyp7o5g0LgoPD7LDyKhSKd6U66uroxTZOy8hQVlRWD8/1Cwwh1eKT0+j1mDDOGlALTNMMUhyPTPXqcJRkctwvHTeN6XeFC2Apy2c0KTL0MTYtxPNEt18tSdA6Sy+8CKYjZo4jHGsLQ7eH18CJEUFryQOt+2g6mcRzI54pkst10Z9Lksp1oOlRUVjD6/PMYec45JBLxYSlCaZoxPB80TfbRlBkO9A6hDYTf3LB0YR7Pz+P5ubCcoROkCeKhCTvIb9bLMPQkup4IrtcJQm4Nw0YShHXnch0UCgcpFPfhuB1owsQ0KrCskZhGGUL0LCRMKxEusr3IsXm6YlpxPE+iCRlF1X1WfKeAl+mg2N6Cl+8C6SN0C7v2fIxUNZoZG5C3xxA4UrLZHK379qPpGpVVlVRUVEQO/0iX7LDbbt9UQ3FYc3qcIkd7Bgl+JcOQ7r77DbPpapgRaA65XoaicwjHacfz8wihY+gpTLMK0ygPH8qDSheDO/+HKbe+h+8Ug8iUTAdeLo0MNcE0K46RrMIor0W3kwjDPMExTwWh7p7nIz0PP0yFKVW5KYbOFDeTwctmA6eK70cOFc00A4Ha8vKg8k+qDM8w6S465B0X3TSpG1WHHbMH9D5WKBRxHReh6VhW8HLr8Ggu33EoptN0fPABuZYW3EwGoWmUX3ghqTHnY4+oQQ+jyRRnHtJzcDMdOOn9eNm0cqScUmT4ciETRKR4XSRio4nHRqNrMeVIOQUEKfsFampHHtORclpopJQ43oN04MU7edGy0kL4KIVeTjuCt7TOGXEux+LwCBsI821ti4SXQNd1jEF8AJPSxylmTrzhSVIaf57b1/EVCSXj4fsFXK+LYvEAjpvG8woIYWCZ1VHpN023w9zRE02wMlidyNLipFSZYfjxxsYN7NnTgpQw5vxxVFXV4EmXtpYDvPfeJrLZDBJJKpWkZe8+rrzichoaRg1LR4ozjOeZYAEVli3ERJMS9LBkIV7oyHNw3Syum8bx2nHdbhyvC007hKmXYZnVGHoZmh5HE2YvZx70TgNw3QJSSlzHp+i0BZFRzkGEMDGNKmyrFtOsCNvTs59TPLr+yemIUwxsfUCkNYWGMAw008J3DKRTBOnj5bvR7GTgSBkojqI5KA5bjAkhjsj6ONn55WgL+cPHj+Lk8KWH63VRKBwgX9wP+Oh6EsuqwTZr0TU70j0ZGkJHjSbQ7UArJHCUyHDRFkSreLlOhBlDGGYQPTzsFgyh40/Xgx8p0W0bM5VCjhiB5zg4mQxOexuFQ4cotLVHeiNeqKfiZrMU2tvRLQs9kcCLxXEtG5FMEauqRAvVnGVv52E/nVxBBJqPrh1dZyGICgnSl9zubrySgL0mwsiZeJ/oPcUZyvB6n36WI/voowhhDNtn9TOZUqRtseBwYF/Hcbc9rRwpCkVvNE3DtmPoWhBVYfSzFvjwwcd1OikU95Er7sX3i+haHNuqxQ7z2jXNjhatJ4cMFsd4gXhVEJc/mCfxmWltbWXv3n2Ul1dgWiae59DefpA9n+wi3Znm3HPPJRaL0dXVycaNbzLxgvGMGlV3qpt9BhCkTwQic0Y4tGLoWgLLrELKUbhehkLxIEWnjVxhL7nCXgw9hWWGzhCjAk2z6JGO643EdbvJ51soOEGaSMyuxzZr0PXUMfZRHA2hCYRho9kJRCGLdApB+kG+G5moJMqNGYzvHpSjKgYCx02TL+yjWDwASGJWHZZVG0V6neqrJ3QLPVEJQg9SfvLdQTWfYhaR70SzYgjdQBj2CY91yhEidAwZaLaNkUgQq6oi2XAebi5H4dBBcvtbKRw8iNPdHaQAFotRdRwpBBgGWiKB7Koi7xaRtbWYqRT6Z6isdTRM08AwgjT0o75okDKIrikUcLNZZCg0KzQdI5VEj8U+dTlnhUIxcKj77akjly2wZ2crLXvajrvdmbLyVJyFCE1gmga6rlOqJHH60VOq2/eLeH6WfGE/jtuB7xfQhIltB+XezNKbf80EtE8lABg4uHsiUhj2ZURl+OORTh9i775PaGs7RHV1NZMnTaYslWTXrp1s3bqV7u4shUIRwzCUYN1n5lgpEyXnShC1IjQLXYtjWTV4XgbX7QyqgTiHcNwOdD2BqZdjGOU9Dj+0cHznyeR34Ljt6JqNbY/EMmvQ9AQILVr6qwoOJ4HQ0AwLzUwE5WUBpI9fzOM7uUCjpfT7gejL0K5Ev0tiKgaeIIrM9bIUiwcjzSHbrMG2zsEwyoYojec4lCrWAOgGup3ESFbhSolXyASpP/kMntmJMCw03eqz33Dj8H6UhNEqmoYwTbRYDD0exx5Rg5vJUOzspNjejpNO42YyQWWcMALFd13y+TxuZxpj927MsjKsigqs6mrMZBLNClJdozS3T9Enmq733POP1m7Pw8/ncLo6kWHFMc00McvL0K1YqC04uJT0UnK5PIV8ASEEZeWp8LlueF5/xcnTN8FzeCGl7FNkWByRSnoqKJWM1pH4uH4u1NpUYUNDQUm7qe1QF/ta2tjXcoiuruNLOQw7jRQhxAFg56luh+KUUAMcPNWNUCjOIJRNKRQDi7IphWJgUTalUAwsyqYGlvOllLVH+8Owc6Qozl6EEG8eS8xHoVB8epRNKRQDi7IphWJgUTalUAwsyqaGjuEpkqBQKBQKhUKhUCgUCoVCMQxRjhSFQqFQKBQKhUKhUCgUipNEOVIUw4nHT3UDFIozDGVTCsXAomxKoRhYlE0pFAOLsqkhQmmkKBQKhUKhUCgUCoVCoVCcJCoiRaFQKBQKhUKhUCgUCoXiJFGOFMWQIYSYIoTYIITYJIR4UwgxI/z9l4QQ7woh3hNCvCqEuOQY+/9MCLE93H+TEGLKkJ6AQjEM6a9d9TrOD4QQ3UPTaoVi+DIA96onhBDvhNsuF0KkhvYMFIrhxQDY1H8JIbYIITYLIf5DCGEO7RkoFMOLAbCpvxFC/EkIIYUQNUPb+jMH5UhRDCX/B3hISjkF+Hb4f4DtwBwp5eeBhzl+bt83pZRTwp9Ng9lYheI0od92JYSYBlQNcjsVitOF/trU/5JSXiKlvBjYBfzNILdXoRju9Nem/gu4EPg8EAfuHtTWKhTDn/7a1HrgGmDnILfzjMY41Q1QnFVIoDz8XAG0AEgpX+21zQagYYjbpVCczvTLroQQOvCvwB3AzYPXTIXitKFfNiWl7AQQQgiCRZ8So1Oc7fTXpn5f+iyEeONY2ykUZxH9tam3AYLblOKzosRmFUOGEOJzwHOAIIiGukJKufOwbR4ALpRSHvG2QQjxM2AmUADWAH8vpSwMdrsViuHMANjV1wFNSvk9IUS3lFKlISjOavprU+HflwI3Ah8AX5BSZge31QrF8GUgbCrcxgReB74upfzDIDZZoRjWDKBN7QCmSSkPDmJzz1iUI0UxoAghVgN1R/nTg0ATsE5K+WshxBeBe6SU1/Tady7wI+AqKeWhoxy7HtgHWAShatuklN8ZhNNQKIYVg2VXQohRwDLgaimlqxwpirOFwbxX9dpOB/4d2CilXDqgJ6BQDDOGyKZ+AmSklP9zQBuvUAxDhsimdqAcKZ8Z5UhRDBlCiDRQKaWUYchzWkpZHv7tYuAp4AYp5ccncayrgQeklH82iE1WKIY9/bErIcQXgCeAfPir0UCzlHLC0LReoRh+DPC9ajbwd+pepTibGQibEkL8b6ARuEVK6Q9FuxWK4cpA3aeUI6V/KLFZxVDSAswJP88DtgIIIUYDK4A7T3ATrQ//FcAiYPNgNlahOE34zHYlpXxGSlknpRwjpRwDZJUTRaH47DYlAiaUPgMLgY8GvcUKxfCmv89/dwPXA4uVE0WhAPppU4qBQUWkKIYMIcRVwPcJRI7zwH1SyreEED8FbqVHOdqVUk4L9/k9cLeUskUI8SJQS5APuAm4V0qpyrUqzmr6a1eHHUul9ijOevpjUwTpp38gEAEUwDvAV0sCtArF2cgAPP+54TZd4XYrVGq34mxmAGzqfwB/R5A61Ar8/nhaKoqjoxwpCoVCoVAoFAqFQqFQKBQniUrtUSgUCoVCoVAoFAqFQqE4SZQjRaFQKBQKhUKhUCgUCoXiJFGOFIVCoVAoFAqFQqFQKBSKk0Q5UhQKhUKhUCgUCoVCoVAoThLlSFEoFAqFQqFQKBQKhUKhOEmUI0WhUCgUCoVCoVAoFAqF4iRRjhSFQqFQKBQKhUKhUCgUipNEOVIUCoVCoVAoFAqFQqFQKE6S/w9sYR3Bc6IKoQAAAABJRU5ErkJggg==\n", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "image" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "ax = gdf_4326.plot(column='ZIPL', cmap=None, legend=True, figsize=(20, 20), alpha=0.5, edgecolor=\"k\")\n", + "cx.add_basemap(ax, zoom='auto', crs=gdf_4326.crs.to_string()) # <- specify crs!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "63ab22d8-14fb-4ee7-9565-9627a269c8c0", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Shapefiles to Delta Lake\n", + "\n", + "> Will use GeoPandas to read the ShapeFiles and write as Delta Table\n", + "\n", + "__Focus on `ADDRFEAT` (Address Feature) for both geometries and address ranges.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "60090cbe-867a-4a85-a7b8-b45a9d54efde", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[28]: 159" + ] + } + ], + "source": [ + "num_shapefiles = len(dbutils.fs.ls(f\"{ETL_DIR}/address_features\"))\n", + "num_shapefiles" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "262164bc-39ac-4968-bf02-6ddd11a58025", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__[1] Define the UDF function.__\n", + "\n", + "> This will be invoked with [applyInPandas](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.GroupedData.applyInPandas.html?highlight=applyinpandas)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a4b41fae-83da-4ca0-89a6-94792edcf8dc", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[29]: Index(['TLID', 'TFIDL', 'TFIDR', 'ARIDL', 'ARIDR', 'LINEARID', 'FULLNAME',\n 'LFROMHN', 'LTOHN', 'RFROMHN', 'RTOHN', 'ZIPL', 'ZIPR', 'EDGE_MTFCC',\n 'ROAD_MTFCC', 'PARITYL', 'PARITYR', 'PLUS4L', 'PLUS4R', 'LFROMTYP',\n 'LTOTYP', 'RFROMTYP', 'RTOTYP', 'OFFSETL', 'OFFSETR', 'geometry'],\n dtype='object')" + ] + } + ], + "source": [ + "gdf_4326.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "399106db-2a7d-4fcb-b699-53125e57da35", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "def geopandas_read(pdf:pd.DataFrame) -> pd.DataFrame:\n", + " \"\"\"\n", + " Read using geopandas; recommend using `repartition`\n", + " in caller to drive parallelism.\n", + " - 'path' field assumed to be a Volume path,\n", + " which is automatically FUSE mounted\n", + " - layer_num is either field 'layer_num', if present\n", + " or defaults to 0\n", + " - standardizes to CRS=4326\n", + " \"\"\"\n", + " pdf_arr = []\n", + "\n", + " # --- iterate over pdf ---\n", + " for index, row in pdf.iterrows():\n", + " # [1] read 'path' + 'layer_num'\n", + " layer_num = 0\n", + " if 'layer_num' in row:\n", + " layer_num = row['layer_num']\n", + "\n", + " file_path = row['path'].replace('dbfs:','')\n", + "\n", + " gdf = gpd.read_file(file_path, layer=layer_num)\n", + " # [2] set CRS to 4326 (WGS84)\n", + " gdf_4326 = gdf.to_crs(epsg=4326)\n", + "\n", + " # [3] \n", + " gdf_wkt = gdf_4326.to_wkt\n", + "\n", + " # [3] convert 'geometry' column to wkt +\n", + " pdf_arr.append(pd.DataFrame(gdf_4326.to_wkt()))\n", + "\n", + " # return as pandas dataframe\n", + " return pd.concat(pdf_arr)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "f4083d81-f53e-497b-b117-870fb65174e2", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__[2] We need a schema for our return__ \n", + "\n", + "> Will use the example from above for this; in production, you will want to be more careful defining the return schema." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e12ee0ca-b544-47bf-877d-d63b65a48f16", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[31]: StructType([StructField('TLID', LongType(), True), StructField('TFIDL', LongType(), True), StructField('TFIDR', LongType(), True), StructField('ARIDL', StringType(), True), StructField('ARIDR', StringType(), True), StructField('LINEARID', StringType(), True), StructField('FULLNAME', StringType(), True), StructField('LFROMHN', StringType(), True), StructField('LTOHN', StringType(), True), StructField('RFROMHN', StringType(), True), StructField('RTOHN', StringType(), True), StructField('ZIPL', StringType(), True), StructField('ZIPR', StringType(), True), StructField('EDGE_MTFCC', StringType(), True), StructField('ROAD_MTFCC', StringType(), True), StructField('PARITYL', StringType(), True), StructField('PARITYR', StringType(), True), StructField('PLUS4L', NullType(), True), StructField('PLUS4R', NullType(), True), StructField('LFROMTYP', StringType(), True), StructField('LTOTYP', StringType(), True), StructField('RFROMTYP', StringType(), True), StructField('RTOTYP', StringType(), True), StructField('OFFSETL', StringType(), True), StructField('OFFSETR', StringType(), True), StructField('geometry', StringType(), True)])" + ] + } + ], + "source": [ + "spark.createDataFrame(pd.DataFrame(gdf_4326.to_wkt())).schema" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a44d01b2-2049-465e-ba3e-828ac422c8bf", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "layer_schema = StructType([\n", + " StructField('TLID', LongType(), True), \n", + " StructField('TFIDL', LongType(), True), \n", + " StructField('TFIDR', LongType(), True), \n", + " StructField('ARIDL', StringType(), True), \n", + " StructField('ARIDR', StringType(), True), \n", + " StructField('LINEARID', StringType(), True), \n", + " StructField('FULLNAME', StringType(), True), \n", + " StructField('LFROMHN', StringType(), True), \n", + " StructField('LTOHN', StringType(), True), \n", + " StructField('RFROMHN', StringType(), True), \n", + " StructField('RTOHN', StringType(), True), \n", + " StructField('ZIPL', StringType(), True), \n", + " StructField('ZIPR', StringType(), True), \n", + " StructField('EDGE_MTFCC', StringType(), True), \n", + " StructField('ROAD_MTFCC', StringType(), True), \n", + " StructField('PARITYL', StringType(), True), \n", + " StructField('PARITYR', StringType(), True), \n", + " StructField('PLUS4L', StringType(), True), # <- altered from inferred NullType\n", + " StructField('PLUS4R', StringType(), True), # <- altered from inferred NullType\n", + " StructField('LFROMTYP', StringType(), True), \n", + " StructField('LTOTYP', StringType(), True), \n", + " StructField('RFROMTYP', StringType(), True), \n", + " StructField('RTOTYP', StringType(), True), \n", + " StructField('OFFSETL', StringType(), True), \n", + " StructField('OFFSETR', StringType(), True), \n", + " StructField('geometry', StringType(), True)\n", + "])\n", + "\n", + "# layer_schema" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "5bd16864-a25a-4b23-bbaf-d16405339b75", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__[3] Define Spark DataFrame with Paths__\n", + "\n", + "> We just need a list of files to process, e.g. from \"address_features\" directory." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "44ffd7c1-1277-4e7e-b773-fa1663dcf959", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 159\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
pathnamesizemodificationTime
dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/tl_rd22_13001_addrfeat.ziptl_rd22_13001_addrfeat.zip18810471698072828000
dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/tl_rd22_13003_addrfeat.ziptl_rd22_13003_addrfeat.zip9088611698072803000
dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/tl_rd22_13005_addrfeat.ziptl_rd22_13005_addrfeat.zip8326591698072825000
dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/tl_rd22_13007_addrfeat.ziptl_rd22_13007_addrfeat.zip4574131698072818000
dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/tl_rd22_13009_addrfeat.ziptl_rd22_13009_addrfeat.zip18128531698072835000
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/tl_rd22_13001_addrfeat.zip", + "tl_rd22_13001_addrfeat.zip", + 1881047, + 1698072828000 + ], + [ + "dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/tl_rd22_13003_addrfeat.zip", + "tl_rd22_13003_addrfeat.zip", + 908861, + 1698072803000 + ], + [ + "dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/tl_rd22_13005_addrfeat.zip", + "tl_rd22_13005_addrfeat.zip", + 832659, + 1698072825000 + ], + [ + "dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/tl_rd22_13007_addrfeat.zip", + "tl_rd22_13007_addrfeat.zip", + 457413, + 1698072818000 + ], + [ + "dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/tl_rd22_13009_addrfeat.zip", + "tl_rd22_13009_addrfeat.zip", + 1812853, + 1698072835000 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "path", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "size", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "modificationTime", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df_path = spark.createDataFrame(dbutils.fs.ls(f\"{ETL_DIR}/address_features\"))\n", + "print(f\"count? {df_path.count():,}\")\n", + "df_path.limit(5).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "4187e60a-c86f-47ad-9d5a-1a63d7ddfe07", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__[4] Invoke the UDF__\n", + "\n", + "> Group By 'path'; also repartition by 'path' to drive parallelism." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "76552f7f-6713-4f49-85e0-2db7fb884783", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__DRY-RUN:__ _LIMIT 1_" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a5b7cfbd-5bf3-4ea5-b2bc-1379311d16ad", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 11,202\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
TLIDTFIDLTFIDRARIDLARIDRLINEARIDFULLNAMELFROMHNLTOHNRFROMHNRTOHNZIPLZIPREDGE_MTFCCROAD_MTFCCPARITYLPARITYRPLUS4LPLUS4RLFROMTYPLTOTYPRFROMTYPRTOTYPOFFSETLOFFSETRgeometry
64554442626502692026502689540015491037520400403202219911048687443Taylor Chapel Rd11981100110111993155231552S1400S1400EOnullnullnullnullnullnullNNLINESTRING (-82.632431 31.307748, -82.632431 31.307947, -82.632434 31.309355, -82.632449 31.309766, -82.63247 31.310324, -82.632459 31.311564, -82.632472 31.312339, -82.632523 31.312437, -82.632641 31.312605, -82.632924 31.312855, -82.63334 31.313174, -82.633656 31.313395, -82.634004 31.313588, -82.634468 31.313794, -82.63498 31.313971, -82.635194 31.314052, -82.635409 31.31412, -82.635645 31.314158, -82.635803 31.314115, -82.636063 31.313971, -82.636454 31.313769, -82.636746 31.31361, -82.637252 31.31342, -82.637661 31.313302, -82.637956 31.313284, -82.638186 31.313281, -82.638467 31.313405, -82.639292 31.313676, -82.641407 31.314452, -82.641721 31.314547, -82.642019 31.31467, -82.642283 31.314751, -82.64248 31.314777, -82.642776 31.314801, -82.643103 31.314741, -82.644182 31.314431, -82.644541 31.314314, -82.64521 31.314094, -82.646256 31.313798, -82.646669 31.313725)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 645544426, + 265026920, + 265026895, + "40015491037520", + "4004032022199", + "11048687443", + "Taylor Chapel Rd", + "1198", + "1100", + "1101", + "1199", + "31552", + "31552", + "S1400", + "S1400", + "E", + "O", + null, + null, + null, + null, + null, + null, + "N", + "N", + "LINESTRING (-82.632431 31.307748, -82.632431 31.307947, -82.632434 31.309355, -82.632449 31.309766, -82.63247 31.310324, -82.632459 31.311564, -82.632472 31.312339, -82.632523 31.312437, -82.632641 31.312605, -82.632924 31.312855, -82.63334 31.313174, -82.633656 31.313395, -82.634004 31.313588, -82.634468 31.313794, -82.63498 31.313971, -82.635194 31.314052, -82.635409 31.31412, -82.635645 31.314158, -82.635803 31.314115, -82.636063 31.313971, -82.636454 31.313769, -82.636746 31.31361, -82.637252 31.31342, -82.637661 31.313302, -82.637956 31.313284, -82.638186 31.313281, -82.638467 31.313405, -82.639292 31.313676, -82.641407 31.314452, -82.641721 31.314547, -82.642019 31.31467, -82.642283 31.314751, -82.64248 31.314777, -82.642776 31.314801, -82.643103 31.314741, -82.644182 31.314431, -82.644541 31.314314, -82.64521 31.314094, -82.646256 31.313798, -82.646669 31.313725)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "TLID", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ARIDL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ARIDR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LINEARID", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "FULLNAME", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMHN", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LTOHN", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RFROMHN", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RTOHN", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ZIPL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ZIPR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "EDGE_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ROAD_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4L", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4R", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geometry", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "spark.catalog.clearCache() # <- cache for dev, help avoid recomputes\n", + "\n", + "DRY_LIMIT = 1\n", + "\n", + "out_df = (\n", + " df_path \n", + " .limit(DRY_LIMIT) # <- NOTE: DRY-RUN\n", + " .repartition(DRY_LIMIT, \"path\") # <-repartition \n", + " .groupBy(\"path\") # <- groupby `path`\n", + " .applyInPandas(\n", + " geopandas_read, schema=layer_schema\n", + " )\n", + " .cache()\n", + ")\n", + "\n", + "print(f\"count? {out_df.count():,}\")\n", + "out_df.limit(1).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "9befaf23-eaea-465f-92dc-692b1f625835", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[36]: 0" + ] + } + ], + "source": [ + "out_df.filter(col(\"plus4l\").isNotNull()).count()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "1a3e2b71-b5e2-4662-bb6e-d6c8a55f4ed8", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__ACTUAL:__ _Write All to Delta Lake_\n", + "\n", + "> We are saving as a managed table named 'shape_address_block'." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a30c9972-a7e9-4a80-80d0-b4866fa0bf84", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "sql(f\"drop table if exists {catalog_name}.{db_name}.shape_address_block\")\n", + "\n", + "(\n", + " df_path \n", + " .repartition(num_shapefiles, \"path\") # <-repartition \n", + " .groupBy(\"path\") # <- groupby `path`\n", + " .applyInPandas(\n", + " geopandas_read, schema=layer_schema\n", + " )\n", + " .write\n", + " .mode(\"append\")\n", + " .saveAsTable(f\"{catalog_name}.{db_name}.shape_address_block\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "f023c32d-98ec-43aa-96da-8114b6e0b617", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 782,054\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
TLIDTFIDLTFIDRARIDLARIDRLINEARIDFULLNAMELFROMHNLTOHNRFROMHNRTOHNZIPLZIPREDGE_MTFCCROAD_MTFCCPARITYLPARITYRPLUS4LPLUS4RLFROMTYPLTOTYPRFROMTYPRTOTYPOFFSETLOFFSETRgeometry
629684220250114008212667664null4004714389943110453770290Maria Sorrell Rdnullnull638898null30450S1400S1400nullEnullnullnullnullnullnullNNLINESTRING (-81.770631 32.498047, -81.770421 32.498247, -81.770249 32.498447, -81.77015 32.49861, -81.769576 32.499769, -81.769513 32.499879)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 629684220, + 250114008, + 212667664, + null, + "4004714389943", + "110453770290", + "Maria Sorrell Rd", + null, + null, + "638", + "898", + null, + "30450", + "S1400", + "S1400", + null, + "E", + null, + null, + null, + null, + null, + null, + "N", + "N", + "LINESTRING (-81.770631 32.498047, -81.770421 32.498247, -81.770249 32.498447, -81.77015 32.49861, -81.769576 32.499769, -81.769513 32.499879)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "TLID", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ARIDL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ARIDR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LINEARID", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "FULLNAME", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMHN", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LTOHN", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RFROMHN", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RTOHN", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ZIPL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ZIPR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "EDGE_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ROAD_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4L", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4R", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geometry", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df_address = spark.table(f\"{catalog_name}.{db_name}.shape_address_block\")\n", + "\n", + "print(f\"count? {df_address.count():,}\")\n", + "df_address.limit(1).display()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "fe1152a6-cd99-496c-95fd-82e636e8bff8", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__NOTE: WE DID NOT ADD A SPATIAL INDEX, THAT WILL INVOLVE [1] H3 TESSELLATION and [2] Optimizing, e.g. via [ZORDER](https://docs.databricks.com/en/delta/data-skipping.html) or (newer for DBR 13.3+) [LIQUID CLUSTERING](https://docs.databricks.com/en/delta/clustering.html).__" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "bba4a72f-c1ab-45b8-b4d2-e464ef2c2365", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Final Sanity Check" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "dede4ee0-595a-43a4-a214-ce3f412c123c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
databasetableNameisTemporary
censusga_address_blockfalse
censusshape_address_blockfalse
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "census", + "ga_address_block", + false + ], + [ + "census", + "shape_address_block", + false + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "database", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "tableName", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "isTemporary", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql show tables" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d8f02e22-df0c-4e63-a02b-ec12326fa362", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
TLIDTFIDLTFIDRARIDLARIDRLINEARIDFULLNAMELFROMHNLTOHNRFROMHNRTOHNZIPLZIPREDGE_MTFCCROAD_MTFCCPARITYLPARITYRPLUS4LPLUS4RLFROMTYPLTOTYPRFROMTYPRTOTYPOFFSETLOFFSETRgeometry
629684220250114008212667664null4004714389943110453770290Maria Sorrell Rdnullnull638898null30450S1400S1400nullEnullnullnullnullnullnullNNLINESTRING (-81.770631 32.498047, -81.770421 32.498247, -81.770249 32.498447, -81.77015 32.49861, -81.769576 32.499769, -81.769513 32.499879)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 629684220, + 250114008, + 212667664, + null, + "4004714389943", + "110453770290", + "Maria Sorrell Rd", + null, + null, + "638", + "898", + null, + "30450", + "S1400", + "S1400", + null, + "E", + null, + null, + null, + null, + null, + null, + "N", + "N", + "LINESTRING (-81.770631 32.498047, -81.770421 32.498247, -81.770249 32.498447, -81.77015 32.49861, -81.769576 32.499769, -81.769513 32.499879)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "TLID", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ARIDL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ARIDR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LINEARID", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "FULLNAME", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMHN", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LTOHN", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RFROMHN", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RTOHN", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ZIPL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ZIPR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "EDGE_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ROAD_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4L", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4R", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geometry", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql select * from shape_address_block limit 1" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 85549841987706, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "shapefiles_geopandas_udf", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/Shapefiles/MosaicGDAL/mosaic_gdal_shapefiles.ipynb b/notebooks/examples/python/Shapefiles/MosaicGDAL/mosaic_gdal_shapefiles.ipynb new file mode 100644 index 000000000..39443df6c --- /dev/null +++ b/notebooks/examples/python/Shapefiles/MosaicGDAL/mosaic_gdal_shapefiles.ipynb @@ -0,0 +1,2580 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ae9da0c3-a134-462a-a41f-afbb8dd35a98", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Mosaic + GDAL Shapefile Example\n", + "\n", + "> Download Shapefile(s) from https://www2.census.gov/geo/tiger/TIGER_RD18/LAYER/ADDR/\n", + "\n", + "__Artifacts Generated__\n", + "

\n", + "\n", + "1. Volume - `..census_data/address_block_shapefiles`\n", + "1. Table - `..ga_address_block`\n", + "\n", + "--- \n", + "__Last Update:__ 22 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "4bca5d5c-92da-45e1-b8fe-cb37e7a807c2", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup\n", + "

\n", + "\n", + "1. Import Databricks columnar functions (including H3) for DBR / DBSQL Photon with `from pyspark.databricks.sql.functions import *`\n", + "2. To use Databricks Labs [Mosaic](https://databrickslabs.github.io/mosaic/index.html) library for geospatial data engineering, analysis, and visualization functionality:\n", + " * Install with `%pip install databricks-mosaic`\n", + " * Import and use with the following:\n", + " ```\n", + " import mosaic as mos\n", + " mos.enable_mosaic(spark, dbutils)\n", + " ```\n", + "

\n", + "\n", + "3. For Mosaic + GDAL (used for SHP reading)\n", + " * Follow instructions for your version [here](https://databrickslabs.github.io/mosaic/usage/install-gdal.html)\n", + " * then additionally call the following in the notebook \n", + " ```\n", + " mos.enable_gdal(spark)\n", + " ```\n", + "

\n", + "\n", + "4. To use [KeplerGl](https://kepler.gl/) OSS library for map layer rendering:\n", + " * Already installed with Mosaic, use `%%mosaic_kepler` magic [[Mosaic Docs](https://databrickslabs.github.io/mosaic/usage/kepler.html)]\n", + " * Import with `from keplergl import KeplerGl` to use directly\n", + "\n", + "__Notes:__\n", + "\n", + "If you hit `H3_NOT_ENABLED` [[docs](https://docs.databricks.com/error-messages/h3-not-enabled-error-class.html#h3_not_enabled-error-class)]\n", + "\n", + "> `h3Expression` is disabled or unsupported. Consider enabling Photon or switch to a tier that supports H3 expressions. [[AWS](https://www.databricks.com/product/aws-pricing) | [Azure](https://azure.microsoft.com/en-us/pricing/details/databricks/) | [GCP](https://www.databricks.com/product/gcp-pricing)]\n", + "\n", + "If you have trouble with Volume access:\n", + "\n", + "* For Mosaic 0.3 series (< DBR 13) - you can copy resources to DBFS as a workaround\n", + "* For Mosaic 0.4 series (DBR 13.3 LTS) - you will need to either copy resources to DBFS or setup for Unity Catalog + Shared Access which will involve your workspace admin. Instructions, as updated, will be [here](https://databrickslabs.github.io/mosaic/usage/install-gdal.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "57cf168a-2337-413d-8bda-ca1549da216c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet # <- Mosaic 0.3 series\n", + "# %pip install \"databricks-mosaic<0.5,>=0.4\" --quiet # <- Mosaic 0.4 series (as available)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "5dbcc88a-f311-408d-824d-ab7553909f3a", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "GDAL enabled.\n\nGDAL 3.4.3, released 2022/04/22\n\n\n" + ] + } + ], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "spark.conf.set(\"spark.sql.shuffle.partitions\", 10_000) # <-- default is 200\n", + "\n", + "# -- import databricks + spark functions\n", + "from pyspark.databricks.sql import functions as dbf\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import udf, col\n", + "from pyspark.sql.types import *\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "mos.enable_gdal(spark)\n", + "\n", + "# --other imports\n", + "import os\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "0140ec49-a07e-45af-a768-65296c68a465", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Configure Database + Username__\n", + "\n", + "> Note: Adjust this to your own specified [Unity Catalog](https://docs.databricks.com/en/data-governance/unity-catalog/manage-privileges/admin-privileges.html#managing-unity-catalog-metastores) Schema." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "416e37e6-b250-4d0a-afa4-ec2a55c1df62", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[2]: DataFrame[]" + ] + } + ], + "source": [ + "catalog_name = \"mjohns\"\n", + "db_name = \"census\"\n", + "\n", + "sql(f\"use catalog {catalog_name}\")\n", + "sql(f\"use schema {db_name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "fb979e77-e604-43f1-b2d9-9ceca2e804d2", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %sql show tables" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "077c6054-1634-4b80-86e5-2c77d7eeb145", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Setup `ETL_DIR` + `ETL_DIR_FUSE`__\n", + "\n", + "> Note: Adjust this to your own specified [Volume](https://docs.databricks.com/en/ingestion/add-data/upload-to-volume.html#upload-files-to-a-unity-catalog-volume) (under a schema)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0bbff310-7d73-4087-9fc8-fb5887d167e3", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "...ETL_DIR: '/Volumes/mjohns/census/census_data/address_block_shapefiles' (create)\n" + ] + } + ], + "source": [ + "ETL_DIR = f'/Volumes/{catalog_name}/{db_name}/census_data/address_block_shapefiles'\n", + "os.environ['ETL_DIR'] = ETL_DIR\n", + "\n", + "dbutils.fs.mkdirs(ETL_DIR)\n", + "print(f\"...ETL_DIR: '{ETL_DIR}' (create)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d7c307ec-aa2c-4003-ac31-142add84923d", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001B[0m\u001B[34;42maddress_block_shapefiles\u001B[0m/\r\n" + ] + } + ], + "source": [ + "ls $ETL_DIR/.." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3e10da79-5774-486a-b88c-f420056b6aa7", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Get All GA Addresses (Shapefiles)\n", + "

\n", + "\n", + "* Look for pattern https://www2.census.gov/geo/tiger/TIGER_RD18/LAYER/ADDRFEAT/tl_rd22_13*.zip (13 is GA number)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ce9f0f90-71d4-4ec0-9628-0466aee9f287", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "state_num = \"13\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "2eda22a5-11b7-4f01-ad9e-9f8ee73493c7", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Make `address_features` directory.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "694a2f2f-bcb0-4a47-bcfb-dcdd483e85f1", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[8]: True" + ] + } + ], + "source": [ + "dbutils.fs.mkdirs(f\"{ETL_DIR}/address_features\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "88055f32-6bfa-4c91-9861-4a8ba63cbe5b", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Get List of Shapefile ZIPs" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "3468e630-c073-44c2-aed7-a0b3c09ebcec", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "/databricks/driver\nFile ‘address_features.txt’ already there; not retrieving.\n" + ] + } + ], + "source": [ + "%sh \n", + "echo \"$PWD\"\n", + "wget -O address_features.txt -nc \"https://www2.census.gov/geo/tiger/TIGER_RD18/LAYER/ADDRFEAT/\"" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a778d810-30a9-4cf5-9c45-1a00b42c3210", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "

pathnamesizemodificationTime
dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/address_features/01700675263932
dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features.txtaddress_features.txt7741321700675264000
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features/", + "address_features/", + 0, + 1700675263932 + ], + [ + "dbfs:/Volumes/mjohns/census/census_data/address_block_shapefiles/address_features.txt", + "address_features.txt", + 774132, + 1700675264000 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "path", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "size", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "modificationTime", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "dbutils.fs.cp(\"file:/databricks/driver/address_features.txt\", ETL_DIR)\n", + "display(dbutils.fs.ls(ETL_DIR))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "f6fffcb8-a376-4419-872e-ad05785c50f9", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Figure out which rows are within the `` tag and extract the filenames.__\n", + "\n", + "> Since this is all in one file being read on one node, get consistent ordered id for `row_num` (not always true)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a030a498-2613-4ff7-b1dd-2922a965a3ea", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "tbl_start_row: 237, tbl_end_row: 3463\n" + ] + } + ], + "source": [ + "tbl_start_row = (\n", + " spark.read.text(f\"{ETL_DIR}/address_features.txt\")\n", + " .withColumn(\"row_num\", F.monotonically_increasing_id())\n", + " .withColumn(\"tbl_start_row\", F.trim(\"value\") == '
')\n", + " .filter(\"tbl_start_row = True\")\n", + " .select(\"row_num\")\n", + ").collect()[0][0]\n", + "\n", + "tbl_end_row = (\n", + " spark.read.text(f\"{ETL_DIR}/address_features.txt\")\n", + " .withColumn(\"row_num\", F.monotonically_increasing_id())\n", + " .withColumn(\"tbl_end_row\", F.trim(\"value\") == '
')\n", + " .filter(\"tbl_end_row = True\")\n", + " .select(\"row_num\")\n", + ").collect()[0][0]\n", + "\n", + "print(f\"tbl_start_row: {tbl_start_row}, tbl_end_row: {tbl_end_row}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "5715c3c9-4c68-4412-8fb7-521fe8881bd1", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "len state files? 159\nOut[13]: ['tl_rd22_13001_addrfeat.zip',\n 'tl_rd22_13003_addrfeat.zip',\n 'tl_rd22_13005_addrfeat.zip',\n 'tl_rd22_13007_addrfeat.zip',\n 'tl_rd22_13009_addrfeat.zip']" + ] + } + ], + "source": [ + "state_files = [r[1] for r in (\n", + " spark.read.text(f\"{ETL_DIR}/address_features.txt\")\n", + " .withColumn(\"row_num\", F.monotonically_increasing_id())\n", + " .filter(f\"row_num > {tbl_start_row}\")\n", + " .filter(f\"row_num < {tbl_end_row}\")\n", + " .withColumn(\"href_start\", F.substring_index(\"value\", 'href=\"', -1))\n", + " .withColumn(\"href\", F.substring_index(\"href_start\", '\">', 1))\n", + " .filter(col(\"href\").startswith(f\"tl_rd22_{state_num}\")) \n", + " .select(\"row_num\",\"href\")\n", + ").collect()]\n", + "\n", + "print(f\"len state files? {len(state_files):,}\")\n", + "state_files[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "4668ed64-7da6-4a22-8cea-32d4b0693d62", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Download Shapefile ZIPs (159)\n", + "\n", + "> Could do this in parallel, but keeping on just driver for now so as to not overload Census server with requests.\n", + "\n", + "__Note: writing locally to driver, then copying to volume with `dbutils`.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b618ca99-bfe5-4b15-a9d8-e5c62b23ca1b", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + " 0 --> 'tl_rd22_13001_addrfeat.zip' exists...skipping\n 1 --> 'tl_rd22_13003_addrfeat.zip' exists...skipping\n 2 --> 'tl_rd22_13005_addrfeat.zip' exists...skipping\n 3 --> 'tl_rd22_13007_addrfeat.zip' exists...skipping\n 4 --> 'tl_rd22_13009_addrfeat.zip' exists...skipping\n 5 --> 'tl_rd22_13011_addrfeat.zip' exists...skipping\n 6 --> 'tl_rd22_13013_addrfeat.zip' exists...skipping\n 7 --> 'tl_rd22_13015_addrfeat.zip' exists...skipping\n 8 --> 'tl_rd22_13017_addrfeat.zip' exists...skipping\n 9 --> 'tl_rd22_13019_addrfeat.zip' exists...skipping\n 10 --> 'tl_rd22_13021_addrfeat.zip' exists...skipping\n 11 --> 'tl_rd22_13023_addrfeat.zip' exists...skipping\n 12 --> 'tl_rd22_13025_addrfeat.zip' exists...skipping\n 13 --> 'tl_rd22_13027_addrfeat.zip' exists...skipping\n 14 --> 'tl_rd22_13029_addrfeat.zip' exists...skipping\n 15 --> 'tl_rd22_13031_addrfeat.zip' exists...skipping\n 16 --> 'tl_rd22_13033_addrfeat.zip' exists...skipping\n 17 --> 'tl_rd22_13035_addrfeat.zip' exists...skipping\n 18 --> 'tl_rd22_13037_addrfeat.zip' exists...skipping\n 19 --> 'tl_rd22_13039_addrfeat.zip' exists...skipping\n 20 --> 'tl_rd22_13043_addrfeat.zip' exists...skipping\n 21 --> 'tl_rd22_13045_addrfeat.zip' exists...skipping\n 22 --> 'tl_rd22_13047_addrfeat.zip' exists...skipping\n 23 --> 'tl_rd22_13049_addrfeat.zip' exists...skipping\n 24 --> 'tl_rd22_13051_addrfeat.zip' exists...skipping\n 25 --> 'tl_rd22_13053_addrfeat.zip' exists...skipping\n 26 --> 'tl_rd22_13055_addrfeat.zip' exists...skipping\n 27 --> 'tl_rd22_13057_addrfeat.zip' exists...skipping\n 28 --> 'tl_rd22_13059_addrfeat.zip' exists...skipping\n 29 --> 'tl_rd22_13061_addrfeat.zip' exists...skipping\n 30 --> 'tl_rd22_13063_addrfeat.zip' exists...skipping\n 31 --> 'tl_rd22_13065_addrfeat.zip' exists...skipping\n 32 --> 'tl_rd22_13067_addrfeat.zip' exists...skipping\n 33 --> 'tl_rd22_13069_addrfeat.zip' exists...skipping\n 34 --> 'tl_rd22_13071_addrfeat.zip' exists...skipping\n 35 --> 'tl_rd22_13073_addrfeat.zip' exists...skipping\n 36 --> 'tl_rd22_13075_addrfeat.zip' exists...skipping\n 37 --> 'tl_rd22_13077_addrfeat.zip' exists...skipping\n 38 --> 'tl_rd22_13079_addrfeat.zip' exists...skipping\n 39 --> 'tl_rd22_13081_addrfeat.zip' exists...skipping\n 40 --> 'tl_rd22_13083_addrfeat.zip' exists...skipping\n 41 --> 'tl_rd22_13085_addrfeat.zip' exists...skipping\n 42 --> 'tl_rd22_13087_addrfeat.zip' exists...skipping\n 43 --> 'tl_rd22_13089_addrfeat.zip' exists...skipping\n 44 --> 'tl_rd22_13091_addrfeat.zip' exists...skipping\n 45 --> 'tl_rd22_13093_addrfeat.zip' exists...skipping\n 46 --> 'tl_rd22_13095_addrfeat.zip' exists...skipping\n 47 --> 'tl_rd22_13097_addrfeat.zip' exists...skipping\n 48 --> 'tl_rd22_13099_addrfeat.zip' exists...skipping\n 49 --> 'tl_rd22_13101_addrfeat.zip' exists...skipping\n 50 --> 'tl_rd22_13103_addrfeat.zip' exists...skipping\n 51 --> 'tl_rd22_13105_addrfeat.zip' exists...skipping\n 52 --> 'tl_rd22_13107_addrfeat.zip' exists...skipping\n 53 --> 'tl_rd22_13109_addrfeat.zip' exists...skipping\n 54 --> 'tl_rd22_13111_addrfeat.zip' exists...skipping\n 55 --> 'tl_rd22_13113_addrfeat.zip' exists...skipping\n 56 --> 'tl_rd22_13115_addrfeat.zip' exists...skipping\n 57 --> 'tl_rd22_13117_addrfeat.zip' exists...skipping\n 58 --> 'tl_rd22_13119_addrfeat.zip' exists...skipping\n 59 --> 'tl_rd22_13121_addrfeat.zip' exists...skipping\n 60 --> 'tl_rd22_13123_addrfeat.zip' exists...skipping\n 61 --> 'tl_rd22_13125_addrfeat.zip' exists...skipping\n 62 --> 'tl_rd22_13127_addrfeat.zip' exists...skipping\n 63 --> 'tl_rd22_13129_addrfeat.zip' exists...skipping\n 64 --> 'tl_rd22_13131_addrfeat.zip' exists...skipping\n 65 --> 'tl_rd22_13133_addrfeat.zip' exists...skipping\n 66 --> 'tl_rd22_13135_addrfeat.zip' exists...skipping\n 67 --> 'tl_rd22_13137_addrfeat.zip' exists...skipping\n 68 --> 'tl_rd22_13139_addrfeat.zip' exists...skipping\n 69 --> 'tl_rd22_13141_addrfeat.zip' exists...skipping\n 70 --> 'tl_rd22_13143_addrfeat.zip' exists...skipping\n 71 --> 'tl_rd22_13145_addrfeat.zip' exists...skipping\n 72 --> 'tl_rd22_13147_addrfeat.zip' exists...skipping\n 73 --> 'tl_rd22_13149_addrfeat.zip' exists...skipping\n 74 --> 'tl_rd22_13151_addrfeat.zip' exists...skipping\n 75 --> 'tl_rd22_13153_addrfeat.zip' exists...skipping\n 76 --> 'tl_rd22_13155_addrfeat.zip' exists...skipping\n 77 --> 'tl_rd22_13157_addrfeat.zip' exists...skipping\n 78 --> 'tl_rd22_13159_addrfeat.zip' exists...skipping\n 79 --> 'tl_rd22_13161_addrfeat.zip' exists...skipping\n 80 --> 'tl_rd22_13163_addrfeat.zip' exists...skipping\n 81 --> 'tl_rd22_13165_addrfeat.zip' exists...skipping\n 82 --> 'tl_rd22_13167_addrfeat.zip' exists...skipping\n 83 --> 'tl_rd22_13169_addrfeat.zip' exists...skipping\n 84 --> 'tl_rd22_13171_addrfeat.zip' exists...skipping\n 85 --> 'tl_rd22_13173_addrfeat.zip' exists...skipping\n 86 --> 'tl_rd22_13175_addrfeat.zip' exists...skipping\n 87 --> 'tl_rd22_13177_addrfeat.zip' exists...skipping\n 88 --> 'tl_rd22_13179_addrfeat.zip' exists...skipping\n 89 --> 'tl_rd22_13181_addrfeat.zip' exists...skipping\n 90 --> 'tl_rd22_13183_addrfeat.zip' exists...skipping\n 91 --> 'tl_rd22_13185_addrfeat.zip' exists...skipping\n 92 --> 'tl_rd22_13187_addrfeat.zip' exists...skipping\n 93 --> 'tl_rd22_13189_addrfeat.zip' exists...skipping\n 94 --> 'tl_rd22_13191_addrfeat.zip' exists...skipping\n 95 --> 'tl_rd22_13193_addrfeat.zip' exists...skipping\n 96 --> 'tl_rd22_13195_addrfeat.zip' exists...skipping\n 97 --> 'tl_rd22_13197_addrfeat.zip' exists...skipping\n 98 --> 'tl_rd22_13199_addrfeat.zip' exists...skipping\n 99 --> 'tl_rd22_13201_addrfeat.zip' exists...skipping\n 100 --> 'tl_rd22_13205_addrfeat.zip' exists...skipping\n 101 --> 'tl_rd22_13207_addrfeat.zip' exists...skipping\n 102 --> 'tl_rd22_13209_addrfeat.zip' exists...skipping\n 103 --> 'tl_rd22_13211_addrfeat.zip' exists...skipping\n 104 --> 'tl_rd22_13213_addrfeat.zip' exists...skipping\n 105 --> 'tl_rd22_13215_addrfeat.zip' exists...skipping\n 106 --> 'tl_rd22_13217_addrfeat.zip' exists...skipping\n 107 --> 'tl_rd22_13219_addrfeat.zip' exists...skipping\n 108 --> 'tl_rd22_13221_addrfeat.zip' exists...skipping\n 109 --> 'tl_rd22_13223_addrfeat.zip' exists...skipping\n 110 --> 'tl_rd22_13225_addrfeat.zip' exists...skipping\n 111 --> 'tl_rd22_13227_addrfeat.zip' exists...skipping\n 112 --> 'tl_rd22_13229_addrfeat.zip' exists...skipping\n 113 --> 'tl_rd22_13231_addrfeat.zip' exists...skipping\n 114 --> 'tl_rd22_13233_addrfeat.zip' exists...skipping\n 115 --> 'tl_rd22_13235_addrfeat.zip' exists...skipping\n 116 --> 'tl_rd22_13237_addrfeat.zip' exists...skipping\n 117 --> 'tl_rd22_13239_addrfeat.zip' exists...skipping\n 118 --> 'tl_rd22_13241_addrfeat.zip' exists...skipping\n 119 --> 'tl_rd22_13243_addrfeat.zip' exists...skipping\n 120 --> 'tl_rd22_13245_addrfeat.zip' exists...skipping\n 121 --> 'tl_rd22_13247_addrfeat.zip' exists...skipping\n 122 --> 'tl_rd22_13249_addrfeat.zip' exists...skipping\n 123 --> 'tl_rd22_13251_addrfeat.zip' exists...skipping\n 124 --> 'tl_rd22_13253_addrfeat.zip' exists...skipping\n 125 --> 'tl_rd22_13255_addrfeat.zip' exists...skipping\n 126 --> 'tl_rd22_13257_addrfeat.zip' exists...skipping\n 127 --> 'tl_rd22_13259_addrfeat.zip' exists...skipping\n 128 --> 'tl_rd22_13261_addrfeat.zip' exists...skipping\n 129 --> 'tl_rd22_13263_addrfeat.zip' exists...skipping\n 130 --> 'tl_rd22_13265_addrfeat.zip' exists...skipping\n 131 --> 'tl_rd22_13267_addrfeat.zip' exists...skipping\n 132 --> 'tl_rd22_13269_addrfeat.zip' exists...skipping\n 133 --> 'tl_rd22_13271_addrfeat.zip' exists...skipping\n 134 --> 'tl_rd22_13273_addrfeat.zip' exists...skipping\n 135 --> 'tl_rd22_13275_addrfeat.zip' exists...skipping\n 136 --> 'tl_rd22_13277_addrfeat.zip' exists...skipping\n 137 --> 'tl_rd22_13279_addrfeat.zip' exists...skipping\n 138 --> 'tl_rd22_13281_addrfeat.zip' exists...skipping\n 139 --> 'tl_rd22_13283_addrfeat.zip' exists...skipping\n 140 --> 'tl_rd22_13285_addrfeat.zip' exists...skipping\n 141 --> 'tl_rd22_13287_addrfeat.zip' exists...skipping\n 142 --> 'tl_rd22_13289_addrfeat.zip' exists...skipping\n 143 --> 'tl_rd22_13291_addrfeat.zip' exists...skipping\n 144 --> 'tl_rd22_13293_addrfeat.zip' exists...skipping\n 145 --> 'tl_rd22_13295_addrfeat.zip' exists...skipping\n 146 --> 'tl_rd22_13297_addrfeat.zip' exists...skipping\n 147 --> 'tl_rd22_13299_addrfeat.zip' exists...skipping\n 148 --> 'tl_rd22_13301_addrfeat.zip' exists...skipping\n 149 --> 'tl_rd22_13303_addrfeat.zip' exists...skipping\n 150 --> 'tl_rd22_13305_addrfeat.zip' exists...skipping\n 151 --> 'tl_rd22_13307_addrfeat.zip' exists...skipping\n 152 --> 'tl_rd22_13309_addrfeat.zip' exists...skipping\n 153 --> 'tl_rd22_13311_addrfeat.zip' exists...skipping\n 154 --> 'tl_rd22_13313_addrfeat.zip' exists...skipping\n 155 --> 'tl_rd22_13315_addrfeat.zip' exists...skipping\n 156 --> 'tl_rd22_13317_addrfeat.zip' exists...skipping\n 157 --> 'tl_rd22_13319_addrfeat.zip' exists...skipping\n 158 --> 'tl_rd22_13321_addrfeat.zip' exists...skipping\n" + ] + } + ], + "source": [ + "import pathlib\n", + "import requests\n", + "\n", + "vol_path = pathlib.Path(f\"{ETL_DIR}/address_features\")\n", + "local_path = pathlib.Path(f\"address_features\")\n", + "local_path.mkdir(parents=True, exist_ok=True)\n", + "\n", + "for idx,f in enumerate(state_files):\n", + " idx_str = str(idx).rjust(4)\n", + " \n", + " vol_file = vol_path / f\n", + " if not vol_file.exists():\n", + " local_file = local_path / f \n", + " print(f\"{idx_str} --> '{f}'\")\n", + " req = requests.get(f'https://www2.census.gov/geo/tiger/TIGER_RD18/LAYER/ADDRFEAT/{f}')\n", + " with open(local_file, 'wb') as f:\n", + " f.write(req.content)\n", + " else:\n", + " print(f\"{idx_str} --> '{f}' exists...skipping\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "20c476a8-9a3f-4ca9-9d3b-f99914f861a7", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[39]: True" + ] + } + ], + "source": [ + "dbutils.fs.cp(\"file:/databricks/driver/address_features\", f\"{ETL_DIR}/address_features\", recurse=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "1563023f-d74b-4e70-82c4-aa9a8c79c8f9", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "total 366M\n-rwxrwxrwx 1 nobody nogroup 1.8M Oct 23 14:53 tl_rd22_13001_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 888K Oct 23 14:53 tl_rd22_13003_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 814K Oct 23 14:53 tl_rd22_13005_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 447K Oct 23 14:53 tl_rd22_13007_addrfeat.zip\n...\n-rwxrwxrwx 1 nobody nogroup 4.2M Oct 23 14:53 tl_rd22_13313_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 966K Oct 23 14:53 tl_rd22_13315_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 1.1M Oct 23 14:53 tl_rd22_13317_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 1.1M Oct 23 14:53 tl_rd22_13319_addrfeat.zip\n-rwxrwxrwx 1 nobody nogroup 1.9M Oct 23 14:53 tl_rd22_13321_addrfeat.zip\n" + ] + } + ], + "source": [ + "%sh\n", + "# avoid list all files\n", + "ls -lh $ETL_DIR/address_features | head -5\n", + "echo \"...\"\n", + "ls -lh $ETL_DIR/address_features | tail -5" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "8ec7388f-b607-46ba-a5b8-c2f4116ca1fd", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Note:__ Showing DBFS based processing [Volumes](https://docs.databricks.com/en/sql/language-manual/sql-ref-volumes.html) for access, though you could skip this if all setup with Unity Catalog + Shared Access clusters." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "eaa1c491-bfef-4a07-9295-821969bc1bdd", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[15]: True" + ] + } + ], + "source": [ + "# - change to your preferred DBFS path\n", + "ETL_DBFS_DIR = \"/home/mjohns@databricks.com/datasets/census/address_features\"\n", + "os.environ['ETL_DBFS_DIR'] = ETL_DBFS_DIR\n", + "dbutils.fs.mkdirs(ETL_DBFS_DIR)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "14d5b6e5-eeb7-4e48-9f1f-3b7fd1ebfbf3", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
pathnamesizemodificationTime
dbfs:/home/mjohns@databricks.com/datasets/census/address_features/tl_rd22_13001_addrfeat.ziptl_rd22_13001_addrfeat.zip18810471700675678000
dbfs:/home/mjohns@databricks.com/datasets/census/address_features/tl_rd22_13003_addrfeat.ziptl_rd22_13003_addrfeat.zip9088611700675678000
dbfs:/home/mjohns@databricks.com/datasets/census/address_features/tl_rd22_13005_addrfeat.ziptl_rd22_13005_addrfeat.zip8326591700675679000
dbfs:/home/mjohns@databricks.com/datasets/census/address_features/tl_rd22_13007_addrfeat.ziptl_rd22_13007_addrfeat.zip4574131700675679000
dbfs:/home/mjohns@databricks.com/datasets/census/address_features/tl_rd22_13009_addrfeat.ziptl_rd22_13009_addrfeat.zip18128531700675679000
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "dbfs:/home/mjohns@databricks.com/datasets/census/address_features/tl_rd22_13001_addrfeat.zip", + "tl_rd22_13001_addrfeat.zip", + 1881047, + 1700675678000 + ], + [ + "dbfs:/home/mjohns@databricks.com/datasets/census/address_features/tl_rd22_13003_addrfeat.zip", + "tl_rd22_13003_addrfeat.zip", + 908861, + 1700675678000 + ], + [ + "dbfs:/home/mjohns@databricks.com/datasets/census/address_features/tl_rd22_13005_addrfeat.zip", + "tl_rd22_13005_addrfeat.zip", + 832659, + 1700675679000 + ], + [ + "dbfs:/home/mjohns@databricks.com/datasets/census/address_features/tl_rd22_13007_addrfeat.zip", + "tl_rd22_13007_addrfeat.zip", + 457413, + 1700675679000 + ], + [ + "dbfs:/home/mjohns@databricks.com/datasets/census/address_features/tl_rd22_13009_addrfeat.zip", + "tl_rd22_13009_addrfeat.zip", + 1812853, + 1700675679000 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "path", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "size", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "modificationTime", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "dbutils.fs.cp(f\"{ETL_DIR}/address_features\", ETL_DBFS_DIR, recurse=True)\n", + "display(dbutils.fs.ls(ETL_DBFS_DIR)[:5]) # <- just showing the first 5 for ipynb" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "db241304-a937-42b5-9613-70ad1b953204", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Test Render with Kepler\n", + "\n", + "> Just rendering the first file `tl_rd22_13001_addrfeat.zip` for an example. " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "73632755-3450-49d6-8802-89786eba420f", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 3,762, num invalid? 0\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
fullnamelfromhnltohnziplrfromhnrtohnziprgeom_wktis_valid
Holmesville Rd000104011049931563LINESTRING (-82.222325 31.645474,-82.222997 31.645623)true
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "Holmesville Rd", + 0, + 0, + 0, + 10401, + 10499, + 31563, + "LINESTRING (-82.222325 31.645474,-82.222997 31.645623)", + true + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "fullname", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "lfromhn", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ltohn", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "zipl", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "rfromhn", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "rtohn", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "zipr", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "is_valid", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df_kepler = (\n", + " mos.read()\n", + " .format(\"multi_read_ogr\")\n", + " .option(\"vsizip\", \"true\")\n", + " .option(\"asWKB\", \"false\")\n", + " .load(f\"dbfs:{ETL_DBFS_DIR}/tl_rd22_13001_addrfeat.zip\")\n", + " .withColumn(\"geom\", mos.st_geomfromwkt(\"geom_0\"))\n", + " .withColumn(\"is_valid\", mos.st_isvalid(\"geom\"))\n", + " .selectExpr(\n", + " \"fullname\", \"lfromhn\", \"ltohn\", \"zipl\", \"rfromhn\", \"rtohn\", \"zipr\",\n", + " \"geom_0 as geom_wkt\", \"is_valid\"\n", + " )\n", + ")\n", + "print(f\"count? {df_kepler.count():,}, num invalid? {df_kepler.filter('is_valid = False').count():,}\")\n", + "df_kepler.limit(1).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7177408a-3a5b-4a61-8c16-5e0d0485a129", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "197ea9bf-b3ff-41a5-b1eb-a0ef44b40025", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "44f95338-e268-483e-93d9-6c3e70d37107", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# df_kepler \"geom_wkt\" \"geometry\" 10_000 " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "63ab22d8-14fb-4ee7-9565-9627a269c8c0", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Shapefiles to Delta Lake\n", + "\n", + "> Will use Mosaic + GDAL to read the ShapeFiles and write as Delta Lake to DBFS\n", + "\n", + "__Focus on `ADDRFEAT` (Address Feature) for both geometries and address ranges.__" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "7f9fcddc-5dee-4597-bc20-1dfa945e222b", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Assess `ST_Transform` to 4326 (from 4269)__\n", + "\n", + "> See that 'geom_0_srid' is 4269, so use `st_setsrid` and `st_transform` to standardize to 4326, more [here](https://databrickslabs.github.io/mosaic/usage/grid-indexes-bng.html#coordinate-reference-system). _This just uses one file to demonstrate the transform initially, full data is transformed later._\n", + "\n", + "__Note:__ _This pattern will shift to avoid Mosaic internal geometry in Mosaic 0.4 series._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7954c22b-fb4b-4c4b-9355-ef74d3a1b1e6", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 3,762\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
TLIDTFIDLTFIDRARIDLARIDRLINEARIDFULLNAMELFROMHNLTOHNRFROMHNRTOHNZIPLZIPREDGE_MTFCCROAD_MTFCCPARITYLPARITYRPLUS4LPLUS4RLFROMTYPLTOTYPRFROMTYPRTOTYPOFFSETLOFFSETRgeom_0geom_0_srid
4465900209153283259208815040060416405411105646216480Holmesville Rd001040110499031563S1400S1400ONNLINESTRING (-82.222325 31.645474,-82.222997 31.645623)4269
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 4465900, + 209153283, + 259208815, + 0, + 4006041640541, + 1105646216480, + "Holmesville Rd", + 0, + 0, + 10401, + 10499, + 0, + 31563, + "S1400", + "S1400", + "", + "O", + "", + "", + "", + "", + "", + "", + "N", + "N", + "LINESTRING (-82.222325 31.645474,-82.222997 31.645623)", + "4269" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "TLID", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ARIDL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ARIDR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "LINEARID", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "FULLNAME", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "LTOHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "RFROMHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "RTOHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ZIPL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ZIPR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "EDGE_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ROAD_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4L", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4R", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_0", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_0_srid", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df_test = (\n", + " mos.read()\n", + " .format(\"multi_read_ogr\")\n", + " .option(\"vsizip\", \"true\")\n", + " .option(\"asWKB\", \"false\")\n", + " .load(f\"dbfs:{ETL_DBFS_DIR}/tl_rd22_13001_addrfeat.zip\")\n", + ")\n", + "print(f\"count? {df_test.count():,}\")\n", + "df_test.limit(1).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "35e70182-7813-4235-b96f-c280b4cf6528", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 3,762\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
TLIDTFIDLTFIDRARIDLARIDRLINEARIDFULLNAMELFROMHNLTOHNRFROMHNRTOHNZIPLZIPREDGE_MTFCCROAD_MTFCCPARITYLPARITYRPLUS4LPLUS4RLFROMTYPLTOTYPRFROMTYPRTOTYPOFFSETLOFFSETRgeom_0geom_0_sridgeom_4269can_coords_from_4269geomis_coords_4326geom_wktis_valid
4465900209153283259208815040060416405411105646216480Holmesville Rd001040110499031563S1400S1400ONNLINESTRING (-82.222325 31.645474,-82.222997 31.645623)4269List(3, 4269, List(List(List(-82.222325, 31.645474), List(-82.222997, 31.645623))), List(List(List())))trueList(3, 4326, List(List(List(-82.222325, 31.645474), List(-82.222997, 31.645623))), List(List(List())))trueLINESTRING (-82.222325 31.645474, -82.222997 31.645623)true
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 4465900, + 209153283, + 259208815, + 0, + 4006041640541, + 1105646216480, + "Holmesville Rd", + 0, + 0, + 10401, + 10499, + 0, + 31563, + "S1400", + "S1400", + "", + "O", + "", + "", + "", + "", + "", + "", + "N", + "N", + "LINESTRING (-82.222325 31.645474,-82.222997 31.645623)", + "4269", + [ + 3, + 4269, + [ + [ + [ + -82.222325, + 31.645474 + ], + [ + -82.222997, + 31.645623 + ] + ] + ], + [ + [ + [] + ] + ] + ], + true, + [ + 3, + 4326, + [ + [ + [ + -82.222325, + 31.645474 + ], + [ + -82.222997, + 31.645623 + ] + ] + ], + [ + [ + [] + ] + ] + ], + true, + "LINESTRING (-82.222325 31.645474, -82.222997 31.645623)", + true + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "TLID", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ARIDL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ARIDR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "LINEARID", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "FULLNAME", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "LTOHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "RFROMHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "RTOHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ZIPL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ZIPR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "EDGE_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ROAD_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4L", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4R", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_0", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_0_srid", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_4269", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"type_id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"srid\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"boundary\",\"type\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"nullable\":true,\"metadata\":{}},{\"name\":\"holes\",\"type\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "can_coords_from_4269", + "type": "\"boolean\"" + }, + { + "metadata": "{}", + "name": "geom", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"type_id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"srid\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"boundary\",\"type\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"nullable\":true,\"metadata\":{}},{\"name\":\"holes\",\"type\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "is_coords_4326", + "type": "\"boolean\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "is_valid", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df_trans_test = (\n", + " mos.read()\n", + " .format(\"multi_read_ogr\")\n", + " .option(\"vsizip\", \"true\")\n", + " .option(\"asWKB\", \"false\")\n", + " .load(f\"dbfs:{ETL_DBFS_DIR}/tl_rd22_13001_addrfeat.zip\")\n", + " .withColumn(\"geom_4269\", mos.st_geomfromwkt(\"geom_0\"))\n", + " .withColumn(\"geom_4269\", mos.st_setsrid(\"geom_4269\", F.lit(4269)))\n", + " .withColumn(\"can_coords_from_4269\", mos.st_hasvalidcoordinates(\"geom_4269\", F.lit(\"EPSG:4326\"), F.lit('reprojected_bounds')))\n", + " .withColumn(\"geom\", mos.st_transform(\"geom_4269\", F.lit(4326)))\n", + " .withColumn(\"is_coords_4326\", mos.st_hasvalidcoordinates(\"geom\", F.lit(\"EPSG:4326\"), F.lit('bounds')))\n", + " .withColumn(\"geom_wkt\", mos.st_astext(\"geom\"))\n", + " .withColumn(\"is_valid\", mos.st_isvalid(\"geom_wkt\"))\n", + ")\n", + "print(f\"count? {df_trans_test.count():,}\")\n", + "df_trans_test.limit(1).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "60090cbe-867a-4a85-a7b8-b45a9d54efde", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[63]: 159" + ] + } + ], + "source": [ + "num_shapefiles = len(dbutils.fs.ls(ETL_DBFS_DIR))\n", + "num_shapefiles" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b6b2f61c-2597-44bf-a176-49c7fe9b22c8", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "_df = (\n", + " mos.read()\n", + " .format(\"multi_read_ogr\")\n", + " .option(\"vsizip\", \"true\")\n", + " .option(\"asWKB\", \"false\")\n", + " .load(f\"dbfs:{ETL_DBFS_DIR}/\")\n", + " .repartition(num_shapefiles, F.rand())\n", + " .withColumn(\"geom_4269\", mos.st_geomfromwkt(\"geom_0\"))\n", + " .withColumn(\"geom_4269\", mos.st_setsrid(\"geom_4269\", F.lit(4269)))\n", + " .withColumn(\"geom\", mos.st_transform(\"geom_4269\", F.lit(4326)))\n", + " .withColumn(\"geom_wkt\", mos.st_astext(\"geom\"))\n", + " .withColumn(\"is_valid\", mos.st_isvalid(\"geom_wkt\"))\n", + " .selectExpr(\n", + " \"* except(geom_0, geom_4269, geom, geom_wkt, is_valid)\",\n", + " \"geom_wkt\", \"is_valid\"\n", + " )\n", + ")\n", + "\n", + "## -- wait until write to delta, will be faster --\n", + "# print(f\"\"\"count? {_df.count():,}, num invalid? {_df.filter(\"is_valid = False\").count():,}\"\"\")\n", + "# _df.display()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "1a3e2b71-b5e2-4662-bb6e-d6c8a55f4ed8", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Write to Delta Lake\n", + "\n", + "> We are saving as a managed table named 'ga_address_block'." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a30c9972-a7e9-4a80-80d0-b4866fa0bf84", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 782,054, num invalid? 0\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
TLIDTFIDLTFIDRARIDLARIDRLINEARIDFULLNAMELFROMHNLTOHNRFROMHNRTOHNZIPLZIPREDGE_MTFCCROAD_MTFCCPARITYLPARITYRPLUS4LPLUS4RLFROMTYPLTOTYPRFROMTYPRTOTYPOFFSETLOFFSETRgeom_0_sridgeom_wktis_valid
647339257265438206265438206400101245966240010125263861101019209353Old Forge Dr10001298100112993007630076S1400S1400EOIINN4269LINESTRING (-84.333864 34.03804, -84.333828 34.037969, -84.33378 34.037876, -84.333718 34.037712, -84.333677 34.037543, -84.33365600000002 34.037371, -84.333689 34.035147, -84.333711 34.034936, -84.333764 34.034735, -84.333848 34.03454, -84.33396100000002 34.034355000000005)true
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 647339257, + 265438206, + 265438206, + 4001012459662, + 4001012526386, + 1101019209353, + "Old Forge Dr", + 1000, + 1298, + 1001, + 1299, + 30076, + 30076, + "S1400", + "S1400", + "E", + "O", + "", + "", + "", + "I", + "", + "I", + "N", + "N", + "4269", + "LINESTRING (-84.333864 34.03804, -84.333828 34.037969, -84.33378 34.037876, -84.333718 34.037712, -84.333677 34.037543, -84.33365600000002 34.037371, -84.333689 34.035147, -84.333711 34.034936, -84.333764 34.034735, -84.333848 34.03454, -84.33396100000002 34.034355000000005)", + true + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "TLID", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ARIDL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ARIDR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "LINEARID", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "FULLNAME", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "LTOHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "RFROMHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "RTOHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ZIPL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ZIPR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "EDGE_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ROAD_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4L", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4R", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_0_srid", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "is_valid", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "(\n", + " _df\n", + " .write\n", + " .mode(\"overwrite\")\n", + " .option(\"mergeSchema\", \"true\")\n", + " .saveAsTable(f\"{catalog_name}.{db_name}.ga_address_block\")\n", + ")\n", + "\n", + "df_address = spark.table(f\"{catalog_name}.{db_name}.ga_address_block\")\n", + "\n", + "print(f\"count? {df_address.count():,}, num invalid? {df_address.filter('is_valid = False').count():,}\")\n", + "df_address.limit(1).display()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "bba4a72f-c1ab-45b8-b4d2-e464ef2c2365", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Final Sanity Check" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "dede4ee0-595a-43a4-a214-ce3f412c123c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
databasetableNameisTemporary
censusga_address_blockfalse
censusshape_address_blockfalse
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "census", + "ga_address_block", + false + ], + [ + "census", + "shape_address_block", + false + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "database", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "tableName", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "isTemporary", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql show tables" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d8f02e22-df0c-4e63-a02b-ec12326fa362", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
TLIDTFIDLTFIDRARIDLARIDRLINEARIDFULLNAMELFROMHNLTOHNRFROMHNRTOHNZIPLZIPREDGE_MTFCCROAD_MTFCCPARITYLPARITYRPLUS4LPLUS4RLFROMTYPLTOTYPRFROMTYPRTOTYPOFFSETLOFFSETRgeom_0_sridgeom_wktis_valid
647339257265438206265438206400101245966240010125263861101019209353Old Forge Dr10001298100112993007630076S1400S1400EOIINN4269LINESTRING (-84.333864 34.03804, -84.333828 34.037969, -84.33378 34.037876, -84.333718 34.037712, -84.333677 34.037543, -84.33365600000002 34.037371, -84.333689 34.035147, -84.333711 34.034936, -84.333764 34.034735, -84.333848 34.03454, -84.33396100000002 34.034355000000005)true
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 647339257, + 265438206, + 265438206, + 4001012459662, + 4001012526386, + 1101019209353, + "Old Forge Dr", + 1000, + 1298, + 1001, + 1299, + 30076, + 30076, + "S1400", + "S1400", + "E", + "O", + "", + "", + "", + "I", + "", + "I", + "N", + "N", + "4269", + "LINESTRING (-84.333864 34.03804, -84.333828 34.037969, -84.33378 34.037876, -84.333718 34.037712, -84.333677 34.037543, -84.33365600000002 34.037371, -84.333689 34.035147, -84.333711 34.034936, -84.333764 34.034735, -84.333848 34.03454, -84.33396100000002 34.034355000000005)", + true + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "TLID", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "TFIDR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ARIDL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ARIDR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "LINEARID", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "FULLNAME", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "LTOHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "RFROMHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "RTOHN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ZIPL", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "ZIPR", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "EDGE_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "ROAD_MTFCC", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PARITYR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4L", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "PLUS4R", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "LTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RFROMTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "RTOTYP", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETL", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "OFFSETR", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_0_srid", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "is_valid", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql select * from ga_address_block limit 1" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 85549841987820, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "mosaic_gdal_shapefiles", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/Shapefiles/README.md b/notebooks/examples/python/Shapefiles/README.md new file mode 100644 index 000000000..64b56ed1f --- /dev/null +++ b/notebooks/examples/python/Shapefiles/README.md @@ -0,0 +1,5 @@ +# Shapefile Examples + +> A couple of examples loading shapefiles into Databricks. + +__Note: `ipynb` files can be previewed in GitHub and can also be imported into Databricks, more [here](https://docs.databricks.com/en/notebooks/notebook-export-import.html).__ diff --git a/notebooks/examples/python/Ship2ShipTransfers/01. Data Prep.ipynb b/notebooks/examples/python/Ship2ShipTransfers/01. Data Prep.ipynb new file mode 100644 index 000000000..89d8120c7 --- /dev/null +++ b/notebooks/examples/python/Ship2ShipTransfers/01. Data Prep.ipynb @@ -0,0 +1,1129 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "45f7a0b5-6237-4e83-a3e1-364b071901ee", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup\n", + "\n", + "> Generates the table 'harbours_h3' in database 'ship2ship'.\n", + "\n", + "

\n", + "\n", + "1. Import Databricks columnar functions (including H3) for DBR / DBSQL Photon with `from pyspark.databricks.sql.functions import *`\n", + "2. To use Databricks Labs [Mosaic](https://databrickslabs.github.io/mosaic/index.html) library for geospatial data engineering, analysis, and visualization functionality:\n", + " * Install with `%pip install databricks-mosaic`\n", + " * Import and use with the following:\n", + " ```\n", + " import mosaic as mos\n", + " mos.enable_mosaic(spark, dbutils)\n", + " ```\n", + "

\n", + "\n", + "3. To use [KeplerGl](https://kepler.gl/) OSS library for map layer rendering:\n", + " * Already installed with Mosaic, use `%%mosaic_kepler` magic [[Mosaic Docs](https://databrickslabs.github.io/mosaic/usage/kepler.html)]\n", + " * Import with `from keplergl import KeplerGl` to use directly\n", + "\n", + "If you have trouble with Volume access:\n", + "\n", + "* For Mosaic 0.3 series (< DBR 13) - you can copy resources to DBFS as a workaround\n", + "* For Mosaic 0.4 series (DBR 13.3 LTS) - you will need to either copy resources to DBFS or setup for Unity Catalog + Shared Access which will involve your workspace admin. Instructions, as updated, will be [here](https://databrickslabs.github.io/mosaic/usage/install-gdal.html).\n", + "\n", + "---\n", + "__Last Updated:__ 27 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "14677abf-cdba-4606-8453-ac6405a19b77", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet # <- Mosaic 0.3 series\n", + "# %pip install \"databricks-mosaic<0.5,>=0.4\" --quiet # <- Mosaic 0.4 series (as available)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "16a02bda-f795-4736-8a0f-7cff3bc07c0c", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "spark.conf.set(\"spark.sql.shuffle.partitions\", 1_024) # <-- default is 200\n", + "\n", + "# -- import databricks + spark functions\n", + "from pyspark.databricks.sql import functions as dbf\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import col, udf\n", + "from pyspark.sql.types import *\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "# mos.enable_gdal(spark) # <- not needed for this example\n", + "\n", + "# --other imports\n", + "import os\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "6cda4285-edab-47be-9d30-a9c9209e78a0", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Configure Database__\n", + "\n", + "> Note: Adjust this to your own specified [Unity Catalog](https://docs.databricks.com/en/data-governance/unity-catalog/manage-privileges/admin-privileges.html#managing-unity-catalog-metastores) Schema." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e27ffc3d-de44-44c6-a160-99cbb2bf5fe3", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[2]: DataFrame[]" + ] + } + ], + "source": [ + "catalog_name = \"mjohns\"\n", + "sql(f\"use catalog {catalog_name}\")\n", + "\n", + "db_name = \"ship2ship\"\n", + "sql(f\"CREATE DATABASE IF NOT EXISTS {db_name}\")\n", + "sql(f\"use schema {db_name}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "0c0d5c41-f152-4455-afef-72ab921a3d72", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__AIS Data Download: `ETL_DIR` + `ETL_DIR_FUSE`__\n", + "\n", + "> Downloading initial data into a temp location. After the Delta Tables have been created, this location can be removed. You can alter this, of course, to match your preferred location. __Note:__ this is showing DBFS for continuity outside Unity Catalog + Shared Access clusters, but you can easily modify paths to use [Volumes](https://docs.databricks.com/en/sql/language-manual/sql-ref-volumes.html), see more details [here](https://databrickslabs.github.io/mosaic/usage/installation.html) as available." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0edf604e-5e52-49f1-ae4f-baef341ca47d", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "...ETL_DIR: '/tmp/ship2ship', ETL_DIR_FUSE: '/dbfs/tmp/ship2ship' (create)\n" + ] + } + ], + "source": [ + "ETL_DIR = '/tmp/ship2ship'\n", + "ETL_DIR_FUSE = f'/dbfs{ETL_DIR}'\n", + "\n", + "os.environ['ETL_DIR'] = ETL_DIR\n", + "os.environ['ETL_DIR_FUSE'] = ETL_DIR_FUSE\n", + "\n", + "dbutils.fs.mkdirs(ETL_DIR)\n", + "print(f\"...ETL_DIR: '{ETL_DIR}', ETL_DIR_FUSE: '{ETL_DIR_FUSE}' (create)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "305f4172-0e06-4f51-94f9-0903a3e2e5a6", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Archive: AIS_2018_01_31.zip\n inflating: AIS_2018_01_31.csv \ntotal 735M\n-rwxrwxrwx 1 root root 735M Nov 27 19:53 AIS_2018_01_31.csv\n" + ] + } + ], + "source": [ + "%sh\n", + "# see: https://coast.noaa.gov/htdata/CMSP/AISDataHandler/2018/index.html\n", + "# - [1] we download data locally and unzip\n", + "mkdir /ship2ship/\n", + "cd /ship2ship/\n", + "wget -np -r -nH -L --cut-dirs=4 -nc https://coast.noaa.gov/htdata/CMSP/AISDataHandler/2018/AIS_2018_01_31.zip > /dev/null 2>&1\n", + "unzip AIS_2018_01_31.zip\n", + "\n", + "# - [2] then copy to dbfs:// fuse mountpoint (/dbfs)\n", + "mv AIS_2018_01_31.csv $ETL_DIR_FUSE\n", + "ls -lh $ETL_DIR_FUSE" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "029f1fcc-cc00-469b-8d2d-08d171a984d3", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "

MMSIBaseDateTimeLATLONSOGCOGHeadingVesselNameIMOCallSignVesselTypeStatusLengthWidthDraftCargoTranscieverClass
3673536602018-01-31T01:37:52.000+000040.78783-73.919830.196.035.0RED HOOKIMO9501916WDE4476700107164.980A
3673536602018-01-31T01:36:42.000+000040.78783-73.919830.2320.035.0RED HOOKIMO9501916WDE4476700107164.980A
3673536602018-01-31T01:34:11.000+000040.78783-73.919830.2167.035.0RED HOOKIMO9501916WDE4476700107164.980A
3673536602018-01-31T01:31:51.000+000040.78783-73.919830.0170.034.0RED HOOKIMO9501916WDE4476700107164.980A
3673536602018-01-31T01:33:02.000+000040.78783-73.919830.1125.035.0RED HOOKIMO9501916WDE4476700107164.980A
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 367353660, + "2018-01-31T01:37:52.000+0000", + 40.78783, + -73.91983, + 0.1, + 96.0, + 35.0, + "RED HOOK", + "IMO9501916", + "WDE4476", + 70, + 0, + 107, + 16, + 4.9, + 80, + "A" + ], + [ + 367353660, + "2018-01-31T01:36:42.000+0000", + 40.78783, + -73.91983, + 0.2, + 320.0, + 35.0, + "RED HOOK", + "IMO9501916", + "WDE4476", + 70, + 0, + 107, + 16, + 4.9, + 80, + "A" + ], + [ + 367353660, + "2018-01-31T01:34:11.000+0000", + 40.78783, + -73.91983, + 0.2, + 167.0, + 35.0, + "RED HOOK", + "IMO9501916", + "WDE4476", + 70, + 0, + 107, + 16, + 4.9, + 80, + "A" + ], + [ + 367353660, + "2018-01-31T01:31:51.000+0000", + 40.78783, + -73.91983, + 0.0, + 170.0, + 34.0, + "RED HOOK", + "IMO9501916", + "WDE4476", + 70, + 0, + 107, + 16, + 4.9, + 80, + "A" + ], + [ + 367353660, + "2018-01-31T01:33:02.000+0000", + 40.78783, + -73.91983, + 0.1, + 125.0, + 35.0, + "RED HOOK", + "IMO9501916", + "WDE4476", + 70, + 0, + 107, + 16, + 4.9, + 80, + "A" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "MMSI", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "BaseDateTime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "LAT", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "LON", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "SOG", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "COG", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Heading", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "VesselName", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "IMO", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "CallSign", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "VesselType", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Status", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Length", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Width", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Draft", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Cargo", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "TranscieverClass", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "schema = \"\"\"\n", + " MMSI int, \n", + " BaseDateTime timestamp, \n", + " LAT double, \n", + " LON double, \n", + " SOG double, \n", + " COG double, \n", + " Heading double, \n", + " VesselName string, \n", + " IMO string, \n", + " CallSign string, \n", + " VesselType int, \n", + " Status int, \n", + " Length int, \n", + " Width int, \n", + " Draft double, \n", + " Cargo int, \n", + " TranscieverClass string\n", + "\"\"\"\n", + "\n", + "AIS_df = (\n", + " spark.read.csv(ETL_DIR, header=True, schema=schema)\n", + " .filter(\"VesselType = 70\") # <- only select cargos\n", + " .filter(\"Status IS NOT NULL\")\n", + ")\n", + "display(AIS_df.limit(5)) # <- limiting for ipynb only" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c784e3a3-96a7-4bbe-9f11-7ccabc54e58a", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "(AIS_df.write.format(\"delta\").mode(\"overwrite\").saveAsTable(\"AIS\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c2196de6-8bbd-4e6a-8bef-c87ef2eefdb1", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
count
521,867
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "521,867" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "count", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql select format_number(count(1), 0) as count from AIS" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "23b47629-80df-42bb-9b94-2c12f7d90dd1", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Harbours\n", + "\n", + "This data can be obtained from [here](https://data-usdot.opendata.arcgis.com/datasets/usdot::ports-major/about), and loaded with the code below.\n", + "\n", + "To avoid detecting overlap close to, or within harbours, in Notebook `03.b Advanced Overlap Detection` we filter out events taking place close to a harbour.\n", + "Various approaches are possible, including filtering out events too close to shore, and can be implemented in a similar fashion.\n", + "\n", + "In this instance we set a buffer of `10 km` around harbours to arbitrarily define an area wherein we do not expect ship-to-ship transfers to take place.\n", + "Since our projection is not in metres, we convert from decimal degrees. With `(0.00001 - 0.000001)` as being equal to one metre at the equator\n", + "Ref: http://wiki.gis.com/wiki/index.php/Decimal_degrees" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d432c9b5-ccf6-4e74-b3d4-6d4ed51f2cfd", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "total 735M\n-rwxrwxrwx 1 root root 735M Nov 27 19:53 AIS_2018_01_31.csv\n-rwxrwxrwx 1 root root 5.9K Nov 27 19:59 harbours.geojson\n" + ] + } + ], + "source": [ + "%sh\n", + "# we download data to dbfs:// mountpoint (/dbfs)\n", + "cd $ETL_DIR_FUSE && \\\n", + " wget -np -r -nH -L -q --cut-dirs=7 -O harbours.geojson -nc \"https://geo.dot.gov/mapping/rest/services/NTAD/Strategic_Ports/MapServer/0/query?outFields=*&where=1%3D1&f=geojson\"\n", + "\n", + "ls -lh $ETL_DIR_FUSE" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a3845378-e1c1-4eaa-8254-42b96a1ec72c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
namegeom
Beaumont, TXPOLYGON ((-93.99840083045797 30.076160457289905, -94.00013015522168 30.058602328308453, -94.00525167253195 30.041718948377046, -94.01356856535074 30.026159136318142, -94.02476122015118 30.012520846983115, -94.03839950948621 30.001328192182676, -94.05395932154511 29.99301129936389, -94.07084270147652 29.987889782053614, -94.08840083045797 29.986160457289905, -94.10595895943942 29.987889782053614, -94.12284233937083 29.99301129936389, -94.13840215142973 30.001328192182676, -94.15204044076476 30.012520846983115, -94.1632330955652 30.026159136318142, -94.17154998838399 30.041718948377046, -94.17667150569426 30.058602328308453, -94.17840083045797 30.076160457289905, -94.17667150569426 30.093718586271358, -94.17154998838399 30.110601966202765, -94.1632330955652 30.126161778261668, -94.15204044076476 30.139800067596695, -94.13840215142973 30.150992722397135, -94.12284233937083 30.15930961521592, -94.10595895943942 30.164431132526197, -94.08840083045797 30.166160457289905, -94.07084270147652 30.164431132526197, -94.05395932154511 30.15930961521592, -94.03839950948621 30.150992722397135, -94.02476122015118 30.139800067596695, -94.01356856535074 30.126161778261668, -94.00525167253195 30.110601966202765, -94.00013015522168 30.093718586271358, -93.99840083045797 30.076160457289905))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "Beaumont, TX", + "POLYGON ((-93.99840083045797 30.076160457289905, -94.00013015522168 30.058602328308453, -94.00525167253195 30.041718948377046, -94.01356856535074 30.026159136318142, -94.02476122015118 30.012520846983115, -94.03839950948621 30.001328192182676, -94.05395932154511 29.99301129936389, -94.07084270147652 29.987889782053614, -94.08840083045797 29.986160457289905, -94.10595895943942 29.987889782053614, -94.12284233937083 29.99301129936389, -94.13840215142973 30.001328192182676, -94.15204044076476 30.012520846983115, -94.1632330955652 30.026159136318142, -94.17154998838399 30.041718948377046, -94.17667150569426 30.058602328308453, -94.17840083045797 30.076160457289905, -94.17667150569426 30.093718586271358, -94.17154998838399 30.110601966202765, -94.1632330955652 30.126161778261668, -94.15204044076476 30.139800067596695, -94.13840215142973 30.150992722397135, -94.12284233937083 30.15930961521592, -94.10595895943942 30.164431132526197, -94.08840083045797 30.166160457289905, -94.07084270147652 30.164431132526197, -94.05395932154511 30.15930961521592, -94.03839950948621 30.150992722397135, -94.02476122015118 30.139800067596695, -94.01356856535074 30.126161778261668, -94.00525167253195 30.110601966202765, -94.00013015522168 30.093718586271358, -93.99840083045797 30.076160457289905))" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "one_metre = 0.00001 - 0.000001\n", + "buffer = 10 * 1000 * one_metre\n", + "\n", + "major_ports = (\n", + " spark.read.format(\"json\")\n", + " .option(\"multiline\", \"true\")\n", + " .load(f\"{ETL_DIR}/harbours.geojson\")\n", + " .select(\"type\", F.explode(col(\"features\")).alias(\"feature\"))\n", + " .select(\n", + " \"type\",\n", + " col(\"feature.properties\").alias(\"properties\"),\n", + " F.to_json(col(\"feature.geometry\")).alias(\"json_geometry\"),\n", + " )\n", + " .withColumn(\"geom\", mos.st_aswkt(mos.st_geomfromgeojson(\"json_geometry\")))\n", + " .select(col(\"properties.PORT_NAME\").alias(\"name\"), \"geom\")\n", + " .withColumn(\"geom\", mos.st_buffer(\"geom\", F.lit(buffer)))\n", + ")\n", + "major_ports.limit(1).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "93ae6db4-58d9-47d6-9ed7-5c2ddaa6d5f0", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "a2b7ed7a-35cf-43bd-a0bc-0160ee317802", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "408696c6-efc7-4810-8bf3-c9e6bbfcdde0", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# major_ports \"geom\" \"geometry\"" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "055a7491-8ffc-43fa-8675-d62720360d5b", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "(\n", + " major_ports.select(\"name\", mos.grid_tessellateexplode(\"geom\", F.lit(9)).alias(\"mos\"))\n", + " .select(\"name\", col(\"mos.index_id\").alias(\"h3\"))\n", + " .write.mode(\"overwrite\")\n", + " .format(\"delta\")\n", + " .saveAsTable(\"harbours_h3\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "56529998-ff0c-407c-b442-7cbeff0b6027", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
nameh3
Beaumont, TX618197022217338879
Beaumont, TX618196982298836991
Beaumont, TX618197022704664575
Beaumont, TX618196978558566399
Beaumont, TX618197022151540735
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "Beaumont, TX", + 618197022217338879 + ], + [ + "Beaumont, TX", + 618196982298836991 + ], + [ + "Beaumont, TX", + 618197022704664575 + ], + [ + "Beaumont, TX", + 618196978558566399 + ], + [ + "Beaumont, TX", + 618197022151540735 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "h3", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "harbours_h3 = spark.read.table(\"harbours_h3\")\n", + "display(harbours_h3.limit(5)) # <- limiting for ipynb only" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "f056ec35-3ada-4887-8916-306aa30f4ece", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "fa4abb30-81cb-4b9c-9938-0f8b1f38df45", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "cb71bd65-7f91-472e-98c7-f62f93d0cea6", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# \"harbours_h3\" \"h3\" \"h3\" 5_000" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 85549842168716, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "01. Data Prep", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/Ship2ShipTransfers/01. Data Prep.py b/notebooks/examples/python/Ship2ShipTransfers/01. Data Prep.py deleted file mode 100644 index a0378d68b..000000000 --- a/notebooks/examples/python/Ship2ShipTransfers/01. Data Prep.py +++ /dev/null @@ -1,141 +0,0 @@ -# Databricks notebook source -# MAGIC %md ## We First Prep the data and download it - -# COMMAND ---------- - -# MAGIC %pip install databricks_mosaic - -# COMMAND ---------- - -from pyspark.sql.functions import * -import mosaic as mos - -spark.conf.set("spark.databricks.labs.mosaic.geometry.api", "JTS") -spark.conf.set("spark.databricks.labs.mosaic.index.system", "H3") -mos.enable_mosaic(spark, dbutils) - -# COMMAND ---------- - -# MAGIC %md ##AIS Data - -# COMMAND ---------- - -dbutils.fs.mkdirs("/tmp/ship2ship") - -# COMMAND ---------- - -# MAGIC %sh -# MAGIC # see: https://coast.noaa.gov/htdata/CMSP/AISDataHandler/2018/index.html -# MAGIC # we download data to dbfs:// mountpoint (/dbfs) -# MAGIC mkdir /ship2ship/ -# MAGIC cd /ship2ship/ -# MAGIC wget -np -r -nH -L --cut-dirs=4 https://coast.noaa.gov/htdata/CMSP/AISDataHandler/2018/AIS_2018_01_31.zip > /dev/null 2>&1 -# MAGIC unzip AIS_2018_01_31.zip -# MAGIC mv AIS_2018_01_31.csv /dbfs/tmp/ship2ship/ - -# COMMAND ---------- - -schema = """ - MMSI int, - BaseDateTime timestamp, - LAT double, - LON double, - SOG double, - COG double, - Heading double, - VesselName string, - IMO string, - CallSign string, - VesselType int, - Status int, - Length int, - Width int, - Draft double, - Cargo int, - TranscieverClass string -""" - -AIS_df = ( - spark.read.csv("/tmp/ship2ship", header=True, schema=schema) - .filter("VesselType = 70") # Only select cargos - .filter("Status IS NOT NULL") -) -display(AIS_df) - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC CREATE DATABASE IF NOT EXISTS ship2ship - -# COMMAND ---------- - -(AIS_df.write.format("delta").mode("overwrite").saveAsTable("ship2ship.AIS")) - -# COMMAND ---------- - -# MAGIC %md ## Harbours -# MAGIC -# MAGIC This data can be obtained from [here](https://data-usdot.opendata.arcgis.com/datasets/usdot::ports-major/about), and loaded with the code below. -# MAGIC -# MAGIC To avoid detecting overlap close to, or within harbours, in Notebook `03.b Advanced Overlap Detection` we filter out events taking place close to a harbour. -# MAGIC Various approaches are possible, including filtering out events too close to shore, and can be implemented in a similar fashion. -# MAGIC -# MAGIC In this instance we set a buffer of `10 km` around harbours to arbitrarily define an area wherein we do not expect ship-to-ship transfers to take place. -# MAGIC Since our projection is not in metres, we convert from decimal degrees. With `(0.00001 - 0.000001)` as being equal to one metre at the equator -# MAGIC Ref: http://wiki.gis.com/wiki/index.php/Decimal_degrees - -# COMMAND ---------- - -# MAGIC %sh -# MAGIC # we download data to dbfs:// mountpoint (/dbfs) -# MAGIC cd /dbfs/tmp/ship2ship/ -# MAGIC # wget -np -r -nH -L -q --cut-dirs=7 -O harbours.geojson "https://geo.dot.gov/mapping/rest/services/NTAD/Ports_Major/MapServer/0/query?outFields=*&where=1%3D1&f=geojson" -# MAGIC wget -np -r -nH -L -q --cut-dirs=7 -O harbours.geojson "https://geo.dot.gov/mapping/rest/services/NTAD/Strategic_Ports/MapServer/0/query?outFields=*&where=1%3D1&f=geojson" - -# COMMAND ---------- - -one_metre = 0.00001 - 0.000001 -buffer = 10 * 1000 * one_metre - -major_ports = ( - spark.read.format("json") - .option("multiline", "true") - .load("/tmp/ship2ship/harbours.geojson") - .select("type", explode(col("features")).alias("feature")) - .select( - "type", - col("feature.properties").alias("properties"), - to_json(col("feature.geometry")).alias("json_geometry"), - ) - .withColumn("geom", mos.st_aswkt(mos.st_geomfromgeojson("json_geometry"))) - .select(col("properties.PORT_NAME").alias("name"), "geom") - .withColumn("geom", mos.st_buffer("geom", lit(buffer))) -) -display(major_ports) - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC major_ports "geom" "geometry" - -# COMMAND ---------- - -( - major_ports.select("name", mos.grid_tessellateexplode("geom", lit(9)).alias("mos")) - .select("name", col("mos.index_id").alias("h3")) - .write.mode("overwrite") - .format("delta") - .saveAsTable("ship2ship.harbours_h3") -) - -# COMMAND ---------- - -harbours_h3 = spark.read.table("ship2ship.harbours_h3") -display(harbours_h3) - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC "harbours_h3" "h3" "h3" 5_000 - -# COMMAND ---------- diff --git a/notebooks/examples/python/Ship2ShipTransfers/02. Data Ingestion.ipynb b/notebooks/examples/python/Ship2ShipTransfers/02. Data Ingestion.ipynb new file mode 100644 index 000000000..ae2b9610d --- /dev/null +++ b/notebooks/examples/python/Ship2ShipTransfers/02. Data Ingestion.ipynb @@ -0,0 +1,1126 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ab3d9623-51a7-494f-9e5d-125e641ff600", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup\n", + "\n", + "---\n", + "__Last Updated:__ 27 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "62903103-9e6d-408a-ae71-9fa0bd3c5b2b", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet # <- Mosaic 0.3 series\n", + "# %pip install \"databricks-mosaic<0.5,>=0.4\" --quiet # <- Mosaic 0.4 series (as available)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a304a53f-6d97-4f18-a80d-35c372c32c7c", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "spark.conf.set(\"spark.sql.shuffle.partitions\", 1_024) # <-- default is 200\n", + "\n", + "# -- import databricks + spark functions\n", + "from pyspark.databricks.sql import functions as dbf\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import col, udf\n", + "from pyspark.sql.types import *\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "# mos.enable_gdal(spark) # <- not needed for this example\n", + "\n", + "# --other imports\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c4acd803-e44f-4f00-9611-2c8032818306", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Configure Database__\n", + "\n", + "> Adjust this to settings from the Data Prep notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "9298ec9a-0383-4bb5-95f3-046774a2e0e5", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[2]: DataFrame[]" + ] + } + ], + "source": [ + "catalog_name = \"mjohns\"\n", + "db_name = \"ship2ship\"\n", + "\n", + "sql(f\"use catalog {catalog_name}\")\n", + "sql(f\"use schema {db_name}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "84daf849-2e8c-468f-bf27-008e0f7408ac", + "showTitle": false, + "title": "" + } + }, + "source": [ + "\n", + "We begin with loading from a table. Here we use captured `AIS` data.\n", + "\n", + "

\n", + "\n", + "- `MMSI`: unique 9-digit identification code of the ship - numeric\n", + "- `VesselName`: name of the ship - string\n", + "- `CallSign`: unique callsign of the ship - string\n", + "- `BaseDateTime`: timestamp of the AIS message - datetime\n", + "- `LAT`: latitude of the ship (in degree: [-90 ; 90], negative value represents South, 91 indicates ‘not available’) - numeric\n", + "- `LON`: longitude of the ship (in degree: [-180 ; 180], negative value represents West, 181 indicates ‘not available’) - numeric\n", + "- `SOG`: speed over ground, in knots - numeric\n", + "- `Status`: status of the ship - string" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c7ad164b-8168-4de2-a03c-dd2b3c8b9b62", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "

MMSIBaseDateTimeLATLONSOGCOGHeadingVesselNameIMOCallSignVesselTypeStatusLengthWidthDraftCargoTranscieverClass
2283429002018-01-31T21:38:42.000+000033.57885-121.5771715.090.487.0CMA CGM MEDEAIMO9299800FMFR7003494215.0nullA
3054620002018-01-31T00:04:12.000+000045.49781-73.5460.0197.2184.0BBC OREGONIMO9501265V2EK7705138217.5nullA
3054620002018-01-31T00:01:17.000+000045.49782-73.545980.0197.2184.0BBC OREGONIMO9501265V2EK7705138217.5nullA
3054620002018-01-31T00:10:15.000+000045.49784-73.546070.0197.2184.0BBC OREGONIMO9501265V2EK7705138217.5nullA
3054620002018-01-31T00:07:19.000+000045.49781-73.546040.0197.2184.0BBC OREGONIMO9501265V2EK7705138217.5nullA
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 228342900, + "2018-01-31T21:38:42.000+0000", + 33.57885, + -121.57717, + 15.0, + 90.4, + 87.0, + "CMA CGM MEDEA", + "IMO9299800", + "FMFR", + 70, + 0, + 349, + 42, + 15.0, + null, + "A" + ], + [ + 305462000, + "2018-01-31T00:04:12.000+0000", + 45.49781, + -73.546, + 0.0, + 197.2, + 184.0, + "BBC OREGON", + "IMO9501265", + "V2EK7", + 70, + 5, + 138, + 21, + 7.5, + null, + "A" + ], + [ + 305462000, + "2018-01-31T00:01:17.000+0000", + 45.49782, + -73.54598, + 0.0, + 197.2, + 184.0, + "BBC OREGON", + "IMO9501265", + "V2EK7", + 70, + 5, + 138, + 21, + 7.5, + null, + "A" + ], + [ + 305462000, + "2018-01-31T00:10:15.000+0000", + 45.49784, + -73.54607, + 0.0, + 197.2, + 184.0, + "BBC OREGON", + "IMO9501265", + "V2EK7", + 70, + 5, + 138, + 21, + 7.5, + null, + "A" + ], + [ + 305462000, + "2018-01-31T00:07:19.000+0000", + 45.49781, + -73.54604, + 0.0, + 197.2, + 184.0, + "BBC OREGON", + "IMO9501265", + "V2EK7", + 70, + 5, + 138, + 21, + 7.5, + null, + "A" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "MMSI", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "BaseDateTime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "LAT", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "LON", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "SOG", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "COG", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Heading", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "VesselName", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "IMO", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "CallSign", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "VesselType", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Status", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Length", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Width", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Draft", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Cargo", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "TranscieverClass", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "cargos = spark.read.table(\"AIS\")\n", + "display(cargos.limit(5)) # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "40a1ac33-8f26-42de-b9e2-4e462e349168", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## AIS Data Indexing\n", + "\n", + "> To facilitate downstream analytics it is also possible to create a quick point index leveraging a chosen H3 resolution.\n", + "In this case, resolution `9` has an edge length of ~174 metres." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "261912e6-6d06-49e5-a86c-fcc9135ffcec", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
MMSIBaseDateTimeLATLONSOGCOGHeadingVesselNameIMOCallSignVesselTypeStatusLengthWidthDraftCargoTranscieverClasspoint_geomixsog_kmph
3530960002018-01-31T01:02:43.000+000036.80157-76.289430.0191.075.0SUNNY HOPEIMO94821343EVB97051963212.770AList(1, 0, List(List(List(-76.28943, 36.80157))), List(List()))6177489347739647990.0
3530960002018-01-31T00:41:44.000+000036.80157-76.289480.0191.075.0SUNNY HOPEIMO94821343EVB97051963212.770AList(1, 0, List(List(List(-76.28948, 36.80157))), List(List()))6177489347739647990.0
3530960002018-01-31T00:47:45.000+000036.80155-76.289420.0191.075.0SUNNY HOPEIMO94821343EVB97051963212.770AList(1, 0, List(List(List(-76.28942, 36.80155))), List(List()))6177489347739647990.0
3530960002018-01-31T00:44:45.000+000036.80155-76.289430.0191.075.0SUNNY HOPEIMO94821343EVB97051963212.770AList(1, 0, List(List(List(-76.28943, 36.80155))), List(List()))6177489347739647990.0
3530960002018-01-31T00:38:43.000+000036.80157-76.289470.0191.074.0SUNNY HOPEIMO94821343EVB97051963212.770AList(1, 0, List(List(List(-76.28947, 36.80157))), List(List()))6177489347739647990.0
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 353096000, + "2018-01-31T01:02:43.000+0000", + 36.80157, + -76.28943, + 0.0, + 191.0, + 75.0, + "SUNNY HOPE", + "IMO9482134", + "3EVB9", + 70, + 5, + 196, + 32, + 12.7, + 70, + "A", + [ + 1, + 0, + [ + [ + [ + -76.28943, + 36.80157 + ] + ] + ], + [ + [] + ] + ], + 617748934773964799, + 0.0 + ], + [ + 353096000, + "2018-01-31T00:41:44.000+0000", + 36.80157, + -76.28948, + 0.0, + 191.0, + 75.0, + "SUNNY HOPE", + "IMO9482134", + "3EVB9", + 70, + 5, + 196, + 32, + 12.7, + 70, + "A", + [ + 1, + 0, + [ + [ + [ + -76.28948, + 36.80157 + ] + ] + ], + [ + [] + ] + ], + 617748934773964799, + 0.0 + ], + [ + 353096000, + "2018-01-31T00:47:45.000+0000", + 36.80155, + -76.28942, + 0.0, + 191.0, + 75.0, + "SUNNY HOPE", + "IMO9482134", + "3EVB9", + 70, + 5, + 196, + 32, + 12.7, + 70, + "A", + [ + 1, + 0, + [ + [ + [ + -76.28942, + 36.80155 + ] + ] + ], + [ + [] + ] + ], + 617748934773964799, + 0.0 + ], + [ + 353096000, + "2018-01-31T00:44:45.000+0000", + 36.80155, + -76.28943, + 0.0, + 191.0, + 75.0, + "SUNNY HOPE", + "IMO9482134", + "3EVB9", + 70, + 5, + 196, + 32, + 12.7, + 70, + "A", + [ + 1, + 0, + [ + [ + [ + -76.28943, + 36.80155 + ] + ] + ], + [ + [] + ] + ], + 617748934773964799, + 0.0 + ], + [ + 353096000, + "2018-01-31T00:38:43.000+0000", + 36.80157, + -76.28947, + 0.0, + 191.0, + 74.0, + "SUNNY HOPE", + "IMO9482134", + "3EVB9", + 70, + 5, + 196, + 32, + 12.7, + 70, + "A", + [ + 1, + 0, + [ + [ + [ + -76.28947, + 36.80157 + ] + ] + ], + [ + [] + ] + ], + 617748934773964799, + 0.0 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "MMSI", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "BaseDateTime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "LAT", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "LON", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "SOG", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "COG", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Heading", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "VesselName", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "IMO", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "CallSign", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "VesselType", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Status", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Length", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Width", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Draft", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Cargo", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "TranscieverClass", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "point_geom", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"type_id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"srid\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"boundary\",\"type\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"nullable\":true,\"metadata\":{}},{\"name\":\"holes\",\"type\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "ix", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "sog_kmph", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "cargos_indexed = (\n", + " cargos.withColumn(\"point_geom\", mos.st_point(\"LON\", \"LAT\"))\n", + " .withColumn(\"ix\", mos.grid_pointascellid(\"point_geom\", resolution=F.lit(9)))\n", + " .withColumn(\"sog_kmph\", F.round(col(\"sog\") * 1.852, 2))\n", + ")\n", + "display(cargos_indexed.limit(5)) # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d2bc9c28-4db9-405b-b8a6-a6916204ccc0", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_We will write the treated output to a new table._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a05f901e-e3d6-4855-854e-fa6ea6492f9a", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "(\n", + " cargos_indexed.withColumn(\"point_geom\", mos.st_aswkb(\"point_geom\"))\n", + " .write.mode(\"overwrite\")\n", + " .saveAsTable(\"cargos_indexed\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "006d4a9d-473b-4477-89b9-c4906209f8f3", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_We will optimise our table to colocate data and make querying faster._\n", + "\n", + "> This is showing [ZORDER](https://docs.databricks.com/en/delta/data-skipping.html); for newer runtimes (DBR 13.3 LTS+), can also consider [Liquid Clustering](https://docs.databricks.com/en/delta/clustering.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "136231e0-d292-482a-947d-6765f18e9459", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
pathmetrics
s3://databricks-e2demofieldengwest/b169b504-4c54-49f2-bc3a-adf4b128f36d/tables/935ef93c-fdc0-4db3-b1ba-bf9f32bc26faList(4, 4, List(3318525, 5963269, 4417031.0, 4, 17668124), List(1602001, 7746854, 4757181.75, 4, 19028727), 0, List(minCubeSize(107374182400), List(0, 0), List(4, 19028727), 0, List(4, 19028727), 1, null), 1, 4, 0, false, 0, 0, 1701117514920, 1701117559879, 4, 1, null, List(0, 0), 20, 20, 8027)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "s3://databricks-e2demofieldengwest/b169b504-4c54-49f2-bc3a-adf4b128f36d/tables/935ef93c-fdc0-4db3-b1ba-bf9f32bc26fa", + [ + 4, + 4, + [ + 3318525, + 5963269, + 4417031.0, + 4, + 17668124 + ], + [ + 1602001, + 7746854, + 4757181.75, + 4, + 19028727 + ], + 0, + [ + "minCubeSize(107374182400)", + [ + 0, + 0 + ], + [ + 4, + 19028727 + ], + 0, + [ + 4, + 19028727 + ], + 1, + null + ], + 1, + 4, + 0, + false, + 0, + 0, + 1701117514920, + 1701117559879, + 4, + 1, + null, + [ + 0, + 0 + ], + 20, + 20, + 8027 + ] + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "path", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "metrics", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"numFilesAdded\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"numFilesRemoved\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"filesAdded\",\"type\":{\"type\":\"struct\",\"fields\":[{\"name\":\"min\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"max\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"avg\",\"type\":\"double\",\"nullable\":false,\"metadata\":{}},{\"name\":\"totalFiles\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"totalSize\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}}]},\"nullable\":true,\"metadata\":{}},{\"name\":\"filesRemoved\",\"type\":{\"type\":\"struct\",\"fields\":[{\"name\":\"min\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"max\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"avg\",\"type\":\"double\",\"nullable\":false,\"metadata\":{}},{\"name\":\"totalFiles\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"totalSize\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}}]},\"nullable\":true,\"metadata\":{}},{\"name\":\"partitionsOptimized\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"zOrderStats\",\"type\":{\"type\":\"struct\",\"fields\":[{\"name\":\"strategyName\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"inputCubeFiles\",\"type\":{\"type\":\"struct\",\"fields\":[{\"name\":\"num\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"size\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}}]},\"nullable\":true,\"metadata\":{}},{\"name\":\"inputOtherFiles\",\"type\":{\"type\":\"struct\",\"fields\":[{\"name\":\"num\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"size\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}}]},\"nullable\":true,\"metadata\":{}},{\"name\":\"inputNumCubes\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"mergedFiles\",\"type\":{\"type\":\"struct\",\"fields\":[{\"name\":\"num\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"size\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}}]},\"nullable\":true,\"metadata\":{}},{\"name\":\"numOutputCubes\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"mergedNumCubes\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}}]},\"nullable\":true,\"metadata\":{}},{\"name\":\"numBatches\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"totalConsideredFiles\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"totalFilesSkipped\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"preserveInsertionOrder\",\"type\":\"boolean\",\"nullable\":false,\"metadata\":{}},{\"name\":\"numFilesSkippedToReduceWriteAmplification\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"numBytesSkippedToReduceWriteAmplification\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"startTimeMs\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"endTimeMs\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"totalClusterParallelism\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"totalScheduledTasks\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"autoCompactParallelismStats\",\"type\":{\"type\":\"struct\",\"fields\":[{\"name\":\"maxClusterActiveParallelism\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"minClusterActiveParallelism\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"maxSessionActiveParallelism\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"minSessionActiveParallelism\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}}]},\"nullable\":true,\"metadata\":{}},{\"name\":\"deletionVectorStats\",\"type\":{\"type\":\"struct\",\"fields\":[{\"name\":\"numDeletionVectorsRemoved\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"numDeletionVectorRowsRemoved\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}}]},\"nullable\":true,\"metadata\":{}},{\"name\":\"numTableColumns\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"numTableColumnsWithStats\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}},{\"name\":\"totalTaskExecutionTimeMs\",\"type\":\"long\",\"nullable\":false,\"metadata\":{}}]}" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql OPTIMIZE ship2ship.cargos_indexed ZORDER by (ix, BaseDateTime)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "b6702ef5-b1cc-4611-8b2c-b8cc3d302f57", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Visualisation\n", + "And we can perform a quick visual inspection of the indexed AIS data." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "30322c23-052a-4ac2-b140-fa1e117e31ea", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "b59dd42d-7a9e-4005-b0c2-57350fff2ee4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4e642c82-4421-45bb-8ca9-9ac27a66d7f5", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# ship2ship.cargos_indexed \"ix\" \"h3\" 10_000" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 85549842153077, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "02. Data Ingestion", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/Ship2ShipTransfers/02. Data Ingestion.py b/notebooks/examples/python/Ship2ShipTransfers/02. Data Ingestion.py deleted file mode 100644 index 5f4f3aff7..000000000 --- a/notebooks/examples/python/Ship2ShipTransfers/02. Data Ingestion.py +++ /dev/null @@ -1,83 +0,0 @@ -# Databricks notebook source -# MAGIC %md ## Data Ingestion - -# COMMAND ---------- - -# MAGIC %pip install databricks_mosaic - -# COMMAND ---------- - - -from pyspark.sql.functions import * -import mosaic as mos - -spark.conf.set("spark.databricks.labs.mosaic.geometry.api", "JTS") -spark.conf.set("spark.databricks.labs.mosaic.index.system", "H3") -mos.enable_mosaic(spark, dbutils) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC -# MAGIC We begin with loading from a table. Here we use captured `AIS` data. -# MAGIC -# MAGIC - MMSI: unique 9-digit identification code of the ship - numeric -# MAGIC - VesselName: name of the ship - string -# MAGIC - CallSign: unique callsign of the ship - string -# MAGIC - BaseDateTime: timestamp of the AIS message - datetime -# MAGIC - LAT: latitude of the ship (in degree: [-90 ; 90], negative value represents South, 91 indicates ‘not available’) - numeric -# MAGIC - LON: longitude of the ship (in degree: [-180 ; 180], negative value represents West, 181 indicates ‘not available’) - numeric -# MAGIC - SOG: speed over ground, in knots - numeric -# MAGIC - Status: status of the ship - string - -# COMMAND ---------- - -cargos = spark.read.table("ship2ship.AIS") -display(cargos) - -# COMMAND ---------- - -# MAGIC %md ## Data Transformation - -# COMMAND ---------- - -# MAGIC %md ### Indexing -# MAGIC To facilitate downstream analytics it is also possible to create a quick point index leveraging a chosen H3 resolution. -# MAGIC In this case, resolution `9` has an edge length of ~174 metres. - -# COMMAND ---------- - -cargos_indexed = ( - cargos.withColumn("point_geom", mos.st_point("LON", "LAT")) - .withColumn("ix", mos.grid_pointascellid("point_geom", resolution=lit(9))) - .withColumn("sog_kmph", round(col("sog") * 1.852, 2)) -) -display(cargos_indexed) - -# COMMAND ---------- - -# MAGIC %md ## Exporting -# MAGIC and we can write the treated output to a new table. - -# COMMAND ---------- - -( - cargos_indexed.withColumn("point_geom", mos.st_aswkb("point_geom")) - .write.mode("overwrite") - .saveAsTable("ship2ship.cargos_indexed") -) - -# COMMAND ---------- - -# DBTITLE 1,We can optimise our table to colocate data and make querying faster -# MAGIC %sql OPTIMIZE ship2ship.cargos_indexed ZORDER by (ix, BaseDateTime) - -# COMMAND ---------- - -# MAGIC %md ## Visualisation -# MAGIC And we can perform a quick visual inspection of the data. - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC ship2ship.cargos_indexed "ix" "h3" 10_000 diff --git a/notebooks/examples/python/Ship2ShipTransfers/03.a Overlap Detection.ipynb b/notebooks/examples/python/Ship2ShipTransfers/03.a Overlap Detection.ipynb new file mode 100644 index 000000000..6c5b8625b --- /dev/null +++ b/notebooks/examples/python/Ship2ShipTransfers/03.a Overlap Detection.ipynb @@ -0,0 +1,1365 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3e261c46-d2ae-4747-87cf-31876281d0ad", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Overlap Detection\n", + "\n", + "> We now try to detect potentially overlapping pings using a buffer on a particular day.\n", + "\n", + "---\n", + "__Last Updated:__ 27 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "5c50bfa2-9a7f-4ab5-9419-7c7bc7134d66", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c382f650-dc2d-434c-8be6-72076126febc", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet # <- Mosaic 0.3 series\n", + "# %pip install \"databricks-mosaic<0.5,>=0.4\" --quiet # <- Mosaic 0.4 series (as available)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "bdba63fe-887d-4c3a-aee7-90968ac14bc0", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "spark.conf.set(\"spark.sql.shuffle.partitions\", 1_024) # <-- default is 200\n", + "\n", + "# -- import databricks + spark functions\n", + "from pyspark.databricks.sql import functions as dbf\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import col, udf\n", + "from pyspark.sql.types import *\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "# mos.enable_gdal(spark) # <- not needed for this example\n", + "\n", + "# --other imports\n", + "import os\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "434a34b8-1a0b-4e96-985d-2c2855b470b5", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Configure Database__\n", + "\n", + "> Adjust this to settings from the Data Prep notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c743a069-0cb1-485a-bee3-30851e314b33", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[2]: DataFrame[]" + ] + } + ], + "source": [ + "catalog_name = \"mjohns\"\n", + "db_name = \"ship2ship\"\n", + "\n", + "sql(f\"use catalog {catalog_name}\")\n", + "sql(f\"use schema {db_name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "37f91db0-c7b5-4d55-954b-9880918dedde", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 521,430\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
MMSIBaseDateTimeLATLONSOGCOGHeadingVesselNameIMOCallSignVesselTypeStatusLengthWidthDraftCargoTranscieverClasspoint_geomixsog_kmph
3693270002018-01-31T18:14:57.000+000039.24078-76.534780.087.0324.0FREEDOMIMO9129706WDB54837051903210.270AAAAAAAHAUyI51eSjg0BDntHhCMP06177436188506849270.0
3693270002018-01-31T17:59:56.000+000039.24078-76.534770.052.0324.0FREEDOMIMO9129706WDB54837051903210.270AAAAAAAHAUyI5q/M4cUBDntHhCMP06177436188506849270.0
3693270002018-01-31T17:56:56.000+000039.24078-76.534780.075.0324.0FREEDOMIMO9129706WDB54837051903210.270AAAAAAAHAUyI51eSjg0BDntHhCMP06177436188506849270.0
3693270002018-01-31T17:53:56.000+000039.24078-76.534770.05.0324.0FREEDOMIMO9129706WDB54837051903210.270AAAAAAAHAUyI5q/M4cUBDntHhCMP06177436188506849270.0
3693270002018-01-31T17:50:56.000+000039.24078-76.534780.080.0324.0FREEDOMIMO9129706WDB54837051903210.270AAAAAAAHAUyI51eSjg0BDntHhCMP06177436188506849270.0
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 369327000, + "2018-01-31T18:14:57.000+0000", + 39.24078, + -76.53478, + 0.0, + 87.0, + 324.0, + "FREEDOM", + "IMO9129706", + "WDB5483", + 70, + 5, + 190, + 32, + 10.2, + 70, + "A", + "AAAAAAHAUyI51eSjg0BDntHhCMP0", + 617743618850684927, + 0.0 + ], + [ + 369327000, + "2018-01-31T17:59:56.000+0000", + 39.24078, + -76.53477, + 0.0, + 52.0, + 324.0, + "FREEDOM", + "IMO9129706", + "WDB5483", + 70, + 5, + 190, + 32, + 10.2, + 70, + "A", + "AAAAAAHAUyI5q/M4cUBDntHhCMP0", + 617743618850684927, + 0.0 + ], + [ + 369327000, + "2018-01-31T17:56:56.000+0000", + 39.24078, + -76.53478, + 0.0, + 75.0, + 324.0, + "FREEDOM", + "IMO9129706", + "WDB5483", + 70, + 5, + 190, + 32, + 10.2, + 70, + "A", + "AAAAAAHAUyI51eSjg0BDntHhCMP0", + 617743618850684927, + 0.0 + ], + [ + 369327000, + "2018-01-31T17:53:56.000+0000", + 39.24078, + -76.53477, + 0.0, + 5.0, + 324.0, + "FREEDOM", + "IMO9129706", + "WDB5483", + 70, + 5, + 190, + 32, + 10.2, + 70, + "A", + "AAAAAAHAUyI5q/M4cUBDntHhCMP0", + 617743618850684927, + 0.0 + ], + [ + 369327000, + "2018-01-31T17:50:56.000+0000", + 39.24078, + -76.53478, + 0.0, + 80.0, + 324.0, + "FREEDOM", + "IMO9129706", + "WDB5483", + 70, + 5, + 190, + 32, + 10.2, + 70, + "A", + "AAAAAAHAUyI51eSjg0BDntHhCMP0", + 617743618850684927, + 0.0 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "MMSI", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "BaseDateTime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "LAT", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "LON", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "SOG", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "COG", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Heading", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "VesselName", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "IMO", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "CallSign", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "VesselType", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Status", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Length", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Width", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Draft", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Cargo", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "TranscieverClass", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "point_geom", + "type": "\"binary\"" + }, + { + "metadata": "{}", + "name": "ix", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "sog_kmph", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "cargos_indexed = spark.read.table(\"cargos_indexed\").filter(\n", + " col(\"BaseDateTime\").between(\n", + " \"2018-01-31T00:00:00.000+0000\", \"2018-01-31T23:59:00.000+0000\"\n", + " )\n", + ")\n", + "print(f\"count? {cargos_indexed.count():,}\")\n", + "cargos_indexed.limit(5).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "de54e366-47e8-4ce9-984a-df4dfba430a8", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Buffering\n", + "\n", + "

\n", + "\n", + "1. Convert the point into a polygon by buffering it with a certain area to turn this into a circle.\n", + "2. Index the polygon to leverage more performant querying.\n", + "\n", + "> Since our projection is not in metres, we convert from decimal degrees, with `(0.00001 - 0.000001)` as being equal to one metre at the equator. Here we choose an buffer of roughly 100 metres, ref http://wiki.gis.com/wiki/index.php/Decimal_degrees." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "3eed8a55-d1fa-4b87-ab3d-0196918813df", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "one_metre = 0.00001 - 0.000001\n", + "buffer = 100 * one_metre\n", + "\n", + "(\n", + " cargos_indexed\n", + " .repartition(sc.defaultParallelism * 20) # <- repartition is important!\n", + " .withColumn(\"buffer_geom\", mos.st_buffer(\"point_geom\", F.lit(buffer)))\n", + " .withColumn(\"ix\", mos.grid_tessellateexplode(\"buffer_geom\", F.lit(9)))\n", + " .write.mode(\"overwrite\")\n", + " .saveAsTable(\"cargos_buffered\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "f2fc92da-66c3-4260-b119-e6212d11b567", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_We will optimise our table to colocate data and make querying faster._\n", + "\n", + "> This is showing [ZORDER](https://docs.databricks.com/en/delta/data-skipping.html); for newer runtimes (DBR 13.3 LTS+), can also consider [Liquid Clustering](https://docs.databricks.com/en/delta/clustering.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a61ad409-af82-4909-a6c1-fc94e4209a9b", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "

MMSIBaseDateTimeLATLONSOGCOGHeadingVesselNameIMOCallSignVesselTypeStatusLengthWidthDraftCargoTranscieverClasspoint_geomixsog_kmphbuffer_geom
6360924002018-01-31T10:17:31.000+000033.72458-118.275910.0265.7341.0POLARLIGHTIMO9189873D5BR7705153249.1nullAAAAAAAHAXZGogmqo60BA3L8Jlar4List(false, 617725793643266047, AAAAAAMAAAABAAAACMBdkZnDiwSrQEDcvwmVqvjAXZGaDBOAYkBA3LlIs7gVwF2RmuLjX/hAQNyzwGvlVMBdkZv8QQc2QEDcr6Of48PAXZGfITb9gEBA3LhCQSN4wF2Rmlhq32pAQNzGwctWl8BdkZoME4BiQEDcxMp3ndvAXZE= (truncated))0.0AAAAAAMAAAABAAAAIcBdkZnDiwSrQEDcvwmVqvjAXZGaDBOAYkBA3LlIs7gVwF2RmuLjX/hAQNyzwGvlVMBdkZw/uVTfQEDcrqcreejAXZGeFS2MH0BA3KovG3FfwF2RoFE1kGNAQNymhDMC4cBdkaLd1cYZQEDco8qHGRLAXZE= (truncated)
6360924002018-01-31T10:17:31.000+000033.72458-118.275910.0265.7341.0POLARLIGHTIMO9189873D5BR7705153249.1nullAAAAAAAHAXZGogmqo60BA3L8Jlar4List(false, 617725793603158015, AAAAAAMAAAABAAAAEMBdkZv8QQc2QEDcr6Of48PAXZGcP7lU30BA3K6nK3nowF2RnhUtjB9AQNyqLxtxX8BdkaBRNZBjQEDcpoQzAuHAXZGi3dXGGUBA3KPKhxkSwF2RpaH5r3pAQNyiHOdZ5sBdkaiCaqjrQEDcoYvWYnjAXZE= (truncated))0.0AAAAAAMAAAABAAAAIcBdkZnDiwSrQEDcvwmVqvjAXZGaDBOAYkBA3LlIs7gVwF2RmuLjX/hAQNyzwGvlVMBdkZw/uVTfQEDcrqcreejAXZGeFS2MH0BA3KovG3FfwF2RoFE1kGNAQNymhDMC4cBdkaLd1cYZQEDco8qHGRLAXZE= (truncated)
6360924002018-01-31T10:17:31.000+000033.72458-118.275910.0265.7341.0POLARLIGHTIMO9189873D5BR7705153249.1nullAAAAAAAHAXZGogmqo60BA3L8Jlar4List(false, 617725793643528191, AAAAAAMAAAABAAAAFMBdkbaTxKM9QEDctq7esKjAXZG2+MHRdEBA3LlIs7gVwF2Rt0FKTStAQNy/CZWq+MBdkbb4wdF0QEDcxMp3ndvAXZG2IfHx3kBA3MpSv3CcwF2RtMUb/PdAQNzPa//cCMBdkbLvp8W3QEDc0+QP5JHAXZE= (truncated))0.0AAAAAAMAAAABAAAAIcBdkZnDiwSrQEDcvwmVqvjAXZGaDBOAYkBA3LlIs7gVwF2RmuLjX/hAQNyzwGvlVMBdkZw/uVTfQEDcrqcreejAXZGeFS2MH0BA3KovG3FfwF2RoFE1kGNAQNymhDMC4cBdkaLd1cYZQEDco8qHGRLAXZE= (truncated)
6360175192018-01-31T08:41:24.000+000039.93302-75.132630.072.46.0PORT ORIENTIMO9735103D5LI8705199nullnullnullAAAAAAAHAUsh9Aood/EBD920zCUHIList(false, 617733347188670463, AAAAAAMAAAABAAAACsBSyG+bOfK0QEP3YReHt3bAUshwv9jJ8EBD91zQnxC4wFLIcpVNATBAQ/dYWI8IL8BSyHTRVQV0QEP3VK2mmbHAUsh3XfU7KkBD91Hz+q/iwFLIeiIZJItAQ/dQRlrwtsBSyH0Cih38QEP3T7VJ+UjAUsg= (truncated))0.0AAAAAAMAAAABAAAAIcBSyG5Dqnm8QEP3bTMJQcjAUshujDL1c0BD92dyJ07lwFLIb2MC1QlAQ/dh6d98JMBSyHC/2MnwQEP3XNCfELjAUshylU0BMEBD91hYjwgvwFLIdNFVBXRAQ/dUraaZscBSyHdd9TsqQEP3UfP6r+LAUsg= (truncated)
6360175192018-01-31T08:41:24.000+000039.93302-75.132630.072.46.0PORT ORIENTIMO9735103D5LI8705199nullnullnullAAAAAAAHAUsh9Aood/EBD920zCUHIList(false, 617733347188408319, AAAAAAMAAAABAAAAGsBSyG5Dqnm8QEP3bTMJQcjAUshujDL1c0BD92dyJ07lwFLIb2MC1QlAQ/dh6d98JMBSyG+bOfK0QEP3YReHt3bAUsh+baoyv0BD91NVSkmVwFLIiGG9eiVAQ/dapji51cBSyIlFO3IIQEP3XNCfELjAUsg= (truncated))0.0AAAAAAMAAAABAAAAIcBSyG5Dqnm8QEP3bTMJQcjAUshujDL1c0BD92dyJ07lwFLIb2MC1QlAQ/dh6d98JMBSyHC/2MnwQEP3XNCfELjAUshylU0BMEBD91hYjwgvwFLIdNFVBXRAQ/dUraaZscBSyHdd9TsqQEP3UfP6r+LAUsg= (truncated)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 636092400, + "2018-01-31T10:17:31.000+0000", + 33.72458, + -118.27591, + 0.0, + 265.7, + 341.0, + "POLARLIGHT", + "IMO9189873", + "D5BR7", + 70, + 5, + 153, + 24, + 9.1, + null, + "A", + "AAAAAAHAXZGogmqo60BA3L8Jlar4", + [ + false, + 617725793643266047, + "AAAAAAMAAAABAAAACMBdkZnDiwSrQEDcvwmVqvjAXZGaDBOAYkBA3LlIs7gVwF2RmuLjX/hAQNyzwGvlVMBdkZv8QQc2QEDcr6Of48PAXZGfITb9gEBA3LhCQSN4wF2Rmlhq32pAQNzGwctWl8BdkZoME4BiQEDcxMp3ndvAXZE= (truncated)" + ], + 0.0, + "AAAAAAMAAAABAAAAIcBdkZnDiwSrQEDcvwmVqvjAXZGaDBOAYkBA3LlIs7gVwF2RmuLjX/hAQNyzwGvlVMBdkZw/uVTfQEDcrqcreejAXZGeFS2MH0BA3KovG3FfwF2RoFE1kGNAQNymhDMC4cBdkaLd1cYZQEDco8qHGRLAXZE= (truncated)" + ], + [ + 636092400, + "2018-01-31T10:17:31.000+0000", + 33.72458, + -118.27591, + 0.0, + 265.7, + 341.0, + "POLARLIGHT", + "IMO9189873", + "D5BR7", + 70, + 5, + 153, + 24, + 9.1, + null, + "A", + "AAAAAAHAXZGogmqo60BA3L8Jlar4", + [ + false, + 617725793603158015, + "AAAAAAMAAAABAAAAEMBdkZv8QQc2QEDcr6Of48PAXZGcP7lU30BA3K6nK3nowF2RnhUtjB9AQNyqLxtxX8BdkaBRNZBjQEDcpoQzAuHAXZGi3dXGGUBA3KPKhxkSwF2RpaH5r3pAQNyiHOdZ5sBdkaiCaqjrQEDcoYvWYnjAXZE= (truncated)" + ], + 0.0, + "AAAAAAMAAAABAAAAIcBdkZnDiwSrQEDcvwmVqvjAXZGaDBOAYkBA3LlIs7gVwF2RmuLjX/hAQNyzwGvlVMBdkZw/uVTfQEDcrqcreejAXZGeFS2MH0BA3KovG3FfwF2RoFE1kGNAQNymhDMC4cBdkaLd1cYZQEDco8qHGRLAXZE= (truncated)" + ], + [ + 636092400, + "2018-01-31T10:17:31.000+0000", + 33.72458, + -118.27591, + 0.0, + 265.7, + 341.0, + "POLARLIGHT", + "IMO9189873", + "D5BR7", + 70, + 5, + 153, + 24, + 9.1, + null, + "A", + "AAAAAAHAXZGogmqo60BA3L8Jlar4", + [ + false, + 617725793643528191, + "AAAAAAMAAAABAAAAFMBdkbaTxKM9QEDctq7esKjAXZG2+MHRdEBA3LlIs7gVwF2Rt0FKTStAQNy/CZWq+MBdkbb4wdF0QEDcxMp3ndvAXZG2IfHx3kBA3MpSv3CcwF2RtMUb/PdAQNzPa//cCMBdkbLvp8W3QEDc0+QP5JHAXZE= (truncated)" + ], + 0.0, + "AAAAAAMAAAABAAAAIcBdkZnDiwSrQEDcvwmVqvjAXZGaDBOAYkBA3LlIs7gVwF2RmuLjX/hAQNyzwGvlVMBdkZw/uVTfQEDcrqcreejAXZGeFS2MH0BA3KovG3FfwF2RoFE1kGNAQNymhDMC4cBdkaLd1cYZQEDco8qHGRLAXZE= (truncated)" + ], + [ + 636017519, + "2018-01-31T08:41:24.000+0000", + 39.93302, + -75.13263, + 0.0, + 72.4, + 6.0, + "PORT ORIENT", + "IMO9735103", + "D5LI8", + 70, + 5, + 199, + null, + null, + null, + "A", + "AAAAAAHAUsh9Aood/EBD920zCUHI", + [ + false, + 617733347188670463, + "AAAAAAMAAAABAAAACsBSyG+bOfK0QEP3YReHt3bAUshwv9jJ8EBD91zQnxC4wFLIcpVNATBAQ/dYWI8IL8BSyHTRVQV0QEP3VK2mmbHAUsh3XfU7KkBD91Hz+q/iwFLIeiIZJItAQ/dQRlrwtsBSyH0Cih38QEP3T7VJ+UjAUsg= (truncated)" + ], + 0.0, + "AAAAAAMAAAABAAAAIcBSyG5Dqnm8QEP3bTMJQcjAUshujDL1c0BD92dyJ07lwFLIb2MC1QlAQ/dh6d98JMBSyHC/2MnwQEP3XNCfELjAUshylU0BMEBD91hYjwgvwFLIdNFVBXRAQ/dUraaZscBSyHdd9TsqQEP3UfP6r+LAUsg= (truncated)" + ], + [ + 636017519, + "2018-01-31T08:41:24.000+0000", + 39.93302, + -75.13263, + 0.0, + 72.4, + 6.0, + "PORT ORIENT", + "IMO9735103", + "D5LI8", + 70, + 5, + 199, + null, + null, + null, + "A", + "AAAAAAHAUsh9Aood/EBD920zCUHI", + [ + false, + 617733347188408319, + "AAAAAAMAAAABAAAAGsBSyG5Dqnm8QEP3bTMJQcjAUshujDL1c0BD92dyJ07lwFLIb2MC1QlAQ/dh6d98JMBSyG+bOfK0QEP3YReHt3bAUsh+baoyv0BD91NVSkmVwFLIiGG9eiVAQ/dapji51cBSyIlFO3IIQEP3XNCfELjAUsg= (truncated)" + ], + 0.0, + "AAAAAAMAAAABAAAAIcBSyG5Dqnm8QEP3bTMJQcjAUshujDL1c0BD92dyJ07lwFLIb2MC1QlAQ/dh6d98JMBSyHC/2MnwQEP3XNCfELjAUshylU0BMEBD91hYjwgvwFLIdNFVBXRAQ/dUraaZscBSyHdd9TsqQEP3UfP6r+LAUsg= (truncated)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "MMSI", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "BaseDateTime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "LAT", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "LON", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "SOG", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "COG", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Heading", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "VesselName", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "IMO", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "CallSign", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "VesselType", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Status", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Length", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Width", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Draft", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Cargo", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "TranscieverClass", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "point_geom", + "type": "\"binary\"" + }, + { + "metadata": "{}", + "name": "ix", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"is_core\",\"type\":\"boolean\",\"nullable\":true,\"metadata\":{}},{\"name\":\"index_id\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"wkb\",\"type\":\"binary\",\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "sog_kmph", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "buffer_geom", + "type": "\"binary\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "OPTIMIZE cargos_buffered ZORDER BY (ix.index_id, BaseDateTime);\n", + "SELECT * FROM cargos_buffered LIMIT 5;" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "f34c9210-ebe2-4852-abd1-a911175cacc6", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Implement Algorithm" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "04bcdefb-3327-4cde-af5e-f8e1d886ac58", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "buffered_events = (\n", + " spark.read.table(\"cargos_buffered\")\n", + " .repartition(sc.defaultParallelism * 20) # <- repartition is important!\n", + ")\n", + "\n", + "def ts_diff(ts1, ts2):\n", + " \"\"\"Output the difference between two timestamps in seconds.\n", + "\n", + " Args:\n", + " ts1 (Timestamp): First Timestamp\n", + " ts2 (Timestamp): Second Timestamp\n", + "\n", + " Returns:\n", + " long: The difference between two timestamps in seconds.\n", + " \"\"\"\n", + " return F.abs(col(ts1).cast(\"long\") - col(ts2).cast(\"long\"))\n", + "\n", + "\n", + "def time_window(sog1, sog2, heading1, heading2, radius):\n", + " \"\"\"Create dynamic time window based on speed, buffer radius and heading.\n", + "\n", + " Args:\n", + " sog1 (double): vessel 1's speed over ground, in knots\n", + " sog2 (double): vessel 2's speed over ground, in knots\n", + " heading1 (double): vessel 1's heading angle in degrees\n", + " heading2 (double): vessel 2's heading angle in degrees\n", + " radius (double): buffer radius in degrees\n", + "\n", + " Returns:\n", + " double: dynamic time window in seconds based on the speed and radius\n", + " \"\"\"\n", + " v_x1 = col(sog1) * F.cos(col(heading1))\n", + " v_y1 = col(sog1) * F.sin(col(heading1))\n", + " v_x2 = col(sog2) * F.cos(col(heading2))\n", + " v_y2 = col(sog2) * F.sin(col(heading2))\n", + "\n", + " # compute relative vectors speed based x and y partial speeds\n", + " v_relative = F.sqrt((v_x1 + v_x2) * (v_x1 + v_x2) + (v_y1 + v_y2) * (v_y1 + v_y2))\n", + " # convert to m/s and determine ratio between speed and radius\n", + " return v_relative * F.lit(1000) / F.lit(radius) / F.lit(3600)\n", + "\n", + "\n", + "candidates = (\n", + " buffered_events.alias(\"a\")\n", + " .join(\n", + " buffered_events.alias(\"b\"),\n", + " [\n", + " col(\"a.ix.index_id\")\n", + " == col(\"b.ix.index_id\"), # to only compare across efficient indices\n", + " col(\"a.mmsi\")\n", + " < col(\"b.mmsi\"), # to prevent comparing candidates bidirectionally\n", + " ts_diff(\"a.BaseDateTime\", \"b.BaseDateTime\")\n", + " < time_window(\"a.sog_kmph\", \"b.sog_kmph\", \"a.heading\", \"b.heading\", buffer),\n", + " ],\n", + " )\n", + " .where(\n", + " (\n", + " col(\"a.ix.is_core\") | col(\"b.ix.is_core\")\n", + " ) # if either candidate fully covers an index, no further comparison is needed\n", + " | mos.st_intersects(\n", + " \"a.ix.wkb\", \"b.ix.wkb\"\n", + " ) # limit geospatial querying to cases where indices alone cannot give certainty\n", + " )\n", + " .select(\n", + " col(\"a.vesselName\").alias(\"vessel_1\"),\n", + " col(\"b.vesselName\").alias(\"vessel_2\"),\n", + " col(\"a.BaseDateTime\").alias(\"timestamp_1\"),\n", + " col(\"b.BaseDateTime\").alias(\"timestamp_2\"),\n", + " col(\"a.ix.index_id\").alias(\"ix\"),\n", + " )\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "10113308-de6d-4ac3-96a1-fa9af2d41497", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "(candidates.write.mode(\"overwrite\").saveAsTable(\"overlap_candidates\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b244dd20-28fd-4014-9e93-67ddbb940666", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
vessel_1vessel_2timestamp_1timestamp_2ix
AZURGLOBAL ETERNITY2018-01-31T10:18:40.000+00002018-01-31T07:48:02.000+0000617700141109608447
DANAE CEVER SHINE2018-01-31T10:26:13.000+00002018-01-31T08:44:18.000+0000617710257664688127
UMM SALALDREAM CANARY2018-01-31T03:41:48.000+00002018-01-31T05:24:39.000+0000617710268076785663
ZIM RIO GRANDEAFRICAN RAVEN2018-01-31T05:58:48.000+00002018-01-31T07:16:41.000+0000617711246234353663
ZIM RIO GRANDEAUTO BANNER2018-01-31T05:58:48.000+00002018-01-31T07:27:14.000+0000617711246234353663
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "AZUR", + "GLOBAL ETERNITY", + "2018-01-31T10:18:40.000+0000", + "2018-01-31T07:48:02.000+0000", + 617700141109608447 + ], + [ + "DANAE C", + "EVER SHINE", + "2018-01-31T10:26:13.000+0000", + "2018-01-31T08:44:18.000+0000", + 617710257664688127 + ], + [ + "UMM SALAL", + "DREAM CANARY", + "2018-01-31T03:41:48.000+0000", + "2018-01-31T05:24:39.000+0000", + 617710268076785663 + ], + [ + "ZIM RIO GRANDE", + "AFRICAN RAVEN", + "2018-01-31T05:58:48.000+0000", + "2018-01-31T07:16:41.000+0000", + 617711246234353663 + ], + [ + "ZIM RIO GRANDE", + "AUTO BANNER", + "2018-01-31T05:58:48.000+0000", + "2018-01-31T07:27:14.000+0000", + 617711246234353663 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "vessel_1", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "vessel_2", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "timestamp_1", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "timestamp_2", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "ix", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "SELECT * FROM overlap_candidates limit 5" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "f869f88b-590c-4ed6-b755-7184deea9692", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
ixcount
6177442821997854711622
6177442822000476151622
6177442821992611831622
617748934640271359893
617748934703972351893
617748934640271359867
617700170145202175624
617743619083993087487
618194245959286783435
618194245957976063435
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 617744282199785471, + 1622 + ], + [ + 617744282200047615, + 1622 + ], + [ + 617744282199261183, + 1622 + ], + [ + 617748934640271359, + 893 + ], + [ + 617748934703972351, + 893 + ], + [ + 617748934640271359, + 867 + ], + [ + 617700170145202175, + 624 + ], + [ + 617743619083993087, + 487 + ], + [ + 618194245959286783, + 435 + ], + [ + 618194245957976063, + 435 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "ix", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "count", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "CREATE OR REPLACE TEMPORARY VIEW agg_overlap AS\n", + "SELECT ix, count(*) AS count\n", + "FROM overlap_candidates\n", + "GROUP BY ix, vessel_1, vessel_2\n", + "ORDER BY count DESC;\n", + "\n", + "SELECT * FROM agg_overlap LIMIT 10;" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3bf7af9a-ba25-40a4-820c-a7cc7ddd687c", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Plot Common Overlaps" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c659afdd-f59b-470d-9d58-6587c1b66f0f", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "4e813232-0e8c-41f0-8a62-ab6ee303c5be", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "80ccfd58-5789-4981-96a0-0169e3d8a108", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# \"agg_overlap\" \"ix\" \"h3\" 10_000" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 85549842153093, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "03.a Overlap Detection", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/Ship2ShipTransfers/03.a Overlap Detection.py b/notebooks/examples/python/Ship2ShipTransfers/03.a Overlap Detection.py deleted file mode 100644 index 02864978a..000000000 --- a/notebooks/examples/python/Ship2ShipTransfers/03.a Overlap Detection.py +++ /dev/null @@ -1,167 +0,0 @@ -# Databricks notebook source -# MAGIC %md # Overlap Detection -# MAGIC -# MAGIC We now try to detect potentially overlapping pings using a buffer on a particular day. - -# COMMAND ---------- - -# MAGIC %pip install databricks_mosaic - -# COMMAND ---------- - -from pyspark.sql.functions import * -import mosaic as mos - -spark.conf.set("spark.databricks.labs.mosaic.geometry.api", "JTS") -spark.conf.set("spark.databricks.labs.mosaic.index.system", "H3") -mos.enable_mosaic(spark, dbutils) - -# COMMAND ---------- - -cargos_indexed = spark.read.table("ship2ship.cargos_indexed").filter( - col("BaseDateTime").between( - "2018-01-31T00:00:00.000+0000", "2018-01-31T23:59:00.000+0000" - ) -) -display(cargos_indexed) -cargos_indexed.count() - -# COMMAND ---------- - -# MAGIC %md ## Buffering -# MAGIC -# MAGIC 1. Convert the point into a polygon by buffering it with a certain area to turn this into a circle. -# MAGIC 2. Index the polygon to leverage more performant querying. -# MAGIC -# MAGIC ![](http://1fykyq3mdn5r21tpna3wkdyi-wpengine.netdna-ssl.com/wp-content/uploads/2018/06/image14-1.png) -# MAGIC -# MAGIC -# MAGIC -# MAGIC Since our projection is not in metres, we convert from decimal degrees, with `(0.00001 - 0.000001)` as being equal to one metre at the equator. -# MAGIC Here we choose an buffer of roughly 100 metres. -# MAGIC Ref: http://wiki.gis.com/wiki/index.php/Decimal_degrees - -# COMMAND ---------- - -one_metre = 0.00001 - 0.000001 -buffer = 100 * one_metre - -( - cargos_indexed - # We increase parallelism as the default execution plan does not take full advantage of it. - .repartition(sc.defaultParallelism * 20) - .withColumn("buffer_geom", mos.st_buffer("point_geom", lit(buffer))) - .withColumn("ix", mos.grid_tessellateexplode("buffer_geom", lit(9))) - .write.mode("overwrite") - .saveAsTable("ship2ship.cargos_buffered") -) - -# COMMAND ---------- - -# DBTITLE 1,We can optimise our table to colocate data and make querying faster -# MAGIC %sql -# MAGIC OPTIMIZE ship2ship.cargos_buffered ZORDER BY (ix.index_id, BaseDateTime); -# MAGIC SELECT * FROM ship2ship.cargos_buffered; - -# COMMAND ---------- - -# MAGIC %md ## Implement Algorithm - -# COMMAND ---------- - -buffered_events = spark.read.table("ship2ship.cargos_buffered").repartition( - sc.defaultParallelism * 20 -) - - -def ts_diff(ts1, ts2): - """Output the difference between two timestamps in seconds. - - Args: - ts1 (Timestamp): First Timestamp - ts2 (Timestamp): Second Timestamp - - Returns: - long: The difference between two timestamps in seconds. - """ - return abs(col(ts1).cast("long") - col(ts2).cast("long")) - - -def time_window(sog1, sog2, heading1, heading2, radius): - """Create dynamic time window based on speed, buffer radius and heading. - - Args: - sog1 (double): vessel 1's speed over ground, in knots - sog2 (double): vessel 2's speed over ground, in knots - heading1 (double): vessel 1's heading angle in degrees - heading2 (double): vessel 2's heading angle in degrees - radius (double): buffer radius in degrees - - Returns: - double: dynamic time window in seconds based on the speed and radius - """ - v_x1 = col(sog1) * cos(col(heading1)) - v_y1 = col(sog1) * sin(col(heading1)) - v_x2 = col(sog2) * cos(col(heading2)) - v_y2 = col(sog2) * sin(col(heading2)) - - # compute relative vectors speed based x and y partial speeds - v_relative = sqrt((v_x1 + v_x2) * (v_x1 + v_x2) + (v_y1 + v_y2) * (v_y1 + v_y2)) - # convert to m/s and determine ratio between speed and radius - return v_relative * lit(1000) / lit(radius) / lit(3600) - - -candidates = ( - buffered_events.alias("a") - .join( - buffered_events.alias("b"), - [ - col("a.ix.index_id") - == col("b.ix.index_id"), # to only compare across efficient indices - col("a.mmsi") - < col("b.mmsi"), # to prevent comparing candidates bidirectionally - ts_diff("a.BaseDateTime", "b.BaseDateTime") - < time_window("a.sog_kmph", "b.sog_kmph", "a.heading", "b.heading", buffer), - ], - ) - .where( - ( - col("a.ix.is_core") | col("b.ix.is_core") - ) # if either candidate fully covers an index, no further comparison is needed - | mos.st_intersects( - "a.ix.wkb", "b.ix.wkb" - ) # limit geospatial querying to cases where indices alone cannot give certainty - ) - .select( - col("a.vesselName").alias("vessel_1"), - col("b.vesselName").alias("vessel_2"), - col("a.BaseDateTime").alias("timestamp_1"), - col("b.BaseDateTime").alias("timestamp_2"), - col("a.ix.index_id").alias("ix"), - ) -) - -# COMMAND ---------- - -(candidates.write.mode("overwrite").saveAsTable("ship2ship.overlap_candidates")) - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC SELECT * FROM ship2ship.overlap_candidates - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC CREATE OR REPLACE TEMPORARY VIEW agg_overlap AS -# MAGIC SELECT ix, count(*) AS count -# MAGIC FROM ship2ship.overlap_candidates -# MAGIC GROUP BY ix, vessel_1, vessel_2 -# MAGIC ORDER BY count DESC; -# MAGIC SELECT * FROM agg_overlap; - -# COMMAND ---------- - -# DBTITLE 1,Plotting Common Overlaps -# MAGIC %%mosaic_kepler -# MAGIC "agg_overlap" "ix" "h3" 10_000 diff --git a/notebooks/examples/python/Ship2ShipTransfers/03.b Advanced Overlap Detection.ipynb b/notebooks/examples/python/Ship2ShipTransfers/03.b Advanced Overlap Detection.ipynb new file mode 100644 index 000000000..a791ff1b2 --- /dev/null +++ b/notebooks/examples/python/Ship2ShipTransfers/03.b Advanced Overlap Detection.ipynb @@ -0,0 +1,1384 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d9d6eea1-2420-4ed4-898a-f623ba434ea7", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Line Aggregation\n", + "\n", + "> Instead of the point-to-point evaluation, we will instead be aggregating into lines and comparing as such.\n", + "\n", + "---\n", + "__Last Updated:__ 27 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c0464989-7c10-4a28-94fa-14b0b44e0fef", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "1d190dd4-df71-488d-9faa-535020d58335", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet # <- Mosaic 0.3 series\n", + "# %pip install \"databricks-mosaic<0.5,>=0.4\" --quiet # <- Mosaic 0.4 series (as available)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "8eb58507-5cb6-4348-bccb-ad8853e90cc7", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "spark.conf.set(\"spark.sql.shuffle.partitions\", 1_024) # <-- default is 200\n", + "\n", + "# -- import databricks + spark functions\n", + "from pyspark.databricks.sql import functions as dbf\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import col, udf\n", + "from pyspark.sql.types import *\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "# mos.enable_gdal(spark) # <- not needed for this example\n", + "\n", + "# --other imports\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "535765d9-808b-451f-a6ff-bcf82db80e28", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Configure Database__\n", + "\n", + "> Adjust this to settings from the Data Prep notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ffaf5dd0-00da-4794-8539-8de2fa45d06d", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[2]: DataFrame[]" + ] + } + ], + "source": [ + "catalog_name = \"mjohns\"\n", + "db_name = \"ship2ship\"\n", + "\n", + "sql(f\"use catalog {catalog_name}\")\n", + "sql(f\"use schema {db_name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "660a9e5e-2d82-4b64-97f8-8ebaa49baa8c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 521,867\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
MMSIBaseDateTimeLATLONSOGCOGHeadingVesselNameIMOCallSignVesselTypeStatusLengthWidthDraftCargoTranscieverClasspoint_geomixsog_kmph
3675317802018-01-31T03:43:14.000+000029.75981-91.617894.386.488.0POSEIDONIMO8842234WDG3989700217nullnullAAAAAAAHAVueLgn+hoUA9woLofSx86181940945648353277.96
3675317802018-01-31T03:42:05.000+000029.75974-91.619464.492.187.0POSEIDONIMO8842234WDG3989700217nullnullAAAAAAAHAVuelO45LiEA9wn5SFXaK6181940945648353278.15
3675317802018-01-31T03:48:04.000+000029.76002-91.611393.885.597.0POSEIDONIMO8842234WDG3989700217nullnullAAAAAAAHAVuchA4XGfkA9wpCrtE5R6181940945650974717.04
3675317802018-01-31T03:46:56.000+000029.75997-91.612834.083.890.0POSEIDONIMO8842234WDG3989700217nullnullAAAAAAAHAVuc4m1IAfkA9wo1k1/Dt6181940945650974717.41
3675317802018-01-31T03:45:46.000+000029.75983-91.614364.389.287.0POSEIDONIMO8842234WDG3989700217nullnullAAAAAAAHAVudRrJr+HkA9woQ4CIUK6181940945653596157.96
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 367531780, + "2018-01-31T03:43:14.000+0000", + 29.75981, + -91.61789, + 4.3, + 86.4, + 88.0, + "POSEIDON", + "IMO8842234", + "WDG3989", + 70, + 0, + 21, + 7, + null, + null, + "A", + "AAAAAAHAVueLgn+hoUA9woLofSx8", + 618194094564835327, + 7.96 + ], + [ + 367531780, + "2018-01-31T03:42:05.000+0000", + 29.75974, + -91.61946, + 4.4, + 92.1, + 87.0, + "POSEIDON", + "IMO8842234", + "WDG3989", + 70, + 0, + 21, + 7, + null, + null, + "A", + "AAAAAAHAVuelO45LiEA9wn5SFXaK", + 618194094564835327, + 8.15 + ], + [ + 367531780, + "2018-01-31T03:48:04.000+0000", + 29.76002, + -91.61139, + 3.8, + 85.5, + 97.0, + "POSEIDON", + "IMO8842234", + "WDG3989", + 70, + 0, + 21, + 7, + null, + null, + "A", + "AAAAAAHAVuchA4XGfkA9wpCrtE5R", + 618194094565097471, + 7.04 + ], + [ + 367531780, + "2018-01-31T03:46:56.000+0000", + 29.75997, + -91.61283, + 4.0, + 83.8, + 90.0, + "POSEIDON", + "IMO8842234", + "WDG3989", + 70, + 0, + 21, + 7, + null, + null, + "A", + "AAAAAAHAVuc4m1IAfkA9wo1k1/Dt", + 618194094565097471, + 7.41 + ], + [ + 367531780, + "2018-01-31T03:45:46.000+0000", + 29.75983, + -91.61436, + 4.3, + 89.2, + 87.0, + "POSEIDON", + "IMO8842234", + "WDG3989", + 70, + 0, + 21, + 7, + null, + null, + "A", + "AAAAAAHAVudRrJr+HkA9woQ4CIUK", + 618194094565359615, + 7.96 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "MMSI", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "BaseDateTime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "LAT", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "LON", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "SOG", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "COG", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Heading", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "VesselName", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "IMO", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "CallSign", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "VesselType", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Status", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Length", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Width", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "Draft", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Cargo", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "TranscieverClass", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "point_geom", + "type": "\"binary\"" + }, + { + "metadata": "{}", + "name": "ix", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "sog_kmph", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "cargos_indexed = spark.read.table(\"cargos_indexed\")\n", + " \n", + "print(f\"count? {cargos_indexed.count():,}\")\n", + "cargos_indexed.limit(5).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c824e4a4-1ec7-4f03-a98d-132160c55d1f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Create Lines\n", + "\n", + "We can `groupBy` across a timewindow to give us aggregated geometries to work with.\n", + "\n", + "When we collect the various points within a timewindow, we want to construct the linestring by the order in which they were generated (timestamp).\n", + "We choose a buffer of a max of 200 metres in this case.\n", + "Since our projection is not in metres, we convert from decimal degrees. With `(0.00001 - 0.000001)` as being equal to one metre at the equator\n", + "Ref: http://wiki.gis.com/wiki/index.php/Decimal_degrees" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "807361a6-0f28-4966-8d8b-32271a6f8f3d", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 72,933\n" + ] + } + ], + "source": [ + "spark.catalog.clearCache() # <- cache is useful for dev (avoid recompute)\n", + "lines = (\n", + " cargos_indexed\n", + " .repartition(sc.defaultParallelism * 20) # <- repartition is important!\n", + " .groupBy(\"mmsi\", F.window(\"BaseDateTime\", \"15 minutes\"))\n", + " # We link the points to their respective timestamps in the aggregation\n", + " .agg(F.collect_list(F.struct(col(\"point_geom\"), col(\"BaseDateTime\"))).alias(\"coords\"))\n", + " # And then sort our array of points by the timestamp to form a trajectory\n", + " .withColumn(\n", + " \"coords\",\n", + " F.expr(\n", + " \"\"\"\n", + " array_sort(coords, (left, right) -> \n", + " case \n", + " when left.BaseDateTime < right.BaseDateTime then -1 \n", + " when left.BaseDateTime > right.BaseDateTime then 1 \n", + " else 0 \n", + " end\n", + " )\"\"\"\n", + " ),\n", + " )\n", + " .withColumn(\"line\", mos.st_makeline(col(\"coords.point_geom\")))\n", + " .cache()\n", + ")\n", + "print(f\"count? {lines.count():,}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "736c0b76-f14e-4f02-9e9f-bb174f65e01a", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Note here that this decreases the total number of rows across which we are running our comparisons._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ebcba535-1aa3-41e0-b8db-8d40f5b7031d", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "+---------+--------------------+--------------------+--------------------+--------+--------------------+--------------------+--------------------+\n| mmsi| window| coords| line|buffer_r| buffer_geom| buffer| ix|\n+---------+--------------------+--------------------+--------------------+--------+--------------------+--------------------+--------------------+\n|564995000|{2018-01-31 20:00...|[{\u0000\u0000\u0000\u0000\u0001�_�:)�y�@H...|[00 00 00 00 02 0...| 0.00192|[00 00 00 00 03 0...|POLYGON ((-126.04...|{false, 617710246...|\n+---------+--------------------+--------------------+--------------------+--------+--------------------+--------------------+--------------------+\n\n" + ] + } + ], + "source": [ + "\n", + "one_metre = 0.00001 - 0.000001\n", + "buffer = 200 * one_metre\n", + "\n", + "\n", + "def get_buffer(line, buffer=buffer):\n", + " \"\"\"Create buffer as function of number of points in linestring\n", + " The buffer size is inversely proportional to the number of points, providing a larger buffer for slower ships.\n", + " The intuition behind this choice is held in the way AIS positions are emitted. The faster the vessel moves the\n", + " more positions it will emit — yielding a smoother trajectory, where slower vessels will yield far fewer positions\n", + " and a harder to reconstruct trajectory which inherently holds more uncertainty.\n", + "\n", + " Args:\n", + " line (geometry): linestring geometry as generated with st_makeline.\n", + "\n", + " Returns:\n", + " double: buffer size in degrees\n", + " \"\"\"\n", + " np = mos.st_numpoints(line)\n", + " max_np = lines.select(F.max(np)).collect()[0][0]\n", + " return F.lit(max_np) * F.lit(buffer) / np\n", + "\n", + "\n", + "cargo_movement = (\n", + " lines.withColumn(\"buffer_r\", get_buffer(\"line\"))\n", + " .withColumn(\"buffer_geom\", mos.st_buffer(\"line\", col(\"buffer_r\")))\n", + " .withColumn(\"buffer\", mos.st_astext(\"buffer_geom\"))\n", + " .withColumn(\"ix\", mos.grid_tessellateexplode(\"buffer_geom\", F.lit(9)))\n", + ")\n", + "\n", + "cargo_movement.createOrReplaceTempView(\"ship_path\") # <- create a temp view\n", + "spark.read.table(\"ship_path\").limit(1).show() # <- limiting + using `show` for ipynb only" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7c8a1d63-1ecf-4377-94fd-519a6f5a7cb0", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "to_plot = spark.read.table(\"ship_path\").select(\"buffer\").limit(3_000).distinct()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "1286c751-b4d6-461b-9fcd-4b7349502d81", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Example buffer paths_" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e515bbee-1fef-4d28-b77c-e2def71dcd99", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "390ff6af-5876-4368-afcb-f5cf0a005190", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7992e47b-30d5-44ca-af2f-ad9d75917501", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# to_plot \"buffer\" \"geometry\" 3_000" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ed81a1f8-e1fa-4119-935f-76a34397c3f7", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Find All Candidates\n", + "\n", + "We employ a join strategy using Mosaic indices as before, but this time we leverage the buffered ship paths." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c457b6f5-71f7-40c3-95f0-05bbf3b28566", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "candidates_lines = (\n", + " cargo_movement.alias(\"a\")\n", + " .join(\n", + " cargo_movement.alias(\"b\"),\n", + " [\n", + " col(\"a.ix.index_id\")\n", + " == col(\"b.ix.index_id\"), # to only compare across efficient indices\n", + " col(\"a.mmsi\")\n", + " < col(\"b.mmsi\"), # to prevent comparing candidates bidirectionally\n", + " col(\"a.window\")\n", + " == col(\"b.window\"), # to compare across the same time window\n", + " ],\n", + " )\n", + " .where(\n", + " (\n", + " col(\"a.ix.is_core\") | col(\"b.ix.is_core\")\n", + " ) # if either candidate fully covers an index, no further comparison is needed\n", + " | mos.st_intersects(\n", + " \"a.ix.wkb\", \"b.ix.wkb\"\n", + " ) # limit geospatial querying to cases where indices alone cannot give certainty\n", + " )\n", + " .select(\n", + " col(\"a.mmsi\").alias(\"vessel_1\"),\n", + " col(\"b.mmsi\").alias(\"vessel_2\"),\n", + " col(\"a.window\").alias(\"window\"),\n", + " col(\"a.buffer\").alias(\"line_1\"),\n", + " col(\"b.buffer\").alias(\"line_2\"),\n", + " col(\"a.ix.index_id\").alias(\"index\"),\n", + " )\n", + " .drop_duplicates()\n", + ")\n", + "\n", + "(\n", + " candidates_lines.write.mode(\"overwrite\")\n", + " .option(\"overwriteSchema\", \"true\")\n", + " .saveAsTable(\"overlap_candidates_lines\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "5e5cd7f7-97f8-47e4-a2a7-f04e4661d483", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
vessel_1vessel_2windowline_1line_2index
477700700477999700List(2018-01-31T14:45:00.000+0000, 2018-01-31T15:00:00.000+0000)POLYGON ((-162.5172963924641 54.096237807783645, -162.50149864536905 54.09560112276218, -162.49286297163883 54.095271288001655, -162.49278616875375 54.09526763555918, -162.48225934728822 54.094668385760386, -162.47514253036482 54.09430905138557, -162.47513660892625 54.09430874812911, -162.46454660892627 54.093758748129105, -162.4637491321803 54.09363816915261, -162.46299050251778 54.09336432707218, -162.46229987365115 54.09294774548538, -162.46170378606044 54.092404433388985, -162.4612251470575 54.09175526996214, -162.46088235047074 54.09102520219131, -162.4606885697808 54.09024228617148, -162.4606512518709 54.08943660892625, -162.4607718308474 54.088639132180305, -162.46104567292784 54.08788050251777, -162.46146225451463 54.087189873651134, -162.46200556661103 54.086593786060426, -162.46265473003785 54.08611514705748, -162.46338479780871 54.085772350470734, -162.46416771382852 54.08557856978079, -162.46497339107376 54.08554125187089, -162.4755604304651 54.08609109810936, -162.48268746963518 54.086450948614434, -162.48271383124626 54.086452364440824, -162.4932154468692 54.08705017937192, -162.50181702836116 54.08737871199835, -162.50182568054078 54.08737905158179, -162.5177056805408 54.08801905158179, -162.51786135952378 54.088028283896314, -162.5248813595238 54.08857828389632, -162.52567538980614 54.088719791354094, -162.52642655628375 54.089013487409225, -162.52710599205017 54.089448085487014, -162.5276875867699 54.09000688422706, -162.52814899008402 54.090668409307156, -162.52847247052196 54.09140723868947, -162.52864559691187 54.09219497957517, -162.5286617161037 54.0930013595238, -162.52852020864592 54.09379538980615, -162.52822651259078 54.09454655628376, -162.527791914513 54.09522599205017, -162.52723311577296 54.095807586769894, -162.52657159069287 54.09626899008403, -162.52583276131054 54.096592470521955, -162.52504502042484 54.09676559691187, -162.52423864047623 54.096781716103685, -162.5172963924641 54.096237807783645))POLYGON ((-162.49169 54.1088, -162.49224338392438 54.10318139872594, -162.49388226946368 54.09777871714789, -162.49654367516567 54.092799577289036, -162.50012532470183 54.08843532470183, -162.50448957728904 54.08485367516569, -162.50946871714788 54.082192269463675, -162.51487139872594 54.08055338392439, -162.52049 54.080000000000005, -162.52610860127405 54.08055338392439, -162.5315112828521 54.082192269463675, -162.53649042271095 54.08485367516569, -162.54085467529816 54.08843532470183, -162.54443632483432 54.092799577289036, -162.5470977305363 54.09777871714789, -162.54873661607562 54.10318139872594, -162.54928999999998 54.1088, -162.54873661607562 54.11441860127407, -162.5470977305363 54.119821282852115, -162.54443632483432 54.12480042271097, -162.54085467529816 54.12916467529818, -162.53649042271095 54.132746324834315, -162.5315112828521 54.13540773053633, -162.52610860127405 54.137046616075615, -162.52049 54.1376, -162.51487139872594 54.137046616075615, -162.50946871714788 54.13540773053633, -162.50448957728904 54.132746324834315, -162.50012532470183 54.12916467529818, -162.49654367516567 54.12480042271097, -162.49388226946368 54.119821282852115, -162.49224338392438 54.11441860127407, -162.49169 54.1088))617219359258181631
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 477700700, + 477999700, + [ + "2018-01-31T14:45:00.000+0000", + "2018-01-31T15:00:00.000+0000" + ], + "POLYGON ((-162.5172963924641 54.096237807783645, -162.50149864536905 54.09560112276218, -162.49286297163883 54.095271288001655, -162.49278616875375 54.09526763555918, -162.48225934728822 54.094668385760386, -162.47514253036482 54.09430905138557, -162.47513660892625 54.09430874812911, -162.46454660892627 54.093758748129105, -162.4637491321803 54.09363816915261, -162.46299050251778 54.09336432707218, -162.46229987365115 54.09294774548538, -162.46170378606044 54.092404433388985, -162.4612251470575 54.09175526996214, -162.46088235047074 54.09102520219131, -162.4606885697808 54.09024228617148, -162.4606512518709 54.08943660892625, -162.4607718308474 54.088639132180305, -162.46104567292784 54.08788050251777, -162.46146225451463 54.087189873651134, -162.46200556661103 54.086593786060426, -162.46265473003785 54.08611514705748, -162.46338479780871 54.085772350470734, -162.46416771382852 54.08557856978079, -162.46497339107376 54.08554125187089, -162.4755604304651 54.08609109810936, -162.48268746963518 54.086450948614434, -162.48271383124626 54.086452364440824, -162.4932154468692 54.08705017937192, -162.50181702836116 54.08737871199835, -162.50182568054078 54.08737905158179, -162.5177056805408 54.08801905158179, -162.51786135952378 54.088028283896314, -162.5248813595238 54.08857828389632, -162.52567538980614 54.088719791354094, -162.52642655628375 54.089013487409225, -162.52710599205017 54.089448085487014, -162.5276875867699 54.09000688422706, -162.52814899008402 54.090668409307156, -162.52847247052196 54.09140723868947, -162.52864559691187 54.09219497957517, -162.5286617161037 54.0930013595238, -162.52852020864592 54.09379538980615, -162.52822651259078 54.09454655628376, -162.527791914513 54.09522599205017, -162.52723311577296 54.095807586769894, -162.52657159069287 54.09626899008403, -162.52583276131054 54.096592470521955, -162.52504502042484 54.09676559691187, -162.52423864047623 54.096781716103685, -162.5172963924641 54.096237807783645))", + "POLYGON ((-162.49169 54.1088, -162.49224338392438 54.10318139872594, -162.49388226946368 54.09777871714789, -162.49654367516567 54.092799577289036, -162.50012532470183 54.08843532470183, -162.50448957728904 54.08485367516569, -162.50946871714788 54.082192269463675, -162.51487139872594 54.08055338392439, -162.52049 54.080000000000005, -162.52610860127405 54.08055338392439, -162.5315112828521 54.082192269463675, -162.53649042271095 54.08485367516569, -162.54085467529816 54.08843532470183, -162.54443632483432 54.092799577289036, -162.5470977305363 54.09777871714789, -162.54873661607562 54.10318139872594, -162.54928999999998 54.1088, -162.54873661607562 54.11441860127407, -162.5470977305363 54.119821282852115, -162.54443632483432 54.12480042271097, -162.54085467529816 54.12916467529818, -162.53649042271095 54.132746324834315, -162.5315112828521 54.13540773053633, -162.52610860127405 54.137046616075615, -162.52049 54.1376, -162.51487139872594 54.137046616075615, -162.50946871714788 54.13540773053633, -162.50448957728904 54.132746324834315, -162.50012532470183 54.12916467529818, -162.49654367516567 54.12480042271097, -162.49388226946368 54.119821282852115, -162.49224338392438 54.11441860127407, -162.49169 54.1088))", + 617219359258181631 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "vessel_1", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "vessel_2", + "type": "\"integer\"" + }, + { + "metadata": "{\"spark.timeWindow\":true}", + "name": "window", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"start\",\"type\":\"timestamp\",\"nullable\":true,\"metadata\":{}},{\"name\":\"end\",\"type\":\"timestamp\",\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "line_1", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "line_2", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "index", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "SELECT * FROM overlap_candidates_lines LIMIT 1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "4c8a5dff-3c09-40c4-b33c-0a4dc7fd9fbd", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_We can show the most common locations for overlaps happening, as well some example ship paths during those overlaps._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "887fb194-d654-4add-bc8e-1c34bd44cb7f", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "CREATE OR REPLACE TEMPORARY VIEW agg_overlap AS\n", + "SELECT index AS ix, count(*) AS count, FIRST(line_1) AS line_1, FIRST(line_2) AS line_2\n", + "FROM ship2ship.overlap_candidates_lines\n", + "GROUP BY ix\n", + "ORDER BY count DESC" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d7eca312-89d6-4816-9423-51985e63bb4e", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3a071ce6-4735-4fc5-9c78-c0893178c197", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "9a44e4fa-60bf-494a-9ce9-277cceeda8c7", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# \"agg_overlap\" \"ix\" \"h3\" 2_000" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "98a4ee66-50c2-4101-a679-614bf598bc2c", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Filtering Out Harbours\n", + "In the data we see many overlaps near harbours. We can reasonably assume that these are overlaps due to being in close proximity of the harbour, not a transfer.\n", + "Therefore, we can filter those out below." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "525d02b4-0522-41c1-bacf-830a4720706a", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "harbours_h3 = spark.read.table(\"harbours_h3\")\n", + "candidates = spark.read.table(\"overlap_candidates_lines\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4b022d20-5cf5-46b1-937a-4828172124ca", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "matches = (\n", + " candidates.join(\n", + " harbours_h3, how=\"leftanti\", on=candidates[\"index\"] == harbours_h3[\"h3\"]\n", + " )\n", + " .groupBy(\"vessel_1\", \"vessel_2\")\n", + " .agg(F.first(\"line_1\").alias(\"line_1\"), F.first(\"line_2\").alias(\"line_2\"))\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4364ee70-357f-4832-b36c-f898f7617426", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "(\n", + " matches.write.mode(\"overwrite\")\n", + " .option(\"overwriteSchema\", \"true\")\n", + " .saveAsTable(\"overlap_candidates_lines_filtered\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "9ebf35e4-533e-4a50-a840-49e54fbec963", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
format_number(count(1), 0)
3,093
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "3,093" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{\"__autoGeneratedAlias\":\"true\"}", + "name": "format_number(count(1), 0)", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "SELECT format_number(COUNT(1),0) FROM overlap_candidates_lines_filtered;" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "45d0c208-ea6d-4b3f-b3c1-8b41d731a868", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ca7ea57c-1d4c-4076-b5c0-668410e971a2", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b7318dba-c0d3-47dc-8b12-a1fc13c7fb00", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# overlap_candidates_lines_filtered \"line_1\" \"geometry\" 2_000" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 85549842153110, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "03.b Advanced Overlap Detection", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/Ship2ShipTransfers/03.b Advanced Overlap Detection.py b/notebooks/examples/python/Ship2ShipTransfers/03.b Advanced Overlap Detection.py deleted file mode 100644 index d867ab3c0..000000000 --- a/notebooks/examples/python/Ship2ShipTransfers/03.b Advanced Overlap Detection.py +++ /dev/null @@ -1,217 +0,0 @@ -# Databricks notebook source -# MAGIC %md ## Line Aggregation -# MAGIC -# MAGIC Instead of the point-to-point evaluation, we will instead be aggregating into lines and comparing as such. - -# COMMAND ---------- - -# MAGIC %pip install databricks_mosaic - -# COMMAND ---------- - -from pyspark.sql.functions import * -import mosaic as mos - -spark.conf.set("spark.databricks.labs.mosaic.geometry.api", "JTS") -spark.conf.set("spark.databricks.labs.mosaic.index.system", "H3") -mos.enable_mosaic(spark, dbutils) - -# COMMAND ---------- - -cargos_indexed = spark.read.table("ship2ship.cargos_indexed").repartition( - sc.defaultParallelism * 20 -) -display(cargos_indexed) -cargos_indexed.count() - -# COMMAND ---------- - -# MAGIC %md ## Create Lines -# MAGIC -# MAGIC We can `groupBy` across a timewindow to give us aggregated geometries to work with. -# MAGIC -# MAGIC When we collect the various points within a timewindow, we want to construct the linestring by the order in which they were generated (timestamp). -# MAGIC We choose a buffer of a max of 200 metres in this case. -# MAGIC Since our projection is not in metres, we convert from decimal degrees. With `(0.00001 - 0.000001)` as being equal to one metre at the equator -# MAGIC Ref: http://wiki.gis.com/wiki/index.php/Decimal_degrees - -# COMMAND ---------- - -lines = ( - cargos_indexed.repartition(sc.defaultParallelism * 20) - .groupBy("mmsi", window("BaseDateTime", "15 minutes")) - # We link the points to their respective timestamps in the aggregation - .agg(collect_list(struct(col("point_geom"), col("BaseDateTime"))).alias("coords")) - # And then sort our array of points by the timestamp to form a trajectory - .withColumn( - "coords", - expr( - """ - array_sort(coords, (left, right) -> - case - when left.BaseDateTime < right.BaseDateTime then -1 - when left.BaseDateTime > right.BaseDateTime then 1 - else 0 - end - )""" - ), - ) - .withColumn("line", mos.st_makeline(col("coords.point_geom"))) - .cache() -) - -# COMMAND ---------- - -# DBTITLE 1,Note here that this decreases the total number of rows across which we are running our comparisons. -lines.count() - -# COMMAND ---------- - - -one_metre = 0.00001 - 0.000001 -buffer = 200 * one_metre - - -def get_buffer(line, buffer=buffer): - """Create buffer as function of number of points in linestring - The buffer size is inversely proportional to the number of points, providing a larger buffer for slower ships. - The intuition behind this choice is held in the way AIS positions are emitted. The faster the vessel moves the - more positions it will emit — yielding a smoother trajectory, where slower vessels will yield far fewer positions - and a harder to reconstruct trajectory which inherently holds more uncertainty. - - Args: - line (geometry): linestring geometry as generated with st_makeline. - - Returns: - double: buffer size in degrees - """ - np = mos.st_numpoints(line) - max_np = lines.select(max(np)).collect()[0][0] - return lit(max_np) * lit(buffer) / np - - -cargo_movement = ( - lines.withColumn("buffer_r", get_buffer("line")) - .withColumn("buffer_geom", mos.st_buffer("line", col("buffer_r"))) - .withColumn("buffer", mos.st_astext("buffer_geom")) - .withColumn("ix", mos.grid_tessellateexplode("buffer_geom", lit(9))) -) - -(cargo_movement.createOrReplaceTempView("ship_path")) - -display(spark.read.table("ship_path")) - -# COMMAND ---------- - -to_plot = spark.read.table("ship_path").select("buffer").limit(3_000).distinct() - -# COMMAND ---------- - -# DBTITLE 1,Example Buffer Paths -# MAGIC %%mosaic_kepler -# MAGIC to_plot "buffer" "geometry" 3_000 - -# COMMAND ---------- - -# MAGIC %md ## Find All Candidates -# MAGIC -# MAGIC We employ a join strategy using Mosaic indices as before, but this time we leverage the buffered ship paths. - -# COMMAND ---------- - -candidates_lines = ( - cargo_movement.alias("a") - .join( - cargo_movement.alias("b"), - [ - col("a.ix.index_id") - == col("b.ix.index_id"), # to only compare across efficient indices - col("a.mmsi") - < col("b.mmsi"), # to prevent comparing candidates bidirectionally - col("a.window") - == col("b.window"), # to compare across the same time window - ], - ) - .where( - ( - col("a.ix.is_core") | col("b.ix.is_core") - ) # if either candidate fully covers an index, no further comparison is needed - | mos.st_intersects( - "a.ix.wkb", "b.ix.wkb" - ) # limit geospatial querying to cases where indices alone cannot give certainty - ) - .select( - col("a.mmsi").alias("vessel_1"), - col("b.mmsi").alias("vessel_2"), - col("a.window").alias("window"), - col("a.buffer").alias("line_1"), - col("b.buffer").alias("line_2"), - col("a.ix.index_id").alias("index"), - ) - .drop_duplicates() -) - -( - candidates_lines.write.mode("overwrite") - .option("overwriteSchema", "true") - .saveAsTable("ship2ship.overlap_candidates_lines") -) - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC SELECT * FROM ship2ship.overlap_candidates_lines; - -# COMMAND ---------- - -# DBTITLE 1,We can show the most common locations for overlaps happening, as well some example ship paths during those overlaps. -# MAGIC %sql -# MAGIC CREATE OR REPLACE TEMPORARY VIEW agg_overlap AS -# MAGIC SELECT index AS ix, count(*) AS count, FIRST(line_1) AS line_1, FIRST(line_2) AS line_2 -# MAGIC FROM ship2ship.overlap_candidates_lines -# MAGIC GROUP BY ix -# MAGIC ORDER BY count DESC - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC "agg_overlap" "ix" "h3" 2_000 - -# COMMAND ---------- - -# MAGIC %md ## Filtering Out Harbours -# MAGIC In the data we see many overlaps near harbours. We can reasonably assume that these are overlaps due to being in close proximity of the harbour, not a transfer. -# MAGIC Therefore, we can filter those out below. - -# COMMAND ---------- - -harbours_h3 = spark.read.table("ship2ship.harbours_h3") -candidates = spark.read.table("ship2ship.overlap_candidates_lines") - -# COMMAND ---------- - -matches = ( - candidates.join( - harbours_h3, how="leftanti", on=candidates["index"] == harbours_h3["h3"] - ) - .groupBy("vessel_1", "vessel_2") - .agg(first("line_1").alias("line_1"), first("line_2").alias("line_2")) -) - -# COMMAND ---------- - -( - matches.write.mode("overwrite") - .option("overwriteSchema", "true") - .saveAsTable("ship2ship.overlap_candidates_lines_filtered") -) - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC SELECT COUNT(*) FROM ship2ship.overlap_candidates_lines_filtered; - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC ship2ship.overlap_candidates_lines_filtered "line_1" "geometry" 2_000 diff --git a/notebooks/examples/python/Ship2ShipTransfers/README.md b/notebooks/examples/python/Ship2ShipTransfers/README.md index 0692209f2..c27ed2758 100644 --- a/notebooks/examples/python/Ship2ShipTransfers/README.md +++ b/notebooks/examples/python/Ship2ShipTransfers/README.md @@ -1,4 +1,7 @@ # Ship2Ship Transfer Detection + +> Note: `ipynb` files can be previewed in GitHub and can also be imported into Databricks, more [here](https://docs.databricks.com/en/notebooks/notebook-export-import.html). + ![Ship Overlap](./images/kepler_output.png) ## Introduction This is an algorithmic implementation to detect Ship to Ship transfers at scale using Databricks. It was presented at the [Data and AI Summit 2022](https://www.youtube.com/watch?v=XQNflqbgP7Q). diff --git a/notebooks/examples/python/SpatialKNN/01. Data Prep.ipynb b/notebooks/examples/python/SpatialKNN/01. Data Prep.ipynb new file mode 100644 index 000000000..0eb5cbbd7 --- /dev/null +++ b/notebooks/examples/python/SpatialKNN/01. Data Prep.ipynb @@ -0,0 +1,2273 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "2c3f3354-af76-43e5-9fa3-f7202c692e0d", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup\n", + "\n", + "> Generates the following in database `mosaic_spatial_knn`: (1) table `building_50k`, (2) table `trip_1m`. These are sufficient samples of the full data for this example. __Note:__ You will need to run the actual Spatial KNN on [Databricks ML Runtime](https://docs.databricks.com/en/release-notes/runtime/index.html), for this one it doesn't matter.\n", + "\n", + "

\n", + "\n", + "1. To use Databricks Labs [Mosaic](https://databrickslabs.github.io/mosaic/index.html) library for geospatial data engineering, analysis, and visualization functionality:\n", + " * Install with `%pip install databricks-mosaic`\n", + " * Import and use with the following:\n", + " ```\n", + " import mosaic as mos\n", + " mos.enable_mosaic(spark, dbutils)\n", + " ```\n", + "

\n", + "\n", + "2. To use [KeplerGl](https://kepler.gl/) OSS library for map layer rendering:\n", + " * Already installed with Mosaic, use `%%mosaic_kepler` magic [[Mosaic Docs](https://databrickslabs.github.io/mosaic/usage/kepler.html)]\n", + " * Import with `from keplergl import KeplerGl` to use directly\n", + "\n", + "If you have trouble with Volume access:\n", + "\n", + "* For Mosaic 0.3 series (< DBR 13) - you can copy resources to DBFS as a workaround\n", + "* For Mosaic 0.4 series (DBR 13.3 LTS) - you will need to either copy resources to DBFS or setup for Unity Catalog + Shared Access which will involve your workspace admin. Instructions, as updated, will be [here](https://databrickslabs.github.io/mosaic/usage/install-gdal.html).\n", + "\n", + "---\n", + "__Last Updated:__ 27 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c41f69e4-a93a-4a8b-91d8-94019843bd02", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet # <- Mosaic 0.3 series\n", + "# %pip install \"databricks-mosaic<0.5,>=0.4\" --quiet # <- Mosaic 0.4 series (as available)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2e4ea63d-e7b9-4e3f-bed9-63d51b13e50e", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "spark.conf.set(\"spark.sql.shuffle.partitions\", 1_024) # <-- default is 200\n", + "\n", + "# -- import databricks + spark functions\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import col, udf\n", + "from pyspark.sql.types import *\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "# mos.enable_gdal(spark) # <- not needed for this example\n", + "\n", + "# --other imports\n", + "import os\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e437d01f-add6-4dac-b9cf-1aa9516057ed", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Setup Data Location__\n", + "\n", + "> You can alter this, of course, to match your preferred location. __Note:__ this is showing DBFS for continuity outside Unity Catalog + Shared Access clusters, but you can easily modify paths to use [Volumes](https://docs.databricks.com/en/sql/language-manual/sql-ref-volumes.html), see more details [here](https://databrickslabs.github.io/mosaic/usage/installation.html) as available." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "88fbb923-8e5a-4319-b00c-191bb2bbd140", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "The raw data will be stored in 'dbfs:/mjohns@databricks.com/geospatial/mosaic/data/spatial_knn'\n" + ] + } + ], + "source": [ + "user_name = dbutils.notebook.entry_point.getDbutils().notebook().getContext().userName().get()\n", + "\n", + "raw_path = f\"dbfs:/{user_name}/geospatial/mosaic/data/spatial_knn\"\n", + "raw_fuse_path = raw_path.replace(\"dbfs:\",\"/dbfs\")\n", + "dbutils.fs.mkdirs(raw_path)\n", + "\n", + "os.environ['RAW_PATH'] = raw_path\n", + "os.environ['RAW_FUSE_PATH'] = raw_fuse_path\n", + "\n", + "print(f\"The raw data will be stored in '{raw_path}'\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "98c85386-f334-4570-8857-cd0caac6047f", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "building_filename = \"nyc_building_footprints.geojson\"\n", + "os.environ['BUILDING_FILENAME'] = building_filename" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "203ef9df-5ac4-4239-b2c3-3af35a3251fb", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Setup Catalog and Schema__\n", + "\n", + "> You will have to adjust for your environment." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "59419e55-1588-41cf-a191-d210f6e912f7", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[1]: DataFrame[]" + ] + } + ], + "source": [ + "catalog_name = \"mjohns\"\n", + "sql(f\"USE CATALOG {catalog_name}\")\n", + "\n", + "db_name = \"mosaic_spatial_knn\"\n", + "sql(f\"CREATE DATABASE IF NOT EXISTS {db_name}\")\n", + "sql(f\"USE SCHEMA {db_name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "3eb32bde-8575-4190-b8ce-192803905292", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "

databasetableNameisTemporary
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "database", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "tableName", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "isTemporary", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql show tables" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "b82264e3-334c-42c3-a2e4-7ddc9f719d8a", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup NYC Building Data (`Building` Table | 50K)\n", + "\n", + "> While the overall data size is ~1.1M, we are going to just take 50K for purposes of this example." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "5f37b525-cf8b-43f6-9cfc-75839ef4b8a4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Download Data (789MB)__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "cb424979-adae-46a2-b89c-ead1e7497813", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "import requests\n", + "import pathlib\n", + "\n", + "def download_url(data_location, dataset_subpath, url):\n", + " fuse_dir = pathlib.Path(data_location.replace('dbfs:',''))\n", + " if (\n", + " not fuse_dir.name.startswith('/Volumes/') and \n", + " not fuse_dir.name.startswith('/Workspace/')\n", + " ):\n", + " fuse_dir = pathlib.Path(data_location.replace('dbfs:/', '/dbfs/'))\n", + " fuse_dir.mkdir(parents=True, exist_ok=True)\n", + " fuse_path = fuse_dir / dataset_subpath\n", + " if not fuse_path.exists():\n", + " req = requests.get(url)\n", + " with open(fuse_path, 'wb') as f:\n", + " f.write(req.content)\n", + " else:\n", + " print(f\"'{fuse_path}' exists...skipping\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "834611da-2dce-4738-b9f7-38aae360c473", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "'/dbfs/mjohns@databricks.com/geospatial/mosaic/data/spatial_knn/nyc_building_footprints.geojson' exists...skipping\n" + ] + } + ], + "source": [ + "# buildings - data preview = https://data.cityofnewyork.us/Housing-Development/Building-Footprints/nqwf-w8eh\n", + "download_url(raw_path, building_filename, \"https://data.cityofnewyork.us/api/geospatial/nqwf-w8eh?method=export&format=GeoJSON\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "145be74e-b1f6-4e78-a434-8076844ee721", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "-rwxrwxrwx 1 root root 836M Nov 27 16:45 \u001B[0m\u001B[01;32m'/dbfs/mjohns@databricks.com/geospatial/mosaic/data/spatial_knn/nyc_building_footprints.geojson'\u001B[0m\u001B[K*\r\n" + ] + } + ], + "source": [ + "ls -lh $RAW_FUSE_PATH/$BUILDING_FILENAME" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e1fc720f-b7b3-4a25-a89b-072c16e7310b", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Generate DataFrame__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "362a23a3-f8e4-45fd-8bd3-737767dcfa7c", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "@udf(returnType=StringType())\n", + "def fix_geojson(gj_dict):\n", + " \"\"\"\n", + " This GeoJSON has coordinates nested as a string, \n", + " so standardize here to avoid issues, gets to same as\n", + " expected when `to_json(\"feature.geometry\")` is\n", + " normally called.\n", + " \"\"\"\n", + " import json\n", + " \n", + " r_list = []\n", + " for l in gj_dict['coordinates']:\n", + " if isinstance(l,str):\n", + " r_list.append(json.loads(l))\n", + " else:\n", + " r_list.append(l)\n", + " \n", + " return json.dumps(\n", + " {\n", + " \"type\": gj_dict['type'],\n", + " \"coordinates\": r_list\n", + " }\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "06f7583c-0f39-4e53-be99-e477f389e772", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 1,109,072\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
typepropertiesjson_geometry
FeatureCollectionList(2042760052, 2048658, 1935, 61809, 2100, Photogramm, {3DCF27FF-A2D0-49BC-A96A-8A25FEEFB8EE}, 78, 40.72, 2017-08-22T00:00:00.000, Constructed, 2042760052, null, 0.0, 0.0){\"type\": \"MultiPolygon\", \"coordinates\": [[[[-73.85143689311231, 40.85381546242524], [-73.85140609192288, 40.8537759883946], [-73.85145374874513, 40.85375454871117], [-73.8514285730422, 40.853722286769], [-73.85153533063556, 40.85367425956854], [-73.85154239770608, 40.85367108001943], [-73.85157483915371, 40.85371265607289], [-73.85158935911977, 40.853706123670676], [-73.85161245356112, 40.853735721045325], [-73.85159921333282, 40.853741677881], [-73.85160609708538, 40.85375049985463], [-73.8515494571809, 40.85377598115823], [-73.8514909949624, 40.85380228223765], [-73.85148454995291, 40.85379402272926], [-73.85143689311231, 40.85381546242524]]]]}
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "FeatureCollection", + [ + "2042760052", + "2048658", + "1935", + "61809", + "2100", + "Photogramm", + "{3DCF27FF-A2D0-49BC-A96A-8A25FEEFB8EE}", + "78", + "40.72", + "2017-08-22T00:00:00.000", + "Constructed", + "2042760052", + null, + "0.0", + "0.0" + ], + "{\"type\": \"MultiPolygon\", \"coordinates\": [[[[-73.85143689311231, 40.85381546242524], [-73.85140609192288, 40.8537759883946], [-73.85145374874513, 40.85375454871117], [-73.8514285730422, 40.853722286769], [-73.85153533063556, 40.85367425956854], [-73.85154239770608, 40.85367108001943], [-73.85157483915371, 40.85371265607289], [-73.85158935911977, 40.853706123670676], [-73.85161245356112, 40.853735721045325], [-73.85159921333282, 40.853741677881], [-73.85160609708538, 40.85375049985463], [-73.8515494571809, 40.85377598115823], [-73.8514909949624, 40.85380228223765], [-73.85148454995291, 40.85379402272926], [-73.85143689311231, 40.85381546242524]]]]}" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "type", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "properties", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"base_bbl\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"bin\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"cnstrct_yr\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"doitt_id\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"feat_code\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"geomsource\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"globalid\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"groundelev\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"heightroof\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"lstmoddate\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"lststatype\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"mpluto_bbl\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"name\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"shape_area\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"shape_len\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "json_geometry", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "spark.catalog.clearCache() # <- cache useful for dev (avoid recomputes)\n", + "\n", + "_df_geojson_raw = (\n", + " spark.read\n", + " .option(\"multiline\", \"true\")\n", + " .format(\"json\")\n", + " .load(f\"{raw_path}/{building_filename}\")\n", + " .select(\"type\", F.explode(col(\"features\")).alias(\"feature\"))\n", + " .repartition(24)\n", + " .select(\n", + " \"type\", \n", + " \"feature.properties\", \n", + " fix_geojson(\"feature.geometry\").alias(\"json_geometry\")\n", + " )\n", + " .cache()\n", + ")\n", + "\n", + "print(f\"count? {_df_geojson_raw.count():,}\")\n", + "display(_df_geojson_raw.limit(1))" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "cc16e0de-2a44-4abd-90fb-eee3e49111ba", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "_df_geojson = (\n", + " _df_geojson_raw\n", + " .withColumn(\"geom\", mos.st_geomfromgeojson(\"json_geometry\"))\n", + " .withColumn(\"geom_wkt\", mos.st_astext(\"geom\"))\n", + " .withColumn(\"is_valid\", mos.st_isvalid(\"geom_wkt\"))\n", + " .select(\"properties.*\", \"geom_wkt\", \"is_valid\")\n", + ")\n", + "\n", + "# print(f\"count? {_df_geojson.count():,}\")\n", + "# display(_df_geojson.limit(1))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "07449a49-1763-4127-b486-ece94d89fc37", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Get Sample of 50K__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4e9d0289-b285-4427-9649-1f8b4469546e", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 50,000\n" + ] + } + ], + "source": [ + "_df_geojson_50k = (\n", + " _df_geojson\n", + " .sample(0.05)\n", + " .limit(50_000)\n", + ")\n", + "\n", + "print(f\"count? {_df_geojson_50k.count():,}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "20532979-c8e1-4f79-a637-6f23293091d4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Write out to Delta Lake__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "fd86cab5-f718-410d-a2ff-7d168c5c4c34", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "(\n", + " _df_geojson_50k\n", + " .write\n", + " .format(\"delta\")\n", + " .mode(\"overwrite\")\n", + " .saveAsTable(f\"building_50k\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e5052760-55fc-400c-8cd0-f5d0c204d030", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
count
50,000
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "50,000" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "count", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql select format_number(count(1), 0) as count from building_50k" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "1868cd58-c401-41df-86dc-8700bffce9d7", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
base_bblbincnstrct_yrdoitt_idfeat_codegeomsourceglobalidgroundelevheightrooflstmoddatelststatypempluto_bblnameshape_areashape_lengeom_wktis_valid
40320800044574701192512016345110Photogramm{0493656C-85A1-4943-9061-281C9FEB33BA}6415.042017-08-17T00:00:00.000Constructed4032080004null0.00.0MULTIPOLYGON (((-73.8545691983773 40.71240691824138, -73.85450439415116 40.71238320422216, -73.8545268433918 40.712347683085575, -73.85459854980775 40.712373923641536, -73.85457857898825 40.71240552349207, -73.85457167676932 40.712402996941606, -73.8545691983773 40.71240691824138)))true
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "4032080004", + "4574701", + "1925", + "1201634", + "5110", + "Photogramm", + "{0493656C-85A1-4943-9061-281C9FEB33BA}", + "64", + "15.04", + "2017-08-17T00:00:00.000", + "Constructed", + "4032080004", + null, + "0.0", + "0.0", + "MULTIPOLYGON (((-73.8545691983773 40.71240691824138, -73.85450439415116 40.71238320422216, -73.8545268433918 40.712347683085575, -73.85459854980775 40.712373923641536, -73.85457857898825 40.71240552349207, -73.85457167676932 40.712402996941606, -73.8545691983773 40.71240691824138)))", + true + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "base_bbl", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "bin", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "cnstrct_yr", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "doitt_id", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "feat_code", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geomsource", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "globalid", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "groundelev", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "heightroof", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "lstmoddate", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "lststatype", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "mpluto_bbl", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "shape_area", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "shape_len", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "is_valid", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql select * from building_50k limit 1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "5815c93b-9e89-458a-9ae3-8623d4ca23e7", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup NYC Taxi Data (`taxi_trip` | 1M)\n", + "\n", + "> This data is available as part of `databricks-datasets` for customer. We are just going to take 1M trips for our purposes.\n", + "\n", + "__Will write sample out to Delta Lake__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "8025bdfa-d10d-41e5-ba8e-6589e41295cf", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "(\n", + " spark.table(\"delta.`/databricks-datasets/nyctaxi/tables/nyctaxi_yellow`\")\n", + " .sample(0.001)\n", + " .withColumn(\n", + " \"pickup_point\", mos.st_aswkt(mos.st_point(F.col(\"pickup_longitude\"), F.col(\"pickup_latitude\")))\n", + " )\n", + " .withColumn(\n", + " \"dropoff_point\", mos.st_aswkt(mos.st_point(F.col(\"dropoff_longitude\"), F.col(\"dropoff_latitude\")))\n", + " )\n", + " .limit(1_000_000)\n", + " .write\n", + " .format(\"delta\")\n", + " .mode(\"overwrite\")\n", + " .saveAsTable(f\"taxi_trip_1m\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "724edd96-e852-485f-8369-234d3aba8dd4", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
count
1,000,000
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "1,000,000" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "count", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql select format_number(count(1), 0) as count from taxi_trip_1m" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ef9ca8a5-8c77-4b84-8a6a-3d0a3ccae64e", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
vendor_idpickup_datetimedropoff_datetimepassenger_counttrip_distancepickup_longitudepickup_latituderate_code_idstore_and_fwd_flagdropoff_longitudedropoff_latitudepayment_typefare_amountextramta_taxtip_amounttolls_amounttotal_amountpickup_pointdropoff_point
VTS2009-11-29T03:24:00.000+00002009-11-29T03:39:00.000+000015.2-73.98892240.722nullnull-73.95042240.7836CASH14.10.50.50.00.015.1POINT (-73.988922 40.722)POINT (-73.950422 40.7836)
VTS2009-11-15T01:03:00.000+00002009-11-15T01:14:00.000+000012.75-74.00879240.708683nullnull-73.99070840.732917CASH8.90.50.50.00.09.9POINT (-74.008792 40.708683)POINT (-73.990708 40.732917)
VTS2009-11-18T18:44:00.000+00002009-11-18T19:04:00.000+000013.81-74.00937540.712577nullnull-73.98143540.760865CASH12.51.00.50.00.014.0POINT (-74.009375 40.712577)POINT (-73.981435 40.760865)
CMT2009-11-04T22:53:38.000+00002009-11-04T23:04:20.000+000012.9-73.99742440.721479null0-73.97495340.758131Cash9.30.50.50.00.010.3POINT (-73.997424 40.721479)POINT (-73.974953 40.758131)
CMT2009-11-29T00:52:18.000+00002009-11-29T01:05:12.000+000013.9-73.9988140.734645null0-73.98792940.779451Cash11.30.50.50.00.012.3POINT (-73.99881 40.734645)POINT (-73.987929 40.779451)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "VTS", + "2009-11-29T03:24:00.000+0000", + "2009-11-29T03:39:00.000+0000", + 1, + 5.2, + -73.988922, + 40.722, + null, + null, + -73.950422, + 40.7836, + "CASH", + 14.1, + 0.5, + 0.5, + 0.0, + 0.0, + 15.1, + "POINT (-73.988922 40.722)", + "POINT (-73.950422 40.7836)" + ], + [ + "VTS", + "2009-11-15T01:03:00.000+0000", + "2009-11-15T01:14:00.000+0000", + 1, + 2.75, + -74.008792, + 40.708683, + null, + null, + -73.990708, + 40.732917, + "CASH", + 8.9, + 0.5, + 0.5, + 0.0, + 0.0, + 9.9, + "POINT (-74.008792 40.708683)", + "POINT (-73.990708 40.732917)" + ], + [ + "VTS", + "2009-11-18T18:44:00.000+0000", + "2009-11-18T19:04:00.000+0000", + 1, + 3.81, + -74.009375, + 40.712577, + null, + null, + -73.981435, + 40.760865, + "CASH", + 12.5, + 1.0, + 0.5, + 0.0, + 0.0, + 14.0, + "POINT (-74.009375 40.712577)", + "POINT (-73.981435 40.760865)" + ], + [ + "CMT", + "2009-11-04T22:53:38.000+0000", + "2009-11-04T23:04:20.000+0000", + 1, + 2.9, + -73.997424, + 40.721479, + null, + "0", + -73.974953, + 40.758131, + "Cash", + 9.3, + 0.5, + 0.5, + 0.0, + 0.0, + 10.3, + "POINT (-73.997424 40.721479)", + "POINT (-73.974953 40.758131)" + ], + [ + "CMT", + "2009-11-29T00:52:18.000+0000", + "2009-11-29T01:05:12.000+0000", + 1, + 3.9, + -73.99881, + 40.734645, + null, + "0", + -73.987929, + 40.779451, + "Cash", + 11.3, + 0.5, + 0.5, + 0.0, + 0.0, + 12.3, + "POINT (-73.99881 40.734645)", + "POINT (-73.987929 40.779451)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "vendor_id", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "dropoff_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "passenger_count", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_longitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_latitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "rate_code_id", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "store_and_fwd_flag", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_longitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "dropoff_latitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "payment_type", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "fare_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "extra", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "mta_tax", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tip_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tolls_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "total_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_point", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_point", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql select * from taxi_trip_1m limit 5" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "2e3912f0-89af-4454-a8fd-44489e6c3736", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Verify" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "100931ad-f0b2-4e11-a6cc-01a87652c28a", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
databasetableNameisTemporary
mosaic_spatial_knnbuilding_50kfalse
mosaic_spatial_knntaxi_trip_1mfalse
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "mosaic_spatial_knn", + "building_50k", + false + ], + [ + "mosaic_spatial_knn", + "taxi_trip_1m", + false + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "database", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "tableName", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "isTemporary", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql show tables from mosaic_spatial_knn" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "da89da17-dbdf-4e4c-9729-b1b557f77e60", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
col_namedata_typecomment
base_bblstringnull
binstringnull
cnstrct_yrstringnull
doitt_idstringnull
feat_codestringnull
geomsourcestringnull
globalidstringnull
groundelevstringnull
heightroofstringnull
lstmoddatestringnull
lststatypestringnull
mpluto_bblstringnull
namestringnull
shape_areastringnull
shape_lenstringnull
geom_wktstringnull
is_validbooleannull
# Detailed Table Information
Catalogmjohns
Databasemosaic_spatial_knn
Tablebuilding_50k
Created TimeMon Nov 27 16:50:40 UTC 2023
Last AccessUNKNOWN
Created BySpark
TypeMANAGED
Locations3://databricks-e2demofieldengwest/b169b504-4c54-49f2-bc3a-adf4b128f36d/tables/e9b1c374-ff02-4adf-8a7b-9be9f53ea1aa
Providerdelta
Ownermjohns@databricks.com
Is_managed_locationtrue
Predictive OptimizationENABLE (inherited from METASTORE unity-catalog-demo)
Table Properties[delta.minReaderVersion=1,delta.minWriterVersion=2]
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "base_bbl", + "string", + null + ], + [ + "bin", + "string", + null + ], + [ + "cnstrct_yr", + "string", + null + ], + [ + "doitt_id", + "string", + null + ], + [ + "feat_code", + "string", + null + ], + [ + "geomsource", + "string", + null + ], + [ + "globalid", + "string", + null + ], + [ + "groundelev", + "string", + null + ], + [ + "heightroof", + "string", + null + ], + [ + "lstmoddate", + "string", + null + ], + [ + "lststatype", + "string", + null + ], + [ + "mpluto_bbl", + "string", + null + ], + [ + "name", + "string", + null + ], + [ + "shape_area", + "string", + null + ], + [ + "shape_len", + "string", + null + ], + [ + "geom_wkt", + "string", + null + ], + [ + "is_valid", + "boolean", + null + ], + [ + "", + "", + "" + ], + [ + "# Detailed Table Information", + "", + "" + ], + [ + "Catalog", + "mjohns", + "" + ], + [ + "Database", + "mosaic_spatial_knn", + "" + ], + [ + "Table", + "building_50k", + "" + ], + [ + "Created Time", + "Mon Nov 27 16:50:40 UTC 2023", + "" + ], + [ + "Last Access", + "UNKNOWN", + "" + ], + [ + "Created By", + "Spark ", + "" + ], + [ + "Type", + "MANAGED", + "" + ], + [ + "Location", + "s3://databricks-e2demofieldengwest/b169b504-4c54-49f2-bc3a-adf4b128f36d/tables/e9b1c374-ff02-4adf-8a7b-9be9f53ea1aa", + "" + ], + [ + "Provider", + "delta", + "" + ], + [ + "Owner", + "mjohns@databricks.com", + "" + ], + [ + "Is_managed_location", + "true", + "" + ], + [ + "Predictive Optimization", + "ENABLE (inherited from METASTORE unity-catalog-demo)", + "" + ], + [ + "Table Properties", + "[delta.minReaderVersion=1,delta.minWriterVersion=2]", + "" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{\"comment\":\"name of the column\"}", + "name": "col_name", + "type": "\"string\"" + }, + { + "metadata": "{\"comment\":\"data type of the column\"}", + "name": "data_type", + "type": "\"string\"" + }, + { + "metadata": "{\"comment\":\"comment of the column\"}", + "name": "comment", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql \n", + "-- notice this is a managed table (see 'Location' col_name)\n", + "describe table extended building_50k" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "20012234-f169-4f80-b613-4418defb56da", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
col_namedata_typecomment
vendor_idstringnull
pickup_datetimetimestampnull
dropoff_datetimetimestampnull
passenger_countintnull
trip_distancedoublenull
pickup_longitudedoublenull
pickup_latitudedoublenull
rate_code_idintnull
store_and_fwd_flagstringnull
dropoff_longitudedoublenull
dropoff_latitudedoublenull
payment_typestringnull
fare_amountdoublenull
extradoublenull
mta_taxdoublenull
tip_amountdoublenull
tolls_amountdoublenull
total_amountdoublenull
pickup_pointstringnull
dropoff_pointstringnull
# Detailed Table Information
Catalogmjohns
Databasemosaic_spatial_knn
Tabletaxi_trip_1m
Created TimeMon Nov 27 16:54:48 UTC 2023
Last AccessUNKNOWN
Created BySpark
TypeMANAGED
Locations3://databricks-e2demofieldengwest/b169b504-4c54-49f2-bc3a-adf4b128f36d/tables/ffbbebe2-8d1d-4c17-973f-5c00fdcb4faf
Providerdelta
Ownermjohns@databricks.com
Is_managed_locationtrue
Predictive OptimizationENABLE (inherited from METASTORE unity-catalog-demo)
Table Properties[delta.minReaderVersion=1,delta.minWriterVersion=2]
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "vendor_id", + "string", + null + ], + [ + "pickup_datetime", + "timestamp", + null + ], + [ + "dropoff_datetime", + "timestamp", + null + ], + [ + "passenger_count", + "int", + null + ], + [ + "trip_distance", + "double", + null + ], + [ + "pickup_longitude", + "double", + null + ], + [ + "pickup_latitude", + "double", + null + ], + [ + "rate_code_id", + "int", + null + ], + [ + "store_and_fwd_flag", + "string", + null + ], + [ + "dropoff_longitude", + "double", + null + ], + [ + "dropoff_latitude", + "double", + null + ], + [ + "payment_type", + "string", + null + ], + [ + "fare_amount", + "double", + null + ], + [ + "extra", + "double", + null + ], + [ + "mta_tax", + "double", + null + ], + [ + "tip_amount", + "double", + null + ], + [ + "tolls_amount", + "double", + null + ], + [ + "total_amount", + "double", + null + ], + [ + "pickup_point", + "string", + null + ], + [ + "dropoff_point", + "string", + null + ], + [ + "", + "", + "" + ], + [ + "# Detailed Table Information", + "", + "" + ], + [ + "Catalog", + "mjohns", + "" + ], + [ + "Database", + "mosaic_spatial_knn", + "" + ], + [ + "Table", + "taxi_trip_1m", + "" + ], + [ + "Created Time", + "Mon Nov 27 16:54:48 UTC 2023", + "" + ], + [ + "Last Access", + "UNKNOWN", + "" + ], + [ + "Created By", + "Spark ", + "" + ], + [ + "Type", + "MANAGED", + "" + ], + [ + "Location", + "s3://databricks-e2demofieldengwest/b169b504-4c54-49f2-bc3a-adf4b128f36d/tables/ffbbebe2-8d1d-4c17-973f-5c00fdcb4faf", + "" + ], + [ + "Provider", + "delta", + "" + ], + [ + "Owner", + "mjohns@databricks.com", + "" + ], + [ + "Is_managed_location", + "true", + "" + ], + [ + "Predictive Optimization", + "ENABLE (inherited from METASTORE unity-catalog-demo)", + "" + ], + [ + "Table Properties", + "[delta.minReaderVersion=1,delta.minWriterVersion=2]", + "" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{\"comment\":\"name of the column\"}", + "name": "col_name", + "type": "\"string\"" + }, + { + "metadata": "{\"comment\":\"data type of the column\"}", + "name": "data_type", + "type": "\"string\"" + }, + { + "metadata": "{\"comment\":\"comment of the column\"}", + "name": "comment", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql \n", + "-- notice this is a managed table (see 'Location' col_name)\n", + "describe table extended taxi_trip_1m" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e68d70ce-31d0-45bc-99a2-91b46f8ed7c9", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Optional: Clean up initial GeoJSON\n", + "\n", + "> Now that the building data (sample) is in Delta Lake, we don't need it." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c1b003da-e31f-4a47-91a8-cb473ff566c4", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
pathnamesizemodificationTime
dbfs:/mjohns@databricks.com/geospatial/mosaic/data/spatial_knn/nyc_building_footprints.geojsonnyc_building_footprints.geojson8756735361701103503000
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "dbfs:/mjohns@databricks.com/geospatial/mosaic/data/spatial_knn/nyc_building_footprints.geojson", + "nyc_building_footprints.geojson", + 875673536, + 1701103503000 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "path", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "size", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "modificationTime", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "display(dbutils.fs.ls(raw_path))" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "49f5ac2a-4ed0-48bb-9e84-3d32755ab4c5", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# -- uncomment to remove geojson file --\n", + "# dbutils.fs.rm(f\"{raw_path}/{building_filename}\")" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 85549842133948, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "01. Data Prep", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/SpatialKNN/01. Data Prep.py b/notebooks/examples/python/SpatialKNN/01. Data Prep.py deleted file mode 100644 index e55be66cc..000000000 --- a/notebooks/examples/python/SpatialKNN/01. Data Prep.py +++ /dev/null @@ -1,257 +0,0 @@ -# Databricks notebook source -# MAGIC %md ## Setup -# MAGIC -# MAGIC > Generates the following in database `mosaic_spatial_knn`: (1) table `building_50k`, (2) table `trip_1m`. These are sufficient samples of the full data for this example. - -# COMMAND ---------- - -# MAGIC %pip install databricks-mosaic --quiet - -# COMMAND ---------- - -import os -from pyspark.sql import functions as F -from pyspark.sql.functions import col, udf -from pyspark.sql.types import * - -import mosaic as mos - -spark.conf.set("spark.databricks.labs.mosaic.geometry.api", "JTS") -mos.enable_mosaic(spark, dbutils) - -spark.conf.set("spark.databricks.optimizer.adaptive.enabled", "false") -spark.conf.set("spark.sql.shuffle.partitions", 512) - -# COMMAND ---------- - -# MAGIC %md __Setup Data Location__ -# MAGIC -# MAGIC > You can alter this, of course, to match your preferred location.
- -# COMMAND ---------- - -user_name = dbutils.notebook.entry_point.getDbutils().notebook().getContext().userName().get() - -raw_path = f"dbfs:/{user_name}/geospatial/mosaic/data/spatial_knn" -raw_fuse_path = raw_path.replace("dbfs:","/dbfs") -dbutils.fs.mkdirs(raw_path) - -os.environ['RAW_PATH'] = raw_path -os.environ['RAW_FUSE_PATH'] = raw_fuse_path - -print(f"The raw data will be stored in {raw_path}") - -# COMMAND ---------- - -building_filename = "nyc_building_footprints.geojson" -os.environ['BUILDING_FILENAME'] = building_filename - -# COMMAND ---------- - -db_name = "mosaic_spatial_knn" -sql(f"CREATE DATABASE IF NOT EXISTS {db_name}") - -# COMMAND ---------- - -# MAGIC %md ## Setup NYC Building Data (`Building` Table | 50K) -# MAGIC -# MAGIC > While the overall data size is ~1.1M, we are going to just take 50K for purposes of this example. - -# COMMAND ---------- - -# MAGIC %md __Download Data (789MB)__ - -# COMMAND ---------- - -import requests -import pathlib - -def download_url(data_location, dataset_subpath, url): - local_path = pathlib.Path(data_location.replace('dbfs:/', '/dbfs/')) - local_path.mkdir(parents=True, exist_ok=True) - req = requests.get(url) - with open(local_path / dataset_subpath, 'wb') as f: - f.write(req.content) - -# COMMAND ---------- - -# buildings - data preview = https://data.cityofnewyork.us/Housing-Development/Building-Footprints/nqwf-w8eh -download_url(raw_path, building_filename, "https://data.cityofnewyork.us/api/geospatial/nqwf-w8eh?method=export&format=GeoJSON") - -# COMMAND ---------- - -display(dbutils.fs.ls(raw_path)) - -# COMMAND ---------- - -ls -l --block-size=M $RAW_FUSE_PATH/$BUILDING_FILENAME - -# COMMAND ---------- - -# MAGIC %md __Generate DataFrame__ - -# COMMAND ---------- - -@udf(returnType=StringType()) -def fix_geojson(gj_dict): - """ - This GeoJSON has coordinates nested as a string, - so standardize here to avoid issues, gets to same as - expected when `to_json("feature.geometry")` is - normally called. - """ - import json - - r_list = [] - for l in gj_dict['coordinates']: - if isinstance(l,str): - r_list.append(json.loads(l)) - else: - r_list.append(l) - - return json.dumps( - { - "type": gj_dict['type'], - "coordinates": r_list - } - ) - -# COMMAND ---------- - -spark.catalog.clearCache() - -_df_geojson_raw = ( - spark.read - .option("multiline", "true") - .format("json") - .load(f"{raw_path}/{building_filename}") - .select("type", F.explode(col("features")).alias("feature")) - .repartition(24) - .select( - "type", - "feature.properties", - fix_geojson("feature.geometry").alias("json_geometry") - ) - .cache() -) - -print(f"count? {_df_geojson_raw.count():,}") -display(_df_geojson_raw.limit(1)) - -# COMMAND ---------- - -_df_geojson = ( - _df_geojson_raw - .withColumn("geom", mos.st_geomfromgeojson("json_geometry")) - .withColumn("geom_wkt", mos.st_astext("geom")) - .withColumn("is_valid", mos.st_isvalid("geom_wkt")) - .select("properties.*", "geom_wkt", "is_valid") -) - -# print(f"count? {_df_geojson.count():,}") -# display(_df_geojson.limit(1)) - -# COMMAND ---------- - -# MAGIC %md __Get Sample of 50K__ - -# COMMAND ---------- - -_df_geojson_50k = ( - _df_geojson - .sample(0.05) - .limit(50_000) -) - -print(f"count? {_df_geojson_50k.count():,}") - -# COMMAND ---------- - -# MAGIC %md __Write out to Delta Lake__ - -# COMMAND ---------- - -( - _df_geojson_50k - .write - .format("delta") - .mode("overwrite") - .saveAsTable(f"{db_name}.building_50k") -) - -# COMMAND ---------- - -# MAGIC %sql select format_number(count(1), 0) as count from mosaic_spatial_knn.building_50k - -# COMMAND ---------- - -# MAGIC %sql select * from mosaic_spatial_knn.building_50k limit 5 - -# COMMAND ---------- - -# MAGIC %md ## Setup NYC Taxi Data (`taxi_trip` | 1M) -# MAGIC -# MAGIC > This data is available as part of `databricks-datasets` for customer. We are just going to take 1M trips for our purposes. -# MAGIC -# MAGIC __Will write sample out to Delta Lake__ - -# COMMAND ---------- - -( - spark.table("delta.`/databricks-datasets/nyctaxi/tables/nyctaxi_yellow`") - .sample(0.001) - .withColumn( - "pickup_point", mos.st_aswkt(mos.st_point(F.col("pickup_longitude"), F.col("pickup_latitude"))) - ) - .withColumn( - "dropoff_point", mos.st_aswkt(mos.st_point(F.col("dropoff_longitude"), F.col("dropoff_latitude"))) - ) - .limit(1_000_000) - .write - .format("delta") - .mode("overwrite") - .saveAsTable(f"{db_name}.taxi_trip_1m") -) - -# COMMAND ---------- - -# MAGIC %sql select format_number(count(1), 0) as count from mosaic_spatial_knn.taxi_trip_1m - -# COMMAND ---------- - -# MAGIC %sql select * from mosaic_spatial_knn.taxi_trip_1m limit 5 - -# COMMAND ---------- - -# MAGIC %md ## Verify - -# COMMAND ---------- - -# MAGIC %sql show tables from mosaic_spatial_knn - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC -- notice this is a managed table (see 'Location' col_name) -# MAGIC describe table extended mosaic_spatial_knn.building_50k - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC -- notice this is a managed table (see 'Location' col_name) -# MAGIC describe table extended mosaic_spatial_knn.taxi_trip_1m - -# COMMAND ---------- - -# MAGIC %md ## Optional: Clean up initial GeoJSON -# MAGIC -# MAGIC > Now that the building data (sample) is in Delta Lake, we don't need it. - -# COMMAND ---------- - -display(dbutils.fs.ls(raw_path)) - -# COMMAND ---------- - -# -- uncomment to remove geojson file -- -# dbutils.fs.rm(f"{raw_path}/{building_filename}") diff --git a/notebooks/examples/python/SpatialKNN/02. Spatial KNN.ipynb b/notebooks/examples/python/SpatialKNN/02. Spatial KNN.ipynb new file mode 100644 index 000000000..a92bdf5e3 --- /dev/null +++ b/notebooks/examples/python/SpatialKNN/02. Spatial KNN.ipynb @@ -0,0 +1,2213 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "97ceecad-501b-405b-9bd5-63818a6bd442", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Scalable KNN on Databricks with Mosaic\n", + "\n", + "> See [Blog](https://medium.com/@milos.colic/scalable-spatial-nearest-neighbours-with-mosaic-336ce37edbae) | [Mosaic Docs](https://databrickslabs.github.io/mosaic/models/spatial-knn.html) | [SpatialKNN API](https://github.com/databrickslabs/mosaic/blob/main/python/mosaic/models/knn/spatial_knn.py) -- __Note:__ Make sure you run this on Databricks ML Runtime.\n", + "\n", + "

\n", + "\n", + "1. To use Databricks Labs [Mosaic](https://databrickslabs.github.io/mosaic/index.html) library for geospatial data engineering, analysis, and visualization functionality:\n", + " * Install with `%pip install databricks-mosaic`\n", + " * Import and use with the following:\n", + " ```\n", + " import mosaic as mos\n", + " mos.enable_mosaic(spark, dbutils)\n", + " ```\n", + "

\n", + "\n", + "2. To use [KeplerGl](https://kepler.gl/) OSS library for map layer rendering:\n", + " * Already installed with Mosaic, use `%%mosaic_kepler` magic [[Mosaic Docs](https://databrickslabs.github.io/mosaic/usage/kepler.html)]\n", + " * Import with `from keplergl import KeplerGl` to use directly\n", + "\n", + "If you have trouble with Volume access:\n", + "\n", + "* For Mosaic 0.3 series (< DBR 13) - you can copy resources to DBFS as a workaround\n", + "* For Mosaic 0.4 series (DBR 13.3 LTS) - you will need to either copy resources to DBFS or setup for Unity Catalog + Shared Access which will involve your workspace admin. Instructions, as updated, will be [here](https://databrickslabs.github.io/mosaic/usage/install-gdal.html).\n", + "\n", + "---\n", + "__Last Updated:__ 27 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "2327ed26-e078-4026-b45f-f4232fa2599e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> Usually when asserting the notion of nearest neighbors we bound that notion to the _K_ neighbors, if left unbound the answers produced by the analysis are basically orderings of the whole data assets based on the proximity/distance and the computational costs to produce such outputs can be very prohibitive since they would result in comparing all features across all data assets.\n", + "\n", + "__Optimized Algorithm (Right Side Below)__\n", + "

\n", + "\n", + "1. For each geometry in set L generate a kloop (hollow ring)\n", + "1. Generate match candidates within \n", + "1. For each match candidate C calculate the distance to the landmark\n", + "1. For each L[i] count the matches; stop if count = k \n", + "1. If count < k, increase the size of the kloop; repeat (s1)\n", + "1. If count > k, remove matches furthest from the L[i]; stop\n", + "1. Optional: early stopping if no new match candidates are found in the kloop of any L geometry for N iterations \n", + "1. Continue with the next kloop up to max iterations\n", + "1. Return C geometries with smallest distance to each L[i]" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b20fb87a-0588-4989-83e2-9d73f089e346", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "\n\n", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%python\n", + "\n", + "displayHTML(f\"\"\"\n", + "\n", + "\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "bd1269ad-372e-4715-8af2-6630aad4e009", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Install + Enable Mosaic" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b5446ea4-29ac-49c3-968e-71b9f78cc698", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet # <- Mosaic 0.3 series\n", + "# %pip install \"databricks-mosaic<0.5,>=0.4\" --quiet # <- Mosaic 0.4 series (as available)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6e1412c9-1696-4d06-9d52-e5f91a4ded8f", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "spark.conf.set(\"spark.sql.shuffle.partitions\", 1_024) # <-- default is 200\n", + "\n", + "# -- import databricks + spark functions\n", + "from pyspark.databricks.sql import functions as dbf\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import col, udf\n", + "from pyspark.sql.types import *\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "# mos.enable_gdal(spark) # <- not needed for this example\n", + "\n", + "# --other imports\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "13077c0f-eb5f-40c9-a483-5c3292f89a43", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "username? 'mjohns@databricks.com'\n" + ] + } + ], + "source": [ + "user_name = dbutils.notebook.entry_point.getDbutils().notebook().getContext().userName().get()\n", + "print(f\"username? '{user_name}'\")\n", + " \n", + "spark.sparkContext.setCheckpointDir(f\"dbfs:/tmp/mosaic/{user_name}/checkpoints\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "1c1399b0-d923-4cc5-9784-4ad0df1a915e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Setup Catalog and Schema__\n", + "\n", + "> These values will mirror the Data Prep notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "1c2ea1a6-6214-49f0-bf6f-364ac734a40b", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[4]: DataFrame[]" + ] + } + ], + "source": [ + "catalog_name = \"mjohns\"\n", + "db_name = \"mosaic_spatial_knn\"\n", + "sql(f\"USE CATALOG {catalog_name}\")\n", + "sql(f\"USE SCHEMA {db_name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "cd3d5bce-9450-49d5-93ca-0df6d37923ca", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
databasetableNameisTemporary
mosaic_spatial_knnbuilding_50kfalse
mosaic_spatial_knntaxi_trip_1mfalse
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "mosaic_spatial_knn", + "building_50k", + false + ], + [ + "mosaic_spatial_knn", + "taxi_trip_1m", + false + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "database", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "tableName", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "isTemporary", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql show tables" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3542b314-9230-4747-9870-571398bd8d05", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Load Landmark + Candidates Tables\n", + "\n", + "> We will load a handfull of datasets we have prepared in our data prep notebook. For this use case we will first manually walk through the approach and then we will apply the model that comes with mosaic." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "9b14f217-ad5a-4fd6-b59a-d8556e444f81", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Bldg POINT count? 1,160\nBldg MULTIPOLYGON count? 48,840\nTrip count? 1,000,000\n" + ] + } + ], + "source": [ + "df_bldg = spark.read.table(\"building_50k\").where(mos.st_geometrytype(F.col(\"geom_wkt\")) == \"POINT\")\n", + "df_bldg_shape = spark.read.table(\"building_50k\").where(mos.st_geometrytype(F.col(\"geom_wkt\")) == \"MULTIPOLYGON\")\n", + "df_trip = spark.read.table(\"taxi_trip_1m\")\n", + "\n", + "# sanity checks on counts (may vary based on your sample)\n", + "print(f\"Bldg POINT count? {df_bldg.count():,}\")\n", + "print(f\"Bldg MULTIPOLYGON count? {df_bldg_shape.count():,}\")\n", + "print(f\"Trip count? {df_trip.count():,}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "bbeb3509-ca83-4a2c-a76a-2ae37551c9ce", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Render with Kepler\n", + "> We will render our building shapes and krings and kdiscs / kloops around the shapes; showing 1% subset of building, you can pan and zoom in the viewport." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7fd2b313-4d49-4089-84a3-04dbfd57938a", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "621dca4f-2c35-4be7-97b7-346e588116cf", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b7e3986e-f42d-4dd7-9c87-116001c79dcd", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# df_bldg_shape \"geom_wkt\" \"geometry\" 500" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "50fd814d-7db7-46ff-b727-4d36d3be8a3e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> In order to find out the nearest neighbors we can create a kring around each of our point of interests. For that purpose mosaic comes with geometry aware kring and kdisc / kloop (hexring) implementations. These expressions also have their auto-explode versions that we are going to use here. It is much easier to join already exploded cell IDs between 2 datasets. __Note: the gridding system is h3 [[1](https://docs.databricks.com/en/sql/language-manual/sql-ref-h3-geospatial-functions.html)|[2](https://h3geo.org/)] by default; this example uses resolution 9 and does just 1 kring around the geometry.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "15c88bf4-75c8-4deb-bf18-7f50cade8151", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "with_kring_1 = df_bldg_shape.select(\n", + " \"geom_wkt\",\n", + " mos.grid_geometrykringexplode(\"geom_wkt\", F.lit(9), F.lit(1))\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a6fe03e8-6452-4a7e-93c8-55855d9508da", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3a2d3407-172e-4468-81ea-bb470a3f26f1", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2b1061a2-864e-468d-96e8-d7c4bdb1dba1", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# with_kring_1 \"cellId\" \"h3\" 500" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "26ae803f-0bca-4a00-ac36-cdb0fbf5f8e1", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> But what do we do if we dont have enough neighbors in the krings we just ran? We need to keep iterating. Our second iteration and all iterations onward are kdisc / kloop based. This allows us to only compare candidates we absolutely need to compare. __Note: example uses resolution=`9` again and kloop=`2`.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "53f863b6-a923-4dbf-82f1-c9f01a121126", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "with_kdisc_2 = df_bldg_shape.select(\n", + " \"geom_wkt\",\n", + " mos.grid_geometrykloopexplode(\"geom_wkt\", F.lit(9), F.lit(2))\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "8e7baf60-1882-41b2-bdc0-fdfa2bae22a3", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ae69fd7e-e092-48f4-a017-876173afece4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "fb4cc584-6ec6-455d-8edb-6e07e31e47e1", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# with_kdisc_2 \"cellId\" \"h3\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "befd0a7f-a478-4e70-9526-d0fda29a0d23", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> This is great, but what about complex shapes that are do not require radial catchment areas? What about data like streets or rivers? Mosaic's implementation of geometry aware krings and kloops can be used here as well (not shown).\n", + "\n", + "```\n", + "with_kdisc_3 = streets.select(\n", + " F.col(\"geometry\"),\n", + " mos.grid_geometrykloopexplode(\"geometry\", F.lit(9), F.lit(2))\n", + ")\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "2c9b8b43-564c-4897-bd1f-b5df4a7a8985", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Prep for KNN\n", + "\n", + "> There are a lot of things to keep track of if one is to implemet a scalable KNN approach. Luckily Mosaic comes with an implemetation of a spark transformer that can do all of those steps for us. __Note: The following requires [Databricks Runtime for Machine Learning](https://docs.databricks.com/en/release-notes/runtime/index.html).__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "207c838c-3f71-493a-9ab0-f3bd4464db8a", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/11/27 17:38:37 INFO mlflow.tracking.fluent: Autologging successfully enabled for pyspark.\n2023/11/27 17:38:37 INFO mlflow.tracking.fluent: Autologging successfully enabled for pyspark.ml.\n" + ] + } + ], + "source": [ + "from mosaic.models import SpatialKNN\n", + "import mlflow\n", + "\n", + "mlflow.autolog(disable=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "7230d971-c6aa-4295-876c-4bc01469ac16", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Look at Landmarks (`df_bldg_shape` | ~48K)__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2648390e-b776-4074-aab9-9e823443d19f", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "landmarks (building shapes) count? 48,840\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
base_bblbincnstrct_yrdoitt_idfeat_codegeomsourceglobalidgroundelevheightrooflstmoddatelststatypempluto_bblnameshape_areashape_lengeom_wktis_valid
40320800044574701192512016345110Photogramm{0493656C-85A1-4943-9061-281C9FEB33BA}6415.042017-08-17T00:00:00.000Constructed4032080004null0.00.0MULTIPOLYGON (((-73.8545691983773 40.71240691824138, -73.85450439415116 40.71238320422216, -73.8545268433918 40.712347683085575, -73.85459854980775 40.712373923641536, -73.85457857898825 40.71240552349207, -73.85457167676932 40.712402996941606, -73.8545691983773 40.71240691824138)))true
4034560010408256819307175432100Photogramm{16EF9995-7325-48E6-A47B-83014B157BC6}7637.212017-08-22T00:00:00.000Constructed4034560010null0.00.0MULTIPOLYGON (((-73.90834122368813 40.70186200477241, -73.90835071312429 40.70185270643405, -73.90831293543681 40.70183037695949, -73.90830344599857 40.7018396752948, -73.90822862016675 40.7017954473286, -73.90825754228445 40.70176710604632, -73.90828798097903 40.70173727921914, -73.90836280796816 40.701781507148, -73.90835706146972 40.70178713797922, -73.90835417637156 40.701789965091926, -73.90839195404996 40.70181229455309, -73.90840058564466 40.70180383660631, -73.90848623665563 40.701854463103636, -73.908426875912 40.70191263131447, -73.90834122368813 40.70186200477241)))true
5043130025510545019804306322100Photogramm{93D7D4EA-36F2-4160-9571-EFAA31AF05AD}8425.142017-08-22T00:00:00.000Constructed5043130025null0.00.0MULTIPOLYGON (((-74.1269721146288 40.57417949547929, -74.12694018673571 40.57417522445134, -74.12693909742006 40.574179962418604, -74.12691535940886 40.57417678727848, -74.12679587556198 40.574160806118144, -74.12681595670063 40.57407351313443, -74.12688779788068 40.57408312255846, -74.12699832508223 40.57409790501996, -74.12698118065005 40.574172434344625, -74.12697933467022 40.57418046096693, -74.1269721146288 40.57417949547929)))true
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "4032080004", + "4574701", + "1925", + "1201634", + "5110", + "Photogramm", + "{0493656C-85A1-4943-9061-281C9FEB33BA}", + "64", + "15.04", + "2017-08-17T00:00:00.000", + "Constructed", + "4032080004", + null, + "0.0", + "0.0", + "MULTIPOLYGON (((-73.8545691983773 40.71240691824138, -73.85450439415116 40.71238320422216, -73.8545268433918 40.712347683085575, -73.85459854980775 40.712373923641536, -73.85457857898825 40.71240552349207, -73.85457167676932 40.712402996941606, -73.8545691983773 40.71240691824138)))", + true + ], + [ + "4034560010", + "4082568", + "1930", + "717543", + "2100", + "Photogramm", + "{16EF9995-7325-48E6-A47B-83014B157BC6}", + "76", + "37.21", + "2017-08-22T00:00:00.000", + "Constructed", + "4034560010", + null, + "0.0", + "0.0", + "MULTIPOLYGON (((-73.90834122368813 40.70186200477241, -73.90835071312429 40.70185270643405, -73.90831293543681 40.70183037695949, -73.90830344599857 40.7018396752948, -73.90822862016675 40.7017954473286, -73.90825754228445 40.70176710604632, -73.90828798097903 40.70173727921914, -73.90836280796816 40.701781507148, -73.90835706146972 40.70178713797922, -73.90835417637156 40.701789965091926, -73.90839195404996 40.70181229455309, -73.90840058564466 40.70180383660631, -73.90848623665563 40.701854463103636, -73.908426875912 40.70191263131447, -73.90834122368813 40.70186200477241)))", + true + ], + [ + "5043130025", + "5105450", + "1980", + "430632", + "2100", + "Photogramm", + "{93D7D4EA-36F2-4160-9571-EFAA31AF05AD}", + "84", + "25.14", + "2017-08-22T00:00:00.000", + "Constructed", + "5043130025", + null, + "0.0", + "0.0", + "MULTIPOLYGON (((-74.1269721146288 40.57417949547929, -74.12694018673571 40.57417522445134, -74.12693909742006 40.574179962418604, -74.12691535940886 40.57417678727848, -74.12679587556198 40.574160806118144, -74.12681595670063 40.57407351313443, -74.12688779788068 40.57408312255846, -74.12699832508223 40.57409790501996, -74.12698118065005 40.574172434344625, -74.12697933467022 40.57418046096693, -74.1269721146288 40.57417949547929)))", + true + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "base_bbl", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "bin", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "cnstrct_yr", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "doitt_id", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "feat_code", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geomsource", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "globalid", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "groundelev", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "heightroof", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "lstmoddate", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "lststatype", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "mpluto_bbl", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "shape_area", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "shape_len", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "is_valid", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "print(f\"landmarks (building shapes) count? {df_bldg_shape.count():,}\")\n", + "df_bldg_shape.limit(3).display()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "6e81d255-ee83-47e1-ab25-62a8d5527243", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Look at Candidates (`df_trip` | 1M)__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4b7780e0-9a31-4658-8e07-41a8dbb74f8e", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "\tcandidates (trips) count? 1,000,000\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
vendor_idpickup_datetimedropoff_datetimepassenger_counttrip_distancepickup_longitudepickup_latituderate_code_idstore_and_fwd_flagdropoff_longitudedropoff_latitudepayment_typefare_amountextramta_taxtip_amounttolls_amounttotal_amountpickup_pointdropoff_point
VTS2009-11-29T03:24:00.000+00002009-11-29T03:39:00.000+000015.2-73.98892240.722nullnull-73.95042240.7836CASH14.10.50.50.00.015.1POINT (-73.988922 40.722)POINT (-73.950422 40.7836)
VTS2009-11-15T01:03:00.000+00002009-11-15T01:14:00.000+000012.75-74.00879240.708683nullnull-73.99070840.732917CASH8.90.50.50.00.09.9POINT (-74.008792 40.708683)POINT (-73.990708 40.732917)
VTS2009-11-18T18:44:00.000+00002009-11-18T19:04:00.000+000013.81-74.00937540.712577nullnull-73.98143540.760865CASH12.51.00.50.00.014.0POINT (-74.009375 40.712577)POINT (-73.981435 40.760865)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "VTS", + "2009-11-29T03:24:00.000+0000", + "2009-11-29T03:39:00.000+0000", + 1, + 5.2, + -73.988922, + 40.722, + null, + null, + -73.950422, + 40.7836, + "CASH", + 14.1, + 0.5, + 0.5, + 0.0, + 0.0, + 15.1, + "POINT (-73.988922 40.722)", + "POINT (-73.950422 40.7836)" + ], + [ + "VTS", + "2009-11-15T01:03:00.000+0000", + "2009-11-15T01:14:00.000+0000", + 1, + 2.75, + -74.008792, + 40.708683, + null, + null, + -73.990708, + 40.732917, + "CASH", + 8.9, + 0.5, + 0.5, + 0.0, + 0.0, + 9.9, + "POINT (-74.008792 40.708683)", + "POINT (-73.990708 40.732917)" + ], + [ + "VTS", + "2009-11-18T18:44:00.000+0000", + "2009-11-18T19:04:00.000+0000", + 1, + 3.81, + -74.009375, + 40.712577, + null, + null, + -73.981435, + 40.760865, + "CASH", + 12.5, + 1.0, + 0.5, + 0.0, + 0.0, + 14.0, + "POINT (-74.009375 40.712577)", + "POINT (-73.981435 40.760865)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "vendor_id", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "dropoff_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "passenger_count", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_longitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_latitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "rate_code_id", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "store_and_fwd_flag", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_longitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "dropoff_latitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "payment_type", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "fare_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "extra", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "mta_tax", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tip_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tolls_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "total_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_point", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_point", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "print(f\"\\tcandidates (trips) count? {df_trip.count():,}\")\n", + "df_trip.limit(3).display()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "45c65747-5925-47d0-8a2f-b5a2dd93ca75", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Run the KNN Transform\n", + "\n", + "> In this example we will compare ~50K building shapes (polygons) to 1M taxi trips (points). Since this approach is defined as an algorithm it can be easily chained. E.g. We could, as a follow-on, check using another instance of the knn model which streets are closest to the set of taxi trips that are idetified in the first run (not shown).\n", + "\n", + "The transformer has the following parameters, from [here](https://databrickslabs.github.io/mosaic/models/spatial-knn.html):\n", + "\n", + "

\n", + "\n", + "* `candidatesDf`: the dataframe containing the geometries that will be used as candidates for the KNN search\n", + "* `candidatesFeatureCol`: the name of the column that contains the candidates geometries\n", + "* `candidatesRowID`: the name of the column that contains the candidates ids\n", + "* `landmarksFeatureCol`: the name of the column that contains the landmarks geometries\n", + "* `landmarksRowID`: the name of the column that contains the landmarks ids\n", + "* `kNeighbours`: the number of neighbours to return\n", + "* `maxIterations`: the maximum number of iterations to perform\n", + "* `distanceThreshold`: the distance threshold to stop the iterations (in CRS units)\n", + "* `earlyStopIterations`: the number of subsequent iterations upon which to stop if no new neighbours\n", + "* `checkpointTablePrefix`: the prefix of the checkpoint table\n", + "* `indexResolution`: the resolution of the index (grid system specific)\n", + "* `approximate`: whether to stop after max iterations (approximate = true) or to perform the finalisation step (approximate = false) - no default value, the caller must specify this parameter" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6931dae2-6f94-4b57-b3c1-905c2d2de839", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "with mlflow.start_run(): \n", + "\n", + " knn = SpatialKNN()\n", + " knn.setUseTableCheckpoint(True)\n", + " knn.setCheckpointTablePrefix(\"checkpoint_table_knn\")\n", + " knn.model.cleanupCheckpoint\n", + " \n", + " knn.setApproximate(True)\n", + " knn.setKNeighbours(20)\n", + " knn.setIndexResolution(10)\n", + " knn.setMaxIterations(10)\n", + " knn.setEarlyStopIterations(3)\n", + " knn.setDistanceThreshold(1.0)\n", + " \n", + " knn.setLandmarksFeatureCol(\"geom_wkt\")\n", + " knn.setLandmarksRowID(\"landmarks_id\")\n", + " \n", + " knn.setCandidatesFeatureCol(\"pickup_point\")\n", + " knn.setCandidatesRowID(\"candidates_id\")\n", + " knn.setCandidatesDf(df_trip.where(\"pickup_point is not null\"))\n", + "\n", + " df_neigh = knn.transform(df_bldg_shape)\n", + " \n", + " mlflow.log_params(knn.getParams())\n", + " mlflow.log_metrics(knn.getMetrics())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "f0e5e9a2-1cd1-426d-a6f9-9372a39694f0", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Here is an example of a generated (reproducible) experiment run._\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "abba45f2-0155-428c-9f92-8644bfc0c5d2", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "0b784847-5d8c-423e-ba2c-d2a692672f74", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Generate KNN Transform Result Table `transform_result` (~620K)__\n", + "\n", + "> Write out the results from `df_neigh` to delta lake " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6afe00db-01ca-4f18-8424-593fc70f9ef2", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "(\n", + " df_neigh\n", + " .write\n", + " .format(\"delta\")\n", + " .mode(\"overwrite\")\n", + " .saveAsTable(f\"transform_result\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "df08f36f-01b4-4316-8cea-f45cfc754936", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "SpatialKNN transform count? 672,085\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "

landmarks_idcandidates_idbase_bblbincnstrct_yrdoitt_idfeat_codegeomsourceglobalidgroundelevheightrooflstmoddatelststatypempluto_bblnameshape_areashape_lengeom_wktis_validiterationmatch_radiusvendor_idpickup_datetimedropoff_datetimepassenger_counttrip_distancepickup_longitudepickup_latituderate_code_idstore_and_fwd_flagdropoff_longitudedropoff_latitudepayment_typefare_amountextramta_taxtip_amounttolls_amounttotal_amountpickup_pointdropoff_pointgeom_wkt_pickup_point_distanceneighbour_number
2711806532039990048204229419265999122100Photogramm{7BD3CEAE-C07F-4813-B459-B63E4C65DCE3}4123.812017-08-22T00:00:00.000Constructed2039990048null0.00.0MULTIPOLYGON (((-73.85008652889444 40.84198940079596, -73.85004043789522 40.84202461954545, -73.84988295321862 40.84214495395065, -73.84982454680676 40.84210086986926, -73.8498946040775 40.84204733842935, -73.8500281224862 40.841945315915964, -73.85008652889444 40.84198940079596)))true2nullVTS2009-05-15T03:59:00.000+00002009-05-15T04:03:00.000+000020.84-73.84823740.843122nullnull-73.83659740.843998CASH4.10.5null0.00.04.6POINT (-73.848237 40.843122)POINT (-73.836597 40.843998)0.00188759413210478051
2717078572039990048204229419265999122100Photogramm{7BD3CEAE-C07F-4813-B459-B63E4C65DCE3}4123.812017-08-22T00:00:00.000Constructed2039990048null0.00.0MULTIPOLYGON (((-73.85008652889444 40.84198940079596, -73.85004043789522 40.84202461954545, -73.84988295321862 40.84214495395065, -73.84982454680676 40.84210086986926, -73.8498946040775 40.84204733842935, -73.8500281224862 40.841945315915964, -73.85008652889444 40.84198940079596)))true2nullVTS2012-10-16T11:36:00.000+00002012-10-16T11:50:00.000+000011.91-73.85021740.8443151null-73.84589340.838313CRD10.50.00.51.00.012.0POINT (-73.850217 40.844315)POINT (-73.845893 40.838313)0.00219560631909489862
2716270882039990048204229419265999122100Photogramm{7BD3CEAE-C07F-4813-B459-B63E4C65DCE3}4123.812017-08-22T00:00:00.000Constructed2039990048null0.00.0MULTIPOLYGON (((-73.85008652889444 40.84198940079596, -73.85004043789522 40.84202461954545, -73.84988295321862 40.84214495395065, -73.84982454680676 40.84210086986926, -73.8498946040775 40.84204733842935, -73.8500281224862 40.841945315915964, -73.85008652889444 40.84198940079596)))true2nullCMT2010-09-06T19:58:23.000+00002010-09-06T20:06:24.000+000022.6-73.84688240.8421231N-73.8431640.843225CRD8.10.50.51.360.010.46POINT (-73.846882 40.842123)POINT (-73.84316 40.843225)0.0029426300230721023
2713255702039990048204229419265999122100Photogramm{7BD3CEAE-C07F-4813-B459-B63E4C65DCE3}4123.812017-08-22T00:00:00.000Constructed2039990048null0.00.0MULTIPOLYGON (((-73.85008652889444 40.84198940079596, -73.85004043789522 40.84202461954545, -73.84988295321862 40.84214495395065, -73.84982454680676 40.84210086986926, -73.8498946040775 40.84204733842935, -73.8500281224862 40.841945315915964, -73.85008652889444 40.84198940079596)))true30.002942630023072102VTS2011-08-09T15:07:00.000+00002011-08-09T15:52:00.000+000025.39-73.8457240.8426371null-73.84111540.84522CRD23.30.00.54.660.028.46POINT (-73.84572 40.842637)POINT (-73.841115 40.84522)0.0041394130025831834
2712198882039990048204229419265999122100Photogramm{7BD3CEAE-C07F-4813-B459-B63E4C65DCE3}4123.812017-08-22T00:00:00.000Constructed2039990048null0.00.0MULTIPOLYGON (((-73.85008652889444 40.84198940079596, -73.85004043789522 40.84202461954545, -73.84988295321862 40.84214495395065, -73.84982454680676 40.84210086986926, -73.8498946040775 40.84204733842935, -73.8500281224862 40.841945315915964, -73.85008652889444 40.84198940079596)))true50.006319279550955254VTS2012-04-06T15:48:00.000+00002012-04-06T16:10:00.000+000054.98-73.85041740.8371681null-73.85041740.837168CSH15.30.00.50.00.015.8POINT (-73.850417 40.837168)POINT (-73.850417 40.837168)0.004793117261415765
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 271, + 180653, + "2039990048", + "2042294", + "1926", + "599912", + "2100", + "Photogramm", + "{7BD3CEAE-C07F-4813-B459-B63E4C65DCE3}", + "41", + "23.81", + "2017-08-22T00:00:00.000", + "Constructed", + "2039990048", + null, + "0.0", + "0.0", + "MULTIPOLYGON (((-73.85008652889444 40.84198940079596, -73.85004043789522 40.84202461954545, -73.84988295321862 40.84214495395065, -73.84982454680676 40.84210086986926, -73.8498946040775 40.84204733842935, -73.8500281224862 40.841945315915964, -73.85008652889444 40.84198940079596)))", + true, + 2, + null, + "VTS", + "2009-05-15T03:59:00.000+0000", + "2009-05-15T04:03:00.000+0000", + 2, + 0.84, + -73.848237, + 40.843122, + null, + null, + -73.836597, + 40.843998, + "CASH", + 4.1, + 0.5, + null, + 0.0, + 0.0, + 4.6, + "POINT (-73.848237 40.843122)", + "POINT (-73.836597 40.843998)", + 0.0018875941321047805, + 1 + ], + [ + 271, + 707857, + "2039990048", + "2042294", + "1926", + "599912", + "2100", + "Photogramm", + "{7BD3CEAE-C07F-4813-B459-B63E4C65DCE3}", + "41", + "23.81", + "2017-08-22T00:00:00.000", + "Constructed", + "2039990048", + null, + "0.0", + "0.0", + "MULTIPOLYGON (((-73.85008652889444 40.84198940079596, -73.85004043789522 40.84202461954545, -73.84988295321862 40.84214495395065, -73.84982454680676 40.84210086986926, -73.8498946040775 40.84204733842935, -73.8500281224862 40.841945315915964, -73.85008652889444 40.84198940079596)))", + true, + 2, + null, + "VTS", + "2012-10-16T11:36:00.000+0000", + "2012-10-16T11:50:00.000+0000", + 1, + 1.91, + -73.850217, + 40.844315, + 1, + null, + -73.845893, + 40.838313, + "CRD", + 10.5, + 0.0, + 0.5, + 1.0, + 0.0, + 12.0, + "POINT (-73.850217 40.844315)", + "POINT (-73.845893 40.838313)", + 0.0021956063190948986, + 2 + ], + [ + 271, + 627088, + "2039990048", + "2042294", + "1926", + "599912", + "2100", + "Photogramm", + "{7BD3CEAE-C07F-4813-B459-B63E4C65DCE3}", + "41", + "23.81", + "2017-08-22T00:00:00.000", + "Constructed", + "2039990048", + null, + "0.0", + "0.0", + "MULTIPOLYGON (((-73.85008652889444 40.84198940079596, -73.85004043789522 40.84202461954545, -73.84988295321862 40.84214495395065, -73.84982454680676 40.84210086986926, -73.8498946040775 40.84204733842935, -73.8500281224862 40.841945315915964, -73.85008652889444 40.84198940079596)))", + true, + 2, + null, + "CMT", + "2010-09-06T19:58:23.000+0000", + "2010-09-06T20:06:24.000+0000", + 2, + 2.6, + -73.846882, + 40.842123, + 1, + "N", + -73.84316, + 40.843225, + "CRD", + 8.1, + 0.5, + 0.5, + 1.36, + 0.0, + 10.46, + "POINT (-73.846882 40.842123)", + "POINT (-73.84316 40.843225)", + 0.002942630023072102, + 3 + ], + [ + 271, + 325570, + "2039990048", + "2042294", + "1926", + "599912", + "2100", + "Photogramm", + "{7BD3CEAE-C07F-4813-B459-B63E4C65DCE3}", + "41", + "23.81", + "2017-08-22T00:00:00.000", + "Constructed", + "2039990048", + null, + "0.0", + "0.0", + "MULTIPOLYGON (((-73.85008652889444 40.84198940079596, -73.85004043789522 40.84202461954545, -73.84988295321862 40.84214495395065, -73.84982454680676 40.84210086986926, -73.8498946040775 40.84204733842935, -73.8500281224862 40.841945315915964, -73.85008652889444 40.84198940079596)))", + true, + 3, + 0.002942630023072102, + "VTS", + "2011-08-09T15:07:00.000+0000", + "2011-08-09T15:52:00.000+0000", + 2, + 5.39, + -73.84572, + 40.842637, + 1, + null, + -73.841115, + 40.84522, + "CRD", + 23.3, + 0.0, + 0.5, + 4.66, + 0.0, + 28.46, + "POINT (-73.84572 40.842637)", + "POINT (-73.841115 40.84522)", + 0.004139413002583183, + 4 + ], + [ + 271, + 219888, + "2039990048", + "2042294", + "1926", + "599912", + "2100", + "Photogramm", + "{7BD3CEAE-C07F-4813-B459-B63E4C65DCE3}", + "41", + "23.81", + "2017-08-22T00:00:00.000", + "Constructed", + "2039990048", + null, + "0.0", + "0.0", + "MULTIPOLYGON (((-73.85008652889444 40.84198940079596, -73.85004043789522 40.84202461954545, -73.84988295321862 40.84214495395065, -73.84982454680676 40.84210086986926, -73.8498946040775 40.84204733842935, -73.8500281224862 40.841945315915964, -73.85008652889444 40.84198940079596)))", + true, + 5, + 0.006319279550955254, + "VTS", + "2012-04-06T15:48:00.000+0000", + "2012-04-06T16:10:00.000+0000", + 5, + 4.98, + -73.850417, + 40.837168, + 1, + null, + -73.850417, + 40.837168, + "CSH", + 15.3, + 0.0, + 0.5, + 0.0, + 0.0, + 15.8, + "POINT (-73.850417 40.837168)", + "POINT (-73.850417 40.837168)", + 0.00479311726141576, + 5 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "landmarks_id", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "candidates_id", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "base_bbl", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "bin", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "cnstrct_yr", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "doitt_id", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "feat_code", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geomsource", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "globalid", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "groundelev", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "heightroof", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "lstmoddate", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "lststatype", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "mpluto_bbl", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "shape_area", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "shape_len", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "is_valid", + "type": "\"boolean\"" + }, + { + "metadata": "{}", + "name": "iteration", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "match_radius", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "vendor_id", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "dropoff_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "passenger_count", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_longitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_latitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "rate_code_id", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "store_and_fwd_flag", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_longitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "dropoff_latitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "payment_type", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "fare_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "extra", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "mta_tax", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tip_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tolls_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "total_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_point", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_point", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geom_wkt_pickup_point_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "neighbour_number", + "type": "\"integer\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df_result = spark.table(f\"transform_result\")\n", + "print(f\"SpatialKNN transform count? {df_result.count():,}\")\n", + "df_result.limit(5).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "0ce58d33-a998-4246-a222-28a7281f3ab8", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Render Transform Results\n", + "\n", + "> Finally we can render our knn sets (from `df_neigh`) in kepler and verify that results make sense." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d8e8557d-1e0d-41e6-9bc8-ad8397ba7207", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "knn_geoms = df_result.select(\"geom_wkt\", \"pickup_point\", \"dropoff_point\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "326cfb02-f91a-4eba-8f20-96ea2a8a6828", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ed99f908-8e82-402b-8fc2-ec85a4565d1e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2389db0c-4e4a-47af-9bb3-88ffab3ded91", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# knn_geoms \"geom_wkt\" \"geometry\" " + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 85549842141315, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "02. Spatial KNN", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/SpatialKNN/02. Spatial KNN.py b/notebooks/examples/python/SpatialKNN/02. Spatial KNN.py deleted file mode 100644 index 980ff05bd..000000000 --- a/notebooks/examples/python/SpatialKNN/02. Spatial KNN.py +++ /dev/null @@ -1,242 +0,0 @@ -# Databricks notebook source -# MAGIC %md -# MAGIC # Scalable KNN on Databricks with Mosaic -# MAGIC -# MAGIC > See [[Blog](https://medium.com/@milos.colic/scalable-spatial-nearest-neighbours-with-mosaic-336ce37edbae) | [Mosaic Docs](https://databrickslabs.github.io/mosaic/models/spatial-knn.html) | [SpatialKNN API](https://github.com/databrickslabs/mosaic/blob/main/python/mosaic/models/knn/spatial_knn.py)] -# MAGIC -# MAGIC _Note: Make sure you run this on Databricks ML Runtime._ - -# COMMAND ---------- - -# MAGIC %md -# MAGIC > Usually when asserting the notion of nearest neighbors we bound that notion to the _K_ neighbors, if left unbound the answers produced by the analysis are basically orderings of the whole data assets based on the proximity/distance and the computational costs to produce such outputs can be very prohibitive since they would result in comparing all features across all data assets. -# MAGIC -# MAGIC __Optimized Algorithm (Right Side Below)__ -# MAGIC

-# MAGIC -# MAGIC 1. For each geometry in set L generate a kloop (hollow ring) -# MAGIC 1. Generate match candidates within -# MAGIC 1. For each match candidate C calculate the distance to the landmark -# MAGIC 1. For each L[i] count the matches; stop if count = k -# MAGIC 1. If count < k, increase the size of the kloop; repeat (s1) -# MAGIC 1. If count > k, remove matches furthest from the L[i]; stop -# MAGIC 1. Optional: early stopping if no new match candidates are found in the kloop of any L geometry for N iterations -# MAGIC 1. Continue with the next kloop up to max iterations -# MAGIC 1. Return C geometries with smallest distance to each L[i] - -# COMMAND ---------- - -# MAGIC %python -# MAGIC -# MAGIC displayHTML(f""" -# MAGIC -# MAGIC """) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## Install + Enable Mosaic - -# COMMAND ---------- - -# MAGIC %pip install databricks-mosaic --quiet - -# COMMAND ---------- - -from pyspark.sql import functions as F -from pyspark.sql.functions import col, udf - -import mosaic as mos - -spark.conf.set("spark.databricks.labs.mosaic.geometry.api", "JTS") -mos.enable_mosaic(spark, dbutils) - -# COMMAND ---------- - -user_name = dbutils.notebook.entry_point.getDbutils().notebook().getContext().userName().get() -print(f"username? '{user_name}'") - -spark.sparkContext.setCheckpointDir(f"dbfs:/tmp/mosaic/{user_name}/checkpoints") -spark.conf.set("spark.databricks.optimizer.adaptive.enabled", "false") -spark.conf.set("spark.sql.shuffle.partitions", 512) - -# COMMAND ---------- - -db_name = "mosaic_spatial_knn" -sql(f"use {db_name}") - -# COMMAND ---------- - -# MAGIC %sql show tables - -# COMMAND ---------- - -# MAGIC %md ## Load Landmark + Candidates Tables -# MAGIC -# MAGIC > We will load a handfull of datasets we have prepared in our data prep notebook. For this use case we will first manually walk through the approach and then we will apply the model that comes with mosaic. - -# COMMAND ---------- - -df_bldg = spark.read.table("building_50k").where(mos.st_geometrytype(F.col("geom_wkt")) == "Point") -df_bldg_shape = spark.read.table("building_50k").where(mos.st_geometrytype(F.col("geom_wkt")) == "MultiPolygon") -df_trip = spark.read.table("taxi_trip_1m") - -# COMMAND ---------- - -# MAGIC %md ## Render with Kepler -# MAGIC > We will render our building shapes and krings and kdiscs / kloops around the shapes. - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC df_bldg_shape "geom_wkt" "geometry" 500 - -# COMMAND ---------- - -# MAGIC %md -# MAGIC > In order to find out the nearest neighbors we can create a kring around each of our point of interests. For that purpose mosaic comes with geometry concious kring and kdisc / kloop (hexring) implementations. These expressions also have their auto-explode versions that we are going to use here. It is much easier to join already exploded cell IDs between 2 datasets. - -# COMMAND ---------- - -with_kring_1 = df_bldg_shape.select( - F.col("geom_wkt"), - mos.grid_geometrykringexplode("geom_wkt", F.lit(9), F.lit(1)) -) - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC with_kring_1 "cellId" "h3" 500 - -# COMMAND ---------- - -# MAGIC %md -# MAGIC > But what do we do if we dont have enough neighbors in the krings we just ran? We need to keep iterating. Our second iteration and all iterations onward are kdisc / kloop based. This allows us to only compare candidates we absolutely need to compare. - -# COMMAND ---------- - -with_kdisc_2 = df_bldg_shape.select( - F.col("geom_wkt"), - mos.grid_geometrykloopexplode("geom_wkt", F.lit(9), F.lit(2)) -) - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC with_kdisc_2 "cellId" "h3" - -# COMMAND ---------- - -# MAGIC %md -# MAGIC > This is great, but what about complex shapes that are do not require radial catchment areas? What about data like streets or rivers? Mosaic's implementation of geometry concious krings and kloops can be used here as well (not shown). -# MAGIC -# MAGIC ``` -# MAGIC with_kdisc_3 = streets.select( -# MAGIC F.col("geometry"), -# MAGIC mos.grid_geometrykloopexplode("geometry", F.lit(9), F.lit(2)) -# MAGIC ) -# MAGIC ``` - -# COMMAND ---------- - -# MAGIC %md ## Prep for KNN -# MAGIC -# MAGIC > There are a lot of things to keep track of if one is to implemet a scalable KNN approach. Luckily Mosaic comes with an implemetation of a spark transformer that can do all of those steps for us. - -# COMMAND ---------- - -from mosaic.models import SpatialKNN -import mlflow -mlflow.autolog(disable=False) - -# COMMAND ---------- - -# MAGIC %md __Look at Landmarks (`df_bldg_shape` | ~48K)__ - -# COMMAND ---------- - -print(f"landmarks (building shapes) count? {df_bldg_shape.count():,}") -df_bldg_shape.limit(3).display() - -# COMMAND ---------- - -# MAGIC %md __Look at Candidates (`df_trip` | 1M)__ - -# COMMAND ---------- - -print(f"\tcandidates (trips) count? {df_trip.count():,}") -df_trip.limit(3).display() - -# COMMAND ---------- - -# MAGIC %md ## Run the KNN Transform -# MAGIC -# MAGIC > In this example we will compare ~50K building shapes (polygons) to 1M taxi trips (points). Since this approach is defined as an algorithm it can be easily chained. E.g. We could, as a follow-on, check using another instance of the knn model which streets are closest to the set of taxi trips that are idetified in the first run (not shown). - -# COMMAND ---------- - -with mlflow.start_run(): - - knn = SpatialKNN() - knn.setUseTableCheckpoint(True) - knn.setCheckpointTablePrefix("checkpoint_table_knn") - knn.model.cleanupCheckpoint - - knn.setApproximate(True) - knn.setKNeighbours(20) - knn.setIndexResolution(10) - knn.setMaxIterations(10) - knn.setEarlyStopIterations(3) - knn.setDistanceThreshold(1.0) - - knn.setLandmarksFeatureCol("geom_wkt") - knn.setLandmarksRowID("landmarks_id") - - knn.setCandidatesFeatureCol("pickup_point") - knn.setCandidatesRowID("candidates_id") - knn.setCandidatesDf(df_trip.where("pickup_point is not null")) - - df_neigh = knn.transform(df_bldg_shape) - - mlflow.log_params(knn.getParams()) - mlflow.log_metrics(knn.getMetrics()) - -# COMMAND ---------- - -# MAGIC %md __Generate KNN Transform Result Table `transform_result` (~620K)__ -# MAGIC -# MAGIC > Write out the results from `df_neigh` to delta lake - -# COMMAND ---------- - -( - df_neigh - .write - .format("delta") - .mode("overwrite") - .saveAsTable(f"{db_name}.transform_result") -) - -# COMMAND ---------- - -df_result = spark.table(f"{db_name}.transform_result") -print(f"SpatialKNN transform count? {df_result.count():,}") -df_result.display() - -# COMMAND ---------- - -# MAGIC %md ## Render Transform Results -# MAGIC -# MAGIC > Finally we can render our knn sets (from `df_neigh`) in kepler and verify that results make sense. - -# COMMAND ---------- - -knn_geoms = df_result.select("geom_wkt", "pickup_point", "dropoff_point") - -# COMMAND ---------- - -# MAGIC %%mosaic_kepler -# MAGIC knn_geoms "geom_wkt" "geometry" diff --git a/notebooks/examples/python/SpatialKNN/README.md b/notebooks/examples/python/SpatialKNN/README.md index bfa267138..8a1731385 100644 --- a/notebooks/examples/python/SpatialKNN/README.md +++ b/notebooks/examples/python/SpatialKNN/README.md @@ -2,6 +2,8 @@ ### This is a self-contained example for running Spatial K-Nearest Neighbors in Mosaic. +> Note: `ipynb` files can be previewed in GitHub and can also be imported into Databricks, more [here](https://docs.databricks.com/en/notebooks/notebook-export-import.html). + __Notebooks + Tables:__

diff --git a/notebooks/examples/python/TransformBNG/README.md b/notebooks/examples/python/TransformBNG/README.md new file mode 100644 index 000000000..01a488a89 --- /dev/null +++ b/notebooks/examples/python/TransformBNG/README.md @@ -0,0 +1,3 @@ +# Transform + Join British National Grid + +> Note: `ipynb` files can be previewed in GitHub and can also be imported into Databricks, more [here](https://docs.databricks.com/en/notebooks/notebook-export-import.html); also, though this focuses on transforming from EPSG:4326 into BNG Coordinate Reference System, the example is applicable for any [ST_Transform](https://databrickslabs.github.io/mosaic/api/spatial-functions.html#st_transform) pattern. diff --git a/notebooks/examples/python/TransformBNG/transform_join_bng.ipynb b/notebooks/examples/python/TransformBNG/transform_join_bng.ipynb new file mode 100644 index 000000000..8b7a622e9 --- /dev/null +++ b/notebooks/examples/python/TransformBNG/transform_join_bng.ipynb @@ -0,0 +1,5556 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "8b99536c-bb54-4da1-a917-7a8ba43bac82", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# BNG: Transform + Join\n", + "\n", + "> Example of transforming WGS84 (EPSG:4326) into British National Grid (EPSG:27700), performing a spatial point-in-polygon join, and then generating a heat map of the results. More at Mosaic Docs [[BNG](https://databrickslabs.github.io/mosaic/usage/grid-indexes-bng.html) | [ST_Transform](https://databrickslabs.github.io/mosaic/api/spatial-functions.html#st_transform) | [ST_SetSRID](https://databrickslabs.github.io/mosaic/api/spatial-functions.html#st_setsrid)].\n", + "\n", + "1. To use Databricks Labs [Mosaic](https://databrickslabs.github.io/mosaic/index.html) library for geospatial data engineering, analysis, and visualization functionality:\n", + " * Install with `%pip install databricks-mosaic`\n", + " * Import and use with the following:\n", + " ```\n", + " import mosaic as mos\n", + " mos.enable_mosaic(spark, dbutils)\n", + " ```\n", + "

\n", + "\n", + "2. To use [KeplerGl](https://kepler.gl/) OSS library for map layer rendering:\n", + " * Already installed with Mosaic, use `%%mosaic_kepler` magic [[Mosaic Docs](https://databrickslabs.github.io/mosaic/usage/kepler.html)]\n", + " * Import with `from keplergl import KeplerGl` to use directly\n", + "\n", + "If you have trouble with Volume access:\n", + "\n", + "* For Mosaic 0.3 series (< DBR 13) - you can copy resources to DBFS as a workaround\n", + "* For Mosaic 0.4 series (DBR 13.3 LTS) - you will need to either copy resources to DBFS or setup for Unity Catalog + Shared Access which will involve your workspace admin. Instructions, as updated, will be [here](https://databrickslabs.github.io/mosaic/usage/install-gdal.html).\n", + "\n", + "--- \n", + " __Last Update__ 28 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "939b71aa-e0b2-49b5-859c-c8eac6a55d62", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Install Mosaic\n", + "\n", + "> Mosaic framework is available via pip install and it comes with bindings for Python, SQL, Scala and R. The wheel file coming with pip installation is registering any necessary jars for other language support." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "13cae37b-6613-424b-a6fa-fadfc04b1680", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet # <- Mosaic 0.3 series\n", + "# %pip install \"databricks-mosaic<0.5,>=0.4\" --quiet # <- Mosaic 0.4 series (as available)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "1e29541a-626f-4d51-b355-41882f0886eb", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Enable Mosaic in the notebook\n", + "\n", + "> To get started, you'll need to attach the wheel to your cluster and import instances as in the cell below. The defautl grid index system is set to H3. In order to use British National Grid you'll need to set the configuration parameter." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d6a60d91-69af-40fc-8e05-71bca8bd583f", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "spark.conf.set(\"spark.sql.shuffle.partitions\", 1_024) # <-- default is 200\n", + "\n", + "# -- import databricks + spark functions\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import col, udf\n", + "from pyspark.sql.types import *\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "spark.conf.set(\"spark.databricks.labs.mosaic.index.system\", \"BNG\")\n", + "mos.enable_mosaic(spark, dbutils)\n", + "# mos.enable_gdal(spark) # <- not needed for this example\n", + "\n", + "# --other imports\n", + "import os\n", + "import pathlib\n", + "import requests\n", + "import zipfile\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c3eb8396-ee87-4bae-8cc3-4c00179e9c9c", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Setup Catalog + Schema\n", + "\n", + "> You will want to adjust for your environment." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "bb84c94d-7e68-43e9-94bc-1219d67cc927", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[47]: DataFrame[]" + ] + } + ], + "source": [ + "catalog_name = \"mjohns\"\n", + "sql(f\"USE CATALOG {catalog_name}\")\n", + "\n", + "db_name = \"london_cycling\"\n", + "sql(f\"CREATE DATABASE IF NOT EXISTS {db_name}\")\n", + "sql(f\"USE SCHEMA {db_name}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "8d6145cb-a2d6-4e79-bc6a-7921d2942775", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup Data\n", + "\n", + "> The download snippets are setup to only download 1x." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e8b93a88-4d2d-4c71-8672-e120a1dd4c0c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Initial data stored in '/tmp/mosaic/mjohns@databricks.com'\n" + ] + } + ], + "source": [ + "user_name = dbutils.notebook.entry_point.getDbutils().notebook().getContext().userName().get()\n", + "\n", + "data_dir = f\"/tmp/mosaic/{user_name}\"\n", + "print(f\"Initial data stored in '{data_dir}'\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "6727e81c-9d4f-49a0-919d-73d4b7301ef5", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Initial London Postcodes [177]\n", + "\n", + "> Make sure we have London Postcode shapes available in our environment." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ff5530b0-5ca0-4742-81f2-8affa6104e39", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "POSTCODES_DIR_FUSE? '/dbfs/tmp/mosaic/mjohns@databricks.com/postcodes'\n" + ] + } + ], + "source": [ + "postcodes_dir = f\"{data_dir}/postcodes\"\n", + "postcodes_dir_fuse = f\"/dbfs{postcodes_dir}\"\n", + "dbutils.fs.mkdirs(postcodes_dir)\n", + "\n", + "os.environ['POSTCODES_DIR_FUSE'] = postcodes_dir_fuse\n", + "print(f\"POSTCODES_DIR_FUSE? '{postcodes_dir_fuse}'\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "df0ee902-2731-4572-93a9-2913bd7517c7", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "File ‘/dbfs/tmp/mosaic/mjohns@databricks.com/postcodes/London_Postcode_Zones.geojson’ already there; not retrieving.\n\ntotal 937K\n-rwxrwxrwx 1 root root 937K Nov 28 15:19 London_Postcode_Zones.geojson\n" + ] + } + ], + "source": [ + "%sh \n", + "wget -P $POSTCODES_DIR_FUSE -nc https://raw.githubusercontent.com/databrickslabs/mosaic/main/notebooks/data/London_Postcode_Zones.geojson\n", + "ls -lh $POSTCODES_DIR_FUSE" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d2d365e1-290a-4589-87d0-01eea5e45ea5", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Load Postcode Polygons from GeoJSON_" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "5d56dff1-c178-40a8-9436-9cbde9de5140", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 177\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "

typepropertiesjson_geometrygeometry
FeatureCollectionList(E2 postcode district, E2){\"coordinates\":[[[-0.04385,51.53179],[-0.04324,51.53155],[-0.04277,51.53153],[-0.04163,51.5311],[-0.0415,51.53073],[-0.0415,51.5307],[-0.04142,51.53057],[-0.04089,51.53015],[-0.04087,51.53013],[-0.04046,51.52965],[-0.04046,51.52958],[-0.04052,51.52941],[-0.04096,51.52886],[-0.04074,51.52868],[-0.04047,51.52738],[-0.04145,51.52711],[-0.04152,51.52714],[-0.04299,51.52695],[-0.04319,51.52677],[-0.04332,51.52673],[-0.04371,51.5267],[-0.04399,51.52655],[-0.04427,51.52646],[-0.0449,51.52659],[-0.04568,51.52638],[-0.04598,51.5265],[-0.04605,51.52651],[-0.04697,51.52632],[-0.04731,51.52601],[-0.04748,51.526],[-0.04798,51.52615],[-0.04847,51.52636],[-0.04881,51.52611],[-0.04903,51.52559],[-0.04903,51.52549],[-0.04973,51.5255],[-0.04994,51.5253],[-0.05028,51.52521],[-0.05061,51.52522],[-0.0508,51.52508],[-0.05175,51.52497],[-0.05203,51.52527],[-0.05272,51.52562],[-0.05292,51.5256],[-0.05272,51.52446],[-0.05297,51.52434],[-0.05318,51.52434],[-0.05362,51.52441],[-0.05375,51.52432],[-0.05381,51.5243],[-0.05478,51.52427],[-0.05486,51.52431],[-0.05537,51.5243],[-0.0556,51.52419],[-0.05646,51.52428],[-0.0565,51.5243],[-0.05685,51.52432],[-0.05701,51.52412],[-0.05803,51.52381],[-0.05844,51.52392],[-0.0585,51.52392],[-0.0588,51.52386],[-0.05955,51.52391],[-0.05965,51.524],[-0.06114,51.52382],[-0.06126,51.52387],[-0.06152,51.52368],[-0.06277,51.52339],[-0.063,51.52324],[-0.06344,51.52324],[-0.06371,51.52332],[-0.06426,51.52333],[-0.06452,51.52321],[-0.06593,51.52312],[-0.06628,51.52297],[-0.06663,51.52309],[-0.06722,51.52323],[-0.06832,51.52308],[-0.06866,51.52297],[-0.06878,51.52284],[-0.06913,51.52281],[-0.0697,51.52274],[-0.07002,51.52294],[-0.07184,51.52302],[-0.0716,51.52335],[-0.07159,51.52355],[-0.07121,51.52386],[-0.07098,51.52393],[-0.0708,51.52436],[-0.07093,51.52452],[-0.07167,51.52459],[-0.07187,51.52454],[-0.07205,51.52435],[-0.07242,51.52414],[-0.07245,51.52412],[-0.07258,51.52409],[-0.0731,51.52414],[-0.07339,51.52448],[-0.07379,51.52454],[-0.0741,51.52448],[-0.07412,51.52443],[-0.07475,51.52402],[-0.0749,51.52434],[-0.07499,51.52439],[-0.07573,51.52432],[-0.07592,51.52447],[-0.07614,51.52449],[-0.07638,51.52447],[-0.07704,51.52482],[-0.07715,51.52516],[-0.07678,51.52529],[-0.07674,51.5256],[-0.07684,51.52578],[-0.07761,51.52603],[-0.07733,51.52625],[-0.0771,51.52682],[-0.07758,51.52696],[-0.07776,51.52737],[-0.07836,51.52779],[-0.07773,51.5281],[-0.0777,51.52815],[-0.07775,51.52826],[-0.07888,51.52838],[-0.07891,51.52842],[-0.07891,51.52854],[-0.07912,51.52878],[-0.07922,51.52931],[-0.07914,51.52945],[-0.07915,51.52966],[-0.07837,51.52981],[-0.07814,51.53003],[-0.07765,51.53008],[-0.0776,51.53027],[-0.07725,51.53037],[-0.07732,51.53066],[-0.07678,51.53106],[-0.07724,51.53149],[-0.07669,51.53208],[-0.07723,51.53234],[-0.07781,51.53236],[-0.07782,51.53237],[-0.07788,51.53285],[-0.07798,51.53291],[-0.07734,51.53365],[-0.07741,51.53369],[-0.07787,51.53377],[-0.07828,51.53422],[-0.07721,51.5345],[-0.07697,51.53444],[-0.07678,51.53451],[-0.07675,51.53466],[-0.07699,51.53491],[-0.07749,51.53493],[-0.07784,51.53517],[-0.07773,51.53525],[-0.0771,51.53533],[-0.07706,51.53558],[-0.07707,51.53561],[-0.07733,51.53571],[-0.07733,51.53586],[-0.07689,51.53611],[-0.07704,51.53638],[-0.07668,51.53666],[-0.07614,51.53661],[-0.07573,51.53631],[-0.07495,51.53642],[-0.07462,51.53626],[-0.07396,51.5364],[-0.07315,51.53591],[-0.07302,51.53588],[-0.0728,51.536],[-0.07197,51.53602],[-0.07143,51.53581],[-0.07109,51.53597],[-0.07033,51.53598],[-0.07013,51.53583],[-0.0694,51.5358],[-0.06928,51.53588],[-0.06827,51.53599],[-0.06805,51.53582],[-0.06726,51.53579],[-0.06724,51.53579],[-0.06669,51.53573],[-0.06665,51.53574],[-0.06597,51.53571],[-0.06579,51.53564],[-0.06521,51.5356],[-0.06506,51.53568],[-0.06461,51.5357],[-0.06455,51.53566],[-0.06397,51.53544],[-0.06329,51.53555],[-0.06269,51.53536],[-0.06259,51.53535],[-0.06244,51.53545],[-0.06091,51.53522],[-0.06101,51.53499],[-0.06079,51.53463],[-0.05997,51.53429],[-0.06003,51.53367],[-0.05817,51.53428],[-0.05786,51.53414],[-0.05728,51.53417],[-0.05721,51.53419],[-0.05713,51.53418],[-0.05642,51.53487],[-0.05644,51.53512],[-0.0564,51.53513],[-0.05523,51.53489],[-0.05461,51.5352],[-0.05428,51.53514],[-0.05411,51.53503],[-0.05396,51.53498],[-0.05236,51.53495],[-0.05164,51.53509],[-0.05117,51.53535],[-0.0508,51.53537],[-0.04984,51.53517],[-0.04914,51.53482],[-0.04913,51.53482],[-0.0476,51.5344],[-0.04652,51.5342],[-0.04631,51.53418],[-0.04556,51.53416],[-0.04521,51.5342],[-0.04562,51.53221],[-0.04508,51.53186],[-0.04406,51.532],[-0.04385,51.53179]]],\"type\":\"Polygon\"}List(5, 4326, List(List(List(-0.04385, 51.53179), List(-0.04324, 51.53155), List(-0.04277, 51.53153), List(-0.04163, 51.5311), List(-0.0415, 51.53073), List(-0.0415, 51.5307), List(-0.04142, 51.53057), List(-0.04089, 51.53015), List(-0.04087, 51.53013), List(-0.04046, 51.52965), List(-0.04046, 51.52958), List(-0.04052, 51.52941), List(-0.04096, 51.52886), List(-0.04074, 51.52868), List(-0.04047, 51.52738), List(-0.04145, 51.52711), List(-0.04152, 51.52714), List(-0.04299, 51.52695), List(-0.04319, 51.52677), List(-0.04332, 51.52673), List(-0.04371, 51.5267), List(-0.04399, 51.52655), List(-0.04427, 51.52646), List(-0.0449, 51.52659), List(-0.04568, 51.52638), List(-0.04598, 51.5265), List(-0.04605, 51.52651), List(-0.04697, 51.52632), List(-0.04731, 51.52601), List(-0.04748, 51.526), List(-0.04798, 51.52615), List(-0.04847, 51.52636), List(-0.04881, 51.52611), List(-0.04903, 51.52559), List(-0.04903, 51.52549), List(-0.04973, 51.5255), List(-0.04994, 51.5253), List(-0.05028, 51.52521), List(-0.05061, 51.52522), List(-0.0508, 51.52508), List(-0.05175, 51.52497), List(-0.05203, 51.52527), List(-0.05272, 51.52562), List(-0.05292, 51.5256), List(-0.05272, 51.52446), List(-0.05297, 51.52434), List(-0.05318, 51.52434), List(-0.05362, 51.52441), List(-0.05375, 51.52432), List(-0.05381, 51.5243), List(-0.05478, 51.52427), List(-0.05486, 51.52431), List(-0.05537, 51.5243), List(-0.0556, 51.52419), List(-0.05646, 51.52428), List(-0.0565, 51.5243), List(-0.05685, 51.52432), List(-0.05701, 51.52412), List(-0.05803, 51.52381), List(-0.05844, 51.52392), List(-0.0585, 51.52392), List(-0.0588, 51.52386), List(-0.05955, 51.52391), List(-0.05965, 51.524), List(-0.06114, 51.52382), List(-0.06126, 51.52387), List(-0.06152, 51.52368), List(-0.06277, 51.52339), List(-0.063, 51.52324), List(-0.06344, 51.52324), List(-0.06371, 51.52332), List(-0.06426, 51.52333), List(-0.06452, 51.52321), List(-0.06593, 51.52312), List(-0.06628, 51.52297), List(-0.06663, 51.52309), List(-0.06722, 51.52323), List(-0.06832, 51.52308), List(-0.06866, 51.52297), List(-0.06878, 51.52284), List(-0.06913, 51.52281), List(-0.0697, 51.52274), List(-0.07002, 51.52294), List(-0.07184, 51.52302), List(-0.0716, 51.52335), List(-0.07159, 51.52355), List(-0.07121, 51.52386), List(-0.07098, 51.52393), List(-0.0708, 51.52436), List(-0.07093, 51.52452), List(-0.07167, 51.52459), List(-0.07187, 51.52454), List(-0.07205, 51.52435), List(-0.07242, 51.52414), List(-0.07245, 51.52412), List(-0.07258, 51.52409), List(-0.0731, 51.52414), List(-0.07339, 51.52448), List(-0.07379, 51.52454), List(-0.0741, 51.52448), List(-0.07412, 51.52443), List(-0.07475, 51.52402), List(-0.0749, 51.52434), List(-0.07499, 51.52439), List(-0.07573, 51.52432), List(-0.07592, 51.52447), List(-0.07614, 51.52449), List(-0.07638, 51.52447), List(-0.07704, 51.52482), List(-0.07715, 51.52516), List(-0.07678, 51.52529), List(-0.07674, 51.5256), List(-0.07684, 51.52578), List(-0.07761, 51.52603), List(-0.07733, 51.52625), List(-0.0771, 51.52682), List(-0.07758, 51.52696), List(-0.07776, 51.52737), List(-0.07836, 51.52779), List(-0.07773, 51.5281), List(-0.0777, 51.52815), List(-0.07775, 51.52826), List(-0.07888, 51.52838), List(-0.07891, 51.52842), List(-0.07891, 51.52854), List(-0.07912, 51.52878), List(-0.07922, 51.52931), List(-0.07914, 51.52945), List(-0.07915, 51.52966), List(-0.07837, 51.52981), List(-0.07814, 51.53003), List(-0.07765, 51.53008), List(-0.0776, 51.53027), List(-0.07725, 51.53037), List(-0.07732, 51.53066), List(-0.07678, 51.53106), List(-0.07724, 51.53149), List(-0.07669, 51.53208), List(-0.07723, 51.53234), List(-0.07781, 51.53236), List(-0.07782, 51.53237), List(-0.07788, 51.53285), List(-0.07798, 51.53291), List(-0.07734, 51.53365), List(-0.07741, 51.53369), List(-0.07787, 51.53377), List(-0.07828, 51.53422), List(-0.07721, 51.5345), List(-0.07697, 51.53444), List(-0.07678, 51.53451), List(-0.07675, 51.53466), List(-0.07699, 51.53491), List(-0.07749, 51.53493), List(-0.07784, 51.53517), List(-0.07773, 51.53525), List(-0.0771, 51.53533), List(-0.07706, 51.53558), List(-0.07707, 51.53561), List(-0.07733, 51.53571), List(-0.07733, 51.53586), List(-0.07689, 51.53611), List(-0.07704, 51.53638), List(-0.07668, 51.53666), List(-0.07614, 51.53661), List(-0.07573, 51.53631), List(-0.07495, 51.53642), List(-0.07462, 51.53626), List(-0.07396, 51.5364), List(-0.07315, 51.53591), List(-0.07302, 51.53588), List(-0.0728, 51.536), List(-0.07197, 51.53602), List(-0.07143, 51.53581), List(-0.07109, 51.53597), List(-0.07033, 51.53598), List(-0.07013, 51.53583), List(-0.0694, 51.5358), List(-0.06928, 51.53588), List(-0.06827, 51.53599), List(-0.06805, 51.53582), List(-0.06726, 51.53579), List(-0.06724, 51.53579), List(-0.06669, 51.53573), List(-0.06665, 51.53574), List(-0.06597, 51.53571), List(-0.06579, 51.53564), List(-0.06521, 51.5356), List(-0.06506, 51.53568), List(-0.06461, 51.5357), List(-0.06455, 51.53566), List(-0.06397, 51.53544), List(-0.06329, 51.53555), List(-0.06269, 51.53536), List(-0.06259, 51.53535), List(-0.06244, 51.53545), List(-0.06091, 51.53522), List(-0.06101, 51.53499), List(-0.06079, 51.53463), List(-0.05997, 51.53429), List(-0.06003, 51.53367), List(-0.05817, 51.53428), List(-0.05786, 51.53414), List(-0.05728, 51.53417), List(-0.05721, 51.53419), List(-0.05713, 51.53418), List(-0.05642, 51.53487), List(-0.05644, 51.53512), List(-0.0564, 51.53513), List(-0.05523, 51.53489), List(-0.05461, 51.5352), List(-0.05428, 51.53514), List(-0.05411, 51.53503), List(-0.05396, 51.53498), List(-0.05236, 51.53495), List(-0.05164, 51.53509), List(-0.05117, 51.53535), List(-0.0508, 51.53537), List(-0.04984, 51.53517), List(-0.04914, 51.53482), List(-0.04913, 51.53482), List(-0.0476, 51.5344), List(-0.04652, 51.5342), List(-0.04631, 51.53418), List(-0.04556, 51.53416), List(-0.04521, 51.5342), List(-0.04562, 51.53221), List(-0.04508, 51.53186), List(-0.04406, 51.532), List(-0.04385, 51.53179))), List(List()))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "FeatureCollection", + [ + "E2 postcode district", + "E2" + ], + "{\"coordinates\":[[[-0.04385,51.53179],[-0.04324,51.53155],[-0.04277,51.53153],[-0.04163,51.5311],[-0.0415,51.53073],[-0.0415,51.5307],[-0.04142,51.53057],[-0.04089,51.53015],[-0.04087,51.53013],[-0.04046,51.52965],[-0.04046,51.52958],[-0.04052,51.52941],[-0.04096,51.52886],[-0.04074,51.52868],[-0.04047,51.52738],[-0.04145,51.52711],[-0.04152,51.52714],[-0.04299,51.52695],[-0.04319,51.52677],[-0.04332,51.52673],[-0.04371,51.5267],[-0.04399,51.52655],[-0.04427,51.52646],[-0.0449,51.52659],[-0.04568,51.52638],[-0.04598,51.5265],[-0.04605,51.52651],[-0.04697,51.52632],[-0.04731,51.52601],[-0.04748,51.526],[-0.04798,51.52615],[-0.04847,51.52636],[-0.04881,51.52611],[-0.04903,51.52559],[-0.04903,51.52549],[-0.04973,51.5255],[-0.04994,51.5253],[-0.05028,51.52521],[-0.05061,51.52522],[-0.0508,51.52508],[-0.05175,51.52497],[-0.05203,51.52527],[-0.05272,51.52562],[-0.05292,51.5256],[-0.05272,51.52446],[-0.05297,51.52434],[-0.05318,51.52434],[-0.05362,51.52441],[-0.05375,51.52432],[-0.05381,51.5243],[-0.05478,51.52427],[-0.05486,51.52431],[-0.05537,51.5243],[-0.0556,51.52419],[-0.05646,51.52428],[-0.0565,51.5243],[-0.05685,51.52432],[-0.05701,51.52412],[-0.05803,51.52381],[-0.05844,51.52392],[-0.0585,51.52392],[-0.0588,51.52386],[-0.05955,51.52391],[-0.05965,51.524],[-0.06114,51.52382],[-0.06126,51.52387],[-0.06152,51.52368],[-0.06277,51.52339],[-0.063,51.52324],[-0.06344,51.52324],[-0.06371,51.52332],[-0.06426,51.52333],[-0.06452,51.52321],[-0.06593,51.52312],[-0.06628,51.52297],[-0.06663,51.52309],[-0.06722,51.52323],[-0.06832,51.52308],[-0.06866,51.52297],[-0.06878,51.52284],[-0.06913,51.52281],[-0.0697,51.52274],[-0.07002,51.52294],[-0.07184,51.52302],[-0.0716,51.52335],[-0.07159,51.52355],[-0.07121,51.52386],[-0.07098,51.52393],[-0.0708,51.52436],[-0.07093,51.52452],[-0.07167,51.52459],[-0.07187,51.52454],[-0.07205,51.52435],[-0.07242,51.52414],[-0.07245,51.52412],[-0.07258,51.52409],[-0.0731,51.52414],[-0.07339,51.52448],[-0.07379,51.52454],[-0.0741,51.52448],[-0.07412,51.52443],[-0.07475,51.52402],[-0.0749,51.52434],[-0.07499,51.52439],[-0.07573,51.52432],[-0.07592,51.52447],[-0.07614,51.52449],[-0.07638,51.52447],[-0.07704,51.52482],[-0.07715,51.52516],[-0.07678,51.52529],[-0.07674,51.5256],[-0.07684,51.52578],[-0.07761,51.52603],[-0.07733,51.52625],[-0.0771,51.52682],[-0.07758,51.52696],[-0.07776,51.52737],[-0.07836,51.52779],[-0.07773,51.5281],[-0.0777,51.52815],[-0.07775,51.52826],[-0.07888,51.52838],[-0.07891,51.52842],[-0.07891,51.52854],[-0.07912,51.52878],[-0.07922,51.52931],[-0.07914,51.52945],[-0.07915,51.52966],[-0.07837,51.52981],[-0.07814,51.53003],[-0.07765,51.53008],[-0.0776,51.53027],[-0.07725,51.53037],[-0.07732,51.53066],[-0.07678,51.53106],[-0.07724,51.53149],[-0.07669,51.53208],[-0.07723,51.53234],[-0.07781,51.53236],[-0.07782,51.53237],[-0.07788,51.53285],[-0.07798,51.53291],[-0.07734,51.53365],[-0.07741,51.53369],[-0.07787,51.53377],[-0.07828,51.53422],[-0.07721,51.5345],[-0.07697,51.53444],[-0.07678,51.53451],[-0.07675,51.53466],[-0.07699,51.53491],[-0.07749,51.53493],[-0.07784,51.53517],[-0.07773,51.53525],[-0.0771,51.53533],[-0.07706,51.53558],[-0.07707,51.53561],[-0.07733,51.53571],[-0.07733,51.53586],[-0.07689,51.53611],[-0.07704,51.53638],[-0.07668,51.53666],[-0.07614,51.53661],[-0.07573,51.53631],[-0.07495,51.53642],[-0.07462,51.53626],[-0.07396,51.5364],[-0.07315,51.53591],[-0.07302,51.53588],[-0.0728,51.536],[-0.07197,51.53602],[-0.07143,51.53581],[-0.07109,51.53597],[-0.07033,51.53598],[-0.07013,51.53583],[-0.0694,51.5358],[-0.06928,51.53588],[-0.06827,51.53599],[-0.06805,51.53582],[-0.06726,51.53579],[-0.06724,51.53579],[-0.06669,51.53573],[-0.06665,51.53574],[-0.06597,51.53571],[-0.06579,51.53564],[-0.06521,51.5356],[-0.06506,51.53568],[-0.06461,51.5357],[-0.06455,51.53566],[-0.06397,51.53544],[-0.06329,51.53555],[-0.06269,51.53536],[-0.06259,51.53535],[-0.06244,51.53545],[-0.06091,51.53522],[-0.06101,51.53499],[-0.06079,51.53463],[-0.05997,51.53429],[-0.06003,51.53367],[-0.05817,51.53428],[-0.05786,51.53414],[-0.05728,51.53417],[-0.05721,51.53419],[-0.05713,51.53418],[-0.05642,51.53487],[-0.05644,51.53512],[-0.0564,51.53513],[-0.05523,51.53489],[-0.05461,51.5352],[-0.05428,51.53514],[-0.05411,51.53503],[-0.05396,51.53498],[-0.05236,51.53495],[-0.05164,51.53509],[-0.05117,51.53535],[-0.0508,51.53537],[-0.04984,51.53517],[-0.04914,51.53482],[-0.04913,51.53482],[-0.0476,51.5344],[-0.04652,51.5342],[-0.04631,51.53418],[-0.04556,51.53416],[-0.04521,51.5342],[-0.04562,51.53221],[-0.04508,51.53186],[-0.04406,51.532],[-0.04385,51.53179]]],\"type\":\"Polygon\"}", + [ + 5, + 4326, + [ + [ + [ + -0.04385, + 51.53179 + ], + [ + -0.04324, + 51.53155 + ], + [ + -0.04277, + 51.53153 + ], + [ + -0.04163, + 51.5311 + ], + [ + -0.0415, + 51.53073 + ], + [ + -0.0415, + 51.5307 + ], + [ + -0.04142, + 51.53057 + ], + [ + -0.04089, + 51.53015 + ], + [ + -0.04087, + 51.53013 + ], + [ + -0.04046, + 51.52965 + ], + [ + -0.04046, + 51.52958 + ], + [ + -0.04052, + 51.52941 + ], + [ + -0.04096, + 51.52886 + ], + [ + -0.04074, + 51.52868 + ], + [ + -0.04047, + 51.52738 + ], + [ + -0.04145, + 51.52711 + ], + [ + -0.04152, + 51.52714 + ], + [ + -0.04299, + 51.52695 + ], + [ + -0.04319, + 51.52677 + ], + [ + -0.04332, + 51.52673 + ], + [ + -0.04371, + 51.5267 + ], + [ + -0.04399, + 51.52655 + ], + [ + -0.04427, + 51.52646 + ], + [ + -0.0449, + 51.52659 + ], + [ + -0.04568, + 51.52638 + ], + [ + -0.04598, + 51.5265 + ], + [ + -0.04605, + 51.52651 + ], + [ + -0.04697, + 51.52632 + ], + [ + -0.04731, + 51.52601 + ], + [ + -0.04748, + 51.526 + ], + [ + -0.04798, + 51.52615 + ], + [ + -0.04847, + 51.52636 + ], + [ + -0.04881, + 51.52611 + ], + [ + -0.04903, + 51.52559 + ], + [ + -0.04903, + 51.52549 + ], + [ + -0.04973, + 51.5255 + ], + [ + -0.04994, + 51.5253 + ], + [ + -0.05028, + 51.52521 + ], + [ + -0.05061, + 51.52522 + ], + [ + -0.0508, + 51.52508 + ], + [ + -0.05175, + 51.52497 + ], + [ + -0.05203, + 51.52527 + ], + [ + -0.05272, + 51.52562 + ], + [ + -0.05292, + 51.5256 + ], + [ + -0.05272, + 51.52446 + ], + [ + -0.05297, + 51.52434 + ], + [ + -0.05318, + 51.52434 + ], + [ + -0.05362, + 51.52441 + ], + [ + -0.05375, + 51.52432 + ], + [ + -0.05381, + 51.5243 + ], + [ + -0.05478, + 51.52427 + ], + [ + -0.05486, + 51.52431 + ], + [ + -0.05537, + 51.5243 + ], + [ + -0.0556, + 51.52419 + ], + [ + -0.05646, + 51.52428 + ], + [ + -0.0565, + 51.5243 + ], + [ + -0.05685, + 51.52432 + ], + [ + -0.05701, + 51.52412 + ], + [ + -0.05803, + 51.52381 + ], + [ + -0.05844, + 51.52392 + ], + [ + -0.0585, + 51.52392 + ], + [ + -0.0588, + 51.52386 + ], + [ + -0.05955, + 51.52391 + ], + [ + -0.05965, + 51.524 + ], + [ + -0.06114, + 51.52382 + ], + [ + -0.06126, + 51.52387 + ], + [ + -0.06152, + 51.52368 + ], + [ + -0.06277, + 51.52339 + ], + [ + -0.063, + 51.52324 + ], + [ + -0.06344, + 51.52324 + ], + [ + -0.06371, + 51.52332 + ], + [ + -0.06426, + 51.52333 + ], + [ + -0.06452, + 51.52321 + ], + [ + -0.06593, + 51.52312 + ], + [ + -0.06628, + 51.52297 + ], + [ + -0.06663, + 51.52309 + ], + [ + -0.06722, + 51.52323 + ], + [ + -0.06832, + 51.52308 + ], + [ + -0.06866, + 51.52297 + ], + [ + -0.06878, + 51.52284 + ], + [ + -0.06913, + 51.52281 + ], + [ + -0.0697, + 51.52274 + ], + [ + -0.07002, + 51.52294 + ], + [ + -0.07184, + 51.52302 + ], + [ + -0.0716, + 51.52335 + ], + [ + -0.07159, + 51.52355 + ], + [ + -0.07121, + 51.52386 + ], + [ + -0.07098, + 51.52393 + ], + [ + -0.0708, + 51.52436 + ], + [ + -0.07093, + 51.52452 + ], + [ + -0.07167, + 51.52459 + ], + [ + -0.07187, + 51.52454 + ], + [ + -0.07205, + 51.52435 + ], + [ + -0.07242, + 51.52414 + ], + [ + -0.07245, + 51.52412 + ], + [ + -0.07258, + 51.52409 + ], + [ + -0.0731, + 51.52414 + ], + [ + -0.07339, + 51.52448 + ], + [ + -0.07379, + 51.52454 + ], + [ + -0.0741, + 51.52448 + ], + [ + -0.07412, + 51.52443 + ], + [ + -0.07475, + 51.52402 + ], + [ + -0.0749, + 51.52434 + ], + [ + -0.07499, + 51.52439 + ], + [ + -0.07573, + 51.52432 + ], + [ + -0.07592, + 51.52447 + ], + [ + -0.07614, + 51.52449 + ], + [ + -0.07638, + 51.52447 + ], + [ + -0.07704, + 51.52482 + ], + [ + -0.07715, + 51.52516 + ], + [ + -0.07678, + 51.52529 + ], + [ + -0.07674, + 51.5256 + ], + [ + -0.07684, + 51.52578 + ], + [ + -0.07761, + 51.52603 + ], + [ + -0.07733, + 51.52625 + ], + [ + -0.0771, + 51.52682 + ], + [ + -0.07758, + 51.52696 + ], + [ + -0.07776, + 51.52737 + ], + [ + -0.07836, + 51.52779 + ], + [ + -0.07773, + 51.5281 + ], + [ + -0.0777, + 51.52815 + ], + [ + -0.07775, + 51.52826 + ], + [ + -0.07888, + 51.52838 + ], + [ + -0.07891, + 51.52842 + ], + [ + -0.07891, + 51.52854 + ], + [ + -0.07912, + 51.52878 + ], + [ + -0.07922, + 51.52931 + ], + [ + -0.07914, + 51.52945 + ], + [ + -0.07915, + 51.52966 + ], + [ + -0.07837, + 51.52981 + ], + [ + -0.07814, + 51.53003 + ], + [ + -0.07765, + 51.53008 + ], + [ + -0.0776, + 51.53027 + ], + [ + -0.07725, + 51.53037 + ], + [ + -0.07732, + 51.53066 + ], + [ + -0.07678, + 51.53106 + ], + [ + -0.07724, + 51.53149 + ], + [ + -0.07669, + 51.53208 + ], + [ + -0.07723, + 51.53234 + ], + [ + -0.07781, + 51.53236 + ], + [ + -0.07782, + 51.53237 + ], + [ + -0.07788, + 51.53285 + ], + [ + -0.07798, + 51.53291 + ], + [ + -0.07734, + 51.53365 + ], + [ + -0.07741, + 51.53369 + ], + [ + -0.07787, + 51.53377 + ], + [ + -0.07828, + 51.53422 + ], + [ + -0.07721, + 51.5345 + ], + [ + -0.07697, + 51.53444 + ], + [ + -0.07678, + 51.53451 + ], + [ + -0.07675, + 51.53466 + ], + [ + -0.07699, + 51.53491 + ], + [ + -0.07749, + 51.53493 + ], + [ + -0.07784, + 51.53517 + ], + [ + -0.07773, + 51.53525 + ], + [ + -0.0771, + 51.53533 + ], + [ + -0.07706, + 51.53558 + ], + [ + -0.07707, + 51.53561 + ], + [ + -0.07733, + 51.53571 + ], + [ + -0.07733, + 51.53586 + ], + [ + -0.07689, + 51.53611 + ], + [ + -0.07704, + 51.53638 + ], + [ + -0.07668, + 51.53666 + ], + [ + -0.07614, + 51.53661 + ], + [ + -0.07573, + 51.53631 + ], + [ + -0.07495, + 51.53642 + ], + [ + -0.07462, + 51.53626 + ], + [ + -0.07396, + 51.5364 + ], + [ + -0.07315, + 51.53591 + ], + [ + -0.07302, + 51.53588 + ], + [ + -0.0728, + 51.536 + ], + [ + -0.07197, + 51.53602 + ], + [ + -0.07143, + 51.53581 + ], + [ + -0.07109, + 51.53597 + ], + [ + -0.07033, + 51.53598 + ], + [ + -0.07013, + 51.53583 + ], + [ + -0.0694, + 51.5358 + ], + [ + -0.06928, + 51.53588 + ], + [ + -0.06827, + 51.53599 + ], + [ + -0.06805, + 51.53582 + ], + [ + -0.06726, + 51.53579 + ], + [ + -0.06724, + 51.53579 + ], + [ + -0.06669, + 51.53573 + ], + [ + -0.06665, + 51.53574 + ], + [ + -0.06597, + 51.53571 + ], + [ + -0.06579, + 51.53564 + ], + [ + -0.06521, + 51.5356 + ], + [ + -0.06506, + 51.53568 + ], + [ + -0.06461, + 51.5357 + ], + [ + -0.06455, + 51.53566 + ], + [ + -0.06397, + 51.53544 + ], + [ + -0.06329, + 51.53555 + ], + [ + -0.06269, + 51.53536 + ], + [ + -0.06259, + 51.53535 + ], + [ + -0.06244, + 51.53545 + ], + [ + -0.06091, + 51.53522 + ], + [ + -0.06101, + 51.53499 + ], + [ + -0.06079, + 51.53463 + ], + [ + -0.05997, + 51.53429 + ], + [ + -0.06003, + 51.53367 + ], + [ + -0.05817, + 51.53428 + ], + [ + -0.05786, + 51.53414 + ], + [ + -0.05728, + 51.53417 + ], + [ + -0.05721, + 51.53419 + ], + [ + -0.05713, + 51.53418 + ], + [ + -0.05642, + 51.53487 + ], + [ + -0.05644, + 51.53512 + ], + [ + -0.0564, + 51.53513 + ], + [ + -0.05523, + 51.53489 + ], + [ + -0.05461, + 51.5352 + ], + [ + -0.05428, + 51.53514 + ], + [ + -0.05411, + 51.53503 + ], + [ + -0.05396, + 51.53498 + ], + [ + -0.05236, + 51.53495 + ], + [ + -0.05164, + 51.53509 + ], + [ + -0.05117, + 51.53535 + ], + [ + -0.0508, + 51.53537 + ], + [ + -0.04984, + 51.53517 + ], + [ + -0.04914, + 51.53482 + ], + [ + -0.04913, + 51.53482 + ], + [ + -0.0476, + 51.5344 + ], + [ + -0.04652, + 51.5342 + ], + [ + -0.04631, + 51.53418 + ], + [ + -0.04556, + 51.53416 + ], + [ + -0.04521, + 51.5342 + ], + [ + -0.04562, + 51.53221 + ], + [ + -0.04508, + 51.53186 + ], + [ + -0.04406, + 51.532 + ], + [ + -0.04385, + 51.53179 + ] + ] + ], + [ + [] + ] + ] + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "type", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "properties", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"Description\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"Name\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "json_geometry", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geometry", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"type_id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"srid\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"boundary\",\"type\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"nullable\":true,\"metadata\":{}},{\"name\":\"holes\",\"type\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"nullable\":true,\"metadata\":{}}]}" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "postcodes = (\n", + " spark.read\n", + " .option(\"multiline\", \"true\")\n", + " .format(\"json\")\n", + " .load(postcodes_dir)\n", + " .select(\"type\", explode(col(\"features\")).alias(\"feature\"))\n", + " .select(\"type\", col(\"feature.properties\").alias(\"properties\"), to_json(col(\"feature.geometry\")).alias(\"json_geometry\"))\n", + " .withColumn(\"geometry\", mos.st_geomfromgeojson(\"json_geometry\")) \n", + ")\n", + "print(f\"count? {postcodes.count():,}\")\n", + "postcodes.limit(1).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "b78ff76e-e8f4-4e9b-9e3e-d32ce6c7725f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Initial London Cycling Data [~40M]\n", + "\n", + "> We will setup a temporary location to store our UPRN data and then generate a table." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a554943f-382e-4714-9e04-0fd878cfdf76", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "UPRNS_DIR_FUSE? '/dbfs/tmp/mosaic/mjohns@databricks.com/cycling'\n" + ] + } + ], + "source": [ + "uprns_dir = f\"{data_dir}/cycling\"\n", + "uprns_dir_fuse = f\"/dbfs{uprns_dir}\"\n", + "dbutils.fs.mkdirs(uprns_dir)\n", + "\n", + "os.environ['UPRNS_DIR_FUSE'] = uprns_dir_fuse\n", + "print(f\"UPRNS_DIR_FUSE? '{uprns_dir_fuse}'\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d95c4291-732d-428a-b718-930f38e6d53a", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "...skipping '/dbfs/tmp/mosaic/mjohns@databricks.com/cycling/uprns.zip', already exits.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
pathnamesizemodificationTime
dbfs:/tmp/mosaic/mjohns@databricks.com/cycling/uprns.zipuprns.zip5827705051701185111000
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "dbfs:/tmp/mosaic/mjohns@databricks.com/cycling/uprns.zip", + "uprns.zip", + 582770505, + 1701185111000 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "path", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "size", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "modificationTime", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "uprns_url = 'https://api.os.uk/downloads/v1/products/OpenUPRN/downloads?area=GB&format=CSV&redirect'\n", + "\n", + "# The DBFS file system is mounted under /dbfs/ directory on Databricks cluster nodes\n", + "uprns_dir_fuse_path = pathlib.Path(uprns_dir_fuse)\n", + "uprns_dir_fuse_path.mkdir(parents=True, exist_ok=True)\n", + "\n", + "uprns_zip_fuse_path = uprns_dir_fuse_path / 'uprns.zip'\n", + "if not uprns_zip_fuse_path.exists():\n", + " req = requests.get(uprns_url)\n", + " with open(uprns_zip_fuse_path, 'wb') as f:\n", + " f.write(req.content)\n", + "else:\n", + " print(f\"...skipping '{uprns_zip_fuse_path}', already exits.\")\n", + "\n", + "display(dbutils.fs.ls(uprns_dir))" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "933c4aae-2e11-468c-acde-3a375907b713", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "uprns_data_fuse_path = uprns_dir_fuse_path / 'data'\n", + "uprns_data_fuse_path.mkdir(parents=True, exist_ok=True)\n", + "with zipfile.ZipFile(uprns_zip_fuse_path, 'r') as zip_ref:\n", + " zip_ref.extractall(uprns_data_fuse_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "56b674ee-372c-40bf-997e-19b500c9f454", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "total 1.9G\n-rwxrwxrwx 1 root root 192 Nov 28 15:35 licence.txt\n-rwxrwxrwx 1 root root 1.9G Nov 28 15:35 osopenuprn_202310.csv\n-rwxrwxrwx 1 root root 88 Nov 28 15:35 versions.txt\n" + ] + } + ], + "source": [ + "%sh ls -lh $UPRNS_DIR_FUSE/data" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0f8ad464-02f3-4187-8741-6d1c08124166", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "csv_name = 'osopenuprn_202310.csv' # <- adjust to the name ^\n", + "\n", + "# - alter csv columns\n", + "_df = (\n", + " spark\n", + " .read\n", + " .option(\"header\", \"true\")\n", + " .option(\"inferSchema\" , \"true\")\n", + " .csv(f\"{uprns_dir}/data/{csv_name}\")\n", + ")\n", + "columns = [F.col(cn).alias(cn.replace(' ', '')) for cn in _df.columns]\n", + "\n", + "# - write csv to table\n", + "spark.sql(\"drop table if exists uprns\")\n", + "_df.select(*columns).write.format(\"delta\").mode(\"overwrite\").saveAsTable(\"uprns\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "68809775-8916-4b5a-8b02-b1d9d0b0e8ee", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> We will load the Unique Property Reference Numbers (UPRNs) data to represent point data. " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "90988947-8918-4ce6-9408-71eb0645ee48", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 40,593,998\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
UPRNX_COORDINATEY_COORDINATELATITUDELONGITUDE
1358260.66172796.551.4526008-2.602075
26352967.0181077.051.5266333-2.6793612
27352967.0181077.051.5266333-2.6793612
30354800.0180469.051.5213173-2.6528615
31354796.0180460.051.521236-2.652918
32353473.0180409.051.5206696-2.671979
33352548.0180308.051.5196842-2.6852966
34352515.0180360.051.5201489-2.6857792
38352462.0180401.051.5205131-2.6865486
41354662.0180364.051.5203621-2.6548369
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 1, + 358260.66, + 172796.5, + 51.4526008, + -2.602075 + ], + [ + 26, + 352967.0, + 181077.0, + 51.5266333, + -2.6793612 + ], + [ + 27, + 352967.0, + 181077.0, + 51.5266333, + -2.6793612 + ], + [ + 30, + 354800.0, + 180469.0, + 51.5213173, + -2.6528615 + ], + [ + 31, + 354796.0, + 180460.0, + 51.521236, + -2.652918 + ], + [ + 32, + 353473.0, + 180409.0, + 51.5206696, + -2.671979 + ], + [ + 33, + 352548.0, + 180308.0, + 51.5196842, + -2.6852966 + ], + [ + 34, + 352515.0, + 180360.0, + 51.5201489, + -2.6857792 + ], + [ + 38, + 352462.0, + 180401.0, + 51.5205131, + -2.6865486 + ], + [ + 41, + 354662.0, + 180364.0, + 51.5203621, + -2.6548369 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "UPRN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "X_COORDINATE", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Y_COORDINATE", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "LATITUDE", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "LONGITUDE", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "uprns = spark.read.table(\"uprns\")\n", + "print(f\"count? {uprns.count():,}\") # <- faster after table gen\n", + "uprns.limit(10).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "f302b355-f176-4f1e-84ac-1b268b7d5cec", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Reproject Postcode Geometries to BNG SRID\n", + "> British National Grid expects coordinate of geometries to be provided in EPSG:27700. Our geometries are provided in EPSG:4326. So we will need to reproject the geometries. Mosaic has the necessary functionality to help us achieve this." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "106918d1-cb9f-497b-a54a-db7d4015c226", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
typepropertiesgeometry
FeatureCollectionList(E2 postcode district, E2)List(5, 27700, List(List(List(535781.9380575956, 183244.6883788783), List(535824.9598637373, 183219.13114683155), List(535857.6174945063, 183217.77906512795), List(535937.9652897029, 183172.0778235984), List(535948.0833085249, 183131.17423886806), List(535948.1726131596, 183127.83816223528), List(535954.1083358275, 183113.53036918928), List(535992.1193609729, 183067.80952594848), List(535993.5661128352, 183065.62262108468), List(536023.433274843, 183013.00698265154), List(536023.6417598329, 183005.22280622984), List(536019.9864220938, 182986.20691772352), List(535991.10526591, 182924.22825999785), List(536006.9008830489, 182904.62042294373), List(536029.5004004786, 182760.5587263456), List(535962.3273532258, 182728.7139400427), List(535957.3825413126, 182731.9200414074), List(535855.981967767, 182708.06319533306), List(535842.6443589143, 182687.67569398397), List(535833.745864351, 182682.98643173242), List(535806.7826882608, 182678.92696711444), List(535787.8063862727, 182661.7273213567), List(535768.6516090925, 182651.19990051258), List(535724.5650621236, 182664.48831547052), List(535671.083893747, 182639.69031467568), List(535649.9178289331, 182652.47882477642), List(535645.0325510963, 182653.46117701154), List(535581.7803402226, 182630.62884472188), List(535559.116011542, 182595.52657006297), List(535547.3534337038, 182594.09984491928), List(535512.2253112149, 182609.85480291082), List(535477.6131089614, 182632.3006572011), List(535454.7701589285, 182603.87101454858), List(535441.0515128053, 182545.6387309049), List(535441.3480281356, 182534.51847295318), List(535392.7614843239, 182534.3359901223), List(535378.7871684541, 182511.70721004112), List(535355.4689781135, 182501.07044976193), List(535332.54809557, 182501.57253937522), List(535319.7830267497, 182485.65304688836), List(535254.2094731658, 182471.66562843113), List(535233.8983120153, 182504.50927462179), List(535184.99899094, 182542.15613858588), List(535171.1848080601, 182539.5628792516), List(535188.4320349725, 182413.1610924584), List(535171.4449779494, 182399.35527161031), List(535156.8775325917, 182398.96765152615), List(535126.1481960944, 182405.93981478648), List(535117.3964801998, 182395.69169817545), List(535113.2935073929, 182393.35693709343), List(535046.0944043219, 182388.23154424207), List(535040.426642115, 182392.53211760416), List(535005.0780822264, 182390.4797147903), List(534989.4483038574, 182377.82341214077), List(534929.5250849993, 182386.2466646775), List(534926.6912537713, 182388.39701484208), List(534902.353081025, 182389.97622999403), List(534891.8446569596, 182367.44095034344), List(534822.0030447827, 182331.08968924946), List(534793.2369068528, 182342.5672069927), List(534789.0747382878, 182342.45676511177), List(534768.4409085622, 182335.2324451239), List(534716.2662738861, 182339.41255793435), List(534709.0639194129, 182349.23683925637), List(534606.2339552218, 182326.48043027992), List(534597.7622726331, 182331.81999374554), List(534580.2859382916, 182310.2136126347), List(534494.4274051443, 182275.668296282), List(534478.9138032356, 182258.56548488926), List(534448.3907594526, 182257.75755606516), List(534429.425290218, 182266.15809321858), List(534391.2421295254, 182266.26060967514), List(534373.558798522, 182252.43915361603), List(534276.0107687588, 182239.84453922248), List(534252.1718241313, 182222.5224069195), List(534227.5393820464, 182235.22514476796), List(534186.199365603, 182249.71225135983), List(534110.3320511248, 182231.01675352425), List(534087.0688351066, 182218.16183286835), List(534079.1258644154, 182203.4857467148), List(534054.9339733121, 182199.50889328966), List(534015.597704571, 182190.68140581233), List(533992.8122403203, 182212.33640354726), List(533866.3224438406, 182217.90405003884), List(533882.0043343764, 182255.03975232004), List(533882.1118874322, 182277.29861049942), List(533907.563830076, 182312.466308441), List(533923.3136380416, 182320.67111585021), List(533934.5394068043, 182368.8175582806), List(533925.0523586851, 182386.37225865485), List(533873.5143864275, 182392.80335840082), List(533859.7871893895, 182386.877599178), List(533847.8575499062, 182365.42002740753), List(533822.8062397578, 182341.39119331172), List(533820.7837512142, 182339.11231186916), List(533811.8536204272, 182335.5386665268), List(533775.6351340465, 182340.14873929322), List(533754.5225045574, 182377.4279951505), List(533726.5993517478, 182383.3696325071), List(533705.2706813519, 182376.13139397942), List(533704.0296535669, 182370.53473031026), List(533661.5269331775, 182323.7914324954), List(533650.1852706587, 182359.10259587853), List(533643.7957804046, 182364.49848743435), List(533592.6674969478, 182355.3640262651), List(533579.048749956, 182371.69786662376), List(533563.729136071, 182373.5206389891), List(533547.1391008857, 182370.85886459786), List(533500.3328063814, 182408.57647217682), List(533491.708691396, 182446.18495565542), List(533516.9947808256, 182461.31590327783), List(533518.8633508299, 182495.86176251573), List(533511.4005260145, 182515.695971929), List(533457.2576487551, 182542.0931076025), List(533476.0373819193, 182567.06810922833), List(533490.3257582185, 182630.87308835395), List(533456.6213927829, 182645.56658983114), List(533442.9378613638, 182690.83179383923), List(533400.0925503863, 182736.4438360546), List(533442.8860284169, 182772.06468460686), List(533444.820844416, 182777.67950834992), List(533441.031309065, 182789.82072529983), List(533362.30066867, 182801.1064503934), List(533360.1029890878, 182805.4999354959), List(533359.7526092468, 182818.84430400614), List(533344.485770287, 182845.15060313017), List(533336.0022694117, 182903.90613927244), List(533341.1424542875, 182919.62024957192), List(533339.8357444134, 182942.95468899893), List(533393.4991665736, 182961.05581658782), List(533408.8094940147, 182985.93951877212), List(533442.6499810042, 182992.39254114387), List(533445.5628353866, 183013.61224821693), List(533469.5465898013, 183025.3704739589), List(533463.8439242825, 183057.49177497294), List(533500.1287308584, 183102.95741226373), List(533466.967019293, 183149.93616036046), List(533503.3892198745, 183216.54865868646), List(533465.176452015, 183244.47702701658), List(533424.8910481959, 183245.6440381208), List(533424.1682635264, 183246.73784710694), List(533418.6045028507, 183300.00601616694), List(533411.4936098668, 183306.49599349493), List(533453.7188489789, 183389.95262020518), List(533448.7471163005, 183394.2731622412), List(533416.6101809462, 183402.33112426393), List(533386.8603066149, 183451.62554262602), List(533460.2507298898, 183484.71224287833), List(533477.0709651434, 183478.4775450573), List(533490.0435256548, 183486.6081507582), List(533491.6856267123, 183503.3433177545), List(533474.3100794131, 183530.70656481414), List(533439.575167135, 183532.01926295372), List(533414.6004345681, 183558.070208603), List(533421.9954622076, 183567.16690503713), List(533465.4536569463, 183577.21137004573), List(533467.4970158483, 183605.08507556678), List(533466.7158090527, 183608.4029416383), List(533448.3920701249, 183619.04934156616), List(533447.9536899813, 183635.72981729486), List(533477.7375418543, 183664.33265876118), List(533466.545667419, 183694.08407003182), List(533490.6933227498, 183725.8772636903), List(533528.2886847861, 183721.30179077585), List(533557.5998214906, 183688.68865956645), List(533611.3715561538, 183702.3441248663), List(533634.7255277758, 183685.15388438356), List(533680.0872158157, 183701.92715838), List(533737.6963941175, 183648.91685636976), List(533746.7999457252, 183645.81822844158), List(533761.7057262553, 183659.56450243742), List(533819.2086347946, 183663.3052394627), List(533857.2738980403, 183640.93969440804), List(533880.3842868664, 183659.35383981554), List(533933.0619141799, 183661.8558411452), List(533947.3721862542, 183645.5412537885), List(533998.086794612, 183643.54092136555), List(534006.174193125, 183652.65679096844), List(534075.89609284, 183666.7381784143), List(534091.6525898686, 183648.23655415466), List(534146.5283805125, 183646.3475924168), List(534147.9154105934, 183646.38423628634), List(534186.2350593824, 183640.7199105107), List(534188.979735214, 183641.9052504226), List(534236.2269981015, 183639.81565870665), List(534248.916094217, 183632.36147769052), List(534289.25772802, 183628.97699438152), List(534299.4251987567, 183638.14836380753), List(534330.5746032915, 183641.19794210594), List(534334.8533790117, 183636.85990650317), List(534375.7247760285, 183613.459571335), List(534422.5603115619, 183626.940126969), List(534464.7309192211, 183606.9133092533), List(534471.6955801392, 183605.98493706266), List(534481.8038829465, 183617.38073531695), List(534588.5903195359, 183594.61541820713), List(534582.3329739553, 183568.85492995696), List(534598.6517142366, 183529.22629237536), List(534656.5239630286, 183492.92506529193), List(534654.1909793459, 183423.86893065734), List(534781.3901572204, 183495.12499185512), List(534803.3031006856, 183480.127294405), List(534843.4397878762, 183484.53139197238), List(534848.2354977566, 183486.8843684813), List(534853.813337246, 183485.9196823354), List(534901.0161172879, 183563.95757195458), List(534898.8904922986, 183591.72143490257), List(534901.6350458016, 183592.90716247621), List(534983.4868244318, 183568.37485173013), List(535025.5688460219, 183603.99094667443), List(535048.6325535319, 183597.9274125757), List(535060.7478173448, 183586.008682548), List(535071.2986004304, 183580.72525295737), List(535182.3515840536, 183580.3420830167), List(535231.8708644358, 183597.24007576355), List(535263.6963046396, 183627.02099730785), List(535289.2972956816, 183629.92867538054), List(535356.4680675853, 183609.4624531094), List(535406.0525481519, 183571.83582854533), List(535406.7460762692, 183571.85432246135), List(535514.1023035615, 183527.979870348), List(535589.5978763667, 183507.73880783212), List(535604.2215525524, 183505.90367014642), List(535656.2962848989, 183505.068944166), List(535680.4512552277, 183510.1655864418), List(535657.927840578, 183288.11259578395), List(535696.4204844927, 183250.19230655016), List(535766.7486843397, 183267.65151389752), List(535781.9380575956, 183244.6883788783), List(535781.9380575956, 183244.6883788783))), List(List()))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "FeatureCollection", + [ + "E2 postcode district", + "E2" + ], + [ + 5, + 27700, + [ + [ + [ + 535781.9380575956, + 183244.6883788783 + ], + [ + 535824.9598637373, + 183219.13114683155 + ], + [ + 535857.6174945063, + 183217.77906512795 + ], + [ + 535937.9652897029, + 183172.0778235984 + ], + [ + 535948.0833085249, + 183131.17423886806 + ], + [ + 535948.1726131596, + 183127.83816223528 + ], + [ + 535954.1083358275, + 183113.53036918928 + ], + [ + 535992.1193609729, + 183067.80952594848 + ], + [ + 535993.5661128352, + 183065.62262108468 + ], + [ + 536023.433274843, + 183013.00698265154 + ], + [ + 536023.6417598329, + 183005.22280622984 + ], + [ + 536019.9864220938, + 182986.20691772352 + ], + [ + 535991.10526591, + 182924.22825999785 + ], + [ + 536006.9008830489, + 182904.62042294373 + ], + [ + 536029.5004004786, + 182760.5587263456 + ], + [ + 535962.3273532258, + 182728.7139400427 + ], + [ + 535957.3825413126, + 182731.9200414074 + ], + [ + 535855.981967767, + 182708.06319533306 + ], + [ + 535842.6443589143, + 182687.67569398397 + ], + [ + 535833.745864351, + 182682.98643173242 + ], + [ + 535806.7826882608, + 182678.92696711444 + ], + [ + 535787.8063862727, + 182661.7273213567 + ], + [ + 535768.6516090925, + 182651.19990051258 + ], + [ + 535724.5650621236, + 182664.48831547052 + ], + [ + 535671.083893747, + 182639.69031467568 + ], + [ + 535649.9178289331, + 182652.47882477642 + ], + [ + 535645.0325510963, + 182653.46117701154 + ], + [ + 535581.7803402226, + 182630.62884472188 + ], + [ + 535559.116011542, + 182595.52657006297 + ], + [ + 535547.3534337038, + 182594.09984491928 + ], + [ + 535512.2253112149, + 182609.85480291082 + ], + [ + 535477.6131089614, + 182632.3006572011 + ], + [ + 535454.7701589285, + 182603.87101454858 + ], + [ + 535441.0515128053, + 182545.6387309049 + ], + [ + 535441.3480281356, + 182534.51847295318 + ], + [ + 535392.7614843239, + 182534.3359901223 + ], + [ + 535378.7871684541, + 182511.70721004112 + ], + [ + 535355.4689781135, + 182501.07044976193 + ], + [ + 535332.54809557, + 182501.57253937522 + ], + [ + 535319.7830267497, + 182485.65304688836 + ], + [ + 535254.2094731658, + 182471.66562843113 + ], + [ + 535233.8983120153, + 182504.50927462179 + ], + [ + 535184.99899094, + 182542.15613858588 + ], + [ + 535171.1848080601, + 182539.5628792516 + ], + [ + 535188.4320349725, + 182413.1610924584 + ], + [ + 535171.4449779494, + 182399.35527161031 + ], + [ + 535156.8775325917, + 182398.96765152615 + ], + [ + 535126.1481960944, + 182405.93981478648 + ], + [ + 535117.3964801998, + 182395.69169817545 + ], + [ + 535113.2935073929, + 182393.35693709343 + ], + [ + 535046.0944043219, + 182388.23154424207 + ], + [ + 535040.426642115, + 182392.53211760416 + ], + [ + 535005.0780822264, + 182390.4797147903 + ], + [ + 534989.4483038574, + 182377.82341214077 + ], + [ + 534929.5250849993, + 182386.2466646775 + ], + [ + 534926.6912537713, + 182388.39701484208 + ], + [ + 534902.353081025, + 182389.97622999403 + ], + [ + 534891.8446569596, + 182367.44095034344 + ], + [ + 534822.0030447827, + 182331.08968924946 + ], + [ + 534793.2369068528, + 182342.5672069927 + ], + [ + 534789.0747382878, + 182342.45676511177 + ], + [ + 534768.4409085622, + 182335.2324451239 + ], + [ + 534716.2662738861, + 182339.41255793435 + ], + [ + 534709.0639194129, + 182349.23683925637 + ], + [ + 534606.2339552218, + 182326.48043027992 + ], + [ + 534597.7622726331, + 182331.81999374554 + ], + [ + 534580.2859382916, + 182310.2136126347 + ], + [ + 534494.4274051443, + 182275.668296282 + ], + [ + 534478.9138032356, + 182258.56548488926 + ], + [ + 534448.3907594526, + 182257.75755606516 + ], + [ + 534429.425290218, + 182266.15809321858 + ], + [ + 534391.2421295254, + 182266.26060967514 + ], + [ + 534373.558798522, + 182252.43915361603 + ], + [ + 534276.0107687588, + 182239.84453922248 + ], + [ + 534252.1718241313, + 182222.5224069195 + ], + [ + 534227.5393820464, + 182235.22514476796 + ], + [ + 534186.199365603, + 182249.71225135983 + ], + [ + 534110.3320511248, + 182231.01675352425 + ], + [ + 534087.0688351066, + 182218.16183286835 + ], + [ + 534079.1258644154, + 182203.4857467148 + ], + [ + 534054.9339733121, + 182199.50889328966 + ], + [ + 534015.597704571, + 182190.68140581233 + ], + [ + 533992.8122403203, + 182212.33640354726 + ], + [ + 533866.3224438406, + 182217.90405003884 + ], + [ + 533882.0043343764, + 182255.03975232004 + ], + [ + 533882.1118874322, + 182277.29861049942 + ], + [ + 533907.563830076, + 182312.466308441 + ], + [ + 533923.3136380416, + 182320.67111585021 + ], + [ + 533934.5394068043, + 182368.8175582806 + ], + [ + 533925.0523586851, + 182386.37225865485 + ], + [ + 533873.5143864275, + 182392.80335840082 + ], + [ + 533859.7871893895, + 182386.877599178 + ], + [ + 533847.8575499062, + 182365.42002740753 + ], + [ + 533822.8062397578, + 182341.39119331172 + ], + [ + 533820.7837512142, + 182339.11231186916 + ], + [ + 533811.8536204272, + 182335.5386665268 + ], + [ + 533775.6351340465, + 182340.14873929322 + ], + [ + 533754.5225045574, + 182377.4279951505 + ], + [ + 533726.5993517478, + 182383.3696325071 + ], + [ + 533705.2706813519, + 182376.13139397942 + ], + [ + 533704.0296535669, + 182370.53473031026 + ], + [ + 533661.5269331775, + 182323.7914324954 + ], + [ + 533650.1852706587, + 182359.10259587853 + ], + [ + 533643.7957804046, + 182364.49848743435 + ], + [ + 533592.6674969478, + 182355.3640262651 + ], + [ + 533579.048749956, + 182371.69786662376 + ], + [ + 533563.729136071, + 182373.5206389891 + ], + [ + 533547.1391008857, + 182370.85886459786 + ], + [ + 533500.3328063814, + 182408.57647217682 + ], + [ + 533491.708691396, + 182446.18495565542 + ], + [ + 533516.9947808256, + 182461.31590327783 + ], + [ + 533518.8633508299, + 182495.86176251573 + ], + [ + 533511.4005260145, + 182515.695971929 + ], + [ + 533457.2576487551, + 182542.0931076025 + ], + [ + 533476.0373819193, + 182567.06810922833 + ], + [ + 533490.3257582185, + 182630.87308835395 + ], + [ + 533456.6213927829, + 182645.56658983114 + ], + [ + 533442.9378613638, + 182690.83179383923 + ], + [ + 533400.0925503863, + 182736.4438360546 + ], + [ + 533442.8860284169, + 182772.06468460686 + ], + [ + 533444.820844416, + 182777.67950834992 + ], + [ + 533441.031309065, + 182789.82072529983 + ], + [ + 533362.30066867, + 182801.1064503934 + ], + [ + 533360.1029890878, + 182805.4999354959 + ], + [ + 533359.7526092468, + 182818.84430400614 + ], + [ + 533344.485770287, + 182845.15060313017 + ], + [ + 533336.0022694117, + 182903.90613927244 + ], + [ + 533341.1424542875, + 182919.62024957192 + ], + [ + 533339.8357444134, + 182942.95468899893 + ], + [ + 533393.4991665736, + 182961.05581658782 + ], + [ + 533408.8094940147, + 182985.93951877212 + ], + [ + 533442.6499810042, + 182992.39254114387 + ], + [ + 533445.5628353866, + 183013.61224821693 + ], + [ + 533469.5465898013, + 183025.3704739589 + ], + [ + 533463.8439242825, + 183057.49177497294 + ], + [ + 533500.1287308584, + 183102.95741226373 + ], + [ + 533466.967019293, + 183149.93616036046 + ], + [ + 533503.3892198745, + 183216.54865868646 + ], + [ + 533465.176452015, + 183244.47702701658 + ], + [ + 533424.8910481959, + 183245.6440381208 + ], + [ + 533424.1682635264, + 183246.73784710694 + ], + [ + 533418.6045028507, + 183300.00601616694 + ], + [ + 533411.4936098668, + 183306.49599349493 + ], + [ + 533453.7188489789, + 183389.95262020518 + ], + [ + 533448.7471163005, + 183394.2731622412 + ], + [ + 533416.6101809462, + 183402.33112426393 + ], + [ + 533386.8603066149, + 183451.62554262602 + ], + [ + 533460.2507298898, + 183484.71224287833 + ], + [ + 533477.0709651434, + 183478.4775450573 + ], + [ + 533490.0435256548, + 183486.6081507582 + ], + [ + 533491.6856267123, + 183503.3433177545 + ], + [ + 533474.3100794131, + 183530.70656481414 + ], + [ + 533439.575167135, + 183532.01926295372 + ], + [ + 533414.6004345681, + 183558.070208603 + ], + [ + 533421.9954622076, + 183567.16690503713 + ], + [ + 533465.4536569463, + 183577.21137004573 + ], + [ + 533467.4970158483, + 183605.08507556678 + ], + [ + 533466.7158090527, + 183608.4029416383 + ], + [ + 533448.3920701249, + 183619.04934156616 + ], + [ + 533447.9536899813, + 183635.72981729486 + ], + [ + 533477.7375418543, + 183664.33265876118 + ], + [ + 533466.545667419, + 183694.08407003182 + ], + [ + 533490.6933227498, + 183725.8772636903 + ], + [ + 533528.2886847861, + 183721.30179077585 + ], + [ + 533557.5998214906, + 183688.68865956645 + ], + [ + 533611.3715561538, + 183702.3441248663 + ], + [ + 533634.7255277758, + 183685.15388438356 + ], + [ + 533680.0872158157, + 183701.92715838 + ], + [ + 533737.6963941175, + 183648.91685636976 + ], + [ + 533746.7999457252, + 183645.81822844158 + ], + [ + 533761.7057262553, + 183659.56450243742 + ], + [ + 533819.2086347946, + 183663.3052394627 + ], + [ + 533857.2738980403, + 183640.93969440804 + ], + [ + 533880.3842868664, + 183659.35383981554 + ], + [ + 533933.0619141799, + 183661.8558411452 + ], + [ + 533947.3721862542, + 183645.5412537885 + ], + [ + 533998.086794612, + 183643.54092136555 + ], + [ + 534006.174193125, + 183652.65679096844 + ], + [ + 534075.89609284, + 183666.7381784143 + ], + [ + 534091.6525898686, + 183648.23655415466 + ], + [ + 534146.5283805125, + 183646.3475924168 + ], + [ + 534147.9154105934, + 183646.38423628634 + ], + [ + 534186.2350593824, + 183640.7199105107 + ], + [ + 534188.979735214, + 183641.9052504226 + ], + [ + 534236.2269981015, + 183639.81565870665 + ], + [ + 534248.916094217, + 183632.36147769052 + ], + [ + 534289.25772802, + 183628.97699438152 + ], + [ + 534299.4251987567, + 183638.14836380753 + ], + [ + 534330.5746032915, + 183641.19794210594 + ], + [ + 534334.8533790117, + 183636.85990650317 + ], + [ + 534375.7247760285, + 183613.459571335 + ], + [ + 534422.5603115619, + 183626.940126969 + ], + [ + 534464.7309192211, + 183606.9133092533 + ], + [ + 534471.6955801392, + 183605.98493706266 + ], + [ + 534481.8038829465, + 183617.38073531695 + ], + [ + 534588.5903195359, + 183594.61541820713 + ], + [ + 534582.3329739553, + 183568.85492995696 + ], + [ + 534598.6517142366, + 183529.22629237536 + ], + [ + 534656.5239630286, + 183492.92506529193 + ], + [ + 534654.1909793459, + 183423.86893065734 + ], + [ + 534781.3901572204, + 183495.12499185512 + ], + [ + 534803.3031006856, + 183480.127294405 + ], + [ + 534843.4397878762, + 183484.53139197238 + ], + [ + 534848.2354977566, + 183486.8843684813 + ], + [ + 534853.813337246, + 183485.9196823354 + ], + [ + 534901.0161172879, + 183563.95757195458 + ], + [ + 534898.8904922986, + 183591.72143490257 + ], + [ + 534901.6350458016, + 183592.90716247621 + ], + [ + 534983.4868244318, + 183568.37485173013 + ], + [ + 535025.5688460219, + 183603.99094667443 + ], + [ + 535048.6325535319, + 183597.9274125757 + ], + [ + 535060.7478173448, + 183586.008682548 + ], + [ + 535071.2986004304, + 183580.72525295737 + ], + [ + 535182.3515840536, + 183580.3420830167 + ], + [ + 535231.8708644358, + 183597.24007576355 + ], + [ + 535263.6963046396, + 183627.02099730785 + ], + [ + 535289.2972956816, + 183629.92867538054 + ], + [ + 535356.4680675853, + 183609.4624531094 + ], + [ + 535406.0525481519, + 183571.83582854533 + ], + [ + 535406.7460762692, + 183571.85432246135 + ], + [ + 535514.1023035615, + 183527.979870348 + ], + [ + 535589.5978763667, + 183507.73880783212 + ], + [ + 535604.2215525524, + 183505.90367014642 + ], + [ + 535656.2962848989, + 183505.068944166 + ], + [ + 535680.4512552277, + 183510.1655864418 + ], + [ + 535657.927840578, + 183288.11259578395 + ], + [ + 535696.4204844927, + 183250.19230655016 + ], + [ + 535766.7486843397, + 183267.65151389752 + ], + [ + 535781.9380575956, + 183244.6883788783 + ], + [ + 535781.9380575956, + 183244.6883788783 + ] + ] + ], + [ + [] + ] + ] + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "type", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "properties", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"Description\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"Name\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "geometry", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"type_id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"srid\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"boundary\",\"type\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"nullable\":true,\"metadata\":{}},{\"name\":\"holes\",\"type\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"nullable\":true,\"metadata\":{}}]}" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "postcodes_bng = (\n", + " postcodes.select(\n", + " \"type\", \"properties\", \"geometry\"\n", + " ).withColumn(\n", + " \"geometry\", mos.st_setsrid(\"geometry\", lit(4326))\n", + " ).withColumn(\n", + " \"geometry\", mos.st_transform(\"geometry\", lit(27700))\n", + " )\n", + ")\n", + "postcodes_bng.limit(1).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "1d0e1078-8088-45dc-8607-74e99ca98c59", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Example: Compute some basic geometry attributes._\n", + "\n", + "> Mosaic provides a number of functions for extracting the properties of geometries. Below are some that are relevant to Polygon geometries:" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "261519da-73b4-4ef3-830e-b74e6eff28ac", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
geometrycalculated_areacalculated_length
List(5, 27700, List(List(List(535781.9380575956, 183244.6883788783), List(535824.9598637373, 183219.13114683155), List(535857.6174945063, 183217.77906512795), List(535937.9652897029, 183172.0778235984), List(535948.0833085249, 183131.17423886806), List(535948.1726131596, 183127.83816223528), List(535954.1083358275, 183113.53036918928), List(535992.1193609729, 183067.80952594848), List(535993.5661128352, 183065.62262108468), List(536023.433274843, 183013.00698265154), List(536023.6417598329, 183005.22280622984), List(536019.9864220938, 182986.20691772352), List(535991.10526591, 182924.22825999785), List(536006.9008830489, 182904.62042294373), List(536029.5004004786, 182760.5587263456), List(535962.3273532258, 182728.7139400427), List(535957.3825413126, 182731.9200414074), List(535855.981967767, 182708.06319533306), List(535842.6443589143, 182687.67569398397), List(535833.745864351, 182682.98643173242), List(535806.7826882608, 182678.92696711444), List(535787.8063862727, 182661.7273213567), List(535768.6516090925, 182651.19990051258), List(535724.5650621236, 182664.48831547052), List(535671.083893747, 182639.69031467568), List(535649.9178289331, 182652.47882477642), List(535645.0325510963, 182653.46117701154), List(535581.7803402226, 182630.62884472188), List(535559.116011542, 182595.52657006297), List(535547.3534337038, 182594.09984491928), List(535512.2253112149, 182609.85480291082), List(535477.6131089614, 182632.3006572011), List(535454.7701589285, 182603.87101454858), List(535441.0515128053, 182545.6387309049), List(535441.3480281356, 182534.51847295318), List(535392.7614843239, 182534.3359901223), List(535378.7871684541, 182511.70721004112), List(535355.4689781135, 182501.07044976193), List(535332.54809557, 182501.57253937522), List(535319.7830267497, 182485.65304688836), List(535254.2094731658, 182471.66562843113), List(535233.8983120153, 182504.50927462179), List(535184.99899094, 182542.15613858588), List(535171.1848080601, 182539.5628792516), List(535188.4320349725, 182413.1610924584), List(535171.4449779494, 182399.35527161031), List(535156.8775325917, 182398.96765152615), List(535126.1481960944, 182405.93981478648), List(535117.3964801998, 182395.69169817545), List(535113.2935073929, 182393.35693709343), List(535046.0944043219, 182388.23154424207), List(535040.426642115, 182392.53211760416), List(535005.0780822264, 182390.4797147903), List(534989.4483038574, 182377.82341214077), List(534929.5250849993, 182386.2466646775), List(534926.6912537713, 182388.39701484208), List(534902.353081025, 182389.97622999403), List(534891.8446569596, 182367.44095034344), List(534822.0030447827, 182331.08968924946), List(534793.2369068528, 182342.5672069927), List(534789.0747382878, 182342.45676511177), List(534768.4409085622, 182335.2324451239), List(534716.2662738861, 182339.41255793435), List(534709.0639194129, 182349.23683925637), List(534606.2339552218, 182326.48043027992), List(534597.7622726331, 182331.81999374554), List(534580.2859382916, 182310.2136126347), List(534494.4274051443, 182275.668296282), List(534478.9138032356, 182258.56548488926), List(534448.3907594526, 182257.75755606516), List(534429.425290218, 182266.15809321858), List(534391.2421295254, 182266.26060967514), List(534373.558798522, 182252.43915361603), List(534276.0107687588, 182239.84453922248), List(534252.1718241313, 182222.5224069195), List(534227.5393820464, 182235.22514476796), List(534186.199365603, 182249.71225135983), List(534110.3320511248, 182231.01675352425), List(534087.0688351066, 182218.16183286835), List(534079.1258644154, 182203.4857467148), List(534054.9339733121, 182199.50889328966), List(534015.597704571, 182190.68140581233), List(533992.8122403203, 182212.33640354726), List(533866.3224438406, 182217.90405003884), List(533882.0043343764, 182255.03975232004), List(533882.1118874322, 182277.29861049942), List(533907.563830076, 182312.466308441), List(533923.3136380416, 182320.67111585021), List(533934.5394068043, 182368.8175582806), List(533925.0523586851, 182386.37225865485), List(533873.5143864275, 182392.80335840082), List(533859.7871893895, 182386.877599178), List(533847.8575499062, 182365.42002740753), List(533822.8062397578, 182341.39119331172), List(533820.7837512142, 182339.11231186916), List(533811.8536204272, 182335.5386665268), List(533775.6351340465, 182340.14873929322), List(533754.5225045574, 182377.4279951505), List(533726.5993517478, 182383.3696325071), List(533705.2706813519, 182376.13139397942), List(533704.0296535669, 182370.53473031026), List(533661.5269331775, 182323.7914324954), List(533650.1852706587, 182359.10259587853), List(533643.7957804046, 182364.49848743435), List(533592.6674969478, 182355.3640262651), List(533579.048749956, 182371.69786662376), List(533563.729136071, 182373.5206389891), List(533547.1391008857, 182370.85886459786), List(533500.3328063814, 182408.57647217682), List(533491.708691396, 182446.18495565542), List(533516.9947808256, 182461.31590327783), List(533518.8633508299, 182495.86176251573), List(533511.4005260145, 182515.695971929), List(533457.2576487551, 182542.0931076025), List(533476.0373819193, 182567.06810922833), List(533490.3257582185, 182630.87308835395), List(533456.6213927829, 182645.56658983114), List(533442.9378613638, 182690.83179383923), List(533400.0925503863, 182736.4438360546), List(533442.8860284169, 182772.06468460686), List(533444.820844416, 182777.67950834992), List(533441.031309065, 182789.82072529983), List(533362.30066867, 182801.1064503934), List(533360.1029890878, 182805.4999354959), List(533359.7526092468, 182818.84430400614), List(533344.485770287, 182845.15060313017), List(533336.0022694117, 182903.90613927244), List(533341.1424542875, 182919.62024957192), List(533339.8357444134, 182942.95468899893), List(533393.4991665736, 182961.05581658782), List(533408.8094940147, 182985.93951877212), List(533442.6499810042, 182992.39254114387), List(533445.5628353866, 183013.61224821693), List(533469.5465898013, 183025.3704739589), List(533463.8439242825, 183057.49177497294), List(533500.1287308584, 183102.95741226373), List(533466.967019293, 183149.93616036046), List(533503.3892198745, 183216.54865868646), List(533465.176452015, 183244.47702701658), List(533424.8910481959, 183245.6440381208), List(533424.1682635264, 183246.73784710694), List(533418.6045028507, 183300.00601616694), List(533411.4936098668, 183306.49599349493), List(533453.7188489789, 183389.95262020518), List(533448.7471163005, 183394.2731622412), List(533416.6101809462, 183402.33112426393), List(533386.8603066149, 183451.62554262602), List(533460.2507298898, 183484.71224287833), List(533477.0709651434, 183478.4775450573), List(533490.0435256548, 183486.6081507582), List(533491.6856267123, 183503.3433177545), List(533474.3100794131, 183530.70656481414), List(533439.575167135, 183532.01926295372), List(533414.6004345681, 183558.070208603), List(533421.9954622076, 183567.16690503713), List(533465.4536569463, 183577.21137004573), List(533467.4970158483, 183605.08507556678), List(533466.7158090527, 183608.4029416383), List(533448.3920701249, 183619.04934156616), List(533447.9536899813, 183635.72981729486), List(533477.7375418543, 183664.33265876118), List(533466.545667419, 183694.08407003182), List(533490.6933227498, 183725.8772636903), List(533528.2886847861, 183721.30179077585), List(533557.5998214906, 183688.68865956645), List(533611.3715561538, 183702.3441248663), List(533634.7255277758, 183685.15388438356), List(533680.0872158157, 183701.92715838), List(533737.6963941175, 183648.91685636976), List(533746.7999457252, 183645.81822844158), List(533761.7057262553, 183659.56450243742), List(533819.2086347946, 183663.3052394627), List(533857.2738980403, 183640.93969440804), List(533880.3842868664, 183659.35383981554), List(533933.0619141799, 183661.8558411452), List(533947.3721862542, 183645.5412537885), List(533998.086794612, 183643.54092136555), List(534006.174193125, 183652.65679096844), List(534075.89609284, 183666.7381784143), List(534091.6525898686, 183648.23655415466), List(534146.5283805125, 183646.3475924168), List(534147.9154105934, 183646.38423628634), List(534186.2350593824, 183640.7199105107), List(534188.979735214, 183641.9052504226), List(534236.2269981015, 183639.81565870665), List(534248.916094217, 183632.36147769052), List(534289.25772802, 183628.97699438152), List(534299.4251987567, 183638.14836380753), List(534330.5746032915, 183641.19794210594), List(534334.8533790117, 183636.85990650317), List(534375.7247760285, 183613.459571335), List(534422.5603115619, 183626.940126969), List(534464.7309192211, 183606.9133092533), List(534471.6955801392, 183605.98493706266), List(534481.8038829465, 183617.38073531695), List(534588.5903195359, 183594.61541820713), List(534582.3329739553, 183568.85492995696), List(534598.6517142366, 183529.22629237536), List(534656.5239630286, 183492.92506529193), List(534654.1909793459, 183423.86893065734), List(534781.3901572204, 183495.12499185512), List(534803.3031006856, 183480.127294405), List(534843.4397878762, 183484.53139197238), List(534848.2354977566, 183486.8843684813), List(534853.813337246, 183485.9196823354), List(534901.0161172879, 183563.95757195458), List(534898.8904922986, 183591.72143490257), List(534901.6350458016, 183592.90716247621), List(534983.4868244318, 183568.37485173013), List(535025.5688460219, 183603.99094667443), List(535048.6325535319, 183597.9274125757), List(535060.7478173448, 183586.008682548), List(535071.2986004304, 183580.72525295737), List(535182.3515840536, 183580.3420830167), List(535231.8708644358, 183597.24007576355), List(535263.6963046396, 183627.02099730785), List(535289.2972956816, 183629.92867538054), List(535356.4680675853, 183609.4624531094), List(535406.0525481519, 183571.83582854533), List(535406.7460762692, 183571.85432246135), List(535514.1023035615, 183527.979870348), List(535589.5978763667, 183507.73880783212), List(535604.2215525524, 183505.90367014642), List(535656.2962848989, 183505.068944166), List(535680.4512552277, 183510.1655864418), List(535657.927840578, 183288.11259578395), List(535696.4204844927, 183250.19230655016), List(535766.7486843397, 183267.65151389752), List(535781.9380575956, 183244.6883788783), List(535781.9380575956, 183244.6883788783))), List(List()))2912908.09396458048925.18009182342
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + [ + 5, + 27700, + [ + [ + [ + 535781.9380575956, + 183244.6883788783 + ], + [ + 535824.9598637373, + 183219.13114683155 + ], + [ + 535857.6174945063, + 183217.77906512795 + ], + [ + 535937.9652897029, + 183172.0778235984 + ], + [ + 535948.0833085249, + 183131.17423886806 + ], + [ + 535948.1726131596, + 183127.83816223528 + ], + [ + 535954.1083358275, + 183113.53036918928 + ], + [ + 535992.1193609729, + 183067.80952594848 + ], + [ + 535993.5661128352, + 183065.62262108468 + ], + [ + 536023.433274843, + 183013.00698265154 + ], + [ + 536023.6417598329, + 183005.22280622984 + ], + [ + 536019.9864220938, + 182986.20691772352 + ], + [ + 535991.10526591, + 182924.22825999785 + ], + [ + 536006.9008830489, + 182904.62042294373 + ], + [ + 536029.5004004786, + 182760.5587263456 + ], + [ + 535962.3273532258, + 182728.7139400427 + ], + [ + 535957.3825413126, + 182731.9200414074 + ], + [ + 535855.981967767, + 182708.06319533306 + ], + [ + 535842.6443589143, + 182687.67569398397 + ], + [ + 535833.745864351, + 182682.98643173242 + ], + [ + 535806.7826882608, + 182678.92696711444 + ], + [ + 535787.8063862727, + 182661.7273213567 + ], + [ + 535768.6516090925, + 182651.19990051258 + ], + [ + 535724.5650621236, + 182664.48831547052 + ], + [ + 535671.083893747, + 182639.69031467568 + ], + [ + 535649.9178289331, + 182652.47882477642 + ], + [ + 535645.0325510963, + 182653.46117701154 + ], + [ + 535581.7803402226, + 182630.62884472188 + ], + [ + 535559.116011542, + 182595.52657006297 + ], + [ + 535547.3534337038, + 182594.09984491928 + ], + [ + 535512.2253112149, + 182609.85480291082 + ], + [ + 535477.6131089614, + 182632.3006572011 + ], + [ + 535454.7701589285, + 182603.87101454858 + ], + [ + 535441.0515128053, + 182545.6387309049 + ], + [ + 535441.3480281356, + 182534.51847295318 + ], + [ + 535392.7614843239, + 182534.3359901223 + ], + [ + 535378.7871684541, + 182511.70721004112 + ], + [ + 535355.4689781135, + 182501.07044976193 + ], + [ + 535332.54809557, + 182501.57253937522 + ], + [ + 535319.7830267497, + 182485.65304688836 + ], + [ + 535254.2094731658, + 182471.66562843113 + ], + [ + 535233.8983120153, + 182504.50927462179 + ], + [ + 535184.99899094, + 182542.15613858588 + ], + [ + 535171.1848080601, + 182539.5628792516 + ], + [ + 535188.4320349725, + 182413.1610924584 + ], + [ + 535171.4449779494, + 182399.35527161031 + ], + [ + 535156.8775325917, + 182398.96765152615 + ], + [ + 535126.1481960944, + 182405.93981478648 + ], + [ + 535117.3964801998, + 182395.69169817545 + ], + [ + 535113.2935073929, + 182393.35693709343 + ], + [ + 535046.0944043219, + 182388.23154424207 + ], + [ + 535040.426642115, + 182392.53211760416 + ], + [ + 535005.0780822264, + 182390.4797147903 + ], + [ + 534989.4483038574, + 182377.82341214077 + ], + [ + 534929.5250849993, + 182386.2466646775 + ], + [ + 534926.6912537713, + 182388.39701484208 + ], + [ + 534902.353081025, + 182389.97622999403 + ], + [ + 534891.8446569596, + 182367.44095034344 + ], + [ + 534822.0030447827, + 182331.08968924946 + ], + [ + 534793.2369068528, + 182342.5672069927 + ], + [ + 534789.0747382878, + 182342.45676511177 + ], + [ + 534768.4409085622, + 182335.2324451239 + ], + [ + 534716.2662738861, + 182339.41255793435 + ], + [ + 534709.0639194129, + 182349.23683925637 + ], + [ + 534606.2339552218, + 182326.48043027992 + ], + [ + 534597.7622726331, + 182331.81999374554 + ], + [ + 534580.2859382916, + 182310.2136126347 + ], + [ + 534494.4274051443, + 182275.668296282 + ], + [ + 534478.9138032356, + 182258.56548488926 + ], + [ + 534448.3907594526, + 182257.75755606516 + ], + [ + 534429.425290218, + 182266.15809321858 + ], + [ + 534391.2421295254, + 182266.26060967514 + ], + [ + 534373.558798522, + 182252.43915361603 + ], + [ + 534276.0107687588, + 182239.84453922248 + ], + [ + 534252.1718241313, + 182222.5224069195 + ], + [ + 534227.5393820464, + 182235.22514476796 + ], + [ + 534186.199365603, + 182249.71225135983 + ], + [ + 534110.3320511248, + 182231.01675352425 + ], + [ + 534087.0688351066, + 182218.16183286835 + ], + [ + 534079.1258644154, + 182203.4857467148 + ], + [ + 534054.9339733121, + 182199.50889328966 + ], + [ + 534015.597704571, + 182190.68140581233 + ], + [ + 533992.8122403203, + 182212.33640354726 + ], + [ + 533866.3224438406, + 182217.90405003884 + ], + [ + 533882.0043343764, + 182255.03975232004 + ], + [ + 533882.1118874322, + 182277.29861049942 + ], + [ + 533907.563830076, + 182312.466308441 + ], + [ + 533923.3136380416, + 182320.67111585021 + ], + [ + 533934.5394068043, + 182368.8175582806 + ], + [ + 533925.0523586851, + 182386.37225865485 + ], + [ + 533873.5143864275, + 182392.80335840082 + ], + [ + 533859.7871893895, + 182386.877599178 + ], + [ + 533847.8575499062, + 182365.42002740753 + ], + [ + 533822.8062397578, + 182341.39119331172 + ], + [ + 533820.7837512142, + 182339.11231186916 + ], + [ + 533811.8536204272, + 182335.5386665268 + ], + [ + 533775.6351340465, + 182340.14873929322 + ], + [ + 533754.5225045574, + 182377.4279951505 + ], + [ + 533726.5993517478, + 182383.3696325071 + ], + [ + 533705.2706813519, + 182376.13139397942 + ], + [ + 533704.0296535669, + 182370.53473031026 + ], + [ + 533661.5269331775, + 182323.7914324954 + ], + [ + 533650.1852706587, + 182359.10259587853 + ], + [ + 533643.7957804046, + 182364.49848743435 + ], + [ + 533592.6674969478, + 182355.3640262651 + ], + [ + 533579.048749956, + 182371.69786662376 + ], + [ + 533563.729136071, + 182373.5206389891 + ], + [ + 533547.1391008857, + 182370.85886459786 + ], + [ + 533500.3328063814, + 182408.57647217682 + ], + [ + 533491.708691396, + 182446.18495565542 + ], + [ + 533516.9947808256, + 182461.31590327783 + ], + [ + 533518.8633508299, + 182495.86176251573 + ], + [ + 533511.4005260145, + 182515.695971929 + ], + [ + 533457.2576487551, + 182542.0931076025 + ], + [ + 533476.0373819193, + 182567.06810922833 + ], + [ + 533490.3257582185, + 182630.87308835395 + ], + [ + 533456.6213927829, + 182645.56658983114 + ], + [ + 533442.9378613638, + 182690.83179383923 + ], + [ + 533400.0925503863, + 182736.4438360546 + ], + [ + 533442.8860284169, + 182772.06468460686 + ], + [ + 533444.820844416, + 182777.67950834992 + ], + [ + 533441.031309065, + 182789.82072529983 + ], + [ + 533362.30066867, + 182801.1064503934 + ], + [ + 533360.1029890878, + 182805.4999354959 + ], + [ + 533359.7526092468, + 182818.84430400614 + ], + [ + 533344.485770287, + 182845.15060313017 + ], + [ + 533336.0022694117, + 182903.90613927244 + ], + [ + 533341.1424542875, + 182919.62024957192 + ], + [ + 533339.8357444134, + 182942.95468899893 + ], + [ + 533393.4991665736, + 182961.05581658782 + ], + [ + 533408.8094940147, + 182985.93951877212 + ], + [ + 533442.6499810042, + 182992.39254114387 + ], + [ + 533445.5628353866, + 183013.61224821693 + ], + [ + 533469.5465898013, + 183025.3704739589 + ], + [ + 533463.8439242825, + 183057.49177497294 + ], + [ + 533500.1287308584, + 183102.95741226373 + ], + [ + 533466.967019293, + 183149.93616036046 + ], + [ + 533503.3892198745, + 183216.54865868646 + ], + [ + 533465.176452015, + 183244.47702701658 + ], + [ + 533424.8910481959, + 183245.6440381208 + ], + [ + 533424.1682635264, + 183246.73784710694 + ], + [ + 533418.6045028507, + 183300.00601616694 + ], + [ + 533411.4936098668, + 183306.49599349493 + ], + [ + 533453.7188489789, + 183389.95262020518 + ], + [ + 533448.7471163005, + 183394.2731622412 + ], + [ + 533416.6101809462, + 183402.33112426393 + ], + [ + 533386.8603066149, + 183451.62554262602 + ], + [ + 533460.2507298898, + 183484.71224287833 + ], + [ + 533477.0709651434, + 183478.4775450573 + ], + [ + 533490.0435256548, + 183486.6081507582 + ], + [ + 533491.6856267123, + 183503.3433177545 + ], + [ + 533474.3100794131, + 183530.70656481414 + ], + [ + 533439.575167135, + 183532.01926295372 + ], + [ + 533414.6004345681, + 183558.070208603 + ], + [ + 533421.9954622076, + 183567.16690503713 + ], + [ + 533465.4536569463, + 183577.21137004573 + ], + [ + 533467.4970158483, + 183605.08507556678 + ], + [ + 533466.7158090527, + 183608.4029416383 + ], + [ + 533448.3920701249, + 183619.04934156616 + ], + [ + 533447.9536899813, + 183635.72981729486 + ], + [ + 533477.7375418543, + 183664.33265876118 + ], + [ + 533466.545667419, + 183694.08407003182 + ], + [ + 533490.6933227498, + 183725.8772636903 + ], + [ + 533528.2886847861, + 183721.30179077585 + ], + [ + 533557.5998214906, + 183688.68865956645 + ], + [ + 533611.3715561538, + 183702.3441248663 + ], + [ + 533634.7255277758, + 183685.15388438356 + ], + [ + 533680.0872158157, + 183701.92715838 + ], + [ + 533737.6963941175, + 183648.91685636976 + ], + [ + 533746.7999457252, + 183645.81822844158 + ], + [ + 533761.7057262553, + 183659.56450243742 + ], + [ + 533819.2086347946, + 183663.3052394627 + ], + [ + 533857.2738980403, + 183640.93969440804 + ], + [ + 533880.3842868664, + 183659.35383981554 + ], + [ + 533933.0619141799, + 183661.8558411452 + ], + [ + 533947.3721862542, + 183645.5412537885 + ], + [ + 533998.086794612, + 183643.54092136555 + ], + [ + 534006.174193125, + 183652.65679096844 + ], + [ + 534075.89609284, + 183666.7381784143 + ], + [ + 534091.6525898686, + 183648.23655415466 + ], + [ + 534146.5283805125, + 183646.3475924168 + ], + [ + 534147.9154105934, + 183646.38423628634 + ], + [ + 534186.2350593824, + 183640.7199105107 + ], + [ + 534188.979735214, + 183641.9052504226 + ], + [ + 534236.2269981015, + 183639.81565870665 + ], + [ + 534248.916094217, + 183632.36147769052 + ], + [ + 534289.25772802, + 183628.97699438152 + ], + [ + 534299.4251987567, + 183638.14836380753 + ], + [ + 534330.5746032915, + 183641.19794210594 + ], + [ + 534334.8533790117, + 183636.85990650317 + ], + [ + 534375.7247760285, + 183613.459571335 + ], + [ + 534422.5603115619, + 183626.940126969 + ], + [ + 534464.7309192211, + 183606.9133092533 + ], + [ + 534471.6955801392, + 183605.98493706266 + ], + [ + 534481.8038829465, + 183617.38073531695 + ], + [ + 534588.5903195359, + 183594.61541820713 + ], + [ + 534582.3329739553, + 183568.85492995696 + ], + [ + 534598.6517142366, + 183529.22629237536 + ], + [ + 534656.5239630286, + 183492.92506529193 + ], + [ + 534654.1909793459, + 183423.86893065734 + ], + [ + 534781.3901572204, + 183495.12499185512 + ], + [ + 534803.3031006856, + 183480.127294405 + ], + [ + 534843.4397878762, + 183484.53139197238 + ], + [ + 534848.2354977566, + 183486.8843684813 + ], + [ + 534853.813337246, + 183485.9196823354 + ], + [ + 534901.0161172879, + 183563.95757195458 + ], + [ + 534898.8904922986, + 183591.72143490257 + ], + [ + 534901.6350458016, + 183592.90716247621 + ], + [ + 534983.4868244318, + 183568.37485173013 + ], + [ + 535025.5688460219, + 183603.99094667443 + ], + [ + 535048.6325535319, + 183597.9274125757 + ], + [ + 535060.7478173448, + 183586.008682548 + ], + [ + 535071.2986004304, + 183580.72525295737 + ], + [ + 535182.3515840536, + 183580.3420830167 + ], + [ + 535231.8708644358, + 183597.24007576355 + ], + [ + 535263.6963046396, + 183627.02099730785 + ], + [ + 535289.2972956816, + 183629.92867538054 + ], + [ + 535356.4680675853, + 183609.4624531094 + ], + [ + 535406.0525481519, + 183571.83582854533 + ], + [ + 535406.7460762692, + 183571.85432246135 + ], + [ + 535514.1023035615, + 183527.979870348 + ], + [ + 535589.5978763667, + 183507.73880783212 + ], + [ + 535604.2215525524, + 183505.90367014642 + ], + [ + 535656.2962848989, + 183505.068944166 + ], + [ + 535680.4512552277, + 183510.1655864418 + ], + [ + 535657.927840578, + 183288.11259578395 + ], + [ + 535696.4204844927, + 183250.19230655016 + ], + [ + 535766.7486843397, + 183267.65151389752 + ], + [ + 535781.9380575956, + 183244.6883788783 + ], + [ + 535781.9380575956, + 183244.6883788783 + ] + ] + ], + [ + [] + ] + ], + 2912908.0939645804, + 8925.18009182342 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "geometry", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"type_id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"srid\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"boundary\",\"type\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"nullable\":true,\"metadata\":{}},{\"name\":\"holes\",\"type\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":{\"type\":\"array\",\"elementType\":\"double\",\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"containsNull\":true},\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "calculated_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "calculated_length", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "display(\n", + " postcodes_bng\n", + " .withColumn(\"calculated_area\", mos.st_area(col(\"geometry\")))\n", + " .withColumn(\"calculated_length\", mos.st_length(col(\"geometry\")))\n", + " # Note: The unit of measure of the area and length depends on the CRS used.\n", + " # For British National Grid locations it will be square meters and meters\n", + " .select(\"geometry\", \"calculated_area\", \"calculated_length\")\n", + " .limit(1) # <- limiting for ipynb only\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c965eb2f-3b8b-4f25-8658-f9e6b6907b71", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Reproject UPRN Points to BNG SRID\n", + "\n", + "> The UPRNs table contains Unique Property Reference Numbers and positions provided in EPSG:27700 and EPSG:4326. Since we are operating in EPSG:27700 and using BNG as our indexing system, we will use the location data provided via Northings and Eastings coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a967ca2f-6205-42fa-8d7e-4e167c846373", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
UPRNX_COORDINATEY_COORDINATEuprn_point
10010266671542744.02176316.22POINT (542744.02 176316.22)
10010266672543142.76174400.84POINT (543142.76 174400.84)
10010266673540615.6175439.19POINT (540615.6 175439.19)
10010266674540614.66175444.2POINT (540614.66 175444.2)
10010266675540613.72175449.22POINT (540613.72 175449.22)
10010266676540615.45175454.73POINT (540615.45 175454.73)
10010266677540614.55175459.75POINT (540614.55 175459.75)
10010266678540613.65175464.78POINT (540613.65 175464.78)
10010266679537778.13177195.59POINT (537778.13 177195.59)
10010266680537778.13177195.59POINT (537778.13 177195.59)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 10010266671, + 542744.02, + 176316.22, + "POINT (542744.02 176316.22)" + ], + [ + 10010266672, + 543142.76, + 174400.84, + "POINT (543142.76 174400.84)" + ], + [ + 10010266673, + 540615.6, + 175439.19, + "POINT (540615.6 175439.19)" + ], + [ + 10010266674, + 540614.66, + 175444.2, + "POINT (540614.66 175444.2)" + ], + [ + 10010266675, + 540613.72, + 175449.22, + "POINT (540613.72 175449.22)" + ], + [ + 10010266676, + 540615.45, + 175454.73, + "POINT (540615.45 175454.73)" + ], + [ + 10010266677, + 540614.55, + 175459.75, + "POINT (540614.55 175459.75)" + ], + [ + 10010266678, + 540613.65, + 175464.78, + "POINT (540613.65 175464.78)" + ], + [ + 10010266679, + 537778.13, + 177195.59, + "POINT (537778.13 177195.59)" + ], + [ + 10010266680, + 537778.13, + 177195.59, + "POINT (537778.13 177195.59)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "UPRN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "X_COORDINATE", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Y_COORDINATE", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "uprn_point", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "_uprns_bng = (\n", + " uprns\n", + " .withColumn(\"uprn_point\", mos.st_point(col(\"X_COORDINATE\"), col(\"Y_COORDINATE\")))\n", + " # we are using WKT here for simpler displaying, use WKB for faster query run time\n", + " .withColumn(\"uprn_point\", mos.st_aswkt(\"uprn_point\")) \n", + " .where(mos.st_hasvalidcoordinates(\"uprn_point\", lit('EPSG:27700'), lit('reprojected_bounds')))\n", + " .where(mos.st_isvalid(col(\"uprn_point\")))\n", + " .drop(\"LATITUDE\", \"LONGITUDE\")\n", + ")\n", + "_uprns_bng.limit(10).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "55b05a95-8893-45a1-bca5-c6dc3fe85e22", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> Next step is optional. However, since we are constructing POINT geometries and ensuring they are valid it is prudent to write out the validated dataset. That way we are making sure validation is performed only once at ingestion time and not each time spark runs the queries (due to spark lazy evaluation). " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "48ba2ff3-5223-46d0-82d6-9c98bf91f07e", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "spark.sql(\"drop table if exists uprns_bng\")\n", + "_uprns_bng.write.format(\"delta\").mode(\"overwrite\").saveAsTable(\"uprns_bng\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2d9c3987-ca29-4f44-a9c1-e0acd64a89ce", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 40,591,073\n" + ] + } + ], + "source": [ + "uprns_bng = spark.read.table(\"uprns_bng\")\n", + "print(f\"count? {uprns_bng.count():,}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "7f63e084-67a6-4fb0-90c8-505346ab72f6", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Spatial Joins\n", + "\n", + "> We can use Mosaic to perform spatial joins both with and without Mosaic indexing strategies. Indexing is very important when handling very different geometries both in size and in shape (ie. number of vertices). In the context of Mosaic we are using grid index systems rather than traditional tree based index system. The reason for this is the fact grid index systems like BNG and/or H3 are far better suited for distributed massive scale systems. Mosaic comes with grid_tessallate expressions that allow the caller to index an arbitrary shape within grid index system of choice. One thing to note here is that tessellation is a specialised way of converting a geometry to set of grid index system cells with their local geometries.
\n", + "\n", + "__Tessellation is applicable to any shape, Polygon, LineString, Points and their Multi* variants.__" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "9aeb0674-fd9b-4685-864e-4783fbb8ab6d", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### [1] Getting the optimal resolution\n", + "\n", + "> We can use Mosaic functionality to identify how to best index/tessellate our data based on the data inside the specific dataframe.
\n", + "Selecting an apropriate tessellation resolution can have a considerable impact on the performance.
" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ca8daa25-4062-45c4-8703-87a07685a4b6", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "\n Optimal resolution code is :-4.\n Optimal resolution name is :500m.\n\n" + ] + } + ], + "source": [ + "from mosaic import MosaicFrame\n", + "\n", + "postcodes_mosaic_frame = MosaicFrame(postcodes_bng, \"geometry\")\n", + "optimal_resolution = postcodes_mosaic_frame.get_optimal_resolution(sample_fraction=0.75)\n", + "optimal_resolution_str = postcodes_mosaic_frame.get_optimal_resolution_str(sample_fraction=0.75)\n", + "\n", + "print(f\"\"\"\n", + " Optimal resolution code is :{optimal_resolution}.\n", + " Optimal resolution name is :{optimal_resolution_str}.\n", + "\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "16f26da4-32ef-46bf-8eb3-7f1f470d16b8", + "showTitle": false, + "title": "" + } + }, + "source": [ + "\n", + "> Not every resolution will yield performance improvements. By a rule of thumb it is always better to select more coarse resolution than to select a more fine grained resolution - if not sure select a lower resolution. Tessellation is a trade off between decomposition and explosion factor. The more fine grained the resolution is the more explosion of rows will impact the preprocessing time. However, it will make data more parallel. On the other hand, if the resolution is too coarse we are not addressing localisation related data skews. You can think of Mosaic's tessellation as a way to partition an overly complex row into multiple rows that have a balanced amount of computation each." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "85d9df4f-c1a6-4f9d-8da8-dd905fee243c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
resolutionmean_index_areamean_geometry_areapercentile_25_geometry_areapercentile_50_geometry_areapercentile_75_geometry_area
410000.0412.35439945734294101.33915798543552393.67019398293326579.0929378698623
-4250000.016.494175978293724.053566319417420515.74680775931733123.163717514794495
-52500.01649.4175978293717405.35663194174211574.6807759317332316.3717514794494
31000000.04.123543994573431.01339157985435513.9367019398293335.790929378698624
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 4, + 10000.0, + 412.35439945734294, + 101.33915798543552, + 393.67019398293326, + 579.0929378698623 + ], + [ + -4, + 250000.0, + 16.49417597829372, + 4.0535663194174205, + 15.746807759317331, + 23.163717514794495 + ], + [ + -5, + 2500.0, + 1649.4175978293717, + 405.3566319417421, + 1574.680775931733, + 2316.3717514794494 + ], + [ + 3, + 1000000.0, + 4.12354399457343, + 1.0133915798543551, + 3.936701939829333, + 5.790929378698624 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "resolution", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "mean_index_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "mean_geometry_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "percentile_25_geometry_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "percentile_50_geometry_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "percentile_75_geometry_area", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "display(\n", + " postcodes_mosaic_frame.get_resolution_metrics(sample_rows=150)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "4acb267c-c186-4ab3-acf2-e624ccb624ae", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### [2] Indexing/Tessellating using the optimal resolution\n", + "\n", + "> We will use mosaic sql functions to index our points data. Here we will use resolution -4 (500m), index resolution depends on the dataset in use. There is a second best choice which is 4 (100m). The user can pass either numerical resolution or the string label to the grid expressions. BNG provides 2 types of hierarchies. The standard hierarchy which operates with index resolutions in base 10 (i.e. (6, 1m), (5, 10m), (4, 100m), (3, 1km), (2, 10km), (1, 100km)) and cell ids follow the format of letter pair followed by coordinate bins at the selected resolution (e.g. TQ100100 for (4, 100m)). The quad hierachy (or quadrant hierarchy) which operates with index resolutions in base 5 (i.e. (-6, 5m), (-5, 50m), (-4, 500m), (-3, 5km), (-2, 50km), (-1, 500km)) and cell ids follow the format of letter pair followed by coordinate bins at the selected resolution and folowed by quadrant letters (e.g. TQ100100SW for (-4, 500m)). Quadrants correspond to compas directions SW (south west), NW (north west), NE (north east) and SE (south east)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c24e60b6-9e35-46c9-b1c9-9bc8807efe79", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Full processing of all the Cycling data can take a little while, so we offer you a full or sample option, depending on your appetite._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "32ba3606-791b-4510-8482-7c4226bd64d8", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 406,871\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
UPRNX_COORDINATEY_COORDINATEuprn_pointuprn_bng_500muprn_bng_500m_struprn_bng_100m_str
10023609852268073.09213302.63POINT (268073.09 213302.63)SN6813SWSN6813SWSN680133
10023610059225741.11214655.3POINT (225741.11 214655.3)SN2514NESN2514NESN257146
10023610071250735.0200942.0POINT (250735 200942)SN5000NESN5000NESN507009
10023610128250243.0199800.0POINT (250243 199800)SS5099NWSS5099NWSS502998
10023610129251011.0200584.0POINT (251011 200584)SN5100NWSN5100NWSN510005
10023610195250831.0199092.0POINT (250831 199092)SS5099SESS5099SESS508990
10023610218255862.0201157.0POINT (255862 201157)SN5501SESN5501SESN558011
10023610233241079.0207472.0POINT (241079 207472)SN4107SWSN4107SWSN410074
10023610499253442.0200037.0POINT (253442 200037)SN5300SWSN5300SWSN534000
10023610552242093.0219684.0POINT (242093 219684)SN4219NWSN4219NWSN420196
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 10023609852, + 268073.09, + 213302.63, + "POINT (268073.09 213302.63)", + "SN6813SW", + "SN6813SW", + "SN680133" + ], + [ + 10023610059, + 225741.11, + 214655.3, + "POINT (225741.11 214655.3)", + "SN2514NE", + "SN2514NE", + "SN257146" + ], + [ + 10023610071, + 250735.0, + 200942.0, + "POINT (250735 200942)", + "SN5000NE", + "SN5000NE", + "SN507009" + ], + [ + 10023610128, + 250243.0, + 199800.0, + "POINT (250243 199800)", + "SS5099NW", + "SS5099NW", + "SS502998" + ], + [ + 10023610129, + 251011.0, + 200584.0, + "POINT (251011 200584)", + "SN5100NW", + "SN5100NW", + "SN510005" + ], + [ + 10023610195, + 250831.0, + 199092.0, + "POINT (250831 199092)", + "SS5099SE", + "SS5099SE", + "SS508990" + ], + [ + 10023610218, + 255862.0, + 201157.0, + "POINT (255862 201157)", + "SN5501SE", + "SN5501SE", + "SN558011" + ], + [ + 10023610233, + 241079.0, + 207472.0, + "POINT (241079 207472)", + "SN4107SW", + "SN4107SW", + "SN410074" + ], + [ + 10023610499, + 253442.0, + 200037.0, + "POINT (253442 200037)", + "SN5300SW", + "SN5300SW", + "SN534000" + ], + [ + 10023610552, + 242093.0, + 219684.0, + "POINT (242093 219684)", + "SN4219NW", + "SN4219NW", + "SN420196" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "UPRN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "X_COORDINATE", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "Y_COORDINATE", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "uprn_point", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "uprn_bng_500m", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "uprn_bng_500m_str", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "uprn_bng_100m_str", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "uprns_opt = (\n", + " uprns_bng\n", + " .withColumn(\"uprn_bng_500m\", mos.grid_pointascellid(\"uprn_point\", F.lit(optimal_resolution)))\n", + " .withColumn(\"uprn_bng_500m_str\", mos.grid_pointascellid(\"uprn_point\", F.lit(optimal_resolution_str)))\n", + " .withColumn(\"uprn_bng_100m_str\", mos.grid_pointascellid(\"uprn_point\", F.lit(\"100m\")))\n", + ")\n", + "# - uncomment to only use a 1% sample\n", + "# using 400K of the 40M\n", + "uprns_opt = uprns_opt.sample(0.01)\n", + "\n", + "print(f\"count? {uprns_opt.count():,}\")\n", + "uprns_opt.limit(10).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ef8de0cd-6673-4da8-a1df-32c4acfaaed6", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> Mosaic has a builtin wrappers for KeplerGL map plots using mosaic_kepler IPython magics. Mosaic magics automatically handle bng grid idex system and CRS conversion for you. Given that Kepler Plots are rendered on the browser side we are automatically limiting the row count to 1000. The end user can override the number of ploted rows by specifying the desired number." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "87b711fe-adde-493e-8a95-200f49d2df2f", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "spark.catalog.clearCache() # <- cache is useful for dev (avoid recomputes)\n", + "count_per_index = uprns_opt.groupBy(\"uprn_bng_500m\").count().cache()" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e483feda-4bc5-43b5-a1f7-1cd50041ccd6", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "dfb141a7-df85-4a92-90a4-032d29064653", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results. Hint: you can configure layer properties._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "831bcb6d-6fb8-4ae9-8be0-5c3991e78efd", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# count_per_index \"uprn_bng_500m\" \"bng\" 50" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ff47c4db-1ac0-4359-b769-4dc0331767e6", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> We will use Mosaic to tessellate our postcode geometries using a built in tessellation generator (explode) function ." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7099bac3-78fe-4ce7-b596-aaf8cc41ef50", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
typepropertieschips
FeatureCollectionList(E2 postcode district, E2)List(true, TQ3482NW, AAAAAAMAAAABAAAABkEgS+AAAAAAQQZHIAAAAABBIE/IAAAAAEEGRyAAAAAAQSBPyAAAAABBBlbAAAAAAEEgS+AAAAAAQQZWwAAAAABBIEvgAAAAAEEGRyAAAAAAQSBL4AAAAABBBkcgAAAAAA==)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "FeatureCollection", + [ + "E2 postcode district", + "E2" + ], + [ + true, + "TQ3482NW", + "AAAAAAMAAAABAAAABkEgS+AAAAAAQQZHIAAAAABBIE/IAAAAAEEGRyAAAAAAQSBPyAAAAABBBlbAAAAAAEEgS+AAAAAAQQZWwAAAAABBIEvgAAAAAEEGRyAAAAAAQSBL4AAAAABBBkcgAAAAAA==" + ] + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "type", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "properties", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"Description\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"Name\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "chips", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"is_core\",\"type\":\"boolean\",\"nullable\":true,\"metadata\":{}},{\"name\":\"index_id\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"wkb\",\"type\":\"binary\",\"nullable\":true,\"metadata\":{}}]}" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "postcodes_with_index = (\n", + " postcodes_bng\n", + " # We break down the original geometry in multiple smaller mosaic chips\n", + " # each fully contained in a grid cell\n", + " .withColumn(\"chips\", mos.grid_tessellateexplode(col(\"geometry\"), F.lit(optimal_resolution)))\n", + " # We don't need the original geometry any more, since we have broken it down into\n", + " # Smaller mosaic chips.\n", + " .drop(\"json_geometry\", \"geometry\")\n", + ")\n", + "\n", + "postcodes_with_index.limit(1).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "88749047-2354-488c-803e-b41bec0aa0dc", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "to_display = postcodes_with_index.select(\"properties.Name\", \"chips.index_id\", mos.st_aswkt(\"chips.wkb\").alias(\"geometry\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2ea12c68-7eac-4145-81fe-78b165fa8c58", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "99b91323-c21e-4f9c-95fa-3a7bed931ac2", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results. Hint: you can configure layer properties._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c2cc06bf-0c7c-49fd-923d-6cec0e70fc0b", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# to_display \"geometry\" \"geometry(27700)\" 200" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "be1e343e-f091-4493-88b5-b7aace1643e5", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### [3] Performing the spatial join\n", + "\n", + "> We can now do spatial join between our UPRNs and postcodes." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a48fb8aa-6abf-4fd9-a900-178eca780f69", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
DescriptionNameuprn_pointUPRNindex_idindex_geometry
E5 postcode districtE5POINT (535126 186727)10008234067TQ3586NWPOLYGON ((535000 186500, 535500 186500, 535500 187000, 535000 187000, 535000 186500, 535000 186500))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "E5 postcode district", + "E5", + "POINT (535126 186727)", + 10008234067, + "TQ3586NW", + "POLYGON ((535000 186500, 535500 186500, 535500 187000, 535000 187000, 535000 186500, 535000 186500))" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "Description", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "Name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "uprn_point", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "UPRN", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "index_id", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "index_geometry", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "with_postcodes = (\n", + " uprns_opt.join(\n", + " postcodes_with_index,\n", + " uprns_opt[\"uprn_bng_500m\"] == postcodes_with_index[\"chips.index_id\"],\n", + " how = \"right_outer\" # to perserve even emtpy chips\n", + " ).where(\n", + " # If the borough is a core chip (the chip is fully contained within the geometry), then we do not need\n", + " # to perform any intersection, because any point matching the same index will certainly be contained in\n", + " # the borough. Otherwise we need to perform an st_contains operation on the chip geometry.\n", + " col(\"chips.is_core\") | mos.st_contains(col(\"chips.wkb\"), col(\"uprn_point\"))\n", + " ).select(\n", + " \"properties.*\", \"uprn_point\", \"UPRN\", \"chips.index_id\", mos.st_aswkt(\"chips.wkb\").alias(\"index_geometry\")\n", + " )\n", + ")\n", + "\n", + "with_postcodes.limit(1).display() # <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "b06d302c-42a2-45c9-8042-ad52921d26e3", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Visualise the results in Kepler\n", + "\n", + "> We have already used this in the notebook, but want to call out that Mosaic abstracts interaction with Kepler in python through `mosaic_kepler` magic. The magic takes care of conversion between EPSG:27700 and EPSG:4326 so that Kepler can properly render. It can handle columns with bng index ids (int and str formats are both supported) and geometries that are provided in EPSG:27700. Mosaic will convert all the geometries for proper rendering." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "30b30c5e-cfef-4eda-ad13-b9f4f44e6e55", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "7f9cd19a-b587-49ec-bdc9-dc5b6480927c", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results. Hint: you can configure layer properties._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7e6f66d6-a1bd-46a0-aecc-e148ca0807fa", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# with_postcodes \"index_geometry\" \"geometry(27700)\" 5000" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "a95edd3d-41f0-40c6-8655-f3af573d73d8", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> Using mosaic it takes only a few lines of code to produce BNG based heat map and visualise it in Kepler. By default the colors wont be affected by the counts and you'd need to change the options in Kepler UI. Navigate to the layer, expland it and for the fill color click on the 3 dots icon, then select count as the field for color scaling. " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "20124fe4-538e-4378-bf95-15de644695a4", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "properties_per_index = with_postcodes.groupBy(\"index_id\").count()" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ea2d5649-30b0-481c-b2e0-46bdaab19e33", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "bfbed669-9885-4282-b5bf-f910b5539660", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results. Hint: you can configure layer properties._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d50a7fe8-f4fd-428d-8b08-b894cc6f45ae", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# properties_per_index \"index_id\" \"bng\" 6000" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "615cff88-d314-4290-90b9-0013214e7e1e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> We can do the same per chip." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "eddf229d-f65e-4d30-b85e-6ad673eacd07", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "properties_per_chip = with_postcodes.groupBy(\"index_geometry\").count()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "6693ec87-ce2c-48a6-b32d-8680df5ba34d", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> Note that if you dont use \"right_outer\" join some chips may be empty. This is due to no UPRNs being located in those exact chips." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e6decba5-7443-49fa-8836-6f44b6d18169", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e4201501-8308-4116-bf56-c2f63a2c9528", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results. Hint: you can configure layer properties._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "f7886a3e-cc59-4a61-a8ad-8e515f038d11", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# properties_per_chip \"index_geometry\" \"geometry(27700)\" 20000" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 85549842242909, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "transform_join_bng", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/python/Validate/README.md b/notebooks/examples/python/Validate/README.md new file mode 100644 index 000000000..a0540a4b1 --- /dev/null +++ b/notebooks/examples/python/Validate/README.md @@ -0,0 +1,5 @@ +# Validate Examples + +> Examples of validating spatial data. + +__Note: `ipynb` files can be previewed in GitHub and can also be imported into Databricks, more [here](https://docs.databricks.com/en/notebooks/notebook-export-import.html).__ diff --git a/notebooks/examples/python/Validate/shapely_validate_udfs.ipynb b/notebooks/examples/python/Validate/shapely_validate_udfs.ipynb new file mode 100644 index 000000000..e0f60a0ab --- /dev/null +++ b/notebooks/examples/python/Validate/shapely_validate_udfs.ipynb @@ -0,0 +1,1673 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "89a84928-6a2b-4aaa-b7b1-c2e011199bfb", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Shapely Validate Example \n", + "\n", + "> Parallel handling of of a mixture of valid and invalid geometries using [regular](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.udf.html?highlight=udf#pyspark.sql.functions.udf) and [vectorized pandas](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.pandas_udf.html?highlight=pandas%20udf#pyspark.sql.functions.pandas_udf) UDFs.\n", + "\n", + "__Libraries__\n", + "\n", + "

\n", + "\n", + "* 'databricks-mosaic' (installs geopandas and dependencies as well as keplergl)\n", + "\n", + "--- \n", + " __Last Update__ 22 NOV 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "f9812f64-8eff-4888-8d15-85d60aa3464f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "6cc73475-225a-4f32-8ddc-93c564095776", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "97b74931-0c94-41e6-afa3-b7a3236ecce2", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet # <- Mosaic 0.3 series\n", + "# %pip install \"databricks-mosaic<0.5,>=0.4\" --quiet # <- Mosaic 0.4 series (as available)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d01ad97d-188a-4ce0-ab7c-28029e77d30b", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "spark.conf.set(\"spark.sql.shuffle.partitions\", 10_000) # <-- default is 200\n", + "\n", + "# -- import databricks + spark functions\n", + "from pyspark.databricks.sql import functions as dbf\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import udf, col\n", + "from pyspark.sql.types import *\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "# mos.enable_gdal(spark) # <- not needed for this example\n", + "\n", + "# --other imports\n", + "import geopandas as gpd\n", + "import json\n", + "import matplotlib.pyplot as plt\n", + "import shapely\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c9620eaf-3776-4ea4-b5b9-f7da9f164a8f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Data\n", + "\n", + "> Generating a dataset with some bad data, adapted from [here](https://github.com/kleunen/boost_geometry_correct).\n", + "\n", + "These are the types of issues that can come up with geometries [[1](https://stackoverflow.com/questions/49902090/dataset-of-invalid-geometries-in-boostgeometry)]...\n", + "\n", + "```\n", + "//Hole Outside Shell\n", + "check(\"POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (15 15, 15 20, 20 20, 20 15, 15 15))\");\n", + "//Nested Holes\n", + "check(\"POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (2 2, 2 8, 8 8, 8 2, 2 2), (3 3, 3 7, 7 7, 7 3, 3 3))\");\n", + "//Disconnected Interior\n", + "check(\"POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (5 0, 10 5, 5 10, 0 5, 5 0))\");\n", + "//Self Intersection\n", + "check(\"POLYGON((0 0, 10 10, 0 10, 10 0, 0 0))\");\n", + "//Ring Self Intersection\n", + "check(\"POLYGON((5 0, 10 0, 10 10, 0 10, 0 0, 5 0, 3 3, 5 6, 7 3, 5 0))\");\n", + "//Nested Shells\n", + "check(\"MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),(( 2 2, 8 2, 8 8, 2 8, 2 2)))\");\n", + "//Duplicated Rings\n", + "check(\"MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((0 0, 10 0, 10 10, 0 10, 0 0)))\");\n", + "//Too Few Points\n", + "check(\"POLYGON((2 2, 8 2))\");\n", + "//Invalid Coordinate\n", + "check(\"POLYGON((NaN 3, 3 4, 4 4, 4 3, 3 3))\");\n", + "//Ring Not Closed\n", + "check(\"POLYGON((0 0, 0 10, 10 10, 10 0))\");\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0f9928a2-3172-4240-a4b2-e08a5b15467c", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "test_wkts = []" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "253969cc-ecd7-4e59-b5c5-3ab52d52240a", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__[1a] Polygon self-intersection__\n", + "\n", + "> Exterior xy plot with shapely (to see the lines)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "d25d6b19-d6da-49bc-a1cc-b5bb43306984", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "test_wkts.append((1, \"\"\"POLYGON ((5 0, 2.5 9, 9.5 3.5, 0.5 3.5, 7.5 9, 5 0))\"\"\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4416db98-d3e2-4548-a761-40745f49c98b", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[107]: []" + ] + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n" + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWoAAAD4CAYAAADFAawfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA610lEQVR4nO3dd3hUddr/8fc3vZAEQkKAtEml9wAp9KJiw4YFgQQLFlREd93y7D6/fXaffXZtICoWRCmCoCKWtdJCTYHQpKdOKgmhpJCezPn9EVB3RQkwkzMzuV/X5XVBMpm5HWbufOecz7m/StM0hBBCWC8HvQsQQgjx66RRCyGElZNGLYQQVk4atRBCWDlp1EIIYeWcLHGnfn5+msFgsMRdCyGEXdq7d+9pTdP8L/U9izRqg8FARkaGJe5aCCHsklIq/5e+J4c+hBDCykmjFkIIKyeNWgghrJw0aiGEsHLSqIUQwspJoxZCCCsnjVoIIaycNGorVdPQzMpUI6eq6/UuRYhLKqmo4/1UI/VNLXqXYvcscsGLuHYnyqr578+P8H9fH2NWnIFHxoTTtZOr3mUJwamqehYnZ7NmdyGNLSZiw7sSFeCld1l2TRq1lRoc1JkwP0/yTtewdEcuq9LySYo3MGdMOJ09XPQuT3RAp8838NbWHN5Py6fZpNFi0ugf6E1kt056l2b35NCHlXJwUCTGhQLw0rRBTOwTwJvbchj1fDILNmZSWdekc4WiozhX08g/vznO6OeTeW9XHrcM6snfpvYHICk+DKWUzhXaP2nUVuzOYUF4ujiyI+s0r903hG/njWF0lB+vbs5i9PNbeG1zFucbmvUuU9ipytomXt5wglHPb+Ht7Tlc1y+ATc+M5aVpg9hy/BS+ni7cPLCH3mV2CHLow4p5uTkzLSaY1en5/OHG3vTq7sWbM4ZxuLiSVzZl8fLGTN7blccjYyOYFReKh4v8c4prV13fxHs7jSzdmUt1fTM3DejBvElRRF84Dl1wppbNx8uYOy4SN2dHnavtGGRFbeVmxYXS1KKxJr3wh6/1D/RhaWIMn89NYFBwZ/75zXHGvJDM0h25cgZeXLWahmbe2JrN6BeSWbgpk7jwrnz91GgW3z/0hyYN8H6aEQeluD82RMdqOxZZglm5cP9OjI32Z1V6Po+Ni8DF6cffrYOCO7N89gj25p9lwcZM/verYyzZnsvc8ZHcOyIYVydZ7YjLq2tsYVVaPm9ty+FMTSPje/nzzOReDAjy+dltaxub+XBPITf0704PH3cdqu2YZEVtA5LiDZRXN/DN4ZOX/P6wUF9WPxTL2jmxGLp68v++OMK4F7eyOj2fxmZTO1crbEV9UwvLduUx5sVk/v71Mfr29Gb94/Esmz3ikk0a4NP9xVTVN5MUb2jfYjs4pWma2e80JiZGk40DzMdk0pjw8la6eLrw6eMJv3pbTdPYlX2GlzeeYH9BBUFd3HlqYhR3DAnEyVF+LwtobDbxUUYhi5OzOVlZT2y4L89M7sWIMN9f/TlN07j+le04Ozrw5ZOjJO1hZkqpvZqmxVzqe3LowwY4OChmxRn465dHOVhYwaDgzr94W6UUo6L8SIjsytbMchZuzOS5dd/zRnI28yZFceugQBwd5A3WETW1mFi/r4hXN2dTXFHHsNAuvDxtEPGRfm36+dScM2SWneeFuwZKk25nssSyEXfFtEb1VqQY23R7pRTje3Xj87kJvDMrBncXJ+Z/eJDrFm7jXwdLMJnM/0lKWKcWk8Yne4uYtGAbv/vkEH6dXFjxwAjWPRrX5iYNsCzFiK+nC7cO6mnBasWlSKO2Ed5uztw5LIgvvz9JeXVDm39OKcXkvgF89eQo3rx/KI4OiifX7OfGV3fw7eFSLHHoS1gHk0nji4MlTF64jWc/PkgnVyfeTYzhs7kJjI32v6JVceHZWjYfK+Pe4cESydOBNGobMivOQGOLiTW7C674Zx0cFFMG9OCbeWNYdO9gGptNPLpqLze/tpPNx8qkYdsRk0njm0MnuWHRdp5asx9nBwfemjGUL58cxcQ+AVd12OL9tHyUUsyIDbVAxeJy5Bi1DYns1onRUX6sSmuN6jlfxclBRwfF1MGB3DSgB58fKGHR5iweXJHBoODOPDM5mjFRfnL80UZpmsamY6dYsDGTYyeriPD35LX7hnDTgB44XMN5idrGZtbuLuD6fgH07CyRPD3IitrGzE4wcKq6gW8Ol17T/Tg5OnDnsCA2PzuW5+8cwOnqBhLf2820t1JJyT5tpmpFe9A0jeQTp5i6eBcPr8ygrrGZhfcMYsP8sdwyqOc1NWmAz/aXXIjkhZmpYnGlZEVtY8ZFdyO0qwcrUoxmOanj7OjAPcNDuH1IEB9mFLJ4SzbTl6YTG+7Ls9f1Yrjh1yNbQj8Xo5gLNp5g34Uo5gt3DuSOoeaLYmqaxooUI316eDPc0MUs9ymunDRqG3Mxqve3L49yqKjyFy9MuFIuTg7MjA1l2rAg1uwuYHFyDtPeSmV0lB/PTI5mSIi8Sa1Jeu4ZXt6Yye68s/TwcePvt/dn2rDgf7ty1RxSc89woqyaF+6USJ6e5NCHDZoWE4SHiyPL2xjVuxJuzo7MTghjx3Pj+a8b+3CkpIrb30jhgeV7OFRUafbHE1dmb/45ZixN554laRhP1/A/t/Zj62/Hcf/IULM3aYAVKUa6eDhz62CJ5OlJVtQ2yNvNmTuHBvHhnkL+cGNv/Cyw84u7iyMPjwln+sgQVqQaeXtbLre8vpPr+gYwf3I0fXp4m/0xxS87WFjBwk2ZbD1Rjl8nF/50Ux9mxIZaNCpXdK6WjUfLeGRshETydNamX8FKqflKqSNKqcNKqTVKKTdLFyZ+XWJ8KI0tJtZeRVTvSni6OvH4uEh2/m488ydFk5p7himLdjB39T6yyqot+tgCjpRU8tCKDKYu3sWBwgp+d0Nvtj83nodGh1u8eb6flg8gkTwrcNkVtVIqEHgK6KtpWp1S6iPgXmC5hWsTvyKymxejo/x4Py2fR8ZeXVTvSni5OTNvUhRJ8QaW7szlvZ15fH34JFMH9eSpiVGE+8t2TOaUWVbNwo2ZfHO4FG83J56dHE1SggEvN+d2efy6xhbW7i7k+n7dCZRInu7aeujDCXBXSjUBHkCJ5UoSbZUYZ+ChlRl8d6SUmwe2zzFEHw9nnr2uF7MTwliyPZcVKUa+OFjCHUODeGpCFCFdPdqlDnuVU36eVzZl8eX3JXi6OPHUxCgeHBWGj3v7NOiLPj9QTGVdE4kyJc8qtGl6nlJqHvB3oA7YoGna/Ze4zRxgDkBISMiw/Px8M5cq/lOLSWP8S1vp5uXKusfidamhvLqBt7blsCotnxaTxrSYIJ6YECWrsCuUf6aGRZuz+Gx/MW7OjiTFG3h4dDhdPNt/I2NN05iyaAcA38wbLWmPdvJr0/Mu+3lZKdUFmAqEAT0BT6XUjP+8naZpSzRNi9E0Lcbf3/9aaxZt4OigmBUXSkb+OQ4X65PI8Pdy5c8392X7c+O5f2QIn+wtZtyLyfz5s8OUVtbrUpMtKTpXy+/Wfc+El7fx1fcneXBUGNufG89zN/TWpUkDpOed5XhpNUnxBmnSVqItBzYnAXmappVrmtYErAf0Wb6Jn5kWE4y7s2WielciwNuN/5nan62/Hce0mGDW7C5gzIvJ/M+/jnCqWhr2fzpZWcd/fXqI8S9t5dP9xcyMDW2NRN7U1yIpniuxIsVIZw9npg4O1LUO8aO2HKMuAGKVUh60HvqYCMiuAFbCx92ZO4YG8vHeIv4wpTdddX6T9+zszv/dPoDHxkbw2pYsVqbms2Z3AYlxBuaMCde9Pr2dqqrnja05fJBegIbGPcODmTs+0mq2tSquqOO7I6U8PCYcdxeJ5FmLyzZqTdPSlVLrgH1AM7AfWGLpwkTbJcUbWJ1ewNo9hcwdH6l3OQAE+3rwwl2DeGxcJK9tzuKdHbmsSssnKaH12GtnD30+1uvlzPnWY/nvp+XT1KIxbVgQc8dHEuxrXSdfV12I5M2USJ5Vka247MT9S9PILa9h+3PjLR7VuxrZp6ovpBlO4uXqxAOjwnhwdBje7RQ308u5mkaW7GhNx9Q3tXDbkEDmTYwitKun3qX9TH1TC7H/2MzIMF/ennnJc1rCgmQrrg4gKT6Mh1dmsOFIGTcN7KF3OT8T2c2L16cP5YkJVbyyMYtFm7NYtiuPOWPCSUoIo5Orfb0UK+uaeHdHLu/tMlLT2MwtA3syb1IUEVacN//iQAkVtU0yJc8K2de7owOb0LsbQV3cWZFitMpGfVHv7t68NXMYh4sreWVTJi9tyOTdnXk8OjaCmXGheLjY9kuyur6JZbuMvLMjl+r6Zm4c0J15E6Pp1d1L79J+laZpLEsx0ivAi9hwmZhobWz7XSF+4OigSIwz8Pevj3GkpJJ+Pc0zVc9S+gf6sDRxOAcKK1iwMZN/fHOcd3bk8di4CO4fGWJzsyVqG5tZkZLP29tzqKhtYlKfAOZPjrL6f4eL9hjPcexkFf+4Y4BE8qyQ9R3MFFft7gtRvbZugGsNBgd3ZuWFjVajAzrxty+PMvbFZFamGmlobtG7vMuqb2ph6Y5cRj+fzPPfHmdwcGe+eCKBpYkxNtOkAZan5OHj7sxtEsmzSrKitiM+Hs7cPjSQdXuL+P2UPvjqdMHE1Ygx+PLBw7Gk5rQOwv/vz4/w1tYcnpgQxbSYIKs7QdrQ3MKa9AIWb82hvLqBUZF+zJ8czbBQ25vbXVJRx3dHynhoVJhE8qyUdb36xTVLjDPQ2Gxi7R7LTtWzlLiIrnz0SBzvPziCbt5u/PHTQ0x4eSsfZxTS3GLSuzwam02sTs9n3Itb+cu/jhLm58mHc2JZ9dBIm2zS0BrJ0zRNpuRZMVlR25le3b2Ij+jKqtR85owON9uWTO1JKcXoKH9GRfqx9UQ5CzZm8tt13/PG1hzmTYzilkE9cbzGfQCvVFOLiU/3FfPqliyKztUxNKQzL00bRHxEV5s+plvf1MKa3QVM6hNgdZlu8SPbexeLy0qMN1BSWc/Go2V6l3JNlFKM792NL55IYMnMYbg6OfD0hwe4/pXtfPl9CSaT+a8B+E8tJo31+4qYtGAbz33yPb6eLiyfPZxPHosnIdL2d2z/4mAJ52qbSJIpeVZNVtR2aFKfAAI7u7M8xciUAdYb1WsrpRTX9evOpD4BfHO4lIWbMnnig/307p7N/MnRXNc3wOwN02TS+OrQSV7ZlElOeQ19enjzzqwYJvXpZvPN+aKLG9dGB3QiLqKr3uWIXyGN2g5dnKr3j2+Oc+xkld1sm+XgoLhpYA9u6N+dL78v4ZVNWTzy/l76B3rzzORoxve69iZqMmlsOFrKwo1ZnCirJjqgE2/eP5Tr+3XHoZ0Pt1haRv45jpRU8ffb+9vNLx97JYc+7NQ9w4Nxc3awqaheWzk6KKYODmTj/DG8NG0QVXXNPLA8g9vfSGF7ZjlXMxZB0zQ2HS3j5td28uiqfTSZTLx63xC+nTeGKQN62F2TBlieYsTbzYnbh0gkz9rJitpOdfZw4fYhgazfV8zvdJxtbElOjg7cNSyIqYN7sm5vEa9tzmLWe7sZbujC/MnRxEf4XfY+NE1jW2Y5CzdmcrCoktCuHiy4exC3Duppkydi2+pkZR3fHi7lgQSDzV8N2hHY7ytRkBhvoKHZxIcZhXqXYlHOjg7cNyKE5N+O429T+1Fwtpbp76Rz35I0MoxnL/kzmqaxK/s0d72VStKyPZw+38jzdw5g0zNjuWNokF03aYDVaQWYNI1ZcQa9SxFtIL9K7Vjv7t7Ehvvyfmo+D40Ks/vm4+rkyMw4A9NigvkgvYA3tuZw11upjI7y49nrejE4uDMAu/PO8vKGE6TnnaW7txv/e1t/7o4JxsXJvp+fi+qbWvhgdwETe0skz1ZIo7ZzSfFhPLpqL5uOneKG/t31LqdduDk78sCoMO4bEcL7aUbe2pbLbYt34evpgqZpnKttwt/Llb/c0pd7R9jeXJFr9eX3Jzlb08jsBIPepYg26hhLiA5sUp9uF6J6eXqX0u7cXRyZMyaCxdOHAnC2ppFztU0ALJk5jKSEsA7XpDVNY3lKHlHdOhEvkTybIY3azjk5OjAzLpS03LMcL63Su5x2dbSkiodXZnDfO2l09nDm8XERPDImHC9XJ25/I4W5H+wj+1S13mW2q30F5zhcXEWibFxrU+TQRwdwT0wwCzdmsiLFyD/uGKh3ORaXWVbNK5sy+fpQKV5uTjwzOZrZCQa8Luwm8/i4SN7ZkcuyXXl8c+gkUwcH8tTEKML8rG/XFXNbtsuIl0TybI406g6gi2drVO/T/a1RPXvdrzCn/Dyvbs7ii4MleLo48dSESB4cFY6Px79v9+Xj4cxvru/FA6PCeHt7DitSjHxxsIQ7hrQ2bHs9wVZaWc+3h0tJijfgaWc76tg7+dfqIBLjDazdU8iHewp5ZGyE3uWYVf6ZGl7dnM2n+4twdXLk0bERzBkdftnsuK+nC3+Y0oeHRoXz5tYcVqXn8+n+YqbFBPPkhEh6draOncHNZXV6Pi0SybNJ0qg7iD49vBkZ5svK1HweGh3e7tPnLKHoXC2vb8lm3d4iHB0UDySE8ei4CPw6uV7R/fh7ufLft/TlkbHhLE7OZs3uAj7ZW8S9I4KZOz6SAG83C/0ftJ+G5hY+SC9gYu9uhHS1z08M9kwadQeSFG/gsdX72HSsjOv72W5Ur7SynteTs/hwTyEKxYzYUB4bF3HNDTXA242/Tu3PI2MjeH1LNh+kF/DhnkLuH9l6//5eV/YLwJp8efAkZ2oaSZQpeTZJXc1chMuJiYnRMjIyzH6/4to0t5gY80IyBj9PPng4Vu9yrtip6nre3JrD6vQCNE3j7pjWFa+lDlEUnKnltS1ZrN9fjIujA7PiQ3lkTIRN7ZwDrZG8W1/fRV1TCxvnj5G0h5VSSu3VNC3mUt+TFXUH4uTowIy4UF749gQnSqutfmfsi86cb+Dt7bmsTDXS1KJx59BAnpxg+ZN+IV09eHHaIB4fH8miTZks2Z7LqtR8ZieE8fDon5+ktFb7Cio4VFzJ36b2kyZto2RF3cGcrWkk7h+buXNYEP93+wC9y/lVFbWNLNmey/IUI/VNLdx2IUZn0ClGl1VWzSubs/jq+5N4uTrx4OgwHhgVhrebdTfsp9bsJ/n4KdL+OFHSHlZMVtTiB76eLkwd3JNP9xXzu+t7W+WqsLKuiXd35vHezjxqGpu5eWBP5k2MIrJbJ13rigrwYvH0oTwxvopXNmXyyqYslu0yMmdMuNVG3sqq6vn60ElmxVlnfaJt5F+uA0qMN/BRRhEfZRTy8Jhwvcv5wfmGZpbvymPJ9lyq6pu5oV935k+OtrpDNH16ePP2zBgOF1eyYGMmL353gnd35vHo2HBmxhqsaifv1ekFFyJ5snGtLZNG3QH16+nDCIMvK1KNPDAqTPeoXm1jMytT83l7Ww7napuY1KcbT0+Kpn+gj651XU7/QB/eSxrO/oJzLNiYyf99fZwl2/N4fFwE00fqP+ypNZKXz/he3XQ7XCTMQxp1B5WUYODx1fvYcvwUk/sG6FJDfVMLq9LyeWtbDqfPNzI22p9nJkcz6MI4UlsxJKQL7z84kj3GsyzYkMlfvzzK29tzeGJ8JHcPD8bVSZ+G/fWhk5w+L5E8eyCNuoO6rm8APXzcWJ6S1+6NuqG5hQ/3FLI4OZuyqgYSIrvy9uRohoX6tmsd5jbc4MuaObGk5JxmwYZM/vz5Ed7alsuTEyK5c1gQzu08D3z5LiPh/p6Mjrz8TjfCukmj7qCcHB2YERvKi9+dIKusmqgAyx8Hbmw2sW5vEa9vyaKksp4RBl8W3TuE2HD7GrcZH+FH3KNd2ZF1mpc3ZvL79Yd4Y2sOT02M4rbB7bPF1/6CcxwsquR/bu1nl/s9djQy5rQDu29ECC5ODiy38Aa4zS0mPsooZMLLW/njp4cI8HFj1YMj+fCRWLtr0hcppRgT7c9nj8fzXlIM3u5O/Objg1y3cDufHyimxWT+WOxPLU8x0snViTuHBVn0cUT7kBV1B+br6cLUQT1Zv6+Y527ojY+7eaN6LSaNLw4Ws2hTFsYztQwI9OFvt/VnXLR/h7nwQinFhN4BjO/Vje+OlPHKpkzmrT3A61uymT85mhv6dTf7ivfUhUje/SND6SSRPLsgK+oOLjHeQF1TCx+bcQNck0njy+9LuP6V7cz/8CBuzo4smTmML55IYHyvbh2mSf+UUoob+nfn66dG8/r0IWjA46v3cdNrO9lwpBRzXni2Or2AphZNTiLaEfl128H1D/RhuKELKy9cGn0tUT1N035YNR4vrSaqWyfeuH+oRVaNtsrBQXHzwJ5M6d+Dfx0sYdHmLOa8v5cBgT48Mzmacb2u7dNGY7OJD3YXMK6Xf4fYCKGjaNOKWinVWSm1Til1XCl1TCkVZ+nCRPtJjDdQcLaW5OOnrurnNU1j87Eybn5tJ4+u2ktjs4lF9w7m26fHcOOAHtKkL8HRQXHbkEA2zh/Di3cNpKKukdnL93DHmynsyCq/6hX2N4dPUl7dQJKspu1KW1fUi4BvNU27SynlAshAWztyfb/udPd2Y0WqkUlXENXTNI3tWadZsDGTg4UVhPh68NK0Qe2WbLAHTo4OTIsJZurgwB8SMTPf3c0Igy/PXBd9xSdbl+0yEubnyZgofwtVLPRw2UatlPIBxgBJAJqmNQKNli1LtCdnRwdmxIbw0oZMsk9VE9nt8lG9i1nhjPxzBHZ25593DNAlK2wvXJwcmD4yhDuHBfLhnkJe35LNvUvSiI/oyrPXtS1jfqCwggOFFfzllr7yKcbOtOVdFQaUA8uUUvuVUkuVUj87+KWUmqOUylBKZZSXl5u9UGFZF6N6K1Lyf/V2e4xnuW9JGtPfSafoXB1/u60/yb8Zx70jQqRJm4GrkyOz4gxsf248f765L5ll1dz5ZiqJ7+3mQGHFr/7sihQjni6OEsmzQ5cdc6qUigHSgARN09KVUouAKk3T/vxLPyNjTm3Tsx8d5JvDJ0n748Sfje68OM9iR9Zp/Dq5Mnd8BPeN0H+ehb1r6xyUU9X1JPxzC/ePDOUvt/bTqVpxLX5tzGlblkBFQJGmaekX/r4OGGqu4oT1SIo3UNvYwscZRT987XBxJQ8s38Ptb6RwpKSKP97Ymx3PjWd2Qpg06Xbg4eLEo2Mj2PG7Cfzmumh2551tPWn7/l5OlFb/cLs16YU0tciUPHt12WPUmqaVKqUKlVK9NE07AUwEjlq+NNHeBgT5MCy0CytTjcSG+7JoUxYbjpbh4+7Mb6/vZbUzlzuCTq5OPDEhilnxBt7d0Tqr+7ujpdw0oAdPTIhkdXo+Y6P9CffXd2a3sIw27fCilBoMLAVcgFxgtqZp537p9nLow3Yt2JjJq5uzAPBydeKh0eHMHmWw+l1MOpqK2kbe2ZHLsl1GahtbAPh/t/RldkKYzpWJq/Vrhz5kKy4BQG75eV7dnMVnB0p++NrB/77OKneAET86c76BYf+7CQClYNqwoHbZT1KYn2zFJX5RwZlaXt2SxacXdtp+ZGw4jc0mlu0yUn6+QRq1lSuuqAPg8XER1DW1sDq9gPX7irl7eDBPWHCHdtG+pFF3UMUVdby+JYuPM4pwdFAkxRt4dGwE/l6unD7fwOq0AlamGvnr1P56lyp+xfILkbxHx0Xg7ebMnDHhvJGcw9o9BazLKOK+EcHMHR9JN283vUsV10AadQdTWlnP4uRs1u4pQKG4f2QIj4+PJOAnb2S/Tq7cPKgHn+wt4jfX95Lj01bq9PkGvjx4kntHBP/wb9TDx52/3dafR8aGszg5m9XpBazdU8jM2FAeHReBXydXnasWV0MadQdxqrqet7bmsio9H5NJY1pMME9MiCTwFz4aJ8UbWL+vmHUZRTwwSk5QWaM16QU0tpiYFWf42feCunjwjzsG8tjYSBZtzuK9XXmsTi8gMd7AI2PC6eLp0v4Fi6smJxPt3NmaRt7elsOKVCNNLRp3DAnkqYltO9l0xxu7OFvTyJZnx8klyVamqcXEqOe3EB3gxfsPjrzs7XPLz7NocxZfHCzBw9mRB0aF8dCocDkHYUWu9YIXYYMqaht58bvjjH5+C0t25DKlfw82PTOWF6cNanMiIDHegPFMLdsyZSSAtfn2cCllVQ3MTjC06fbh/p1YdO8Qvnt6DON6deO1LdmMemELizZlUV3fZNlixTWTFbWdqapv4r2deby7I4/qhmZuGtiD+ZOi2jRo6T81Nreu2vr08GbFAyMsUK24Wne+mcLp8w0kX+WnnaMlVSzclMnGo2V09mg9CZkYJxc06UnieR3A+YZmVqQYWbI9l8q6Jq7vF8D8ydH07u591ffp4uTA/SNDWbgpk5zy80TIVW9W4VBRJXvzz/Hnm69+Sl7fnt68MyuGQ0WVLNh4ghe+PcG7O/J4dGwEM2JDcXeR8QDWRA592Li6xhbe3pbDmBeSefG7E8SEduHLJ0fx9syYa2rSF00fGYKzo+L91F+fqifaz/IUIx4ujkyLufYpeQOCfFg2ewTrH4+nb09v/v71Mca8mMyyXXnUN7WYoVphDrKitlH1TS18kF7AG1tzOH2+gTHR/syfFMWQkC5mfRx/L1duHtiTjzMKefa6aLwkqqer0+cb+NfBEu4ZHmzW2OTQkC68/+BIdued5eUNJ/iffx1lyfZc5o6P5O6YYFycZE2nJ3n2bUxDcwvvpxoZ+2Iyf/3yKNEBnfj40ThWPjDC7E36oqR4AzWNLXyyt+jyNxYWtXZ3ayQvMd4yU/JGhPmydk4sHzw0kp6d3fnTZ4cZ/9JWPtxTQFOLySKPKS5PVtQ2oqnFdGGrpmyKK+oYbujCK/cMIS7iyrZquhqDgjszOLgzK1LzmRVnkKieTppaTKxKK2B0lN9VnRxuK6UU8ZF+xEV0bd1qbcMJfvfJId7YmsNTE6K4bUjgNW2CLK6crKitXHOLiY8zCpnw8lb+sP4Q/l6uvP/gCD56JK5dmvRFsxMM5J2uYXuWRPX08t2RUkqr6km8xAUulqCUYmy0P5/NTWDprBg8XZx49uODTF64jS8OlmAymT8xJi5N4nlWqsWk8a+DJSzanEXe6Rr6B3rzzORoxvfqhlLtv5ppbDaR8PwW+vX0ZvlsierpYdpbKZRVNZD8m3G6rGhNJo0NR0tZuDGLE2XVRAd0Yv6kaK7v110+ZZmBxPNsiMmk8c3hUl7ZlEnWqfP07u7F2zOHcV3fAF0a9EWtUb0QXtnU+osjzO9n22YKCzpcXMke4zn+dFMf3Q47ODgobujfg+v6duerQyd5ZVMmj63eR58erYuISX30WUR0BHLow0pomsZ3R0q58dUdzP1gHxqwePpQvn5qNNf3624Vb4CLUb0VKUa9S+lwVqQYcXd2ZFpMsN6l4OCguGVQTzbMH8vCewZR19jMwyszmLp4F8knTmGJT+kdnayodaZpGsknTrFgYyaHi6sI8/PklXsGc8ugnlZ3wqablxs3DejBugtT9TrJVWzt4sz5Bj4/WMK0YUH4uFtPPNLRQXH7kCBuGdiT9fuKeXVLFrOX7WFoSGeemdyLhMiuVrHAsAfyTtOJpmnszD7NyxsyOVBYQbCvOy/eNZDbhwTi5Gi9H3QS4w18dqCET/YWkRhv0LucDmHtnkIam00kWenz7eTowN3Dg7ltSCAf7y3k9S3ZzHg3nRFhvjw7OZqR4e130tteSaPWQWrOGRZuzGS38Sw9fdz4xx0DuGtYEM5W3KAvGhLShUHBnVmRamRmbKicRLKw5hYTq9LySYjsSlSA5SJ55nBx5MBdw4JYu7uQxcnZ3LMkjVGRfsyfHM2wUMvk/DsC6+8MdiTDeJbp76Rx3ztp5J+t4W9T+5H823HcNyLEJpr0RUnxoeSW17Aj+7Tepdi9DUfLOFlZT1K87cwEd3VyJDHewPbnxvOnm/pwvLSKO99MIWnZbg4WVuhdnk2SeF47OFBYwYKNmWzPLMevkyuPj4tg+sgQ3Jxtc/BNQ3MLCf9MZmCQD+8lDde7HLt291uplFTWse23463unEVb1TY2syIln7e351BR28SkPgHMnxxFv54+epdmVSSep5PDxZUs3JjJ5uOn6OLhzB+m9GZmXCgeLrb9tLs6OTJ9ZAivbcnCeLoGg0T1LOJISSW7jWf5rxv1i+SZg4eLE4+Ni2BGbAjLdxl5Z0cuN71axpT+3Zk/OZpoKz+kYw1su2NYqeOlVSzcmMl3R8rwcXfmt9f3IjHeYFcpiRkjQ3gjOZuVqfn89y199S7HLl2M5N1tBZE8c/Byc+bJiVHMijfw7s483tuZx7dHSrl5YE+enhQlY3R/hf10DiuQfaqahZuy+Or7k3i5OvH0pCgeGBVml5vDdvN248YBPX6YqicD583rbE0jnx8o4c5hQXa3XZaPuzPPTI5mdryBd3bksjzFyFffl3DbkEDmTYwitKt8QvtP8u4yA+PpGhZtzuLzA8W4OTsyd3wED48Op7OHfW8gmpRg4IuDJazfV8TMdpo/0VGs3VNAQ7Op3eZ66KGLpwvP3dCbB0aF8fa2HFam5vP5gRLuGhrEkxMjCerSti3jOgI5mXgNCs/W8urmLNbvL8bZUZEYZ2DOmHC6dnLVu7R2oWkaUxfvoqahmU3PjJWLG8ykucXEmBeSMfh58sHDsXqX025OVdXzxtYcPkgvQEPj7phgnpgQSQ8fd71LaxdyMtHMSirqeG1LNh9nFOLg0NqgHx0XTjcvN71La1dKKZLiDTzz0UF2Zp9mdJS/3iXZhY1HyyiprOf/3dpP71LaVTdvN/5yaz8eGRvO4uRsPtxTyMcZRUwfGcLj4yLo5t2x3l8/JSvqK1BWVc8bydms2V2Ihsa9w0OYOz6S7j4d9wXUGtXbwqCgzrwrUT2zuOftVIrO1bH9OduN5JlD4dlaXt+Szbp9RTg7KmbGhvLo2Ai7/cQqK+prVF7dwFvbcliVlk+LSWNaTBBPTIgisHPH+Ej2a1ydHJk+IoTXkrPJP1MjJ4Ku0bGTVaTnneUPU3p36CYNEOzrwfN3DeTx8REs2pzFuzvzWJ1eQGK8gTmjw+niad/ngH7Kdi6H08HZmkb+8c0xxrzQutnnLYN6suXZcfzjjoHSpH/i/thQHJVipWyAe81WpBhxc3bgnuH2Eckzh9Cuniy4ezAbnxnLpD4BvLUth9EvJLNgwwkq65r0Lq9dyIr6Eiprm1i6M5f3duZR29TC1EE9eWpiFOGS87ykAG83pgzowUcZhTwzWaJ6V+tcTSOfHSjm9iGBdp8YuhoR/p149b4hzB0fySubMnl1SzbLU4w8PDqcpASDXW+8LO+on6iqb2LZTiNLd+ZSXd/MTQN68PSkKKsfhmMNkuJD+dfBEj7dX8yMWMtsvGrvPswopL7JJFMJL6NXdy/enDGMIyWVLNyYxcsbM3l3Vx6PjIkgMd72r/y9FDmZCNQ0NLM8xciS7blU1jVxXd8A5k+Opk8Pb71LsxmapnHr67uob2phw/wxEtW7Qs0tJsa+uJVgX3fWzonTuxyb8n1R6yydrSfK6erpcuFy9VCbm6UjJxN/QV1jC++nGXlrWy5naxqZ0Lsb8ydFMyBIhsVcKaUUifEGfvPxQVJyzpAQ6ad3STZl07FTFFfU8eeb5XL8KzUwqDPLZ49gb/45Fm7M5H+/OsaS7bnMHR/JvSOCcXWyrYZ9KR1yRV3f1MKa3QW8sTWH8uoGRke1zssdGiLzcq9FfVNrVG9ISBeWJl5yYSB+wX1L0ig4W8u2346z6o0jbEFa7hkWbMxkd95Zevi48cSESKYNC8bFybqfV7OsqJVSjkAGUKxp2s3mKq49NTab+DCjkMVbsimtqic23JfF04cyIsxX79LsgpuzI/eNCGHx1mwKz9YS7CuXALfF8dIqUnPP8PspvaVJm0FseFc+nBNLSs4ZXt5wgv/69DBvbs3hqQlR3DHUundQ+iVXUvE84JilCrGkphYTa3cXMP6lrfz5s8MEdXHng4dHsnZOnDRpM5sRG4qDUqxMNepdis1YkZKPq5MD99jJlDxroJQiIdKPTx6LZ/ns4fh6uvDcJ98zacE21u8rosVkWxvwtqlRK6WCgJuApZYtx7yaW0ys21vExJe38fv1h/DzcmXFAyP4+NE44iPkGKoldPdx44b+3flwTyG1jc16l2P1Kmob+XR/EbcNDuxQF3C0F6UU43p14/O5CbwzKwZ3Fyee+egg1y3cxr8OlmCykYbd1hX1K8BzgOmXbqCUmqOUylBKZZSXl5ujtqvWYtL4/EAx1y3czm8+PoiXmxPvJsbw2ePxjI32l0SChc2ON1BV38yn+4v1LsXqfSSRvHahlGJy3wC+enIUb94/FEcHxZNr9jNl0Q6+PXwSS5yrM6fLNmql1M3AKU3T9v7a7TRNW6JpWoymaTH+/voM5zGZNL4+dJIpi7Yzb+0BnB0deGvGML58chQT+wRIg24nw0K70K+nNytSjFb/BtBTi0ljZWo+I8J86dtToqDtwcFBMWVAD76dN4ZX7xtCk8nEo6v2cfNrO9l0tMxqX69tWVEnALcqpYzAWmCCUmqVRau6QpqmseFIKTe9tpPHV++jxaTx+vQhfDNvNDf07y4Nup1dnKqXWXae1JwzepdjtTYfK6PoXB2zZTXd7hwcFLcO6smGp8fw8rRBVNc389DKDG5bvIutJ05ZXcO+onieUmoc8JvLpT7aK56naRpbM8tZuDGT74sqMXT1YN6kKG4dFNjhB9rorb6phfh/biEmtAtLZklU71Kmv5OG8XQN258bb5NJBHvS1GJi/b4iXt2cTXFFHcNCu/Ds5Gji2/F6ALu74EXTNHZln2HBxhPsK6ggqIs7L9w1kDuG2Gb0xh61RvWCeXNrjkT1LiGzrJqUnDM8d0Mvec1aAWdHB+4ZHsLtQ4L4KKOQ17dkM31pOrHhvjwzuZfu6bAreoVomrZV7wx1Wu4Z7lmSxox30ymtrOf/bh/AlmfHcXdMsLzgrcyM2FCUUqxKk6l6/2l5ihEXJwfuHR6idyniJ1ycHJgRG8rW347jL7f0Jae8hrvfTmXmu+nsKzinW102s6Lem3+WBRsz2ZV9hm5ervx1aj/uGW4fl4faqx4+7tzQrztr9xTy9KRo3F3k3wpapzN+uq+Y2wb3xFcieVbJzdmRpIQw7hkewqq0fN7alsMdb6Qwvpc/z0zu1e5jJqy+UR8sbB24si2zHL9OLvzppj42OXClo0qMN/DVoZN8dqCY+0bI6hFaI3l1TS0SybMB7i6OPDwmnOkjQ1iR2jq47ZbXdzK5bwDzJ0W3W1rHamd9tI4wzGTTsVN08XDmkbERzIqzzxGG9kzTNG56dSctJo1vnx7d4RM4LSaNcS8l08PbnY8elSl5tqa6vollu4y8s6N1FPKNA7rz9KRoos0wCtmmTiaeKK1m4cZMvj1SirebE7+5LpqkhDA6yTB6m3QxqvfcJ9+TlnuWuIiuepekqy3HT1F4to7f39BH71LEVfByc+apiVEkxhl4d2cu7+0y8s3hUm4d1JN5FtxcxKpW1H/54ggrUo1cLGlYaBe83aRB27r6JhOpua156vG9OvZO5cknWq/aHR3lh5NESG3eudomDhRWAOCg4LFxEfz2+t5XdV82s6I2aRoDAn88SN/UYuJMTaOOFQlz+76oksAuHXO/yayy8z/8uaPs9dcRDPzJicXmFstcKGNVjfqvU/vrXYKwkOKKOkY/v4W7YoL4w5SO+bH/T58d4qOMIlJ/P4GunVz1LkfYEAkei3YR2Nmd6/u1TtWra2zRu5x2V1nXxCd7i7l1UE9p0uKKSaMW7SYx3kBFbROfH+h4U/U+vhDJS5JInrgK0qhFuxkZ5kvv7l4s72BT9S5OyYsJ7UL/QNmPU1w5adSi3VyM6h0vrSY976ze5bSbrSdOUXC2lqQEg96lCBsljVq0q6mDA+ns4cyKFKPepbSb5SlGunu7cX2/7nqXImyUNGrRrtxdHLlneDDfHSmluKJO73IsLvtUNTuyTjMjNgRnGRomrpK8ckS7mxkbCtAhpuqtSMnHxdGBe2XOibgG0qhFuwvq4sHkvgGs2V1AfZP9RvWq6pv4ZF8RtwzqiZ9E8sQ1kEYtdJEUH0ZFbRNfHCjRuxSL+TijiNpGieSJayeNWugiNtyXXgFeLLPTqJ7JpLEy1ciw0C7tPrtY2B9p1EIXSimSEgwcO1nFHqN+O2dYytbMU+SfqZWZ08IspFEL3dw2OBAfd2eWp+TpXYrZLU/JJ8DblSn9JZInrp00aqEbdxdH7h0ezHdHyiixo6heTvl5tmeWc//IUInkCbOQV5HQ1YzYUDRNs6uo3soUIy6ODrL1mDAbadRCV8G+HkzqYz9Rver6JtbtLeLmgT3w95JInjAPadRCd0nxBs7VNvHFQduP6q3bW0RNo2xcK8xLGrXQXVxEV6IDOrHCxqN6JpPGihQjQ0I6Myi4s97lCDsijVroTilFYryBIyVVZOTbblRvW1Y5xjO1coGLMDtp1MIq3D4kEG83J5bb8FS95buM+Hu5MqV/D71LEXZGGrWwCh4uTtwzPJhvD5dystL2onq55efZllnOjJGhuDjJ20qYl7yihNWYFWfApGmsTivQu5QrtjI1H2dHxX0jg/UuRdghadTCagT7ejCxdwAf2FhU73xD84VIXk+6ebnpXY6wQ9KohVWZnWDgbE0jX35/Uu9S2uyTvUWcb2iWSJ6wGGnUwqrER3Qlqlsnlqfk2URU72Ikb3BwZwZLJE9YiDRqYVUuRvUOF1exr8D6o3o7sk+Te7pGInnCoqRRC6tz+5BAvNycWLbLqHcpl7V8Vx7+Xq7cOEAiecJypFELq+Pp6sQ9Ma1RvdLKer3L+UV5p2tIPlHO9BEhEskTFiWvLmGVZsUZaNE0Vqdb71S9lalGnB0V94+UKXnCsi7bqJVSwUqpZKXUUaXUEaXUvPYoTHRsIV09mNi7Gx+kF9DQbH1RvfMNzazLKOLGAT3o5i2RPGFZbVlRNwPPaprWF4gF5iql+lq2LCEgMd7AmZpGvjxofVG99fuKqG5olpOIol1ctlFrmnZS07R9F/5cDRwDAi1dmBCjIv2I7NaJ5VY2Ve9iJG9QkA9DQrroXY7oAK7oGLVSygAMAdIv8b05SqkMpVRGeXm5mcoTHZlSisS4UA4VV7KvoELvcn6wM/s0OeU1JCUY9C5FdBBtbtRKqU7AJ8DTmqZV/ef3NU1bomlajKZpMf7+/uasUXRgdwwNwsvViRVWNFVvRYoRv04uEskT7aZNjVop5Uxrk16tadp6y5YkxI88XZ2YFhPM14dOUlalf1Qv/0wNW06cYvrIUFydHPUuR3QQbUl9KOBd4JimaQssX5IQ/25WXOiFqJ7+U/VWpubjqCSSJ9pXW1bUCcBMYIJS6sCF/260cF1C/MDg58n4Xt34ID1f16heTUMzH+0p5MYBPQiQSJ5oR21JfezUNE1pmjZQ07TBF/77uj2KE+KipHgDp8838vUh/aJ66/cXUy1T8oQO5MpEYRNGRfoR7u/Jcp3mf2haayRvYJAPQ0M661KD6LikUQub4OCgSIo3cLCokv06TNXblX2G7FPnSYwz0HraRoj2I41a2Iw7hgbRyVWfDXCXp+Th18mFmwdJJE+0P2nUwmZ0cnViWkwQXx86yal2jOoVnKll8/FT3DciRCJ5QhfSqIVNmRVnoKmlfaN6K1ONFyJ5oe32mEL8lDRqYVPC/DwZ38uf1ekFNDabLP54NQ3NfJhRyA39u9PdRyJ5Qh/SqIXNSYw3cPp8Q7tE9T7dX0x1vUzJE/qSRi1szpgof8L9PC1+UvFiJK9/oDfDQmVKntCPNGphcxwcFLPiQjlQWMGBwgqLPU5KzhmyJJInrIA0amGT7hzWGtWz5FS95SlGfD1duGVQT4s9hhBtIY1a2CQvN2fuGhbEl9+XcKra/FG9wrO1bDpWxn0jgnFzlkie0Jc0amGzZsWF0tSisSa90Oz3/X5aPg5KMSNWInlCf9Kohc0K9+/E2Gh/VqfnmzWqV9vYzNrdBdzQrzs9fNzNdr9CXC1p1MKmJSUYOFXdwDeHzRfV+2x/CVX1zbLVlrAa0qiFTRsb5U+Yn6fZTipqmsbylDz69vAmRiJ5wkpIoxY27WJUb19BBd8XVVzz/aXmniGz7DxJCRLJE9ZDGrWweXcNC8LTxdEsF8As32Wki4czt0okT1gRadTC5v0Q1Tt4ktPnG676fn6M5IVIJE9YFWnUwi7MijfQ2GJizTVM1VuVlo+SSJ6wQtKohV2I8O/EmGh/VqXn09Ry5VG9usYW1u4p5Pp+AfTsLJE8YV2kUQu7kRQfSllVA98eLr3in/3sQDGVdU0kxhnMX5gQ10gatbAb46K7EdrV44pPKl6cktenhzcjwnwtU5wQ10AatbAbrVE9A3vzz3GoqLLNP5eed5bjpdUkxYdKJE9YJWnUwq5MiwnC4wqjest3Gens4czUwYGWK0yIayCNWtgVbzdn7hwaxL8OlrQpqldcUceGo6XcO1wiecJ6SaMWdicxPpTGFhNrd18+qvd+aj4AM+MkkieslzRqYXciu3kxOsqPVWkFvxrVq29qYe2eAq7r251AieQJKyaNWtilpHgDpVX1fHfkl6N6nx8opqK2SabkCasnjVrYpXG9uhHi6/GLU/Vap+Tl07u7FyMlkiesnDRqYZccL0zV22M8x+Hin0f1dued5djJKpLiZUqesH7SqIXdmhYTjLuz4yVX1StSjfi4SyRP2AZp1MJu+bg7c+ewQD4/WMKZn0T1Sirq+O5IGfeOCMbdRSJ5wvpJoxZ2LTHOQGOzibV7ftwAd1VaPpqmMVOm5AkbIY1a2LWoAC9GRfqxKi2f5hYT9U0trNldwOS+AQR18dC7PCHaRBq1sHuJ8QZOVtaz4WgZXxws4VxtE4nxBr3LEqLNnNpyI6XUDcAiwBFYqmnaPy1alRBmNKF3N4J93Vm+y8j5hmZ6BXgRF95V77KEaLPLrqiVUo7AYmAK0Be4TynV19KFCWEujg6KWbEGdhvPcvRkFYkSyRM2pi2HPkYA2Zqm5Wqa1gisBaZatiwhzOvumOAf/nzbENm4VtiWtjTqQKDwJ38vuvC1f6OUmqOUylBKZZSXl5urPiHMwtu99Sifu7MjHi5tOuInhNUw2ytW07QlwBKAmJgYzVz3K4Q5KKUw/vMmvcsQ4qq0ZUVdDAT/5O9BF74mhBCiHbSlUe8BopRSYUopF+Be4AvLliWEEOKiyx760DStWSn1BPAdrfG89zRNO2LxyoQQQgBtPEatadrXwNcWrkUIIcQlyJWJQghh5aRRCyGElZNGLYQQVk4atRBCWDmlaea/NkUpVQ7km/2ObY8fcFrvIqyEPBf/Tp6PH8lz0SpU0zT/S33DIo1atFJKZWiaFqN3HdZAnot/J8/Hj+S5uDw59CGEEFZOGrUQQlg5adSWtUTvAqyIPBf/Tp6PH8lzcRlyjFoIIaycrKiFEMLKSaMWQggrJ43azJRSwUqpZKXUUaXUEaXUPL1r0ptSylEptV8p9aXetehNKdVZKbVOKXVcKXVMKRWnd016UkrNv/A+OayUWqOUctO7Jmskjdr8moFnNU3rC8QCc2UzYOYBx/QuwkosAr7VNK03MIgO/LwopQKBp4AYTdP60zpG+V59q7JO0qjNTNO0k5qm7bvw52pa34g/22Oyo1BKBQE3AUv1rkVvSikfYAzwLoCmaY2aplXoWpT+nAB3pZQT4AGU6FyPVZJGbUFKKQMwBEjXuRQ9vQI8B5h0rsMahAHlwLILh4KWKqU89S5KL5qmFQMvAQXASaBS07QN+lZlnaRRW4hSqhPwCfC0pmlVetejB6XUzcApTdP26l2LlXAChgJvapo2BKgBfq9vSfpRSnUBptL6C6wn4KmUmqFvVdZJGrUFKKWcaW3SqzVNW693PTpKAG5VShmBtcAEpdQqfUvSVRFQpGnaxU9Y62ht3B3VJCBP07RyTdOagPVAvM41WSVp1GamlFK0HoM8pmnaAr3r0ZOmaX/QNC1I0zQDrSeJtmia1mFXTJqmlQKFSqleF740ETiqY0l6KwBilVIeF943E+nAJ1d/TZv2TBRXJAGYCRxSSh248LU/Xth3UogngdVKKRcgF5itcz260TQtXSm1DthHa1pqP3I5+SXJJeRCCGHl5NCHEEJYOWnUQghh5aRRCyGElZNGLYQQVk4atRBCWDlp1EIIYeWkUQshhJX7/w5/JYFokJXMAAAAAElFTkSuQmCC\n", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "image" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(*shapely.wkt.loads(test_wkts[0][1]).exterior.xy)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "9ff48a09-e1e8-4a2a-b125-9e88b9aaabb0", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__[1b] Polygon with hole inside__\n", + "\n", + "> Exterior xy plot with shapely (to see the lines)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "43ba0913-ea2f-48e0-b381-35f6fbe453fb", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "test_wkts.append((2, \"\"\"POLYGON ((55 10, 141 237, 249 23, 21 171, 252 169, 24 89, 266 73, 55 10))\"\"\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "3a0264fa-c032-4740-a00f-82592de824bc", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[108]: []" + ] + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n" + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "data:image/png;base64,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\n", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "image" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(*shapely.wkt.loads(test_wkts[1][1]).exterior.xy)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "79eecc6e-ddc8-4223-97d6-5474b5e34d37", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__[1c] Polygon with multiple intersections at same point__\n", + "\n", + "> Exterior xy plot with shapely (to see the lines)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "08a50a1d-f9c1-420c-b79b-7983d01bf5c2", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "test_wkts.append((3, \"\"\"POLYGON ((0 0, 10 0, 0 10, 10 10, 0 0, 5 0, 5 10, 0 10, 0 5, 10 5, 10 0, 0 0))\"\"\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7eeb16d7-5f2b-44d1-b6b5-36e45d65e9e8", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[109]: []" + ] + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n" + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "data:image/png;base64,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\n", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "image" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(*shapely.wkt.loads(test_wkts[2][1]).exterior.xy)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ca173a4d-639d-4659-937e-aa3bdb5a8c55", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__[1d] Valid Polygon__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "dc2f019a-d4c1-4a68-94e7-be14e9288ac2", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "test_wkts.append((4, \"\"\"POLYGON (( -84.3641541604937 33.71316821215546, -84.36414611386687 33.71303657522174, -84.36409515189553 33.71303657522174, -84.36410319852232 33.71317267442025, -84.3641541604937 33.71316821215546 ))\"\"\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2a7735bb-ff89-4357-8b89-f991776e045a", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[115]: []" + ] + }, + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEQCAYAAABMXyhMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAuvUlEQVR4nO3dfZRc1X3m++/T73qtaiQBQlWNhBEYCdTdQSHOu8fYRnjWICfBc8XEMcnlhpsJxJlhZq5heeKbsYe5w2RNyPIyZELs3JBMJphxfGMlccBxsBOPE4OFkQRCFm7Ei1oCJITe37v7d/+o3VJ1dXV3dau760XPZ61aOrXPPvvs3d06v3POPmdvRQRmZmaVaKp2BczMrH44aJiZWcUcNMzMrGIOGmZmVjEHDTMzq5iDhpmZVeyCDhqSPiNpq6TNkr4m6bIyeS6X9L2UZ5ukX0npC1La8OdtSb+T1v1U2mZA0q0TlZXWXS/peUl9kj4rSSn9Ikl/I+kH6d/OlK6Ury+14YeKyro95f+BpNunuo9xfm6LJH1D0lFJn5vij9/M6lFEXBAf4L3AH5akLSxa/jjw38ps1wa0p+X5wKvAZWXyPQv8VFpeDqwB/gi4tZKygGeA9wAC/hq4OaX/F+DetHwv8EBa/lDKp7Td0yn9ImBn+rczLXdOZR/j/CznAT8B/ArwuWr/bv3xx5/Z+1zQVxoRcbjo6zxg1JuOEXE6Ik6lr+2UuTqTdBVwMfCttM2rEbEVGKqkLElLKQSw70REUAg2H0751gOPpuVHS9L/KAq+A2RTOTcBfxMR70TEAeBvgHVT2YekeZL+QNIzkp6TtD6141hE/C/gZOnPwswa2wUdNAAk3S9pF/DzwKfGyJOXtBXYReEsfE9Jlg3AF9PBeKL9lStrGdBflK0/pQFcEhFvpOU3gUvS8rJURuk246VPdh+fBJ6KiBuAfwL8lqR5E7XRzBpXwwcNSU9L2gx8HrilqA/iJoCI+GRE5IE/Ae4uV0ZE7IqINcCVwO2SLinJsgH400rqU0FZ420blLkamk4l+/ggcG/6+X0T6AC6ZnL/ZlbbGj5oRMSPREQP8H8AGyOiJ32eLMn6J8DPTVDWHuAF4CeH0yR1Ay0R8ewk61Vc1m4gV7Q6l9IA3kq3loZvY+1N6buBfJltxkuf7D4E/FzRz6wrIrZPpp1m1lgaPmiMR9LKoq/rge+XyZOTNCctd1LoAN5RlOU2KrzKGKusdGvosKT3pCeaPgZ8JW22ERh+Aur2kvSPpaeo3gMcSuU8CXxQUmfaxweBJ6e4jyeBXyt6yqq3knaaWQOrdk/8bH0o//TUn1E4298K/AWwLKWvBT6flj+Q1m9J/95ZUsZO4N0laT9Moc/gGLAf2DZRWWmfLwAvA58DlNIXAX8L/AD4OnBRShfwUMr/PLC2qKz/HehLn186j33MAX4vlb8N+Muisl4F3gGOprauqvbv2B9//Jn5z/BBw8zMbEIX9O0pMzObnJZqV2AmLV68OJYvX17tapiZ1ZVnn3327YhYUm5dQweN5cuXs2nTpmpXw8ysrkh6bax1vj1lZmYVc9AwM7OKOWiYmVnFHDTMzKxiDhpmZlYxBw0zM6uYg4aZmVWsod/TMLMLW0RwZjA4MzjE6YGhwr9nl6Pk+9DZfKcHgzMDhXXn0oY4MxBclu3gI2vzE++8QTlomNmUDQ4VDrynSg66hX/j7EH3zMAQp9K/ZwaD04ODnClaf+6AHmUO4GmbgcGzB/ri/Q2XUxwUzu1naOJGTMFPX7WEixd2zEjZtc5Bw6xGRcTZA+bwWe/IA+Pog+65A+pYZ9fDB+Dig+vw+hijrHPblJY1NAPjnbY1N9HaLNpammhtLnzah5dblNY3Mb+95exya0thm/aibYa3byspq62l6ex2bWm7tlTGuXTR1txMa4tGbLO1/xD//Pf+kS39h/jAKgcNswtGRKSz5Bjj9sTYB8rSWxiVnSmfuyVSWtaIg3jJwX26NTdpxEG57ewBt/iAWlg3v6MlHXTPHVzLH3RLyis6ALcNH3RHpI2xTUpL07fUpDW5DM1NYsuug3xgVcWTbjYUBw2bEUNDwZmhknvHZQ6MpWe3o+43j3EwHXF7YqL70MVn5cNn7INDzMSsAOcOgio60x19oFzQ0VKSPnx2W3rQHXkmPOKsu3T9iLProgN90YG5ual2D8j1oKO1masvWcCW/oPVrkrVOGjUoYhgIN1LPns/t+hWw0S3FEYcZEsOpIXyCvebzwwW34ceeUuk9Ey59J72wAzct2hpEpXcduhoPXdQPnvwTbc2xjpTLi1r5MG5KACMODsX7UW3MFqaavss2aZHdz7LX23dU5iQ6AL8fTtolDE0FLx99BQdbc1nO9TKdfaV3m8e+ZTF6FsRY93CqOxAP/IWxnSfJUsUHVzHP1Ne2NZKW/PIA/i5g6zK3DsWbS3NE9/CKNpf8Vn0cFqTz5KtBvTkM/zpM6/z6v7jrFg8r9rVmXUOGmXc+cfP8vXtb01rmWMfTEeeKc9pbWbh8L3kcveOW0R7yUG3taXMWfc4947L3cJo9lmyWUW681kAtuw66KBhBet7LuPr29/iumUZbr0+N+recdknMVrK3FcePlNu8lmyWaO4csl85rQ2s3nXQT7cu6za1Zl1Dhpl3Hztpcxta+b6yzu5/ceWV7s6ZlZDWpqbuG5Z5oLtDPcwImUM/1E89/qBalfFzGpQdz7Dtj2HOTNDLw/WMgeNMfR2dfLiG4c5eWaw2lUxsxrTnc9yemCIHW8eqXZVZp2Dxhh68lnODAbb9hyudlXMrMZ057IAbN51sKr1qAYHjTH0dmWBC/OPwszGl+ucw0Xz2thyAR4fHDTGcMnCDpZl57hfw8xGkUR3LsPW/kPVrsqsc9AYR08+6ysNMyurO5/lpb1HOHpqoNpVmVUVBQ1J6yTtkNQn6d4y69slfTGtf1rS8qJ196X0HZJumqhMSXentJC0uGQ/75W0WdI2SX83pRZPQm9Xlv4DJ9h75ORM78rM6kx3LksEvLD7wrramDBoSGoGHgJuBlYBt0laVZLtDuBARFwJPAg8kLZdBWwAVgPrgIclNU9Q5reB9wOvldQjCzwM3BIRq4GPTLq1k9ST3vzc/PrBmd6VmdWZNbkMwAXXr1HJlcYNQF9E7IyI08BjwPqSPOuBR9Pyl4AbVRiTYj3wWESciohXgL5U3phlRsRzEfFqmXr8C+DLEfF6yrd3Eu2ckmuXZWhpkm9Rmdkoi+a3k79ozgXXr1FJ0FgG7Cr63p/SyuaJiAHgELBonG0rKbPUVUCnpG9KelbSxyqo+3npaG3mmqULec5XGmZWRnfuwuv3rKeO8BbgeuCfAjcBvyHpqtJMku6UtEnSpn379p33Tnu7smztP8jgTExRZmZ1rTuXZffBE+w7cqraVZk1lQSN3UDxLOq5lFY2j6QWIAPsH2fbSsos1Q88GRHHIuJt4O+B7tJMEfFIRKyNiLVLliyZoMiJ9XZlOXZ6kB/svfDe/DSz8Q2PeLv1AhqHqpKg8V1gpaQVktoodGxvLMmzEbg9Ld8KPBURkdI3pKerVgArgWcqLLPUV4CfkNQiaS7wI8D2Cup/XnrynYA7w81stGuXLaRJsOUC6teYMGikPoq7gScpHKQfj4htkj4t6ZaU7QvAIkl9wD3AvWnbbcDjwIvAE8BdETE4VpkAkj4uqZ/C1cdWSZ9PZW1PZWylEHg+HxEvTMcPYTzLF80lO7fV/RpmNsrcthauumTBBfUElWImJkquEWvXro1Nmzaddzm/+P8+w56DJ/jav/7paaiVmTWST3xpK0+++CbP/cYHGmYiM0nPRsTacuvqqSO8anrznfxg71GOnDxT7aqYWY3pzmc5ePwMr79zvNpVmRUOGhXo6Sq8+XmhPY9tZhPrzqeX/C6Q44ODRgV6LuBhkM1sfFddsoCO1qYLpl/DQaMCmbmtvGvJPI94a2ajtDY3sfqyjIOGjdST72TzroM08oMDZjY13bksL+w5xMAFMP2rg0aFeruyvH30NP0HTlS7KmZWY7rzGU6eGeKlt45WuyozzkGjQsMj3n7Pt6jMrMTw8WHLBfBmuINGhd59aaGzy53hZlaq66LCS8AXQr+Gg0aFWpqbWLMs6zfDzWwUSay5QEa8ddCYhN6uLC/uOcypgcFqV8XMakxPLsMP9h7l+OnGnv7VQWMSeruynB4c4sU9h6tdFTOrMd35LINDwbYGPz44aEzC2RFvL4BLUDObnDXpJeBG79dw0JiESzMdLM10uF/DzEZZsqCdZdk5DX9S6aAxST35LM/t8mO3ZjZadz7T8GPUOWhMUm9Xll3vnODtoxfO9I5mVpnuXJbX3znOO8dOV7sqM8ZBY5I8k5+ZjeVsv0YDv+TnoDFJ1y3L0Nykhr9vaWaTd10ug9TYneEOGpM0p62Za5YucL+GmY0yv72FlRfPb+h+DQeNKejJZ9my6xCDQx7x1sxG6s5l2dLAI2I7aExBb76To6cGeHlf449oaWaTsyafZf+xxh0R20FjCnq6sgCelMnMRulp8M7wioKGpHWSdkjqk3RvmfXtkr6Y1j8taXnRuvtS+g5JN01UpqS7U1pIWlxmXz8saUDSrZNu7TRZsWgemTmt7gw3s1GuvnQBbS1NDduvMWHQkNQMPATcDKwCbpO0qiTbHcCBiLgSeBB4IG27CtgArAbWAQ9Lap6gzG8D7wdeG6MuDwBfm2Q7p1VTk+jOe8RbMxutraWJ1ZctbNiTykquNG4A+iJiZ0ScBh4D1pfkWQ88mpa/BNwoSSn9sYg4FRGvAH2pvDHLjIjnIuLVMerya8CfAXsrbeBM6c1neemtIxw91dgjWprZ5HXnsjzf35jTv1YSNJYBu4q+96e0snkiYgA4BCwaZ9tKyhxB0jLgZ4DfnSDfnZI2Sdq0b9++8bKel96uLEMBWxv0vqWZTV13PsOJM4P0NeDDMvXUEf47wCciYtzQHRGPRMTaiFi7ZMmSGavM8PSOjXoJamZT1506w7fuarx+jUqCxm4gX/Q9l9LK5pHUAmSA/eNsW0mZpdYCj0l6FbiVQv/Ihyuo/4zIzm3jisXz3K9hZqMsXzSPhR0tbG7AOxGVBI3vAislrZDURqFje2NJno3A7Wn5VuCpKLzZshHYkJ6uWgGsBJ6psMwRImJFRCyPiOUU+k1+NSL+vJJGzpSe1BneqC/xmNnUNDUVpn9txOFEJgwaqY/ibuBJYDvweERsk/RpSbekbF8AFknqA+4B7k3bbgMeB14EngDuiojBscoEkPRxSf0Urj62Svr89DV3evV2ZXn76Cl2H2zMl3jMbOq68xm+/+YRTp5prOmhWyrJFBFfBb5akvapouWTwEfG2PZ+4P5KykzpnwU+O0F9frGSes+04RFvn3v9ILnOuVWujZnVku7cuelfr7+8s9rVmTb11BFec969dAHtLU3uDDezUYYflmm0W1QOGuehtbmJNbmMhxMxs1EuXtjBpQs7Gm44EQeN89STz/LCnsOcHmi8l3jM7Px05zO+0rCRers6OT0wxPY3Dle7KmZWY7rzWV7df5yDxxtn+lcHjfM0fN/St6jMrNTwiLeNNHihg8Z5Wprp4JKF7e4MN7NRrs1lgMbqDHfQOE+SCi/5NdAfhZlNj4UdrbxrybyG6gx30JgGvV2dvLb/OO8ca5z7lmY2PbrzWTbvOtQwI0c4aEyDc4MXul/DzEbqyRdGjnjj0MlqV2VaOGhMgzW5DE2CzR680MxKrBme/rVBbmE7aEyDuW0tvPvShe7XMLNRrlm6gNZmNcyItw4a06SnK8vm1w8yNNQY9y3NbHq0tzSzaunChplbw0FjmvTmsxw5NcDOtxtvpi4zOz/d+SzP7z7EYAOcVDpoTJPeriwA33O/hpmVWJPLcvTUADsbYPpXB41pcsXi+SzoaPFLfmY2Sk++8JJfIxwfHDSmSVOTzs7kZ2ZW7IrF85nf3tIQw4k4aEyj3nyWHW8e5vjpgWpXxcxqSGH610xDvBnuoDGNers6GYrGGpzMzKbHmlyW7W8crvvpXx00plH32RFvD1a1HmZWe3ryGc4MRt1Po+CgMY0umtfG8kVzPZyImY0yfFJZ73ciKgoaktZJ2iGpT9K9Zda3S/piWv+0pOVF6+5L6Tsk3TRRmZLuTmkhaXFR+s9L2irpeUn/IKl7yq2eQcOd4Y0yOJmZTY9LF3Zw8YL2uh9OZMKgIakZeAi4GVgF3CZpVUm2O4ADEXEl8CDwQNp2FbABWA2sAx6W1DxBmd8G3g+8VrKPV4CfjojrgM8Aj0yyrbOit6uTvUcaZ3AyM5sekliTy9b9cCKVXGncAPRFxM6IOA08BqwvybMeeDQtfwm4UZJS+mMRcSoiXgH6UnljlhkRz0XEq6WViIh/iIjh+z7fAXKTaOes6XG/hpmNoSefYee+Yxw6cabaVZmySoLGMmBX0ff+lFY2T0QMAIeAReNsW0mZ47kD+OtyKyTdKWmTpE379u2bRJHT45qlC2lraXK/hpmNMtyv8cLu+u3XqLuOcEn/hELQ+ES59RHxSESsjYi1S5Ysmd3KAW0tTVy3LOMrDTMbZc2yLFDfb4ZXEjR2A/mi77mUVjaPpBYgA+wfZ9tKyhxF0hrg88D6iNhfQd2roicNTnZmcKjaVTGzGpKZ28qKxfPqujO8kqDxXWClpBWS2ih0bG8sybMRuD0t3wo8FYXHhzYCG9LTVSuAlcAzFZY5gqQu4MvAL0TES5U1rzp6u7KcGhji+28cqXZVzKzGdNf5m+ETBo3UR3E38CSwHXg8IrZJ+rSkW1K2LwCLJPUB9wD3pm23AY8DLwJPAHdFxOBYZQJI+rikfgpXH1slfT7t41MU+kkelrRZ0qZpaP+MONsZ7n4NMyvRnc/y1uFTvFmnT1iqkd8nWLt2bWzaNPuxJSK44T/9LT955WJ++3/rmfX9m1nt+t7rB/jZh/+B3/uF67lp9aXVrk5Zkp6NiLXl1tVdR3g9kNKIt3V839LMZsaqpQtpaVLd9ms4aMyQ3q4sr7x9jAPHTle7KmZWQzpam3n30gV126/hoDFDevOdAHX/9qeZTb/uXJat/YcYqsPpXx00ZsiaXIYm+c1wMxutO5/lyMkBXtl/rNpVmTQHjRkyr72Fqy5ZUNcv8ZjZzBh+wrIe+zUcNGZQb1eWza8fqMtLUDObOe9aMp+5bc0OGjZSb76Tw3V6CWpmM6e5SVy3LMOWOpxbw0FjBvV0ZQH3a5jZaD35LC/uOczpgfoabshBYwZduWQ+C9pbPOKtmY3Snc9yenCI779ZX9O/OmjMoKYm0Z1m8jMzK7YmlwHqrzPcQWOG9eSzfP/NI5w4PVjtqphZDVmWncPi+W1116/hoDHDeruyDA4Fz9fxpCtmNv0k0Z3L+krDRjo3/av7NcxspO58lr59Rzlysn6mf3XQmGGL5rfTddFcv+RnZqOsyWWIoK7uRDhozIIed4abWRnduSwAW+uoX8NBYxb0dmV58/BJ3jh0otpVMbMa0jmvjcsXza2rfg0HjVnQ25VGvPXVhpmVqLfOcAeNWXDN0gW0NTd5UiYzG2VNLsOeQyfZe6Q+pn910JgF7S3NrF620FcaZjbK8BOWW3fVR7+Gg8Ys6cln2br7IGcG62ucGTObWasvy9DcpLqZya+ioCFpnaQdkvok3VtmfbukL6b1T0taXrTuvpS+Q9JNE5Up6e6UFpIWF6VL0mfTuq2SfmjKra6C3q5OTp4ZYsebR6pdFTOrIXPamrm6jubemTBoSGoGHgJuBlYBt0laVZLtDuBARFwJPAg8kLZdBWwAVgPrgIclNU9Q5reB9wOvlezjZmBl+twJ/O7kmlpdvcMv+dXJH4aZzZ7ufIat/YeIqP25dyq50rgB6IuInRFxGngMWF+SZz3waFr+EnCjJKX0xyLiVES8AvSl8sYsMyKei4hXy9RjPfBHUfAdICtp6WQaW025zsI4M34z3MxKdeeyHDpxhtf2H692VSZUSdBYBuwq+t6f0srmiYgB4BCwaJxtKylzKvVA0p2SNknatG/fvgmKnD2S6Ml31s0lqJnNnu7h6V/roF+j4TrCI+KRiFgbEWuXLFlS7eqM0NuVZee+Yxw6Xj/jzJjZzFt58XzmtDbXxUllJUFjN5Av+p5LaWXzSGoBMsD+cbatpMyp1KOmDfdrbK6Dswkzmz0tzU1cu2xhXbzkV0nQ+C6wUtIKSW0UOrY3luTZCNyelm8FnopCj85GYEN6umoFhU7sZyoss9RG4GPpKar3AIci4o0K6l8zrstlkDzirZmN1p3Lsm3P4Zp/LH/CoJH6KO4GngS2A49HxDZJn5Z0S8r2BWCRpD7gHuDetO024HHgReAJ4K6IGByrTABJH5fUT+FKYqukz6d9fBXYSaEz/feBXz3v1s+yBR2tXHVx/TxaZ2azpzuf5dRA7T+W31JJpoj4KoWDdnHap4qWTwIfGWPb+4H7KykzpX8W+GyZ9ADuqqS+tawnn+WJbW8SERQeMDMzO/dm+Jb+g1y7LFPdyoyj4TrCa11vV+HRulfePlbtqphZDcl1zqFzbmvN92s4aMyysyPe1vgfhpnNLkl057M1P7eGg8Ysu/Li+cxra/akTGY2Sncuy0tvHeHYqYFqV2VMDhqzrLmpcDbhKw0zK9WTzzIU8EINT//qoFEFPfks2984zMkzg9WuipnVkDW5Qgd4Lb8Z7qBRBb1dnQwMRU2fTZjZ7Fs0v51c5xy21PDcGg4aVTD8aJ37NcysVHc+6ysNG2nJgsLZxHO7/Ga4mY3Uk8vSf+AEbx89Ve2qlOWgUSW9XZ2e/tXMRhnu19hao1cbDhpV0pPPsufQSd46XB+TyZvZ7Lh2WYYmweYa7ddw0KiS3q4s4H4NMxtpXnsLV12ywFcaNtKqpQtpbZb7NcxslO5cli27Dtbk9K8OGlXS0drMqssy7tcws1HW5DMcOH6GXe+cqHZVRnHQqKLeNM7MQI2Pn29ms6s7lwVqc8I2B40q6u3KcuLMIDvequ3x881sdl196QLaW5rYWoPDDTloVFFv3iPemtlorc1NXLssU5Mv+TloVFH+ojlcNK/NT1CZ2Shrchme3117t68dNKpIEr0e8dbMyujJZzl5ZoiX3jpa7aqM4KBRZT35LH17j3LoxJlqV8XMashwZ3itva/hoFFlwzP51dofhplV1+WL5pKZ01pz/RoVBQ1J6yTtkNQn6d4y69slfTGtf1rS8qJ196X0HZJumqhMSStSGX2pzLaU3iXpG5Kek7RV0ofOq+U1Yk0+g+Q3w81sJEmsyWVqbjiRCYOGpGbgIeBmYBVwm6RVJdnuAA5ExJXAg8ADadtVwAZgNbAOeFhS8wRlPgA8mMo6kMoG+PfA4xHRm8p8eGpNri0LO1q5csl8nnvdb4ab2Ug9+cL0rydO186EbZVcadwA9EXEzog4DTwGrC/Jsx54NC1/CbhRklL6YxFxKiJeAfpSeWXLTNu8L5VBKvPDaTmAhWk5A+yZVEtrWE/qDK/FIQPMrHq6c1kGh4Jte2rnaqOSoLEM2FX0vT+llc0TEQPAIWDRONuOlb4IOJjKKN3XbwIfldQPfBX4tXKVlXSnpE2SNu3bt6+C5lVfb1cnB46f4bX9x6tdFTOrIWvyhWHSa+kJy3rqCL8N+MOIyAEfAv5Y0qj6R8QjEbE2ItYuWbJk1is5FcMj3tbSH4aZVd/FCzq4LNPBlv76utLYDeSLvudSWtk8kloo3D7aP862Y6XvB7KpjNJ93QE8DhAR/wh0AIsrqH/Nu+qSBcxta3a/hpmN0p0vjHhbKyoJGt8FVqanmtoodEJvLMmzEbg9Ld8KPBWFG/QbgQ3p6aoVwErgmbHKTNt8I5VBKvMrafl14EYASddQCBr1cf9pAs1Nw09JHKx2VcysxnTns7z+znEOHDtd7aoAFQSN1L9wN/AksJ3CE0zbJH1a0i0p2xeARZL6gHuAe9O22yhcHbwIPAHcFRGDY5WZyvoEcE8qa1EqG+DfAL8saQvwp8AvRgP1HPfkO9m25zAnz9TOUxJmVn3DL/nVyvsaLRNngYj4KoXO5+K0TxUtnwQ+Msa29wP3V1JmSt9J4emq0vQXgR+vpL71qLcry0B6SuL6yy+qdnXMrEZclyu8y7Vl1yHee/XF1a5OXXWEN7TefBbwS35mNtL89hauXDK/Zq40HDRqxMULO1iWncNz7tcwsxLd+Sxb+2vjXS4HjRrS05X19K9mNkp3PsvbR0+z+2D1p3910Kghvfksuw+eYO+Rk9WuipnVkO5c4SW/LTUwDpWDRg05+5KfrzbMrMi7L11IW3NTTfRrOGjUkNWXZWhpkvs1zGyEtpYmVl22sCZe8nPQqCEdrc2sumyh3ww3s1F68lme332IwaHqdoY7aNSYnnyWrf3V/8Mws9qyJpfh+OlB+vZWd/pXB40a09uV5fjpQV5660i1q2JmNaQ7vctV7VtUDho1pjdfmP7V41CZWbEVi+axoKOl6p3hDho15vJFc+mc2+p+DTMboalJdOeyDho2kqSzM/mZmRVbk8vw/TeOVHVgUweNGtST7+QHe49y+OSZalfFzGpId354YNPDVauDg0YN6u3KEgFba+DtTzOrHT2pM3xrFW9ROWjUoOGnJDbvcr+GmZ1zycIOLl3YUdUnqBw0alBmTivvWjLPw6Sb2ShrcpmqzhnuoFGjers62byrNoZCNrPa0Z3P8srbxzh0vDp9ng4aNaonn2X/sdPseqf6QyGbWe0426+x+2BV9u+gUaOGR7x9zv0aZlbkurPDpB+syv4dNGrU1ZcsYE5rs/s1zGyEhR2tXLFkHpur9HRlRUFD0jpJOyT1Sbq3zPp2SV9M65+WtLxo3X0pfYekmyYqU9KKVEZfKrOtaN0/l/SipG2S/seUW10HWpqbuC6X8TDpZjZKT3ozvBp9nhMGDUnNwEPAzcAq4DZJq0qy3QEciIgrgQeBB9K2q4ANwGpgHfCwpOYJynwAeDCVdSCVjaSVwH3Aj0fEauBfTbXR9aI3n2X7nsOcGqje259mVnu681n2HTnFm4dnf5bPSq40bgD6ImJnRJwGHgPWl+RZDzyalr8E3ChJKf2xiDgVEa8Afam8smWmbd6XyiCV+eG0/MvAQxFxACAi9k66tXWmtyvL6cGhqr79aWa1p5oj3lYSNJYBu4q+96e0snkiYgA4BCwaZ9ux0hcBB1MZpfu6CrhK0rclfUfSunKVlXSnpE2SNu3bt6+C5tWu3q404q37NcysyDVLF9DarKr0a9RTR3gLsBJ4L3Ab8PuSsqWZIuKRiFgbEWuXLFkyuzWcZpcs7GBppsP9GmY2QntLM9csrc70r5UEjd1Avuh7LqWVzSOpBcgA+8fZdqz0/UA2lVG6r35gY0ScSbe6XqIQRBpab1fWw4mY2SjducL0r0OzPMtnJUHju8DK9FRTG4WO7Y0leTYCt6flW4GnotCtvxHYkJ6uWkHhIP/MWGWmbb6RyiCV+ZW0/OcUrjKQtJjC7aqdk2tu/enJZ9n1zgn2HTlV7aqYWQ3pzmc5emqAnW/P7vSvEwaN1L9wN/AksB14PCK2Sfq0pFtSti8AiyT1AfcA96ZttwGPAy8CTwB3RcTgWGWmsj4B3JPKWpTKJuXdL+lFCoHl30XE/vNrfu0726/hW1RmVqQ7veQ32/0aLRNngYj4KvDVkrRPFS2fBD4yxrb3A/dXUmZK30nh6arS9KAQkO6ppM6N4trLMjQ3ic27DvCBVZdUuzpmViOuWDKf+e0tbNl1kFuvz83afuupI/yCNKetmWuWLvCb4WY2QnOTuG5ZZtbn1nDQqAO9+U629h9icJY7vMystnXns7z4xuy+AOygUQd6UodX397Z7fAys9rWnctwZjDY/saRWdung0YdGB7x1o/emlmxarwZ7qBRB1YsnkdmTqv7NcxshKWZDpYsaGfLLPZrOGjUAUn05LMOGmY2giS6c1lfadhoPfksL+09wtFTAxNnNrMLRncuw8v7jnH45OxM/+qgUSd6u7JEwFa/5GdmRYb7NZ7vn52X/Bw06sTwvMAevNDMiq0Znv51lvo1HDTqRHZuG1csnud+DTMbITu3jRWL581av4aDRh3p6cqyeVd1png0s9q1JpdhyyyNQeWgUUd681nePnqK/gMnql0VM6sh3bksbx4+yVuzMP2rg0YdGR7x1v0aZlZsNl/yc9CoI1dfuoD2liZP/2pmI6y+bCEtTZqVznAHjTrS2tzEmlyG5zyciJkV6Wht5upLF8xKv4aDRp3p7epk257ZHdXSzGpfdz7Llv6DMz79q4NGnenJZzk9MDSro1qaWe3ryWU5cnKAV/cfm9H9OGjUmbMj3r7uW1Rmds7ZzvAZ7tdw0KgzSzNzuGRhu5+gMrMRrrx4PnPbmme8X8NBow715jv9ZriZjdDcJK5dlmHzDJ9QVhQ0JK2TtENSn6R7y6xvl/TFtP5pScuL1t2X0ndIummiMiWtSGX0pTLbSvb1c5JC0toptbgB9HRlef2d4+w/eqraVTGzGtKTpn89PTA0Y/uYMGhIagYeAm4GVgG3SVpVku0O4EBEXAk8CDyQtl0FbABWA+uAhyU1T1DmA8CDqawDqezhuiwAfh14emrNbQy96d7lTJ9RmFl96c4VHpTZ8ebMPShTyZXGDUBfROyMiNPAY8D6kjzrgUfT8peAGyUppT8WEaci4hWgL5VXtsy0zftSGaQyP1y0n89QCCoz/658Dbsul6G5SQ4aZjbC8Ii3m2ewM7ySoLEM2FX0vT+llc0TEQPAIWDRONuOlb4IOJjKGLEvST8E5CPir8arrKQ7JW2StGnfvn0VNK/+zG1r4epLFrhfw8xGyHXOYdG8thkdTqQuOsIlNQG/DfybifJGxCMRsTYi1i5ZsmTmK1clvV2FKR5n+kUeM6sfkujOZ9la5SuN3UC+6HsupZXNI6kFyAD7x9l2rPT9QDaVUZy+ALgW+KakV4H3ABsv6M7wfJYjpwZ4ed/RalfFzGpIdy7LD/YenbGpoSsJGt8FVqanmtoodGxvLMmzEbg9Ld8KPBWFSR82AhvS01UrgJXAM2OVmbb5RiqDVOZXIuJQRCyOiOURsRz4DnBLRGyaYrvr3tkRb32LysyKrMlniJi56V9bJsoQEQOS7gaeBJqBP4iIbZI+DWyKiI3AF4A/ltQHvEMhCJDyPQ68CAwAd0XEIEC5MtMuPwE8Juk/As+lsq3EFYvnsaCjhf/8xPf5/W/trHZ1zKxGnB4sPG77wu5D/Oi7Fk17+WrkWeDWrl0bmzY17sXIf//Oa/zDy29XuxpmVmMk8S9/+l1cuywz1e2fjYiyt/8nvNKw2vXR91zOR99zebWrYWYXkLp4esrMzGqDg4aZmVXMQcPMzCrmoGFmZhVz0DAzs4o5aJiZWcUcNMzMrGIOGmZmVrGGfiNc0j7gtWrXo8RioFFe426ktoDbU8saqS1Q++25PCLKDhPe0EGjFknaNNbr+fWmkdoCbk8ta6S2QH23x7enzMysYg4aZmZWMQeN2fdItSswjRqpLeD21LJGagvUcXvcp2FmZhXzlYaZmVXMQcPMzCrmoDELJH1E0jZJQ5LWFqUvl3RC0ub0+W/VrGelxmpP0fouSUcl/dtq1G+yxvn93FD0u9ki6WeqWc9KjNOWD0h6VtLz6d/3VbOelRqnPYskfSP9nX2umnWs1Hj/byTdJ6lP0g5JN1WrjpXwzH2z4wXgZ4HfK7Pu5Yjomd3qnLfx2gPw28Bfz151zttY7XkBWBsRA5KWAlsk/UVEDMx6DSs3VlveBv5ZROyRdC3wJLBstis3BWO15yTwG8C16VMPyrZF0ipgA7AauAz4uqSrImJw9qs4MQeNWRAR26Ewb28jGK89kj4MvAIcm91aTd1Y7YmI40VfO4Caf2pknLY8V/R1GzBHUntEnJrF6k3aOO05BvwvSVdWo15TMc7/m/XAY+l38YqkPuAG4B9nt4aV8e2p6lsh6TlJfyfpJ6tdmfMhaT7wCeA/VLsu00XSj0jaBjwP/EqNX2VU6ueA79V6wLiALAN2FX3vp4avAn2lMU0kfR24tMyqT0bEV8bY7A2gKyL2S7oe+HNJqyPi8IxVtEJTbM9vAg9GxNFau6qaYnuIiKeB1ZKuAR6V9NcRcXKm6lmJqbYlbbsaeAD44EzUbSrOpz21ppHaMhYHjWkSEe+fwjangFNp+VlJLwNXAZumuXqTNpX2AD8C3CrpvwBZYEjSyYioekflFNtTvP12SUcp3D+v6u9nqm2RlAP+P+BjEfHy9NZq6s73d1NLptiW3UC+6HsupdUkB40qkrQEeCciBiVdAawEdla5WlMWEWdvr0n6TeBoLQSMqZK0AtiVOsIvB94NvFrdWk2NpCzwV8C9EfHtKlfHRtoI/A9Jv02hI3wl8Ex1qzQ292nMAkk/I6kf+FHgryQ9mVb9FLBV0mbgSxTumb9TpWpWbJz21KVx2vMTFJ6Y2kzhDP1XI6KWh7Mery13A1cCnyp6jPjiqlW0QuP9rUl6lcKTer8oqT89hVSzxmpLRGwDHgdeBJ4A7qrVJ6fAw4iYmdkk+ErDzMwq5qBhZmYVc9AwM7OKOWiYmVnFHDTMbEok/YGkvZJemKbyBoue7No4ie0ykv4iDSq5TdIvTZB/Y3GdJX1G0ta0369Juqxo3XtT+jZJf1dSTnMazeEvi9JWSHo6DT74RUltKb09fe9L65cXbVN2sEJJ61Jan6R7z2cf4/wsnpB0sLgNE3HQMLOp+kNg3TSWdyIietLnlklsdxfwYkR0A+8F/uvwgbSUpJ8FjpYk/1ZErEkDh/4l8KmUNws8DNwSEauBj5Rs9+vA9pK0ByiMinAlcAC4I6XfARxI6Q+mfKWDFa4DHk7BqBl4CLgZWAXcVvRI8aT2MYHfAn6hgnxnOWiY2ZRExN8DI94rkvSudPb6rKRvSXr3bFQFWKDC2DXzU51GjRGmwtho9wD/ccTGI4ftmce5gSn/BfDliHg95dtbVFYO+KfA54vSBLyPwjtXAI8CH07L69N30vobU/6zgxVGxCvA8GCFNwB9EbEzIk4DjwHrp7KPFIR+S9J30xXV/1nU9r8FjpT+rMbjoGFm0+kR4Nci4nrg31I4U69Uh6RNkr6jwmjJlfoccA2wh8LAkr8eEUNl8n0G+K/A8dIVku6XtAv4edKVBoUhfTolfTMFwY8VbfI7wP8FFO9nEXCwaFDL4oEHzw5KmNYfSvnHGqxwrPSp7OMO4FBE/DDww8AvqzDawZR4GBEzmxbpTP7HgP+pcwNWtqd1Pwt8usxmuyNi+D7+5RGxW4UhdZ6S9HxEvCzp/wH+WZlt/zwi/j1wE7CZwhn4u4C/kfSt4isIST3AuyLiX5e71x8RnwQ+Kek+Cm/P/98Ujo/XAzcCc4B/lPQdCsFkbxov7r0V/XCq64PAGkm3pu8ZCkOVvDKVwhw0zGy6NFE4C+4pXRERXwa+PN7GEbE7/btT0jeBXgqTlN0H3DfOpr8E/OcoDG/RJ+kVCuOEFY/f9KPA2jT0SAtwsaRvRsR7S8r6E+CrFIJGP7A/zd1xTNLfA93ADwG3SPoQhXlWFkr67xT6BrKSWtKZfvHAg8ODEvZLaqFw4N7P+IMVlkvfP4V9iMLV37QM9+PbU2Y2LdKZ/SuSPgKFe/ySuivZVlKnpOGrksXAj1MYi6kSr1O4GkDSJcDVlAz8GRG/GxGXRcRyCmOKvTQcMCStLMq6Hvh+Wv4K8BOSWiTNpTCK8/aIuC8icqmsDcBTEfHRFLS+AQyf0d+eyoDCoIS3p+Vb0zaR0jekJ59WcG6wwu8CK9OTUm1pPxunuI8ngX8pqTW19ypJ8yr5wZYVEf74448/k/4Af0phTpgzFM7K7wBWUBh0bwuFg/6nKizrxyj0R2xJ/94xiXpcBnwtbfcC8NGidZvL5F8OvFD0/c/SdluBvwCWFa37d6kdLwD/qkxZ7wX+suj7FRQO+n3A/wTaU3pH+t6X1l9RtM0ngZeBHcDNRekfAl5K6z451X1QuDj4T0U/n28AmbTuW8A+4ET6Hd400c/bAxaamVnFfHvKzMwq5qBhZmYVc9AwM7OKOWiYmVnFHDTMzKxiDhpmZlYxBw0zM6vY/w+yvm9UCu41hgAAAABJRU5ErkJggg==\n" + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAY0AAAEQCAYAAABMXyhMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAuvUlEQVR4nO3dfZRc1X3m++/T73qtaiQBQlWNhBEYCdTdQSHOu8fYRnjWICfBc8XEMcnlhpsJxJlhZq5heeKbsYe5w2RNyPIyZELs3JBMJphxfGMlccBxsBOPE4OFkQRCFm7Ei1oCJITe37v7d/+o3VJ1dXV3dau760XPZ61aOrXPPvvs3d06v3POPmdvRQRmZmaVaKp2BczMrH44aJiZWcUcNMzMrGIOGmZmVjEHDTMzq5iDhpmZVeyCDhqSPiNpq6TNkr4m6bIyeS6X9L2UZ5ukX0npC1La8OdtSb+T1v1U2mZA0q0TlZXWXS/peUl9kj4rSSn9Ikl/I+kH6d/OlK6Ury+14YeKyro95f+BpNunuo9xfm6LJH1D0lFJn5vij9/M6lFEXBAf4L3AH5akLSxa/jjw38ps1wa0p+X5wKvAZWXyPQv8VFpeDqwB/gi4tZKygGeA9wAC/hq4OaX/F+DetHwv8EBa/lDKp7Td0yn9ImBn+rczLXdOZR/j/CznAT8B/ArwuWr/bv3xx5/Z+1zQVxoRcbjo6zxg1JuOEXE6Ik6lr+2UuTqTdBVwMfCttM2rEbEVGKqkLElLKQSw70REUAg2H0751gOPpuVHS9L/KAq+A2RTOTcBfxMR70TEAeBvgHVT2YekeZL+QNIzkp6TtD6141hE/C/gZOnPwswa2wUdNAAk3S9pF/DzwKfGyJOXtBXYReEsfE9Jlg3AF9PBeKL9lStrGdBflK0/pQFcEhFvpOU3gUvS8rJURuk246VPdh+fBJ6KiBuAfwL8lqR5E7XRzBpXwwcNSU9L2gx8HrilqA/iJoCI+GRE5IE/Ae4uV0ZE7IqINcCVwO2SLinJsgH400rqU0FZ420blLkamk4l+/ggcG/6+X0T6AC6ZnL/ZlbbGj5oRMSPREQP8H8AGyOiJ32eLMn6J8DPTVDWHuAF4CeH0yR1Ay0R8ewk61Vc1m4gV7Q6l9IA3kq3loZvY+1N6buBfJltxkuf7D4E/FzRz6wrIrZPpp1m1lgaPmiMR9LKoq/rge+XyZOTNCctd1LoAN5RlOU2KrzKGKusdGvosKT3pCeaPgZ8JW22ERh+Aur2kvSPpaeo3gMcSuU8CXxQUmfaxweBJ6e4jyeBXyt6yqq3knaaWQOrdk/8bH0o//TUn1E4298K/AWwLKWvBT6flj+Q1m9J/95ZUsZO4N0laT9Moc/gGLAf2DZRWWmfLwAvA58DlNIXAX8L/AD4OnBRShfwUMr/PLC2qKz/HehLn186j33MAX4vlb8N+Muisl4F3gGOprauqvbv2B9//Jn5z/BBw8zMbEIX9O0pMzObnJZqV2AmLV68OJYvX17tapiZ1ZVnn3327YhYUm5dQweN5cuXs2nTpmpXw8ysrkh6bax1vj1lZmYVc9AwM7OKOWiYmVnFHDTMzKxiDhpmZlYxBw0zM6uYg4aZmVWsod/TMLMLW0RwZjA4MzjE6YGhwr9nl6Pk+9DZfKcHgzMDhXXn0oY4MxBclu3gI2vzE++8QTlomNmUDQ4VDrynSg66hX/j7EH3zMAQp9K/ZwaD04ODnClaf+6AHmUO4GmbgcGzB/ri/Q2XUxwUzu1naOJGTMFPX7WEixd2zEjZtc5Bw6xGRcTZA+bwWe/IA+Pog+65A+pYZ9fDB+Dig+vw+hijrHPblJY1NAPjnbY1N9HaLNpammhtLnzah5dblNY3Mb+95exya0thm/aibYa3byspq62l6ex2bWm7tlTGuXTR1txMa4tGbLO1/xD//Pf+kS39h/jAKgcNswtGRKSz5Bjj9sTYB8rSWxiVnSmfuyVSWtaIg3jJwX26NTdpxEG57ewBt/iAWlg3v6MlHXTPHVzLH3RLyis6ALcNH3RHpI2xTUpL07fUpDW5DM1NYsuug3xgVcWTbjYUBw2bEUNDwZmhknvHZQ6MpWe3o+43j3EwHXF7YqL70MVn5cNn7INDzMSsAOcOgio60x19oFzQ0VKSPnx2W3rQHXkmPOKsu3T9iLProgN90YG5ual2D8j1oKO1masvWcCW/oPVrkrVOGjUoYhgIN1LPns/t+hWw0S3FEYcZEsOpIXyCvebzwwW34ceeUuk9Ey59J72wAzct2hpEpXcduhoPXdQPnvwTbc2xjpTLi1r5MG5KACMODsX7UW3MFqaavss2aZHdz7LX23dU5iQ6AL8fTtolDE0FLx99BQdbc1nO9TKdfaV3m8e+ZTF6FsRY93CqOxAP/IWxnSfJUsUHVzHP1Ne2NZKW/PIA/i5g6zK3DsWbS3NE9/CKNpf8Vn0cFqTz5KtBvTkM/zpM6/z6v7jrFg8r9rVmXUOGmXc+cfP8vXtb01rmWMfTEeeKc9pbWbh8L3kcveOW0R7yUG3taXMWfc4947L3cJo9lmyWUW681kAtuw66KBhBet7LuPr29/iumUZbr0+N+recdknMVrK3FcePlNu8lmyWaO4csl85rQ2s3nXQT7cu6za1Zl1Dhpl3Hztpcxta+b6yzu5/ceWV7s6ZlZDWpqbuG5Z5oLtDPcwImUM/1E89/qBalfFzGpQdz7Dtj2HOTNDLw/WMgeNMfR2dfLiG4c5eWaw2lUxsxrTnc9yemCIHW8eqXZVZp2Dxhh68lnODAbb9hyudlXMrMZ057IAbN51sKr1qAYHjTH0dmWBC/OPwszGl+ucw0Xz2thyAR4fHDTGcMnCDpZl57hfw8xGkUR3LsPW/kPVrsqsc9AYR08+6ysNMyurO5/lpb1HOHpqoNpVmVUVBQ1J6yTtkNQn6d4y69slfTGtf1rS8qJ196X0HZJumqhMSXentJC0uGQ/75W0WdI2SX83pRZPQm9Xlv4DJ9h75ORM78rM6kx3LksEvLD7wrramDBoSGoGHgJuBlYBt0laVZLtDuBARFwJPAg8kLZdBWwAVgPrgIclNU9Q5reB9wOvldQjCzwM3BIRq4GPTLq1k9ST3vzc/PrBmd6VmdWZNbkMwAXXr1HJlcYNQF9E7IyI08BjwPqSPOuBR9Pyl4AbVRiTYj3wWESciohXgL5U3phlRsRzEfFqmXr8C+DLEfF6yrd3Eu2ckmuXZWhpkm9Rmdkoi+a3k79ozgXXr1FJ0FgG7Cr63p/SyuaJiAHgELBonG0rKbPUVUCnpG9KelbSxyqo+3npaG3mmqULec5XGmZWRnfuwuv3rKeO8BbgeuCfAjcBvyHpqtJMku6UtEnSpn379p33Tnu7smztP8jgTExRZmZ1rTuXZffBE+w7cqraVZk1lQSN3UDxLOq5lFY2j6QWIAPsH2fbSsos1Q88GRHHIuJt4O+B7tJMEfFIRKyNiLVLliyZoMiJ9XZlOXZ6kB/svfDe/DSz8Q2PeLv1AhqHqpKg8V1gpaQVktoodGxvLMmzEbg9Ld8KPBURkdI3pKerVgArgWcqLLPUV4CfkNQiaS7wI8D2Cup/XnrynYA7w81stGuXLaRJsOUC6teYMGikPoq7gScpHKQfj4htkj4t6ZaU7QvAIkl9wD3AvWnbbcDjwIvAE8BdETE4VpkAkj4uqZ/C1cdWSZ9PZW1PZWylEHg+HxEvTMcPYTzLF80lO7fV/RpmNsrcthauumTBBfUElWImJkquEWvXro1Nmzaddzm/+P8+w56DJ/jav/7paaiVmTWST3xpK0+++CbP/cYHGmYiM0nPRsTacuvqqSO8anrznfxg71GOnDxT7aqYWY3pzmc5ePwMr79zvNpVmRUOGhXo6Sq8+XmhPY9tZhPrzqeX/C6Q44ODRgV6LuBhkM1sfFddsoCO1qYLpl/DQaMCmbmtvGvJPI94a2ajtDY3sfqyjIOGjdST72TzroM08oMDZjY13bksL+w5xMAFMP2rg0aFeruyvH30NP0HTlS7KmZWY7rzGU6eGeKlt45WuyozzkGjQsMj3n7Pt6jMrMTw8WHLBfBmuINGhd59aaGzy53hZlaq66LCS8AXQr+Gg0aFWpqbWLMs6zfDzWwUSay5QEa8ddCYhN6uLC/uOcypgcFqV8XMakxPLsMP9h7l+OnGnv7VQWMSeruynB4c4sU9h6tdFTOrMd35LINDwbYGPz44aEzC2RFvL4BLUDObnDXpJeBG79dw0JiESzMdLM10uF/DzEZZsqCdZdk5DX9S6aAxST35LM/t8mO3ZjZadz7T8GPUOWhMUm9Xll3vnODtoxfO9I5mVpnuXJbX3znOO8dOV7sqM8ZBY5I8k5+ZjeVsv0YDv+TnoDFJ1y3L0Nykhr9vaWaTd10ug9TYneEOGpM0p62Za5YucL+GmY0yv72FlRfPb+h+DQeNKejJZ9my6xCDQx7x1sxG6s5l2dLAI2I7aExBb76To6cGeHlf449oaWaTsyafZf+xxh0R20FjCnq6sgCelMnMRulp8M7wioKGpHWSdkjqk3RvmfXtkr6Y1j8taXnRuvtS+g5JN01UpqS7U1pIWlxmXz8saUDSrZNu7TRZsWgemTmt7gw3s1GuvnQBbS1NDduvMWHQkNQMPATcDKwCbpO0qiTbHcCBiLgSeBB4IG27CtgArAbWAQ9Lap6gzG8D7wdeG6MuDwBfm2Q7p1VTk+jOe8RbMxutraWJ1ZctbNiTykquNG4A+iJiZ0ScBh4D1pfkWQ88mpa/BNwoSSn9sYg4FRGvAH2pvDHLjIjnIuLVMerya8CfAXsrbeBM6c1neemtIxw91dgjWprZ5HXnsjzf35jTv1YSNJYBu4q+96e0snkiYgA4BCwaZ9tKyhxB0jLgZ4DfnSDfnZI2Sdq0b9++8bKel96uLEMBWxv0vqWZTV13PsOJM4P0NeDDMvXUEf47wCciYtzQHRGPRMTaiFi7ZMmSGavM8PSOjXoJamZT1506w7fuarx+jUqCxm4gX/Q9l9LK5pHUAmSA/eNsW0mZpdYCj0l6FbiVQv/Ihyuo/4zIzm3jisXz3K9hZqMsXzSPhR0tbG7AOxGVBI3vAislrZDURqFje2NJno3A7Wn5VuCpKLzZshHYkJ6uWgGsBJ6psMwRImJFRCyPiOUU+k1+NSL+vJJGzpSe1BneqC/xmNnUNDUVpn9txOFEJgwaqY/ibuBJYDvweERsk/RpSbekbF8AFknqA+4B7k3bbgMeB14EngDuiojBscoEkPRxSf0Urj62Svr89DV3evV2ZXn76Cl2H2zMl3jMbOq68xm+/+YRTp5prOmhWyrJFBFfBb5akvapouWTwEfG2PZ+4P5KykzpnwU+O0F9frGSes+04RFvn3v9ILnOuVWujZnVku7cuelfr7+8s9rVmTb11BFec969dAHtLU3uDDezUYYflmm0W1QOGuehtbmJNbmMhxMxs1EuXtjBpQs7Gm44EQeN89STz/LCnsOcHmi8l3jM7Px05zO+0rCRers6OT0wxPY3Dle7KmZWY7rzWV7df5yDxxtn+lcHjfM0fN/St6jMrNTwiLeNNHihg8Z5Wprp4JKF7e4MN7NRrs1lgMbqDHfQOE+SCi/5NdAfhZlNj4UdrbxrybyG6gx30JgGvV2dvLb/OO8ca5z7lmY2PbrzWTbvOtQwI0c4aEyDc4MXul/DzEbqyRdGjnjj0MlqV2VaOGhMgzW5DE2CzR680MxKrBme/rVBbmE7aEyDuW0tvPvShe7XMLNRrlm6gNZmNcyItw4a06SnK8vm1w8yNNQY9y3NbHq0tzSzaunChplbw0FjmvTmsxw5NcDOtxtvpi4zOz/d+SzP7z7EYAOcVDpoTJPeriwA33O/hpmVWJPLcvTUADsbYPpXB41pcsXi+SzoaPFLfmY2Sk++8JJfIxwfHDSmSVOTzs7kZ2ZW7IrF85nf3tIQw4k4aEyj3nyWHW8e5vjpgWpXxcxqSGH610xDvBnuoDGNers6GYrGGpzMzKbHmlyW7W8crvvpXx00plH32RFvD1a1HmZWe3ryGc4MRt1Po+CgMY0umtfG8kVzPZyImY0yfFJZ73ciKgoaktZJ2iGpT9K9Zda3S/piWv+0pOVF6+5L6Tsk3TRRmZLuTmkhaXFR+s9L2irpeUn/IKl7yq2eQcOd4Y0yOJmZTY9LF3Zw8YL2uh9OZMKgIakZeAi4GVgF3CZpVUm2O4ADEXEl8CDwQNp2FbABWA2sAx6W1DxBmd8G3g+8VrKPV4CfjojrgM8Aj0yyrbOit6uTvUcaZ3AyM5sekliTy9b9cCKVXGncAPRFxM6IOA08BqwvybMeeDQtfwm4UZJS+mMRcSoiXgH6UnljlhkRz0XEq6WViIh/iIjh+z7fAXKTaOes6XG/hpmNoSefYee+Yxw6cabaVZmySoLGMmBX0ff+lFY2T0QMAIeAReNsW0mZ47kD+OtyKyTdKWmTpE379u2bRJHT45qlC2lraXK/hpmNMtyv8cLu+u3XqLuOcEn/hELQ+ES59RHxSESsjYi1S5Ysmd3KAW0tTVy3LOMrDTMbZc2yLFDfb4ZXEjR2A/mi77mUVjaPpBYgA+wfZ9tKyhxF0hrg88D6iNhfQd2roicNTnZmcKjaVTGzGpKZ28qKxfPqujO8kqDxXWClpBWS2ih0bG8sybMRuD0t3wo8FYXHhzYCG9LTVSuAlcAzFZY5gqQu4MvAL0TES5U1rzp6u7KcGhji+28cqXZVzKzGdNf5m+ETBo3UR3E38CSwHXg8IrZJ+rSkW1K2LwCLJPUB9wD3pm23AY8DLwJPAHdFxOBYZQJI+rikfgpXH1slfT7t41MU+kkelrRZ0qZpaP+MONsZ7n4NMyvRnc/y1uFTvFmnT1iqkd8nWLt2bWzaNPuxJSK44T/9LT955WJ++3/rmfX9m1nt+t7rB/jZh/+B3/uF67lp9aXVrk5Zkp6NiLXl1tVdR3g9kNKIt3V839LMZsaqpQtpaVLd9ms4aMyQ3q4sr7x9jAPHTle7KmZWQzpam3n30gV126/hoDFDevOdAHX/9qeZTb/uXJat/YcYqsPpXx00ZsiaXIYm+c1wMxutO5/lyMkBXtl/rNpVmTQHjRkyr72Fqy5ZUNcv8ZjZzBh+wrIe+zUcNGZQb1eWza8fqMtLUDObOe9aMp+5bc0OGjZSb76Tw3V6CWpmM6e5SVy3LMOWOpxbw0FjBvV0ZQH3a5jZaD35LC/uOczpgfoabshBYwZduWQ+C9pbPOKtmY3Snc9yenCI779ZX9O/OmjMoKYm0Z1m8jMzK7YmlwHqrzPcQWOG9eSzfP/NI5w4PVjtqphZDVmWncPi+W1116/hoDHDeruyDA4Fz9fxpCtmNv0k0Z3L+krDRjo3/av7NcxspO58lr59Rzlysn6mf3XQmGGL5rfTddFcv+RnZqOsyWWIoK7uRDhozIIed4abWRnduSwAW+uoX8NBYxb0dmV58/BJ3jh0otpVMbMa0jmvjcsXza2rfg0HjVnQ25VGvPXVhpmVqLfOcAeNWXDN0gW0NTd5UiYzG2VNLsOeQyfZe6Q+pn910JgF7S3NrF620FcaZjbK8BOWW3fVR7+Gg8Ys6cln2br7IGcG62ucGTObWasvy9DcpLqZya+ioCFpnaQdkvok3VtmfbukL6b1T0taXrTuvpS+Q9JNE5Up6e6UFpIWF6VL0mfTuq2SfmjKra6C3q5OTp4ZYsebR6pdFTOrIXPamrm6jubemTBoSGoGHgJuBlYBt0laVZLtDuBARFwJPAg8kLZdBWwAVgPrgIclNU9Q5reB9wOvlezjZmBl+twJ/O7kmlpdvcMv+dXJH4aZzZ7ufIat/YeIqP25dyq50rgB6IuInRFxGngMWF+SZz3waFr+EnCjJKX0xyLiVES8AvSl8sYsMyKei4hXy9RjPfBHUfAdICtp6WQaW025zsI4M34z3MxKdeeyHDpxhtf2H692VSZUSdBYBuwq+t6f0srmiYgB4BCwaJxtKylzKvVA0p2SNknatG/fvgmKnD2S6Ml31s0lqJnNnu7h6V/roF+j4TrCI+KRiFgbEWuXLFlS7eqM0NuVZee+Yxw6Xj/jzJjZzFt58XzmtDbXxUllJUFjN5Av+p5LaWXzSGoBMsD+cbatpMyp1KOmDfdrbK6Dswkzmz0tzU1cu2xhXbzkV0nQ+C6wUtIKSW0UOrY3luTZCNyelm8FnopCj85GYEN6umoFhU7sZyoss9RG4GPpKar3AIci4o0K6l8zrstlkDzirZmN1p3Lsm3P4Zp/LH/CoJH6KO4GngS2A49HxDZJn5Z0S8r2BWCRpD7gHuDetO024HHgReAJ4K6IGByrTABJH5fUT+FKYqukz6d9fBXYSaEz/feBXz3v1s+yBR2tXHVx/TxaZ2azpzuf5dRA7T+W31JJpoj4KoWDdnHap4qWTwIfGWPb+4H7KykzpX8W+GyZ9ADuqqS+tawnn+WJbW8SERQeMDMzO/dm+Jb+g1y7LFPdyoyj4TrCa11vV+HRulfePlbtqphZDcl1zqFzbmvN92s4aMyysyPe1vgfhpnNLkl057M1P7eGg8Ysu/Li+cxra/akTGY2Sncuy0tvHeHYqYFqV2VMDhqzrLmpcDbhKw0zK9WTzzIU8EINT//qoFEFPfks2984zMkzg9WuipnVkDW5Qgd4Lb8Z7qBRBb1dnQwMRU2fTZjZ7Fs0v51c5xy21PDcGg4aVTD8aJ37NcysVHc+6ysNG2nJgsLZxHO7/Ga4mY3Uk8vSf+AEbx89Ve2qlOWgUSW9XZ2e/tXMRhnu19hao1cbDhpV0pPPsufQSd46XB+TyZvZ7Lh2WYYmweYa7ddw0KiS3q4s4H4NMxtpXnsLV12ywFcaNtKqpQtpbZb7NcxslO5cli27Dtbk9K8OGlXS0drMqssy7tcws1HW5DMcOH6GXe+cqHZVRnHQqKLeNM7MQI2Pn29ms6s7lwVqc8I2B40q6u3KcuLMIDvequ3x881sdl196QLaW5rYWoPDDTloVFFv3iPemtlorc1NXLssU5Mv+TloVFH+ojlcNK/NT1CZ2Shrchme3117t68dNKpIEr0e8dbMyujJZzl5ZoiX3jpa7aqM4KBRZT35LH17j3LoxJlqV8XMashwZ3itva/hoFFlwzP51dofhplV1+WL5pKZ01pz/RoVBQ1J6yTtkNQn6d4y69slfTGtf1rS8qJ196X0HZJumqhMSStSGX2pzLaU3iXpG5Kek7RV0ofOq+U1Yk0+g+Q3w81sJEmsyWVqbjiRCYOGpGbgIeBmYBVwm6RVJdnuAA5ExJXAg8ADadtVwAZgNbAOeFhS8wRlPgA8mMo6kMoG+PfA4xHRm8p8eGpNri0LO1q5csl8nnvdb4ab2Ug9+cL0rydO186EbZVcadwA9EXEzog4DTwGrC/Jsx54NC1/CbhRklL6YxFxKiJeAfpSeWXLTNu8L5VBKvPDaTmAhWk5A+yZVEtrWE/qDK/FIQPMrHq6c1kGh4Jte2rnaqOSoLEM2FX0vT+llc0TEQPAIWDRONuOlb4IOJjKKN3XbwIfldQPfBX4tXKVlXSnpE2SNu3bt6+C5lVfb1cnB46f4bX9x6tdFTOrIWvyhWHSa+kJy3rqCL8N+MOIyAEfAv5Y0qj6R8QjEbE2ItYuWbJk1is5FcMj3tbSH4aZVd/FCzq4LNPBlv76utLYDeSLvudSWtk8kloo3D7aP862Y6XvB7KpjNJ93QE8DhAR/wh0AIsrqH/Nu+qSBcxta3a/hpmN0p0vjHhbKyoJGt8FVqanmtoodEJvLMmzEbg9Ld8KPBWFG/QbgQ3p6aoVwErgmbHKTNt8I5VBKvMrafl14EYASddQCBr1cf9pAs1Nw09JHKx2VcysxnTns7z+znEOHDtd7aoAFQSN1L9wN/AksJ3CE0zbJH1a0i0p2xeARZL6gHuAe9O22yhcHbwIPAHcFRGDY5WZyvoEcE8qa1EqG+DfAL8saQvwp8AvRgP1HPfkO9m25zAnz9TOUxJmVn3DL/nVyvsaLRNngYj4KoXO5+K0TxUtnwQ+Msa29wP3V1JmSt9J4emq0vQXgR+vpL71qLcry0B6SuL6yy+qdnXMrEZclyu8y7Vl1yHee/XF1a5OXXWEN7TefBbwS35mNtL89hauXDK/Zq40HDRqxMULO1iWncNz7tcwsxLd+Sxb+2vjXS4HjRrS05X19K9mNkp3PsvbR0+z+2D1p3910Kghvfksuw+eYO+Rk9WuipnVkO5c4SW/LTUwDpWDRg05+5KfrzbMrMi7L11IW3NTTfRrOGjUkNWXZWhpkvs1zGyEtpYmVl22sCZe8nPQqCEdrc2sumyh3ww3s1F68lme332IwaHqdoY7aNSYnnyWrf3V/8Mws9qyJpfh+OlB+vZWd/pXB40a09uV5fjpQV5660i1q2JmNaQ7vctV7VtUDho1pjdfmP7V41CZWbEVi+axoKOl6p3hDho15vJFc+mc2+p+DTMboalJdOeyDho2kqSzM/mZmRVbk8vw/TeOVHVgUweNGtST7+QHe49y+OSZalfFzGpId354YNPDVauDg0YN6u3KEgFba+DtTzOrHT2pM3xrFW9ROWjUoOGnJDbvcr+GmZ1zycIOLl3YUdUnqBw0alBmTivvWjLPw6Sb2ShrcpmqzhnuoFGjers62byrNoZCNrPa0Z3P8srbxzh0vDp9ng4aNaonn2X/sdPseqf6QyGbWe0426+x+2BV9u+gUaOGR7x9zv0aZlbkurPDpB+syv4dNGrU1ZcsYE5rs/s1zGyEhR2tXLFkHpur9HRlRUFD0jpJOyT1Sbq3zPp2SV9M65+WtLxo3X0pfYekmyYqU9KKVEZfKrOtaN0/l/SipG2S/seUW10HWpqbuC6X8TDpZjZKT3ozvBp9nhMGDUnNwEPAzcAq4DZJq0qy3QEciIgrgQeBB9K2q4ANwGpgHfCwpOYJynwAeDCVdSCVjaSVwH3Aj0fEauBfTbXR9aI3n2X7nsOcGqje259mVnu681n2HTnFm4dnf5bPSq40bgD6ImJnRJwGHgPWl+RZDzyalr8E3ChJKf2xiDgVEa8Afam8smWmbd6XyiCV+eG0/MvAQxFxACAi9k66tXWmtyvL6cGhqr79aWa1p5oj3lYSNJYBu4q+96e0snkiYgA4BCwaZ9ux0hcBB1MZpfu6CrhK0rclfUfSunKVlXSnpE2SNu3bt6+C5tWu3q404q37NcysyDVLF9DarKr0a9RTR3gLsBJ4L3Ab8PuSsqWZIuKRiFgbEWuXLFkyuzWcZpcs7GBppsP9GmY2QntLM9csrc70r5UEjd1Avuh7LqWVzSOpBcgA+8fZdqz0/UA2lVG6r35gY0ScSbe6XqIQRBpab1fWw4mY2SjducL0r0OzPMtnJUHju8DK9FRTG4WO7Y0leTYCt6flW4GnotCtvxHYkJ6uWkHhIP/MWGWmbb6RyiCV+ZW0/OcUrjKQtJjC7aqdk2tu/enJZ9n1zgn2HTlV7aqYWQ3pzmc5emqAnW/P7vSvEwaN1L9wN/AksB14PCK2Sfq0pFtSti8AiyT1AfcA96ZttwGPAy8CTwB3RcTgWGWmsj4B3JPKWpTKJuXdL+lFCoHl30XE/vNrfu0726/hW1RmVqQ7veQ32/0aLRNngYj4KvDVkrRPFS2fBD4yxrb3A/dXUmZK30nh6arS9KAQkO6ppM6N4trLMjQ3ic27DvCBVZdUuzpmViOuWDKf+e0tbNl1kFuvz83afuupI/yCNKetmWuWLvCb4WY2QnOTuG5ZZtbn1nDQqAO9+U629h9icJY7vMystnXns7z4xuy+AOygUQd6UodX397Z7fAys9rWnctwZjDY/saRWdung0YdGB7x1o/emlmxarwZ7qBRB1YsnkdmTqv7NcxshKWZDpYsaGfLLPZrOGjUAUn05LMOGmY2giS6c1lfadhoPfksL+09wtFTAxNnNrMLRncuw8v7jnH45OxM/+qgUSd6u7JEwFa/5GdmRYb7NZ7vn52X/Bw06sTwvMAevNDMiq0Znv51lvo1HDTqRHZuG1csnud+DTMbITu3jRWL581av4aDRh3p6cqyeVd1png0s9q1JpdhyyyNQeWgUUd681nePnqK/gMnql0VM6sh3bksbx4+yVuzMP2rg0YdGR7x1v0aZlZsNl/yc9CoI1dfuoD2liZP/2pmI6y+bCEtTZqVznAHjTrS2tzEmlyG5zyciJkV6Wht5upLF8xKv4aDRp3p7epk257ZHdXSzGpfdz7Llv6DMz79q4NGnenJZzk9MDSro1qaWe3ryWU5cnKAV/cfm9H9OGjUmbMj3r7uW1Rmds7ZzvAZ7tdw0KgzSzNzuGRhu5+gMrMRrrx4PnPbmme8X8NBow715jv9ZriZjdDcJK5dlmHzDJ9QVhQ0JK2TtENSn6R7y6xvl/TFtP5pScuL1t2X0ndIummiMiWtSGX0pTLbSvb1c5JC0toptbgB9HRlef2d4+w/eqraVTGzGtKTpn89PTA0Y/uYMGhIagYeAm4GVgG3SVpVku0O4EBEXAk8CDyQtl0FbABWA+uAhyU1T1DmA8CDqawDqezhuiwAfh14emrNbQy96d7lTJ9RmFl96c4VHpTZ8ebMPShTyZXGDUBfROyMiNPAY8D6kjzrgUfT8peAGyUppT8WEaci4hWgL5VXtsy0zftSGaQyP1y0n89QCCoz/658Dbsul6G5SQ4aZjbC8Ii3m2ewM7ySoLEM2FX0vT+llc0TEQPAIWDRONuOlb4IOJjKGLEvST8E5CPir8arrKQ7JW2StGnfvn0VNK/+zG1r4epLFrhfw8xGyHXOYdG8thkdTqQuOsIlNQG/DfybifJGxCMRsTYi1i5ZsmTmK1clvV2FKR5n+kUeM6sfkujOZ9la5SuN3UC+6HsupZXNI6kFyAD7x9l2rPT9QDaVUZy+ALgW+KakV4H3ABsv6M7wfJYjpwZ4ed/RalfFzGpIdy7LD/YenbGpoSsJGt8FVqanmtoodGxvLMmzEbg9Ld8KPBWFSR82AhvS01UrgJXAM2OVmbb5RiqDVOZXIuJQRCyOiOURsRz4DnBLRGyaYrvr3tkRb32LysyKrMlniJi56V9bJsoQEQOS7gaeBJqBP4iIbZI+DWyKiI3AF4A/ltQHvEMhCJDyPQ68CAwAd0XEIEC5MtMuPwE8Juk/As+lsq3EFYvnsaCjhf/8xPf5/W/trHZ1zKxGnB4sPG77wu5D/Oi7Fk17+WrkWeDWrl0bmzY17sXIf//Oa/zDy29XuxpmVmMk8S9/+l1cuywz1e2fjYiyt/8nvNKw2vXR91zOR99zebWrYWYXkLp4esrMzGqDg4aZmVXMQcPMzCrmoGFmZhVz0DAzs4o5aJiZWcUcNMzMrGIOGmZmVrGGfiNc0j7gtWrXo8RioFFe426ktoDbU8saqS1Q++25PCLKDhPe0EGjFknaNNbr+fWmkdoCbk8ta6S2QH23x7enzMysYg4aZmZWMQeN2fdItSswjRqpLeD21LJGagvUcXvcp2FmZhXzlYaZmVXMQcPMzCrmoDELJH1E0jZJQ5LWFqUvl3RC0ub0+W/VrGelxmpP0fouSUcl/dtq1G+yxvn93FD0u9ki6WeqWc9KjNOWD0h6VtLz6d/3VbOelRqnPYskfSP9nX2umnWs1Hj/byTdJ6lP0g5JN1WrjpXwzH2z4wXgZ4HfK7Pu5Yjomd3qnLfx2gPw28Bfz151zttY7XkBWBsRA5KWAlsk/UVEDMx6DSs3VlveBv5ZROyRdC3wJLBstis3BWO15yTwG8C16VMPyrZF0ipgA7AauAz4uqSrImJw9qs4MQeNWRAR26Ewb28jGK89kj4MvAIcm91aTd1Y7YmI40VfO4Caf2pknLY8V/R1GzBHUntEnJrF6k3aOO05BvwvSVdWo15TMc7/m/XAY+l38YqkPuAG4B9nt4aV8e2p6lsh6TlJfyfpJ6tdmfMhaT7wCeA/VLsu00XSj0jaBjwP/EqNX2VU6ueA79V6wLiALAN2FX3vp4avAn2lMU0kfR24tMyqT0bEV8bY7A2gKyL2S7oe+HNJqyPi8IxVtEJTbM9vAg9GxNFau6qaYnuIiKeB1ZKuAR6V9NcRcXKm6lmJqbYlbbsaeAD44EzUbSrOpz21ppHaMhYHjWkSEe+fwjangFNp+VlJLwNXAZumuXqTNpX2AD8C3CrpvwBZYEjSyYioekflFNtTvP12SUcp3D+v6u9nqm2RlAP+P+BjEfHy9NZq6s73d1NLptiW3UC+6HsupdUkB40qkrQEeCciBiVdAawEdla5WlMWEWdvr0n6TeBoLQSMqZK0AtiVOsIvB94NvFrdWk2NpCzwV8C9EfHtKlfHRtoI/A9Jv02hI3wl8Ex1qzQ292nMAkk/I6kf+FHgryQ9mVb9FLBV0mbgSxTumb9TpWpWbJz21KVx2vMTFJ6Y2kzhDP1XI6KWh7Mery13A1cCnyp6jPjiqlW0QuP9rUl6lcKTer8oqT89hVSzxmpLRGwDHgdeBJ4A7qrVJ6fAw4iYmdkk+ErDzMwq5qBhZmYVc9AwM7OKOWiYmVnFHDTMbEok/YGkvZJemKbyBoue7No4ie0ykv4iDSq5TdIvTZB/Y3GdJX1G0ta0369Juqxo3XtT+jZJf1dSTnMazeEvi9JWSHo6DT74RUltKb09fe9L65cXbVN2sEJJ61Jan6R7z2cf4/wsnpB0sLgNE3HQMLOp+kNg3TSWdyIietLnlklsdxfwYkR0A+8F/uvwgbSUpJ8FjpYk/1ZErEkDh/4l8KmUNws8DNwSEauBj5Rs9+vA9pK0ByiMinAlcAC4I6XfARxI6Q+mfKWDFa4DHk7BqBl4CLgZWAXcVvRI8aT2MYHfAn6hgnxnOWiY2ZRExN8DI94rkvSudPb6rKRvSXr3bFQFWKDC2DXzU51GjRGmwtho9wD/ccTGI4ftmce5gSn/BfDliHg95dtbVFYO+KfA54vSBLyPwjtXAI8CH07L69N30vobU/6zgxVGxCvA8GCFNwB9EbEzIk4DjwHrp7KPFIR+S9J30xXV/1nU9r8FjpT+rMbjoGFm0+kR4Nci4nrg31I4U69Uh6RNkr6jwmjJlfoccA2wh8LAkr8eEUNl8n0G+K/A8dIVku6XtAv4edKVBoUhfTolfTMFwY8VbfI7wP8FFO9nEXCwaFDL4oEHzw5KmNYfSvnHGqxwrPSp7OMO4FBE/DDww8AvqzDawZR4GBEzmxbpTP7HgP+pcwNWtqd1Pwt8usxmuyNi+D7+5RGxW4UhdZ6S9HxEvCzp/wH+WZlt/zwi/j1wE7CZwhn4u4C/kfSt4isIST3AuyLiX5e71x8RnwQ+Kek+Cm/P/98Ujo/XAzcCc4B/lPQdCsFkbxov7r0V/XCq64PAGkm3pu8ZCkOVvDKVwhw0zGy6NFE4C+4pXRERXwa+PN7GEbE7/btT0jeBXgqTlN0H3DfOpr8E/OcoDG/RJ+kVCuOEFY/f9KPA2jT0SAtwsaRvRsR7S8r6E+CrFIJGP7A/zd1xTNLfA93ADwG3SPoQhXlWFkr67xT6BrKSWtKZfvHAg8ODEvZLaqFw4N7P+IMVlkvfP4V9iMLV37QM9+PbU2Y2LdKZ/SuSPgKFe/ySuivZVlKnpOGrksXAj1MYi6kSr1O4GkDSJcDVlAz8GRG/GxGXRcRyCmOKvTQcMCStLMq6Hvh+Wv4K8BOSWiTNpTCK8/aIuC8icqmsDcBTEfHRFLS+AQyf0d+eyoDCoIS3p+Vb0zaR0jekJ59WcG6wwu8CK9OTUm1pPxunuI8ngX8pqTW19ypJ8yr5wZYVEf74448/k/4Af0phTpgzFM7K7wBWUBh0bwuFg/6nKizrxyj0R2xJ/94xiXpcBnwtbfcC8NGidZvL5F8OvFD0/c/SdluBvwCWFa37d6kdLwD/qkxZ7wX+suj7FRQO+n3A/wTaU3pH+t6X1l9RtM0ngZeBHcDNRekfAl5K6z451X1QuDj4T0U/n28AmbTuW8A+4ET6Hd400c/bAxaamVnFfHvKzMwq5qBhZmYVc9AwM7OKOWiYmVnFHDTMzKxiDhpmZlYxBw0zM6vY/w+yvm9UCu41hgAAAABJRU5ErkJggg==\n", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "image" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(*shapely.wkt.loads(test_wkts[3][1]).exterior.xy)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c67147a4-505d-4be1-a36d-68d27643e925", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__[2] Make Spark DataFrame from `test_wkts`__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e65a616e-9abe-4c52-b8f2-06b789188bc8", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 4\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "

row_idgeom_wkt
1POLYGON ((5 0, 2.5 9, 9.5 3.5, 0.5 3.5, 7.5 9, 5 0))
2POLYGON ((55 10, 141 237, 249 23, 21 171, 252 169, 24 89, 266 73, 55 10))
3POLYGON ((0 0, 10 0, 0 10, 10 10, 0 0, 5 0, 5 10, 0 10, 0 5, 10 5, 10 0, 0 0))
4POLYGON (( -84.3641541604937 33.71316821215546, -84.36414611386687 33.71303657522174, -84.36409515189553 33.71303657522174, -84.36410319852232 33.71317267442025, -84.3641541604937 33.71316821215546 ))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 1, + "POLYGON ((5 0, 2.5 9, 9.5 3.5, 0.5 3.5, 7.5 9, 5 0))" + ], + [ + 2, + "POLYGON ((55 10, 141 237, 249 23, 21 171, 252 169, 24 89, 266 73, 55 10))" + ], + [ + 3, + "POLYGON ((0 0, 10 0, 0 10, 10 10, 0 0, 5 0, 5 10, 0 10, 0 5, 10 5, 10 0, 0 0))" + ], + [ + 4, + "POLYGON (( -84.3641541604937 33.71316821215546, -84.36414611386687 33.71303657522174, -84.36409515189553 33.71303657522174, -84.36410319852232 33.71317267442025, -84.3641541604937 33.71316821215546 ))" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "row_id", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df = (\n", + " spark\n", + " .createDataFrame(test_wkts, schema=['row_id', 'geom_wkt'])\n", + ")\n", + "print(f\"count? {df.count():,}\")\n", + "df.display()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "ea4d2ea0-1224-41f6-ae5b-72f2c34b9a5b", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Regular UDF: Test + Fix Validity\n", + "\n", + "> Will use Mosaic to initially test; then only apply UDF to invalids" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "bfdaa108-3c66-404e-ac2a-a6de18cbd5d4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### UDFs" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "f99ec990-0629-446c-90ff-447d6496f260", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "@udf(returnType=StringType())\n", + "def explain_wkt_validity(geom_wkt:str) -> str:\n", + " \"\"\"\n", + " Add explanation of validity or invalidity\n", + " \"\"\"\n", + " from shapely import wkt\n", + " from shapely.validation import explain_validity\n", + "\n", + " _geom = wkt.loads(geom_wkt)\n", + " return explain_validity(_geom)\n", + "\n", + "\n", + "@udf(returnType=StringType())\n", + "def make_wkt_valid(geom_wkt:str) -> str:\n", + " \"\"\"\n", + " - test for wkt being valid\n", + " - attempts to make valid\n", + " - may have to change type, e.g. POLYGON to MULTIPOLYGON\n", + " returns valid wkt\n", + " \"\"\"\n", + " from shapely import wkt \n", + " from shapely.validation import make_valid\n", + "\n", + " _geom = wkt.loads(geom_wkt)\n", + " if _geom.is_valid:\n", + " return geom_wkt\n", + " _geom_fix = make_valid(_geom)\n", + " return _geom_fix.wkt" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "aad1c6ee-183f-4e74-92bf-07e94ff2c81e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Test Validity" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "f38c18f1-3248-4c48-ae3f-6872618d168b", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
row_idgeom_wktis_valid
1POLYGON ((5 0, 2.5 9, 9.5 3.5, 0.5 3.5, 7.5 9, 5 0))false
2POLYGON ((55 10, 141 237, 249 23, 21 171, 252 169, 24 89, 266 73, 55 10))false
3POLYGON ((0 0, 10 0, 0 10, 10 10, 0 0, 5 0, 5 10, 0 10, 0 5, 10 5, 10 0, 0 0))false
4POLYGON (( -84.3641541604937 33.71316821215546, -84.36414611386687 33.71303657522174, -84.36409515189553 33.71303657522174, -84.36410319852232 33.71317267442025, -84.3641541604937 33.71316821215546 ))true
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 1, + "POLYGON ((5 0, 2.5 9, 9.5 3.5, 0.5 3.5, 7.5 9, 5 0))", + false + ], + [ + 2, + "POLYGON ((55 10, 141 237, 249 23, 21 171, 252 169, 24 89, 266 73, 55 10))", + false + ], + [ + 3, + "POLYGON ((0 0, 10 0, 0 10, 10 10, 0 0, 5 0, 5 10, 0 10, 0 5, 10 5, 10 0, 0 0))", + false + ], + [ + 4, + "POLYGON (( -84.3641541604937 33.71316821215546, -84.36414611386687 33.71303657522174, -84.36409515189553 33.71303657522174, -84.36410319852232 33.71317267442025, -84.3641541604937 33.71316821215546 ))", + true + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "row_id", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "is_valid", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df_test_valid = (\n", + " df\n", + " .withColumn(\"is_valid\", mos.st_isvalid(\"geom_wkt\"))\n", + ")\n", + "\n", + "df_test_valid.display()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "a87a8fd9-1fd1-44be-9704-7995bf7f2bea", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Let's get an explanation for our 3 invalids__" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "4f783941-c167-4135-a1a2-8ebe969c66f9", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Recommend `explain_wkt_valid` only to help you understand, not as part of production pipeline, so doing separately._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "47ed3341-8321-47e1-a9ec-ef67ff4fd007", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
row_idgeom_wktis_validinvalid_explain
1POLYGON ((5 0, 2.5 9, 9.5 3.5, 0.5 3.5, 7.5 9, 5 0))falseSelf-intersection[4.02777777777778 3.5]
2POLYGON ((55 10, 141 237, 249 23, 21 171, 252 169, 24 89, 266 73, 55 10))falseSelf-intersection[201.596683628707 53.7705737848745]
3POLYGON ((0 0, 10 0, 0 10, 10 10, 0 0, 5 0, 5 10, 0 10, 0 5, 10 5, 10 0, 0 0))falseRing Self-intersection[5 10]
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 1, + "POLYGON ((5 0, 2.5 9, 9.5 3.5, 0.5 3.5, 7.5 9, 5 0))", + false, + "Self-intersection[4.02777777777778 3.5]" + ], + [ + 2, + "POLYGON ((55 10, 141 237, 249 23, 21 171, 252 169, 24 89, 266 73, 55 10))", + false, + "Self-intersection[201.596683628707 53.7705737848745]" + ], + [ + 3, + "POLYGON ((0 0, 10 0, 0 10, 10 10, 0 0, 5 0, 5 10, 0 10, 0 5, 10 5, 10 0, 0 0))", + false, + "Ring Self-intersection[5 10]" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "row_id", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "is_valid", + "type": "\"boolean\"" + }, + { + "metadata": "{}", + "name": "invalid_explain", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "display(\n", + " df_test_valid\n", + " .select(\n", + " \"*\",\n", + " F\n", + " .when(col(\"is_valid\") == False, explain_wkt_validity(\"geom_wkt\"))\n", + " .otherwise(F.lit(None))\n", + " .alias(\"invalid_explain\")\n", + " )\n", + " .filter(\"is_valid = false\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d7b716ae-f63c-47f2-91c7-7ae9f08d8114", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Fix Validity" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e25db3fb-e1ea-48d8-ba36-65082da5e933", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 4\nnum orig invalid? 3\nnum final invalid? 0\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
row_idis_orig_validgeom_wktis_valid
1falseMULTIPOLYGON (((0.5 3.5, 3.3957654723127035 5.7752442996742674, 4.027777777777778 3.5, 0.5 3.5)), ((2.5 9, 5 7.035714285714286, 3.3957654723127035 5.7752442996742674, 2.5 9)), ((7.5 9, 6.6042345276872965 5.7752442996742674, 5 7.035714285714286, 7.5 9)), ((9.5 3.5, 5.972222222222222 3.5, 6.6042345276872965 5.7752442996742674, 9.5 3.5)), ((5 0, 4.027777777777778 3.5, 5.972222222222222 3.5, 5 0)))true
2falseMULTIPOLYGON (((21 171, 115.68501587180901 170.1802163127982, 97.24514608274922 121.50753675330314, 21 171)), ((141 237, 174.98122638059246 169.66682920882604, 115.68501587180901 170.1802163127982, 141 237)), ((252 169, 186.85374007521938 146.1416631842875, 174.98122638059246 169.66682920882604, 252 169)), ((222.3085097882541 75.88869356771873, 161.30987316587914 79.92166127828898, 104.05263157894737 117.08864265927977, 186.85374007521938 146.1416631842875, 222.3085097882541 75.88869356771873)), ((266 73, 229.29693213749567 62.04126409792525, 222.3085097882541 75.88869356771873, 266 73)), ((249 23, 201.59668362870678 53.77057378487454, 229.29693213749567 62.04126409792525, 249 23)), ((55 10, 83.44063221452673 85.07004084532055, 161.30987316587914 79.92166127828898, 201.59668362870678 53.77057378487454, 55 10)), ((24 89, 94.27070148854622 113.6563864872092, 83.44063221452673 85.07004084532055, 24 89)), ((97.24514608274922 121.50753675330314, 104.05263157894737 117.08864265927977, 94.27070148854622 113.6563864872092, 97.24514608274922 121.50753675330314)))true
3falseGEOMETRYCOLLECTION (MULTIPOLYGON (((10 5, 10 0, 5 0, 0 0, 5 5, 10 5)), ((5 5, 0 5, 0 10, 5 10, 10 10, 5 5))), MULTILINESTRING ((10 0, 5 5), (5 5, 0 10), (5 0, 5 5), (5 5, 5 10)))true
4truePOLYGON (( -84.3641541604937 33.71316821215546, -84.36414611386687 33.71303657522174, -84.36409515189553 33.71303657522174, -84.36410319852232 33.71317267442025, -84.3641541604937 33.71316821215546 ))true
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 1, + false, + "MULTIPOLYGON (((0.5 3.5, 3.3957654723127035 5.7752442996742674, 4.027777777777778 3.5, 0.5 3.5)), ((2.5 9, 5 7.035714285714286, 3.3957654723127035 5.7752442996742674, 2.5 9)), ((7.5 9, 6.6042345276872965 5.7752442996742674, 5 7.035714285714286, 7.5 9)), ((9.5 3.5, 5.972222222222222 3.5, 6.6042345276872965 5.7752442996742674, 9.5 3.5)), ((5 0, 4.027777777777778 3.5, 5.972222222222222 3.5, 5 0)))", + true + ], + [ + 2, + false, + "MULTIPOLYGON (((21 171, 115.68501587180901 170.1802163127982, 97.24514608274922 121.50753675330314, 21 171)), ((141 237, 174.98122638059246 169.66682920882604, 115.68501587180901 170.1802163127982, 141 237)), ((252 169, 186.85374007521938 146.1416631842875, 174.98122638059246 169.66682920882604, 252 169)), ((222.3085097882541 75.88869356771873, 161.30987316587914 79.92166127828898, 104.05263157894737 117.08864265927977, 186.85374007521938 146.1416631842875, 222.3085097882541 75.88869356771873)), ((266 73, 229.29693213749567 62.04126409792525, 222.3085097882541 75.88869356771873, 266 73)), ((249 23, 201.59668362870678 53.77057378487454, 229.29693213749567 62.04126409792525, 249 23)), ((55 10, 83.44063221452673 85.07004084532055, 161.30987316587914 79.92166127828898, 201.59668362870678 53.77057378487454, 55 10)), ((24 89, 94.27070148854622 113.6563864872092, 83.44063221452673 85.07004084532055, 24 89)), ((97.24514608274922 121.50753675330314, 104.05263157894737 117.08864265927977, 94.27070148854622 113.6563864872092, 97.24514608274922 121.50753675330314)))", + true + ], + [ + 3, + false, + "GEOMETRYCOLLECTION (MULTIPOLYGON (((10 5, 10 0, 5 0, 0 0, 5 5, 10 5)), ((5 5, 0 5, 0 10, 5 10, 10 10, 5 5))), MULTILINESTRING ((10 0, 5 5), (5 5, 0 10), (5 0, 5 5), (5 5, 5 10)))", + true + ], + [ + 4, + true, + "POLYGON (( -84.3641541604937 33.71316821215546, -84.36414611386687 33.71303657522174, -84.36409515189553 33.71303657522174, -84.36410319852232 33.71317267442025, -84.3641541604937 33.71316821215546 ))", + true + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "row_id", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "is_orig_valid", + "type": "\"boolean\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "is_valid", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df_valid = (\n", + " df\n", + " .withColumnRenamed(\"geom_wkt\", \"orig_geom_wkt\")\n", + " .withColumn(\"is_orig_valid\", mos.st_isvalid(\"orig_geom_wkt\"))\n", + " .select(\n", + " \"*\",\n", + " F\n", + " .when(col(\"is_orig_valid\") == False, make_wkt_valid(\"orig_geom_wkt\"))\n", + " .otherwise(col(\"orig_geom_wkt\"))\n", + " .alias(\"geom_wkt\")\n", + " )\n", + " .withColumn(\"is_valid\", mos.st_isvalid(\"geom_wkt\"))\n", + " .drop(\"orig_geom_wkt\")\n", + ")\n", + "\n", + "print(f\"\"\"count? {df_valid.count():,}\"\"\")\n", + "print(f\"\"\"num orig invalid? {df_valid.filter(col(\"is_orig_valid\") == False).count():,}\"\"\")\n", + "print(f\"\"\"num final invalid? {df_valid.filter(col(\"is_valid\") == False).count():,}\"\"\")\n", + "display(df_valid)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "705f56e7-ef65-4b66-8eca-46e6cc4e754c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[118]: ['{\"row_id\":1,\"is_orig_valid\":false,\"geom_wkt\":\"MULTIPOLYGON (((0.5 3.5, 3.3957654723127035 5.7752442996742674, 4.027777777777778 3.5, 0.5 3.5)), ((2.5 9, 5 7.035714285714286, 3.3957654723127035 5.7752442996742674, 2.5 9)), ((7.5 9, 6.6042345276872965 5.7752442996742674, 5 7.035714285714286, 7.5 9)), ((9.5 3.5, 5.972222222222222 3.5, 6.6042345276872965 5.7752442996742674, 9.5 3.5)), ((5 0, 4.027777777777778 3.5, 5.972222222222222 3.5, 5 0)))\",\"is_valid\":true}',\n '{\"row_id\":2,\"is_orig_valid\":false,\"geom_wkt\":\"MULTIPOLYGON (((21 171, 115.68501587180901 170.1802163127982, 97.24514608274922 121.50753675330314, 21 171)), ((141 237, 174.98122638059246 169.66682920882604, 115.68501587180901 170.1802163127982, 141 237)), ((252 169, 186.85374007521938 146.1416631842875, 174.98122638059246 169.66682920882604, 252 169)), ((222.3085097882541 75.88869356771873, 161.30987316587914 79.92166127828898, 104.05263157894737 117.08864265927977, 186.85374007521938 146.1416631842875, 222.3085097882541 75.88869356771873)), ((266 73, 229.29693213749567 62.04126409792525, 222.3085097882541 75.88869356771873, 266 73)), ((249 23, 201.59668362870678 53.77057378487454, 229.29693213749567 62.04126409792525, 249 23)), ((55 10, 83.44063221452673 85.07004084532055, 161.30987316587914 79.92166127828898, 201.59668362870678 53.77057378487454, 55 10)), ((24 89, 94.27070148854622 113.6563864872092, 83.44063221452673 85.07004084532055, 24 89)), ((97.24514608274922 121.50753675330314, 104.05263157894737 117.08864265927977, 94.27070148854622 113.6563864872092, 97.24514608274922 121.50753675330314)))\",\"is_valid\":true}',\n '{\"row_id\":3,\"is_orig_valid\":false,\"geom_wkt\":\"GEOMETRYCOLLECTION (MULTIPOLYGON (((10 5, 10 0, 5 0, 0 0, 5 5, 10 5)), ((5 5, 0 5, 0 10, 5 10, 10 10, 5 5))), MULTILINESTRING ((10 0, 5 5), (5 5, 0 10), (5 0, 5 5), (5 5, 5 10)))\",\"is_valid\":true}',\n '{\"row_id\":4,\"is_orig_valid\":true,\"geom_wkt\":\"POLYGON (( -84.3641541604937 33.71316821215546, -84.36414611386687 33.71303657522174, -84.36409515189553 33.71303657522174, -84.36410319852232 33.71317267442025, -84.3641541604937 33.71316821215546 ))\",\"is_valid\":true}']" + ] + } + ], + "source": [ + "fix_wkts = df_valid.orderBy('row_id').toJSON().collect()\n", + "fix_wkts" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c8bada46-bbc5-4ffe-b4ef-a876ac3022df", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Row 1: Fixed [Self-Intersection]__ \n", + "\n", + "> Using GeoPandas to plot area for fixed." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ac875ef1-124b-43e7-82a6-82a46dd5263e", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[125]: " + ] + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n" + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "data:image/png;base64,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\n", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "image" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "gpd.GeoSeries(shapely.wkt.loads(json.loads(fix_wkts[0])['geom_wkt'])).plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "76452d6e-53ad-4075-8552-c66b877c8801", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Row 2: Fixed [Self-Intersection]__\n", + "\n", + "> Using GeoPandas to plot area for fixed." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4fd70ddc-cef4-405f-8b85-b732691e53ab", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[126]: " + ] + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n" + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "data:image/png;base64,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\n", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "image" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "gpd.GeoSeries(shapely.wkt.loads(json.loads(fix_wkts[1])['geom_wkt'])).plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3fadc613-c5b2-464e-a718-c1e76ec1a208", + "showTitle": false, + "title": "" + } + }, + "source": [ + "__Row 3: Fixed [Ring Self-Intersection]__\n", + "\n", + "> Using GeoPandas to plot area for fixed." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "f9e3d0eb-718a-41cc-bae2-fccf1e0d6cd5", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Out[127]: " + ] + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n" + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAANqElEQVR4nO3dXYwd5X3H8e8Pr12wAQfLWwo27qIGkVDUytFRQ4IUtZhKtEljpFYVUYlIRLQXbQmJIkVOb7iNqihNLqpIK4eENpbTylAFRVEaShJFkSK3axsV7E0EIsTYGLwU8RYSzMr/XuxxWK/37Zx55swz8/w+Etpzzg7P/IX57sx52bEiAjPrvouaHsDMRsOxmxXCsZsVwrGbFcKxmxVibJQ727p1a0xMTIxyl2ZFOXTo0IsRMb7U90Ya+8TEBNPT06PcpVlRJP1iue/5NN6sEI7drBCO3awQjt2sEI7drBCrxi7pfkmnJT2x4LEtkh6R9GT/6xX1jmlmVa3lyP514LZFj+0BHo2I64BH+/fNLGOrxh4RPwJeWvTwbuCB/u0HgNtTDRQR/N/rb6Zazsz6hv1QzZURcap/+3ngyuU2lDQJTALs2LFj1YX3PPg4/3HkJO/6ncu4eP26IcezFGZOvQrAu6+6vOFJyrZ543r+8S//gCs2bai0TuVP0EVESFr2ChgRMQVMAfR6vVWvlHHD1Zfxb9Nn+d+Tr1QdzRL572cWn9jZqGy+ZD37PvHeyqHD8K/GvyDpKoD+19OVJ+m7ZsvGVEuZtdq50G/ctjnJesPG/jBwV//2XcC3kkxjZkD60GFtb73tB34CXC/phKS7gc8DfyrpSeDW/n0zS6CO0GENz9kj4iPLfGtX0knMrLbQwZ+gM8tGnaGDYzfLQt2hg2M3a9woQgfHbtaoUYUOjt2sMaMMHRy7WSNGHTo4drORayJ0cOxmI9VU6ODYzUamydDBsZuNRNOhg2M3q10OoYNjN6tVLqGDYzerTU6hg2M3q0VuoYNjN0sux9DBsZsllWvo4NjNksk5dHDsZknkHjo4drPK2hA6OHazStoSOjh2s6G1KXRw7GZDaVvo4NjNBtbG0MGxmw2kraGDYzdbszaHDo7dbE3aHjo4drNVdSF0cOxmK+pK6ODYzZbVpdDBsZstqWuhg2M3u0AXQ4eKsUv6tKSjkp6QtF/SxakGM2tCV0OHCrFL2gZ8EuhFxI3AOuCOVIOZjVqXQ4fqp/FjwCWSxoCNwHPVRzIbva6HDhVij4iTwBeA48Ap4JWI+N7i7SRNSpqWND07Ozv8pGY1KSF0qHYafwWwG7gWuBrYJOnOxdtFxFRE9CKiNz4+PvykZjUoJXSodhp/K/DziJiNiLeAh4D3pxnLrH4lhQ7VYj8O3CRpoyQBu4CZNGOZ1au00KHac/aDwAHgMPB4f62pRHOZ1abE0GH+1fShRcR9wH2JZjGrXamhgz9BZwUpOXRw7FaI0kMHx24FcOjzHLt1mkN/m2O3znLo53Ps1kkO/UKO3TrHoS/NsVunOPTlOXbrDIe+MsduneDQV+fYrfUc+to4dms1h752jt1ay6EPxrFbKzn0wTl2ax2HPhzHbq3i0Ifn2K01HHo1jt1awaFX59gtew49DcduWXPo6Th2y5ZDT8uxW5YcenqO3bLj0Ovh2C0rDr0+jt2y4dDr5dgtCw69fo7dGufQR8OxW6Mc+ug4dmuMQx8tx26NcOijVyl2Se+QdEDSTyXNSHpfqsGsuxx6Myr9/ezAl4HvRsRfSdoAbEwwk3WYQ2/O0LFL2gx8APgYQEScAc6kGcu6yKE3q8pp/LXALPA1SUck7ZW0afFGkiYlTUuanp2drbA7azOH3rwqsY8B7wG+EhE7gV8CexZvFBFTEdGLiN74+HiF3VlbOfQ8VIn9BHAiIg727x9gPn6z33Do+Rg69oh4HnhW0vX9h3YBx5JMZZ3g0PNS9dX4e4B9/VfinwY+Xn0k6wKHnp9KsUfEY0AvzSjWFQ49T/4EnSXl0PPl2C0Zh543x25JOPT8OXarzKG3g2O3Shx6ezh2G5pDbxfHbkNx6O3j2G1gDr2dHLsNxKG3l2O3NXPo7ebYbU0cevs5dluVQ+8Gx24rWneRHHpHOHZb0e+Nb3LoHaGIGNnOer1eTE9Pr7jNmbmzvP7m3IgmsuUcPv4Sk/9yiLMBl188xrqL1PRIRbvvL36f23duW3U7SYciYslfO6968YrkNoxdxJaxDU2PUbSX3zjDPz3yJGf7x4FXf+0fvk07M3e28ho+jbfzvPzGGf5m70GOPvdq06NYYo7dfsOhd5tjN8Chl8Cxm0MvhGMvnEMvh2MvmEMvi2MvlEMvj2MvkEMvk2MvjEMvl2MviEMvm2MvhEM3x14Ah27g2DvPods5jr3DHLot5Ng7yqHbYpVjl7RO0hFJ304xkFXn0G0pKY7s9wIzCdaxBBy6LadS7JK2Ax8E9qYZx6pw6LaSqkf2LwGfBZa9Zo6kSUnTkqZnZ2cr7s6W49BtNUPHLulDwOmIOLTSdhExFRG9iOiNj48PuztbgUO3tahyZL8Z+LCkZ4BvArdI+kaSqWzNHLqt1dCxR8TnImJ7REwAdwDfj4g7k01mq3LoNgi/z95SDt0GleS68RHxQ+CHKday1Tl0G4aP7C3j0G1Yjr1FHLpV4dhbwqFbVY69BRy6peDYM+fQLRXHnjGHbik59kw5dEvNsWfIoVsdHHtmHLrVxbFnxKFbnRx7Jhy61c2xZ8Ch2yg49oY5dBsVx94gh26j5Ngb4tBt1Bx7Axy6NcGxj5hDt6Y49hFy6NYkxz4iDt2a5thHwKFbDhx7zRy65cKx18ihW04ce00cuuXGsdfAoVuOHHtiDt1y5dgTcuiWM8eeiEO33Dn2BBy6tYFjr8ihW1s49gocurXJ0LFLukbSDyQdk3RU0r0pB8udQ7e2qfL3s88Bn4mIw5IuAw5JeiQijiWaLVsO3dpo6CN7RJyKiMP9268BM8C2VIPlyqFbWyV5zi5pAtgJHFzie5OSpiVNz87OpthdYxy6tVnl2CVdCjwIfCoiLqggIqYiohcRvfHx8aq7a4xDt7arFLuk9cyHvi8iHkozUn4cunVBlVfjBXwVmImIL6YbKS8O3bqiypH9ZuCjwC2SHuv/8+eJ5sqCQ7cuGfqtt4j4MaCEs2TFoVvX+BN0S3Do1kWOfRGHbl3l2Bdw6NZljr3PoVvXOXYcupWh+NgdupWi6NgdupWk2NgdupWmyNgdupWouNgdupWqqNgdupWsmNgdupWuiNgdulkBsTt0s3mdjt2hm72ts7E7dLPzdTJ2h252oc7F7tDNltap2B262fI6E7tDN1tZJ2J36Gara33sDt1sbVodu0M3W7vWxu7QzQbTytgdutngWhe7QzcbTqtid+hmw2tN7A7drJpWxO7QzarLPnaHbpZG1rE7dLN0KsUu6TZJP5P0lKQ9qYYCh26W2tCxS1oH/DPwZ8ANwEck3ZBiKIdudr4XX3+z8hpjFf7dPwKeioinASR9E9gNHKsy0Btn5rhn/xFOvfJrtmzaUGUpq+jVX70FwOWXrG94knLNnT3La7+a479mXuBv/+SdldaqEvs24NkF908A7128kaRJYBJgx44dqy66ccMY/3r3BcuYFeup069z1eaLK69T+wt0ETEVEb2I6I2Pj9e9O7POeedvX8qm36pyXJ5XJfaTwDUL7m/vP2ZmGaoS+/8A10m6VtIG4A7g4TRjmVlqQ58bRMScpL8H/hNYB9wfEUeTTWZmSVV6IhAR3wG+k2gWM6tR1p+gM7N0HLtZIRy7WSEcu1khFBGj25k0C/xiDZtuBV6seZxh5Twb5D1fzrNB3vOtdbbfjYglP7020tjXStJ0RPSanmMpOc8Gec+X82yQ93wpZvNpvFkhHLtZIXKNfarpAVaQ82yQ93w5zwZ5z1d5tiyfs5tZerke2c0sMcduVoisYq/zApZVSbpG0g8kHZN0VNK9Tc+0mKR1ko5I+nbTsywm6R2SDkj6qaQZSe9reqZzJH26/2f6hKT9kqpfFqbaPPdLOi3piQWPbZH0iKQn+1+vGHTdbGKv8wKWicwBn4mIG4CbgL/LbD6Ae4GZpodYxpeB70bEu4A/JJM5JW0DPgn0IuJG5n9d+45mp+LrwG2LHtsDPBoR1wGP9u8PJJvYWXABy4g4A5y7gGUWIuJURBzu336N+f9ZtzU71dskbQc+COxtepbFJG0GPgB8FSAizkTEy40Odb4x4BJJY8BG4Lkmh4mIHwEvLXp4N/BA//YDwO2DrptT7EtdwDKbmBaSNAHsBA42PMpCXwI+C5xteI6lXAvMAl/rP83YK2lT00MBRMRJ4AvAceAU8EpEfK/ZqZZ0ZUSc6t9+Hrhy0AVyir0VJF0KPAh8KiKyuLC9pA8BpyPiUNOzLGMMeA/wlYjYCfySIU5D69B/7rub+R9IVwObJN3Z7FQri/n3ywd+zzyn2LO/gKWk9cyHvi8iHmp6ngVuBj4s6Rnmn/7cIukbzY50nhPAiYg4dyZ0gPn4c3Ar8POImI2It4CHgPc3PNNSXpB0FUD/6+lBF8gp9qwvYClJzD/nnImILzY9z0IR8bmI2B4RE8z/d/t+RGRzdIqI54FnJV3ff2gXFf8ykYSOAzdJ2tj/M95FJi8eLvIwcFf/9l3AtwZdoPrFqBNpwQUsbwY+Cjwu6bH+Y//Qvw6fre4eYF//B/nTwMcbngeAiDgo6QBwmPl3XI7Q8MdmJe0H/hjYKukEcB/weeDfJd3N/K+J//XA6/rjsmZlyOk03sxq5NjNCuHYzQrh2M0K4djNCuHYzQrh2M0K8f/GDxQNkdOWvgAAAABJRU5ErkJggg==\n", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "image" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "gpd.GeoSeries(shapely.wkt.loads(json.loads(fix_wkts[2])['geom_wkt'])).plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "230bf52a-3b2e-4c65-8cf7-5098af27c943", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Option: Vectorized Pandas UDF\n", + "\n", + "> If you want to go further with performance, you can use a vectorized pandas UDF\n", + "\n", + "__Note: We are using the Pandas Series [Vectorized UDF](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.pandas_udf.html) variant.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "77c2b320-f5b1-4a27-90de-820e6e0886a7", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "from pyspark.sql.functions import pandas_udf\n", + "\n", + "@pandas_udf(StringType())\n", + "def vectorized_make_wkt_valid(s:pd.Series) -> pd.Series:\n", + " \"\"\"\n", + " - test for wkt being valid\n", + " - attempts to make valid\n", + " - may have to change type, e.g. POLYGON to MULTIPOLYGON\n", + " returns valid wkt\n", + " \"\"\"\n", + " from shapely import wkt \n", + " from shapely.validation import make_valid\n", + "\n", + " def to_valid(w:str) -> str:\n", + " _geom = wkt.loads(w)\n", + " if _geom.is_valid:\n", + " return w\n", + " _geom_fix = make_valid(_geom)\n", + " return _geom_fix.wkt\n", + "\n", + " return s.apply(to_valid) " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "6c63edd3-f87e-4ede-bf74-c1d49c7177e2", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_This variation doesn't show all the interim testing, just the fixing._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "8b871326-d013-49c0-863f-51e5c16ddd60", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "count? 4\nnum orig invalid? 3\nnum final invalid? 0\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
row_idis_orig_validgeom_wktis_valid
1falseMULTIPOLYGON (((0.5 3.5, 3.3957654723127035 5.7752442996742674, 4.027777777777778 3.5, 0.5 3.5)), ((2.5 9, 5 7.035714285714286, 3.3957654723127035 5.7752442996742674, 2.5 9)), ((7.5 9, 6.6042345276872965 5.7752442996742674, 5 7.035714285714286, 7.5 9)), ((9.5 3.5, 5.972222222222222 3.5, 6.6042345276872965 5.7752442996742674, 9.5 3.5)), ((5 0, 4.027777777777778 3.5, 5.972222222222222 3.5, 5 0)))true
2falseMULTIPOLYGON (((21 171, 115.68501587180901 170.1802163127982, 97.24514608274922 121.50753675330314, 21 171)), ((141 237, 174.98122638059246 169.66682920882604, 115.68501587180901 170.1802163127982, 141 237)), ((252 169, 186.85374007521938 146.1416631842875, 174.98122638059246 169.66682920882604, 252 169)), ((222.3085097882541 75.88869356771873, 161.30987316587914 79.92166127828898, 104.05263157894737 117.08864265927977, 186.85374007521938 146.1416631842875, 222.3085097882541 75.88869356771873)), ((266 73, 229.29693213749567 62.04126409792525, 222.3085097882541 75.88869356771873, 266 73)), ((249 23, 201.59668362870678 53.77057378487454, 229.29693213749567 62.04126409792525, 249 23)), ((55 10, 83.44063221452673 85.07004084532055, 161.30987316587914 79.92166127828898, 201.59668362870678 53.77057378487454, 55 10)), ((24 89, 94.27070148854622 113.6563864872092, 83.44063221452673 85.07004084532055, 24 89)), ((97.24514608274922 121.50753675330314, 104.05263157894737 117.08864265927977, 94.27070148854622 113.6563864872092, 97.24514608274922 121.50753675330314)))true
4truePOLYGON (( -84.3641541604937 33.71316821215546, -84.36414611386687 33.71303657522174, -84.36409515189553 33.71303657522174, -84.36410319852232 33.71317267442025, -84.3641541604937 33.71316821215546 ))true
3falseGEOMETRYCOLLECTION (MULTIPOLYGON (((10 5, 10 0, 5 0, 0 0, 5 5, 10 5)), ((5 5, 0 5, 0 10, 5 10, 10 10, 5 5))), MULTILINESTRING ((10 0, 5 5), (5 5, 0 10), (5 0, 5 5), (5 5, 5 10)))true
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 1, + false, + "MULTIPOLYGON (((0.5 3.5, 3.3957654723127035 5.7752442996742674, 4.027777777777778 3.5, 0.5 3.5)), ((2.5 9, 5 7.035714285714286, 3.3957654723127035 5.7752442996742674, 2.5 9)), ((7.5 9, 6.6042345276872965 5.7752442996742674, 5 7.035714285714286, 7.5 9)), ((9.5 3.5, 5.972222222222222 3.5, 6.6042345276872965 5.7752442996742674, 9.5 3.5)), ((5 0, 4.027777777777778 3.5, 5.972222222222222 3.5, 5 0)))", + true + ], + [ + 2, + false, + "MULTIPOLYGON (((21 171, 115.68501587180901 170.1802163127982, 97.24514608274922 121.50753675330314, 21 171)), ((141 237, 174.98122638059246 169.66682920882604, 115.68501587180901 170.1802163127982, 141 237)), ((252 169, 186.85374007521938 146.1416631842875, 174.98122638059246 169.66682920882604, 252 169)), ((222.3085097882541 75.88869356771873, 161.30987316587914 79.92166127828898, 104.05263157894737 117.08864265927977, 186.85374007521938 146.1416631842875, 222.3085097882541 75.88869356771873)), ((266 73, 229.29693213749567 62.04126409792525, 222.3085097882541 75.88869356771873, 266 73)), ((249 23, 201.59668362870678 53.77057378487454, 229.29693213749567 62.04126409792525, 249 23)), ((55 10, 83.44063221452673 85.07004084532055, 161.30987316587914 79.92166127828898, 201.59668362870678 53.77057378487454, 55 10)), ((24 89, 94.27070148854622 113.6563864872092, 83.44063221452673 85.07004084532055, 24 89)), ((97.24514608274922 121.50753675330314, 104.05263157894737 117.08864265927977, 94.27070148854622 113.6563864872092, 97.24514608274922 121.50753675330314)))", + true + ], + [ + 4, + true, + "POLYGON (( -84.3641541604937 33.71316821215546, -84.36414611386687 33.71303657522174, -84.36409515189553 33.71303657522174, -84.36410319852232 33.71317267442025, -84.3641541604937 33.71316821215546 ))", + true + ], + [ + 3, + false, + "GEOMETRYCOLLECTION (MULTIPOLYGON (((10 5, 10 0, 5 0, 0 0, 5 5, 10 5)), ((5 5, 0 5, 0 10, 5 10, 10 10, 5 5))), MULTILINESTRING ((10 0, 5 5), (5 5, 0 10), (5 0, 5 5), (5 5, 5 10)))", + true + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "row_id", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "is_orig_valid", + "type": "\"boolean\"" + }, + { + "metadata": "{}", + "name": "geom_wkt", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "is_valid", + "type": "\"boolean\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "df_valid1 = (\n", + " df # <- initial dataframe\n", + " .withColumnRenamed(\"geom_wkt\", \"orig_geom_wkt\")\n", + " .withColumn(\"is_orig_valid\", mos.st_isvalid(\"orig_geom_wkt\"))\n", + " .repartition(sc.defaultParallelism * 8, \"orig_geom_wkt\") # <- useful at scale\n", + " .select(\n", + " \"*\",\n", + " F\n", + " .when(col(\"is_orig_valid\") == False, vectorized_make_wkt_valid(\"orig_geom_wkt\")) # <- Pandas UDF\n", + " .otherwise(col(\"orig_geom_wkt\"))\n", + " .alias(\"geom_wkt\")\n", + " )\n", + " .withColumn(\"is_valid\", mos.st_isvalid(\"geom_wkt\"))\n", + " .drop(\"orig_geom_wkt\")\n", + ")\n", + "\n", + "print(f\"\"\"count? {df_valid1.count():,}\"\"\")\n", + "print(f\"\"\"num orig invalid? {df_valid1.filter(col(\"is_orig_valid\") == False).count():,}\"\"\")\n", + "print(f\"\"\"num final invalid? {df_valid1.filter(col(\"is_valid\") == False).count():,}\"\"\")\n", + "display(df_valid1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "4ebff4ab-4d1e-4339-9182-e52d427e4071", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> _To further optimize as an automated workflow, you would writing to Delta Tables and avoiding unnecessary calls to `count` / `display`._\n", + "\n", + "__Notes:__\n", + "\n", + "* At-scale, there are benefits to adding call like `.repartition(sc.defaultParallelism * 8, \"orig_geom_wkt\")` when coupled with spark confs to adjust AQE (see top of notebook) as this give you more control of partitioning since there is compute-heavy (aka UDF) tasks that Spark cannot plan for as well as a \"pure\" data-heavy operation.\n", + "* The focus of this notebook was not on rendering on a map, so we just used matplot lib with both Shapely (for pre-fixed geoms) and GeoPandas (for fixed geoms)\n", + "* The use of `.when()` conditional allows us to avoid UDF calls except where `is_valid=False` which saves on unnecessary compute time\n", + "* We avoided shapely `explain_validity` call except to initially understand as that call can be computationally expensive (and is only informational)\n", + "* This is just a subset of validation, but hopefully offers enough breadcrumbs for common issues you may face when processing invalid geometries" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 85549841996182, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "shapely_validate_udfs", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/scala/MosaicAndSedona.ipynb b/notebooks/examples/scala/MosaicAndSedona.ipynb new file mode 100644 index 000000000..a2f62aff4 --- /dev/null +++ b/notebooks/examples/scala/MosaicAndSedona.ipynb @@ -0,0 +1,1084 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "bf98136c-9276-4388-8eef-b567621fe1a4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Mosaic & Sedona\n", + "\n", + "> You can combine the usage of [Mosaic](https://databrickslabs.github.io/mosaic/index.html) with other geospatial libraries. In this example we combine it with [Sedona](https://sedona.apache.org).\n", + "\n", + "## Setup\n", + "\n", + "This notebook will run if you have both Mosaic and Sedona installed on your cluster as described below.\n", + "\n", + "### Install Sedona\n", + "\n", + "To install Sedona, follow the [official Sedona instructions](https://sedona.apache.org/1.5.0/setup/databricks/).\n", + "\n", + "E.g. Add the following maven coordinates to a non-photon cluster [[1](https://docs.databricks.com/en/libraries/package-repositories.html)]. This is showing DBR 12.2 LTS. \n", + "\n", + "```\n", + "org.apache.sedona:sedona-spark-shaded-3.0_2.12:1.5.0\n", + "org.datasyslab:geotools-wrapper:1.5.0-28.2\n", + "```\n", + "\n", + "### Install Mosaic\n", + "\n", + "Download Mosaic JAR to your local machine (e.g. from [here](https://github.com/databrickslabs/mosaic/releases/download/v_0.3.12/mosaic-0.3.12-jar-with-dependencies.jar) for 0.3.12) and then UPLOAD to your cluster [[1](https://docs.databricks.com/en/libraries/cluster-libraries.html#install-a-library-on-a-cluster)]. \n", + "\n", + "### Notes\n", + "\n", + "* See instructions for `SedonaContext.create(spark)` [[1](https://sedona.apache.org/1.5.0/tutorial/sql/?h=sedonacontext#initiate-sedonacontext)]. \n", + "* And, Sedona identifies that it might have issues if executed on a [Photon](https://www.databricks.com/product/photon) cluster; again this example is showing DBR 12.2 LTS on the Mosaic 0.3 series.\n", + "\n", + "--- \n", + " __Last Update__ 01 DEC 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "46dcda8a-cd24-4016-acf9-6ede54978d2f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup\n", + "\n", + "> We are installing Mosaic without SQL functions registered (via Scala) and are installing Sedona SQL as normal." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c91dd7bf-319c-489c-9715-6c512f027d64", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "
import org.apache.spark.sql.functions._\n", + "import com.databricks.labs.mosaic.functions.MosaicContext\n", + "import com.databricks.labs.mosaic.H3\n", + "import com.databricks.labs.mosaic.JTS\n", + "mosaicContext: com.databricks.labs.mosaic.functions.MosaicContext = com.databricks.labs.mosaic.functions.MosaicContext@64740153\n", + "import mosaicContext.functions._\n", + "import org.apache.sedona.spark.SedonaContext\n", + "sedona: org.apache.spark.sql.SparkSession = org.apache.spark.sql.SparkSession@15e8a79a\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
import org.apache.spark.sql.functions._\nimport com.databricks.labs.mosaic.functions.MosaicContext\nimport com.databricks.labs.mosaic.H3\nimport com.databricks.labs.mosaic.JTS\nmosaicContext: com.databricks.labs.mosaic.functions.MosaicContext = com.databricks.labs.mosaic.functions.MosaicContext@64740153\nimport mosaicContext.functions._\nimport org.apache.sedona.spark.SedonaContext\nsedona: org.apache.spark.sql.SparkSession = org.apache.spark.sql.SparkSession@15e8a79a\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "html" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "\n", + "// -- spark functions\n", + "import org.apache.spark.sql.functions._\n", + "\n", + "// -- mosaic functions\n", + "import com.databricks.labs.mosaic.functions.MosaicContext\n", + "import com.databricks.labs.mosaic.H3\n", + "import com.databricks.labs.mosaic.JTS\n", + "\n", + "val mosaicContext = MosaicContext.build(H3, JTS)\n", + "import mosaicContext.functions._\n", + "\n", + "// ! don't register SQL functions !\n", + "// - this allows sedona to be the main spatial SQL provider\n", + "//mosaicContext.register()\n", + "\n", + "// -- sedona functions\n", + "import org.apache.sedona.spark.SedonaContext\n", + "val sedona = SedonaContext.create(spark)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "a446841d-9ce1-4b0c-97e8-b705ab06caee", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_When we list user functions, we see all the Sedona provided ones._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0394a8a2-dcfd-49c0-a2df-85ecd0272029", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
function
hive_metastore.default.st_geohash
st_3ddistance
st_addpoint
st_affine
st_angle
st_areaspheroid
st_asbinary
st_asewkb
st_asewkt
st_asgeojson
st_asgml
st_askml
st_azimuth
st_boundary
st_boundingdiagonal
st_buffer
st_buildarea
st_centroid
st_closestpoint
st_collect
st_collectionextract
st_concavehull
st_contains
st_convexhull
st_coorddim
st_coveredby
st_covers
st_crosses
st_degrees
st_difference
st_dimension
st_disjoint
st_distance
st_distancesphere
st_distancespheroid
st_dump
st_dumppoints
st_endpoint
st_envelope
st_envelope_aggr
st_equals
st_exteriorring
st_flipcoordinates
st_force3d
st_force_2d
st_frechetdistance
st_geohash
st_geometricmedian
st_geometryn
st_geomfromewkt
st_geomfromgeohash
st_geomfromgeojson
st_geomfromgml
st_geomfromkml
st_geomfromwkb
st_h3celldistance
st_h3cellids
st_h3kring
st_h3togeom
st_hausdorffdistance
st_interiorringn
st_intersection
st_intersection_aggr
st_intersects
st_isclosed
st_iscollection
st_isring
st_issimple
st_isvalid
st_lengthspheroid
st_linefrommultipoint
st_linefromtext
st_lineinterpolatepoint
st_linemerge
st_linestringfromtext
st_linesubstring
st_makeline
st_makepoint
st_makepolygon
st_makevalid
st_minimumboundingcircle
st_minimumboundingradius
st_mlinefromtext
st_mpolyfromtext
st_multi
st_normalize
st_nrings
st_numgeometries
st_numinteriorrings
st_numpoints
st_orderingequals
st_overlaps
st_pointfromtext
st_pointn
st_pointonsurface
st_pointz
st_polygon
st_polygonfromenvelope
st_polygonfromtext
st_reduceprecision
st_removepoint
st_reverse
st_s2cellids
st_setpoint
st_simplifypreservetopology
st_split
st_startpoint
st_subdivide
st_subdivideexplode
st_symdifference
st_touches
st_transform
st_translate
st_union
st_union_aggr
st_voronoipolygons
st_within
st_x
st_y
st_z
st_zmax
st_zmin
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "hive_metastore.default.st_geohash" + ], + [ + "st_3ddistance" + ], + [ + "st_addpoint" + ], + [ + "st_affine" + ], + [ + "st_angle" + ], + [ + "st_areaspheroid" + ], + [ + "st_asbinary" + ], + [ + "st_asewkb" + ], + [ + "st_asewkt" + ], + [ + "st_asgeojson" + ], + [ + "st_asgml" + ], + [ + "st_askml" + ], + [ + "st_azimuth" + ], + [ + "st_boundary" + ], + [ + "st_boundingdiagonal" + ], + [ + "st_buffer" + ], + [ + "st_buildarea" + ], + [ + "st_centroid" + ], + [ + "st_closestpoint" + ], + [ + "st_collect" + ], + [ + "st_collectionextract" + ], + [ + "st_concavehull" + ], + [ + "st_contains" + ], + [ + "st_convexhull" + ], + [ + "st_coorddim" + ], + [ + "st_coveredby" + ], + [ + "st_covers" + ], + [ + "st_crosses" + ], + [ + "st_degrees" + ], + [ + "st_difference" + ], + [ + "st_dimension" + ], + [ + "st_disjoint" + ], + [ + "st_distance" + ], + [ + "st_distancesphere" + ], + [ + "st_distancespheroid" + ], + [ + "st_dump" + ], + [ + "st_dumppoints" + ], + [ + "st_endpoint" + ], + [ + "st_envelope" + ], + [ + "st_envelope_aggr" + ], + [ + "st_equals" + ], + [ + "st_exteriorring" + ], + [ + "st_flipcoordinates" + ], + [ + "st_force3d" + ], + [ + "st_force_2d" + ], + [ + "st_frechetdistance" + ], + [ + "st_geohash" + ], + [ + "st_geometricmedian" + ], + [ + "st_geometryn" + ], + [ + "st_geomfromewkt" + ], + [ + "st_geomfromgeohash" + ], + [ + "st_geomfromgeojson" + ], + [ + "st_geomfromgml" + ], + [ + "st_geomfromkml" + ], + [ + "st_geomfromwkb" + ], + [ + "st_h3celldistance" + ], + [ + "st_h3cellids" + ], + [ + "st_h3kring" + ], + [ + "st_h3togeom" + ], + [ + "st_hausdorffdistance" + ], + [ + "st_interiorringn" + ], + [ + "st_intersection" + ], + [ + "st_intersection_aggr" + ], + [ + "st_intersects" + ], + [ + "st_isclosed" + ], + [ + "st_iscollection" + ], + [ + "st_isring" + ], + [ + "st_issimple" + ], + [ + "st_isvalid" + ], + [ + "st_lengthspheroid" + ], + [ + "st_linefrommultipoint" + ], + [ + "st_linefromtext" + ], + [ + "st_lineinterpolatepoint" + ], + [ + "st_linemerge" + ], + [ + "st_linestringfromtext" + ], + [ + "st_linesubstring" + ], + [ + "st_makeline" + ], + [ + "st_makepoint" + ], + [ + "st_makepolygon" + ], + [ + "st_makevalid" + ], + [ + "st_minimumboundingcircle" + ], + [ + "st_minimumboundingradius" + ], + [ + "st_mlinefromtext" + ], + [ + "st_mpolyfromtext" + ], + [ + "st_multi" + ], + [ + "st_normalize" + ], + [ + "st_nrings" + ], + [ + "st_numgeometries" + ], + [ + "st_numinteriorrings" + ], + [ + "st_numpoints" + ], + [ + "st_orderingequals" + ], + [ + "st_overlaps" + ], + [ + "st_pointfromtext" + ], + [ + "st_pointn" + ], + [ + "st_pointonsurface" + ], + [ + "st_pointz" + ], + [ + "st_polygon" + ], + [ + "st_polygonfromenvelope" + ], + [ + "st_polygonfromtext" + ], + [ + "st_reduceprecision" + ], + [ + "st_removepoint" + ], + [ + "st_reverse" + ], + [ + "st_s2cellids" + ], + [ + "st_setpoint" + ], + [ + "st_simplifypreservetopology" + ], + [ + "st_split" + ], + [ + "st_startpoint" + ], + [ + "st_subdivide" + ], + [ + "st_subdivideexplode" + ], + [ + "st_symdifference" + ], + [ + "st_touches" + ], + [ + "st_transform" + ], + [ + "st_translate" + ], + [ + "st_union" + ], + [ + "st_union_aggr" + ], + [ + "st_voronoipolygons" + ], + [ + "st_within" + ], + [ + "st_x" + ], + [ + "st_y" + ], + [ + "st_z" + ], + [ + "st_zmax" + ], + [ + "st_zmin" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "function", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql \n", + "show user functions like 'st_*'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "1805f461-ecab-4a03-980d-fb403a3a028e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Queries\n", + "\n", + "> Showing how Sedona (registered Spark SQL) and Mosaic (Scala) can co-exist on the same cluster. Not shown here, but this could also be Mosaic Python bindings." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c1e4ac30-daf0-423c-8117-b7c3c4c06e52", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
wkt
POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))" + ] + ], + "datasetInfos": [ + { + "name": "df", + "schema": { + "fields": [ + { + "metadata": {}, + "name": "wkt", + "nullable": true, + "type": "string" + } + ], + "type": "struct" + }, + "tableIdentifier": null, + "typeStr": "org.apache.spark.sql.DataFrame" + } + ], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "wkt", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "\n", + "val df = Seq(\"POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))\").toDF(\"wkt\")\n", + "display(df)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "fbb24b11-f88d-46fb-a365-773d35923704", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Here is a Scala call to use the Sedona (Spark SQL) functions using `selectExpr`._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6f44c258-6919-43bc-9b52-a9167ce48078", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
sedona_area
550.0
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 550.0 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "sedona_area", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "display(\n", + " df\n", + " .selectExpr(\"ST_Area(ST_GeomFromText(wkt)) AS sedona_area\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3a484604-c4bc-4234-acf0-32994de54554", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Here is Scala call to the same Mosaic-provided `ST_Area` function._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ccf12e8d-82ff-47d9-ab5e-f64b2c487223", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
mosaic_area
550.0
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 550.0 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "mosaic_area", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "display(\n", + " df\n", + " .select(st_area($\"wkt\").as(\"mosaic_area\"))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "6dd1e21d-7a84-4c5e-b5f6-b02831d846b0", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Mosaic + Sedona_\n", + "\n", + "> Showing blending Mosaic calls (in Scala) with Sedona (Spark SQL) calls, using `expr`." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e0602e02-01ec-45cd-8c17-aa30e0d0d969", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
mosaic_areasedona_areawkt
550.0550.0POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 550.0, + 550.0, + "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "mosaic_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "sedona_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "wkt", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "display(\n", + " df\n", + " .select(\n", + " st_area($\"wkt\").as(\"mosaic_area\"), // <- mosaic (scala)\n", + " expr(\"ST_Area(ST_GeomFromText(wkt)) AS sedona_area\"), // <- sedona (spark sql)\n", + " $\"wkt\"\n", + " )\n", + ")" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": -1, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "MosaicAndSedona", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/scala/MosaicAndSedona.scala b/notebooks/examples/scala/MosaicAndSedona.scala deleted file mode 100644 index 532b96fa5..000000000 --- a/notebooks/examples/scala/MosaicAndSedona.scala +++ /dev/null @@ -1,47 +0,0 @@ -// Databricks notebook source -// MAGIC %md -// MAGIC # Mosaic & Sedona -// MAGIC -// MAGIC You can combine the usage of Mosaic with other geospatial libraries. -// MAGIC -// MAGIC In this example we combine the use of [Sedona](https://sedona.apache.org) and Mosaic. -// MAGIC -// MAGIC ## Setup -// MAGIC -// MAGIC This notebook will run if you have both Mosaic and Sedona installed on your cluster. -// MAGIC -// MAGIC ### Install sedona -// MAGIC -// MAGIC To install Sedona, follow the [official Sedona instructions](https://sedona.apache.org/1.4.0/setup/databricks). - -// COMMAND ---------- - -// Register Sedona in the 'default' database -import org.apache.sedona.sql.utils.SedonaSQLRegistrator -SedonaSQLRegistrator.registerAll(spark) - -// Import Mosaic functions -import com.databricks.labs.mosaic.functions.MosaicContext -import com.databricks.labs.mosaic.H3 -import com.databricks.labs.mosaic.JTS - -val mosaicContext = MosaicContext.build(H3, JTS) -import mosaicContext.functions._ -import org.apache.spark.sql.functions._ - -// COMMAND ---------- - -// Example dataset -val df = spark.createDataFrame(Seq(Tuple1("POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))"))).toDF("wkt") - -// COMMAND ---------- - -df - .withColumn("mosaic_area", st_area($"wkt")) // Mosaic - .withColumn("sedona_area", expr("ST_Area(ST_GeomFromWKT(wkt))")) // Sedona - .withColumn("sedona_flipped", expr("ST_FlipCoordinates(ST_GeomFromWKT(wkt))")) // Sedona - .show() - -// COMMAND ---------- - - diff --git a/notebooks/examples/scala/QuickstartNotebook.ipynb b/notebooks/examples/scala/QuickstartNotebook.ipynb new file mode 100644 index 000000000..ef9dc87c8 --- /dev/null +++ b/notebooks/examples/scala/QuickstartNotebook.ipynb @@ -0,0 +1,3116 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "db1d4ea7-d138-4740-ac41-74998430b3df", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Mosaic Quickstart\n", + "\n", + "> Perform a point-in-polygon spatial join between NYC Taxi trips and zones. __Note: this does not get into performance tweaks that are available for scaled joins.__\n", + "\n", + "### Notes\n", + "\n", + "For \"pure\" scala, download Mosaic JAR to your local machine (e.g. from [here](https://github.com/databrickslabs/mosaic/releases/download/v_0.3.12/mosaic-0.3.12-jar-with-dependencies.jar) for 0.3.12) and then UPLOAD to your cluster [[1](https://docs.databricks.com/en/libraries/cluster-libraries.html#install-a-library-on-a-cluster)]. \n", + "\n", + "If you have trouble with Volume access:\n", + "\n", + "* For Mosaic 0.3 series (< DBR 13) - you can copy resources to DBFS as a workaround\n", + "* For Mosaic 0.4 series (DBR 13.3 LTS) - you will need to either copy resources to DBFS or setup for Unity Catalog + Shared Access which will involve your workspace admin. Instructions, as updated, will be [here](https://databrickslabs.github.io/mosaic/usage/install-gdal.html).\n", + "\n", + "--- \n", + " __Last Update__ 01 DEC 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d6cbd7f0-cfa1-41f9-88dc-dccd355343d4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Install Mosaic\n", + "\n", + "> Mosaic framework is available via pip install and it comes with bindings for Python, SQL, Scala and R. The wheel file coming with pip installation is registering any necessary jars for other language support." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a08085be-479c-453b-883f-800bc7d022fc", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "
import org.apache.spark.sql.functions._\n", + "import com.databricks.labs.mosaic.functions.MosaicContext\n", + "import com.databricks.labs.mosaic.H3\n", + "import com.databricks.labs.mosaic.JTS\n", + "mosaicContext: com.databricks.labs.mosaic.functions.MosaicContext = com.databricks.labs.mosaic.functions.MosaicContext@3cc36d4a\n", + "import mosaicContext.functions._\n", + "formatter: java.text.NumberFormat = java.text.DecimalFormat@674dc\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
import org.apache.spark.sql.functions._\nimport com.databricks.labs.mosaic.functions.MosaicContext\nimport com.databricks.labs.mosaic.H3\nimport com.databricks.labs.mosaic.JTS\nmosaicContext: com.databricks.labs.mosaic.functions.MosaicContext = com.databricks.labs.mosaic.functions.MosaicContext@3cc36d4a\nimport mosaicContext.functions._\nformatter: java.text.NumberFormat = java.text.DecimalFormat@674dc\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "html" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "\n", + "// -- configure AQE for more compute heavy operations\n", + "// - choose option-1 or option-2 below, essential for REPARTITION!\n", + "// spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", false) // <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", false) // <- option-2: just tweak partition management\n", + "spark.conf.set(\"spark.sql.shuffle.partitions\", 1024) // <-- default is 200\n", + "\n", + "// -- spark functions\n", + "import org.apache.spark.sql.functions._\n", + "\n", + "// -- mosaic functions\n", + "import com.databricks.labs.mosaic.functions.MosaicContext\n", + "import com.databricks.labs.mosaic.H3\n", + "import com.databricks.labs.mosaic.JTS\n", + "\n", + "val mosaicContext = MosaicContext.build(H3, JTS)\n", + "import mosaicContext.functions._\n", + "\n", + "// register SQL functions\n", + "mosaicContext.register()\n", + "\n", + "// formatter\n", + "val formatter = java.text.NumberFormat.getIntegerInstance" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "9251d814-2e9f-4287-8fd9-769f0bf40c68", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup Data" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "f6b988fa-a55c-463c-8225-c549a56d377c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "
userName: String = mjohns@databricks.com\n", + "dataDir: String = /tmp/mosaic/mjohns@databricks.com\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
userName: String = mjohns@databricks.com\ndataDir: String = /tmp/mosaic/mjohns@databricks.com\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "html" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "val userName = dbutils.notebook.getContext.userName.get\n", + "val dataDir = s\"/tmp/mosaic/$userName\" // <- DBFS\n", + "\n", + "spark.conf.set(\"DATA_DIR\", dataDir)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c8bce9ad-77ef-46e1-857b-cfc8bd02016c", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "%python\n", + "\n", + "import os\n", + "import pathlib\n", + "import requests\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")\n", + "data_dir = spark.conf.get(\"DATA_DIR\")\n", + "os.environ['DATA_DIR'] = data_dir" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "293022d3-40c6-4928-946b-7bfe8a6fbb1e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Download NYC Taxi Zones\n", + "\n", + "> Make sure we have New York City Taxi zone shapes available in our environment." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0327a117-5256-4ec3-8c44-34b6a8dfc555", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "
zoneDir: String = /tmp/mosaic/mjohns@databricks.com/taxi_zones\n", + "zoneDirFuse: String = /dbfs/tmp/mosaic/mjohns@databricks.com/taxi_zones\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
zoneDir: String = /tmp/mosaic/mjohns@databricks.com/taxi_zones\nzoneDirFuse: String = /dbfs/tmp/mosaic/mjohns@databricks.com/taxi_zones\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "html" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "val zoneDir = s\"$dataDir/taxi_zones\" // <- DBFS\n", + "val zoneDirFuse = s\"/dbfs$zoneDir\" // <- FUSE\n", + "dbutils.fs.mkdirs(zoneDir)\n", + "\n", + "spark.conf.set(\"ZONE_DIR\", zoneDir)\n", + "spark.conf.set(\"ZONE_DIR_FUSE\", zoneDirFuse)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e3283b3f-4b81-459c-b513-2d782e9acc7f", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "%python \n", + "zone_dir = spark.conf.get(\"ZONE_DIR\")\n", + "zone_dir_fuse = spark.conf.get(\"ZONE_DIR_FUSE\")\n", + "\n", + "os.environ['ZONE_DIR'] = zone_dir\n", + "os.environ['ZONE_DIR_FUSE'] = zone_dir_fuse" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "941175c3-4142-4254-b47d-c8e813dfe95c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "...skipping '/dbfs/tmp/mosaic/mjohns@databricks.com/taxi_zones/nyc_taxi_zones.geojson', already exits.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "
pathnamesizemodificationTime
dbfs:/tmp/mosaic/mjohns@databricks.com/taxi_zones/nyc_taxi_zones.geojsonnyc_taxi_zones.geojson38924781701183475000
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "dbfs:/tmp/mosaic/mjohns@databricks.com/taxi_zones/nyc_taxi_zones.geojson", + "nyc_taxi_zones.geojson", + 3892478, + 1701183475000 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "path", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "size", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "modificationTime", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%python\n", + "zone_url = 'https://data.cityofnewyork.us/api/geospatial/d3c5-ddgc?method=export&format=GeoJSON'\n", + "\n", + "zone_fusepath = pathlib.Path(zone_dir_fuse) / 'nyc_taxi_zones.geojson'\n", + "if not zone_fuse_path.exists():\n", + " req = requests.get(zone_url)\n", + " with open(zone_fuse_path, 'wb') as f:\n", + " f.write(req.content)\n", + "else:\n", + " print(f\"...skipping '{zone_fuse_path}', already exits.\")\n", + "\n", + "display(dbutils.fs.ls(zone_dir))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "56b5edd3-3e43-428b-b13d-752c2a3a18a3", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Initial Taxi Zone from GeoJSON [Polygons]\n", + "\n", + "> With the functionality Mosaic brings we can easily load GeoJSON files. " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e3ded8e6-05d0-4b48-a823-5aba45e63347", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "
count? 263\n", + "neighbourhoods: org.apache.spark.sql.DataFrame = [type: string, properties: struct<borough: string, location_id: string ... 4 more fields> ... 2 more fields]\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
count? 263\nneighbourhoods: org.apache.spark.sql.DataFrame = [type: string, properties: struct<borough: string, location_id: string ... 4 more fields> ... 2 more fields]\n
", + "datasetInfos": [ + { + "name": "neighbourhoods", + "schema": { + "fields": [ + { + "metadata": {}, + "name": "type", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "properties", + "nullable": true, + "type": { + "fields": [ + { + "metadata": {}, + "name": "borough", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "location_id", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "objectid", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "shape_area", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "shape_leng", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "zone", + "nullable": true, + "type": "string" + } + ], + "type": "struct" + } + }, + { + "metadata": {}, + "name": "json_geometry", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "geometry", + "nullable": true, + "type": "string" + } + ], + "type": "struct" + }, + "tableIdentifier": null, + "typeStr": "org.apache.spark.sql.DataFrame" + } + ], + "metadata": {}, + "removedWidgets": [], + "type": "html" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "val neighbourhoods = (\n", + " spark.read\n", + " .option(\"multiline\", \"true\")\n", + " .format(\"json\")\n", + " .load(zoneDir)\n", + " .select(col(\"type\"), explode(col(\"features\")).alias(\"feature\"))\n", + " .select(col(\"type\"), col(\"feature.properties\").alias(\"properties\"), to_json(col(\"feature.geometry\")).alias(\"json_geometry\"))\n", + " .withColumn(\"geometry\", st_aswkt(st_geomfromgeojson(col(\"json_geometry\"))))\n", + ")\n", + "println(s\"count? ${formatter.format(neighbourhoods.count)}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "9da72bc8-a324-4183-ac82-6b87e95ce7d5", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
typepropertiesjson_geometrygeometry
FeatureCollectionList(EWR, 1, 1, 0.0007823067885, 0.116357453189, Newark Airport){\"coordinates\":[[[[-74.18445299999996,40.694995999999904],[-74.18448899999999,40.69509499999987],[-74.18449799999996,40.69518499999987],[-74.18438099999997,40.69587799999989],[-74.18428199999994,40.6962109999999],[-74.18402099999997,40.697074999999884],[-74.18391299999996,40.69750699999986],[-74.18375099999997,40.69779499999988],[-74.18363399999998,40.6983259999999],[-74.18356199999994,40.698451999999875],[-74.18354399999998,40.69855999999988],[-74.18350799999996,40.69870399999992],[-74.18327399999998,40.70008999999988],[-74.18315699999994,40.701214999999884],[-74.18316599999997,40.702384999999886],[-74.18313899999998,40.7026279999999],[-74.18309399999998,40.7028529999999],[-74.18299499999995,40.70315899999985],[-74.18284199999994,40.70346499999989],[-74.18264399999998,40.70373499999988],[-74.18242799999996,40.70395099999992],[-74.18220299999996,40.704139999999896],[-74.18203199999994,40.70425699999987],[-74.18180699999994,40.7043919999999],[-74.18157299999996,40.70449999999988],[-74.18132099999997,40.70460799999991],[-74.18080799999996,40.7047879999999],[-74.179467,40.70534599999992],[-74.17887299999995,40.70554399999987],[-74.17831499999994,40.70572399999987],[-74.17776599999996,40.70589499999988],[-74.17709099999996,40.706092999999896],[-74.17699199999998,40.70613799999988],[-74.17689299999995,40.70619199999988],[-74.17664999999994,40.70641699999988],[-74.17642499999994,40.706695999999916],[-74.17628999999994,40.70689399999988],[-74.17608299999995,40.70710999999989],[-74.17599299999995,40.70719099999991],[-74.17589399999997,40.707262999999905],[-74.17565999999994,40.70737999999988],[-74.17538099999996,40.707469999999915],[-74.17515599999996,40.707514999999894],[-74.17475999999994,40.707595999999924],[-74.17417499999993,40.70766799999991],[-74.17388699999998,40.70773099999992],[-74.17347299999994,40.707748999999865],[-74.17275299999994,40.707802999999906],[-74.17188899999996,40.707910999999854],[-74.17163699999998,40.70795599999986],[-74.17133999999999,40.707964999999895],[-74.17120499999999,40.70795599999986],[-74.16994499999998,40.707973999999886],[-74.16888299999994,40.7079379999999],[-74.16681299999993,40.70785699999989],[-74.16442799999999,40.70779399999987],[-74.16401399999995,40.70777599999992],[-74.16233999999997,40.707721999999876],[-74.16081899999995,40.70764099999991],[-74.16057599999993,40.70760499999988],[-74.16033299999998,40.70756899999987],[-74.160063,40.7074879999999],[-74.15938799999998,40.707262999999905],[-74.15904599999999,40.707145999999916],[-74.15891999999997,40.70710999999989],[-74.15827199999995,40.70687599999993],[-74.15459099999998,40.705651999999894],[-74.15409599999998,40.70544499999989],[-74.15401499999997,40.70538199999988],[-74.15387999999996,40.705327999999895],[-74.15376299999997,40.705408999999875],[-74.15323199999995,40.70524699999987],[-74.15317799999997,40.70531899999989],[-74.15306999999996,40.7052829999999],[-74.15359199999995,40.70437399999987],[-74.15386199999995,40.7038429999999],[-74.15513999999996,40.70155699999987],[-74.15544599999998,40.70108899999988],[-74.15575199999995,40.7006659999999],[-74.15600399999994,40.70026099999991],[-74.15635499999996,40.69975699999986],[-74.15745299999998,40.69809199999988],[-74.15754299999998,40.6979389999999],[-74.15758799999998,40.69781299999988],[-74.15762399999994,40.69767799999991],[-74.15829899999994,40.696705999999885],[-74.15951399999994,40.69488799999988],[-74.15958599999993,40.69476199999984],[-74.16014399999995,40.69410499999988],[-74.16057599999993,40.693222999999875],[-74.16262799999998,40.69028899999989],[-74.16279899999995,40.69002799999989],[-74.16290699999996,40.68987499999987],[-74.16292499999997,40.689874999999866],[-74.16295199999996,40.689874999999866],[-74.16306899999995,40.68989299999988],[-74.16309599999994,40.689928999999886],[-74.16322199999996,40.68998299999989],[-74.16331199999996,40.68999199999993],[-74.16341099999994,40.69000099999988],[-74.16352799999999,40.69000999999986],[-74.16380699999996,40.69004599999989],[-74.16410399999995,40.690081999999904],[-74.16417599999994,40.690081999999904],[-74.16422999999998,40.69005499999988],[-74.16436499999998,40.69003699999991],[-74.16450899999995,40.68998299999986],[-74.16467099999994,40.68988399999989],[-74.16479699999996,40.689757999999884],[-74.16491399999995,40.689586999999904],[-74.16499499999998,40.689388999999885],[-74.16528299999999,40.68891199999991],[-74.16542699999997,40.6887589999999],[-74.16548099999994,40.68863299999987],[-74.16560699999997,40.68842599999988],[-74.16576899999995,40.68802999999986],[-74.16587699999997,40.68787699999991],[-74.16583199999997,40.68757999999987],[-74.16582299999999,40.68748999999987],[-74.16580499999998,40.687156999999914],[-74.16582299999999,40.68703999999986],[-74.16589499999998,40.6868419999999],[-74.16604799999999,40.68655399999988],[-74.16639899999996,40.686022999999864],[-74.16650699999997,40.68588799999986],[-74.16674099999994,40.685491999999925],[-74.16695699999997,40.68523099999988],[-74.16738899999996,40.684546999999924],[-74.16781199999997,40.6839439999999],[-74.16791099999995,40.68379099999988],[-74.16804599999995,40.68360199999991],[-74.16816299999994,40.683475999999885],[-74.16822599999995,40.68334999999991],[-74.16848699999997,40.68299899999991],[-74.16886499999998,40.68239599999987],[-74.16916199999997,40.68199999999991],[-74.16929699999997,40.68178399999989],[-74.16947699999997,40.68155899999991],[-74.16981899999996,40.681018999999885],[-74.16995399999996,40.680874999999915],[-74.17005299999994,40.68066799999987],[-74.17041299999994,40.6801549999999],[-74.17051199999997,40.67999299999987],[-74.17067399999996,40.679650999999886],[-74.17093499999999,40.679290999999864],[-74.17144799999994,40.67847199999989],[-74.17151999999999,40.678381999999885],[-74.17160999999999,40.678255999999884],[-74.17193399999996,40.67782399999988],[-74.17200599999995,40.67773399999988],[-74.17283399999997,40.67656399999988],[-74.17314899999997,40.67619499999991],[-74.17322999999999,40.6760779999999],[-74.17329299999994,40.67601499999989],[-74.17358999999993,40.67571799999991],[-74.17423799999995,40.67493499999991],[-74.17437299999995,40.674817999999895],[-74.17484999999994,40.67432299999992],[-74.17500299999995,40.6741699999999],[-74.17538999999995,40.67375599999987],[-74.17604699999998,40.673044999999895],[-74.17630799999995,40.67276599999986],[-74.17641599999996,40.672621999999876],[-74.17663199999998,40.67239699999989],[-74.17678499999994,40.67218099999991],[-74.17697399999997,40.6719379999999],[-74.17709099999996,40.671784999999886],[-74.17734299999995,40.67155999999988],[-74.17754999999994,40.67142499999989],[-74.17778399999997,40.671316999999874],[-74.17802699999999,40.671208999999884],[-74.17862999999994,40.671037999999896],[-74.17888199999999,40.671001999999895],[-74.17912499999994,40.67099299999991],[-74.17933199999999,40.67101099999992],[-74.17979099999997,40.67115499999989],[-74.17997999999994,40.671208999999884],[-74.18010599999997,40.671262999999904],[-74.18030399999998,40.67129899999986],[-74.18133899999998,40.67170399999986],[-74.18213999999996,40.67202799999989],[-74.18384999999995,40.672648999999886],[-74.18437199999994,40.67290999999989],[-74.18458799999996,40.67302699999988],[-74.18492099999997,40.673269999999896],[-74.18503799999996,40.67335999999989],[-74.18513699999994,40.673458999999866],[-74.18547899999999,40.67390899999987],[-74.18594699999994,40.674664999999905],[-74.18670299999997,40.67578999999992],[-74.18733299999997,40.67674399999987],[-74.18767499999996,40.67729299999991],[-74.18795399999995,40.67761699999989],[-74.18819699999995,40.67792299999992],[-74.18852099999998,40.67848099999987],[-74.18877299999997,40.67885899999989],[-74.18905199999995,40.67933599999985],[-74.18935799999997,40.67975899999988],[-74.18949299999997,40.680091999999895],[-74.18969999999996,40.680793999999885],[-74.18977199999995,40.68113599999987],[-74.189781,40.681198999999886],[-74.18983499999996,40.68131599999987],[-74.18991599999998,40.68154099999988],[-74.18996999999996,40.6818019999999],[-74.18999699999995,40.6822519999999],[-74.18999699999995,40.68262999999992],[-74.18996999999996,40.68295399999989],[-74.18998799999997,40.68317899999989],[-74.18995199999995,40.683520999999885],[-74.18993399999994,40.68370999999992],[-74.189871,40.684078999999876],[-74.189781,40.68481699999991],[-74.18976299999997,40.68503299999986],[-74.18962799999997,40.686103999999915],[-74.18955599999998,40.68689599999987],[-74.18951999999996,40.6872019999999],[-74.18947499999996,40.68748999999985],[-74.18939399999994,40.68773299999988],[-74.18939399999994,40.68783199999991],[-74.18941199999995,40.687939999999855],[-74.18940299999997,40.68809299999987],[-74.18934899999994,40.68826399999989],[-74.18922299999997,40.68862399999989],[-74.18898899999994,40.68904699999991],[-74.18870099999998,40.689442999999876],[-74.18779199999994,40.690189999999866],[-74.18723399999999,40.69059499999986],[-74.18636999999995,40.69118899999991],[-74.18591099999998,40.69144999999988],[-74.18563199999994,40.69164799999987],[-74.18445299999996,40.694995999999904]]]],\"type\":\"MultiPolygon\"}MULTIPOLYGON (((-74.18445299999996 40.694995999999904, -74.18448899999999 40.69509499999987, -74.18449799999996 40.69518499999987, -74.18438099999997 40.69587799999989, -74.18428199999994 40.6962109999999, -74.18402099999997 40.697074999999884, -74.18391299999996 40.69750699999986, -74.18375099999997 40.69779499999988, -74.18363399999998 40.6983259999999, -74.18356199999994 40.698451999999875, -74.18354399999998 40.69855999999988, -74.18350799999996 40.69870399999992, -74.18327399999998 40.70008999999988, -74.18315699999994 40.701214999999884, -74.18316599999997 40.702384999999886, -74.18313899999998 40.7026279999999, -74.18309399999998 40.7028529999999, -74.18299499999995 40.70315899999985, -74.18284199999994 40.70346499999989, -74.18264399999998 40.70373499999988, -74.18242799999996 40.70395099999992, -74.18220299999996 40.704139999999896, -74.18203199999994 40.70425699999987, -74.18180699999994 40.7043919999999, -74.18157299999996 40.70449999999988, -74.18132099999997 40.70460799999991, -74.18080799999996 40.7047879999999, -74.179467 40.70534599999992, -74.17887299999995 40.70554399999987, -74.17831499999994 40.70572399999987, -74.17776599999996 40.70589499999988, -74.17709099999996 40.706092999999896, -74.17699199999998 40.70613799999988, -74.17689299999995 40.70619199999988, -74.17664999999994 40.70641699999988, -74.17642499999994 40.706695999999916, -74.17628999999994 40.70689399999988, -74.17608299999995 40.70710999999989, -74.17599299999995 40.70719099999991, -74.17589399999997 40.707262999999905, -74.17565999999994 40.70737999999988, -74.17538099999996 40.707469999999915, -74.17515599999996 40.707514999999894, -74.17475999999994 40.707595999999924, -74.17417499999993 40.70766799999991, -74.17388699999998 40.70773099999992, -74.17347299999994 40.707748999999865, -74.17275299999994 40.707802999999906, -74.17188899999996 40.707910999999854, -74.17163699999998 40.70795599999986, -74.17133999999999 40.707964999999895, -74.17120499999999 40.70795599999986, -74.16994499999998 40.707973999999886, -74.16888299999994 40.7079379999999, -74.16681299999993 40.70785699999989, -74.16442799999999 40.70779399999987, -74.16401399999995 40.70777599999992, -74.16233999999997 40.707721999999876, -74.16081899999995 40.70764099999991, -74.16057599999993 40.70760499999988, -74.16033299999998 40.70756899999987, -74.160063 40.7074879999999, -74.15938799999998 40.707262999999905, -74.15904599999999 40.707145999999916, -74.15891999999997 40.70710999999989, -74.15827199999995 40.70687599999993, -74.15459099999998 40.705651999999894, -74.15409599999998 40.70544499999989, -74.15401499999997 40.70538199999988, -74.15387999999996 40.705327999999895, -74.15376299999997 40.705408999999875, -74.15323199999995 40.70524699999987, -74.15317799999997 40.70531899999989, -74.15306999999996 40.7052829999999, -74.15359199999995 40.70437399999987, -74.15386199999995 40.7038429999999, -74.15513999999996 40.70155699999987, -74.15544599999998 40.70108899999988, -74.15575199999995 40.7006659999999, -74.15600399999994 40.70026099999991, -74.15635499999996 40.69975699999986, -74.15745299999998 40.69809199999988, -74.15754299999998 40.6979389999999, -74.15758799999998 40.69781299999988, -74.15762399999994 40.69767799999991, -74.15829899999994 40.696705999999885, -74.15951399999994 40.69488799999988, -74.15958599999993 40.69476199999984, -74.16014399999995 40.69410499999988, -74.16057599999993 40.693222999999875, -74.16262799999998 40.69028899999989, -74.16279899999995 40.69002799999989, -74.16290699999996 40.68987499999987, -74.16292499999997 40.689874999999866, -74.16295199999996 40.689874999999866, -74.16306899999995 40.68989299999988, -74.16309599999994 40.689928999999886, -74.16322199999996 40.68998299999989, -74.16331199999996 40.68999199999993, -74.16341099999994 40.69000099999988, -74.16352799999999 40.69000999999986, -74.16380699999996 40.69004599999989, -74.16410399999995 40.690081999999904, -74.16417599999994 40.690081999999904, -74.16422999999998 40.69005499999988, -74.16436499999998 40.69003699999991, -74.16450899999995 40.68998299999986, -74.16467099999994 40.68988399999989, -74.16479699999996 40.689757999999884, -74.16491399999995 40.689586999999904, -74.16499499999998 40.689388999999885, -74.16528299999999 40.68891199999991, -74.16542699999997 40.6887589999999, -74.16548099999994 40.68863299999987, -74.16560699999997 40.68842599999988, -74.16576899999995 40.68802999999986, -74.16587699999997 40.68787699999991, -74.16583199999997 40.68757999999987, -74.16582299999999 40.68748999999987, -74.16580499999998 40.687156999999914, -74.16582299999999 40.68703999999986, -74.16589499999998 40.6868419999999, -74.16604799999999 40.68655399999988, -74.16639899999996 40.686022999999864, -74.16650699999997 40.68588799999986, -74.16674099999994 40.685491999999925, -74.16695699999997 40.68523099999988, -74.16738899999996 40.684546999999924, -74.16781199999997 40.6839439999999, -74.16791099999995 40.68379099999988, -74.16804599999995 40.68360199999991, -74.16816299999994 40.683475999999885, -74.16822599999995 40.68334999999991, -74.16848699999997 40.68299899999991, -74.16886499999998 40.68239599999987, -74.16916199999997 40.68199999999991, -74.16929699999997 40.68178399999989, -74.16947699999997 40.68155899999991, -74.16981899999996 40.681018999999885, -74.16995399999996 40.680874999999915, -74.17005299999994 40.68066799999987, -74.17041299999994 40.6801549999999, -74.17051199999997 40.67999299999987, -74.17067399999996 40.679650999999886, -74.17093499999999 40.679290999999864, -74.17144799999994 40.67847199999989, -74.17151999999999 40.678381999999885, -74.17160999999999 40.678255999999884, -74.17193399999996 40.67782399999988, -74.17200599999995 40.67773399999988, -74.17283399999997 40.67656399999988, -74.17314899999997 40.67619499999991, -74.17322999999999 40.6760779999999, -74.17329299999994 40.67601499999989, -74.17358999999993 40.67571799999991, -74.17423799999995 40.67493499999991, -74.17437299999995 40.674817999999895, -74.17484999999994 40.67432299999992, -74.17500299999995 40.6741699999999, -74.17538999999995 40.67375599999987, -74.17604699999998 40.673044999999895, -74.17630799999995 40.67276599999986, -74.17641599999996 40.672621999999876, -74.17663199999998 40.67239699999989, -74.17678499999994 40.67218099999991, -74.17697399999997 40.6719379999999, -74.17709099999996 40.671784999999886, -74.17734299999995 40.67155999999988, -74.17754999999994 40.67142499999989, -74.17778399999997 40.671316999999874, -74.17802699999999 40.671208999999884, -74.17862999999994 40.671037999999896, -74.17888199999999 40.671001999999895, -74.17912499999994 40.67099299999991, -74.17933199999999 40.67101099999992, -74.17979099999997 40.67115499999989, -74.17997999999994 40.671208999999884, -74.18010599999997 40.671262999999904, -74.18030399999998 40.67129899999986, -74.18133899999998 40.67170399999986, -74.18213999999996 40.67202799999989, -74.18384999999995 40.672648999999886, -74.18437199999994 40.67290999999989, -74.18458799999996 40.67302699999988, -74.18492099999997 40.673269999999896, -74.18503799999996 40.67335999999989, -74.18513699999994 40.673458999999866, -74.18547899999999 40.67390899999987, -74.18594699999994 40.674664999999905, -74.18670299999997 40.67578999999992, -74.18733299999997 40.67674399999987, -74.18767499999996 40.67729299999991, -74.18795399999995 40.67761699999989, -74.18819699999995 40.67792299999992, -74.18852099999998 40.67848099999987, -74.18877299999997 40.67885899999989, -74.18905199999995 40.67933599999985, -74.18935799999997 40.67975899999988, -74.18949299999997 40.680091999999895, -74.18969999999996 40.680793999999885, -74.18977199999995 40.68113599999987, -74.189781 40.681198999999886, -74.18983499999996 40.68131599999987, -74.18991599999998 40.68154099999988, -74.18996999999996 40.6818019999999, -74.18999699999995 40.6822519999999, -74.18999699999995 40.68262999999992, -74.18996999999996 40.68295399999989, -74.18998799999997 40.68317899999989, -74.18995199999995 40.683520999999885, -74.18993399999994 40.68370999999992, -74.189871 40.684078999999876, -74.189781 40.68481699999991, -74.18976299999997 40.68503299999986, -74.18962799999997 40.686103999999915, -74.18955599999998 40.68689599999987, -74.18951999999996 40.6872019999999, -74.18947499999996 40.68748999999985, -74.18939399999994 40.68773299999988, -74.18939399999994 40.68783199999991, -74.18941199999995 40.687939999999855, -74.18940299999997 40.68809299999987, -74.18934899999994 40.68826399999989, -74.18922299999997 40.68862399999989, -74.18898899999994 40.68904699999991, -74.18870099999998 40.689442999999876, -74.18779199999994 40.690189999999866, -74.18723399999999 40.69059499999986, -74.18636999999995 40.69118899999991, -74.18591099999998 40.69144999999988, -74.18563199999994 40.69164799999987, -74.18445299999996 40.694995999999904)))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "FeatureCollection", + [ + "EWR", + "1", + "1", + "0.0007823067885", + "0.116357453189", + "Newark Airport" + ], + "{\"coordinates\":[[[[-74.18445299999996,40.694995999999904],[-74.18448899999999,40.69509499999987],[-74.18449799999996,40.69518499999987],[-74.18438099999997,40.69587799999989],[-74.18428199999994,40.6962109999999],[-74.18402099999997,40.697074999999884],[-74.18391299999996,40.69750699999986],[-74.18375099999997,40.69779499999988],[-74.18363399999998,40.6983259999999],[-74.18356199999994,40.698451999999875],[-74.18354399999998,40.69855999999988],[-74.18350799999996,40.69870399999992],[-74.18327399999998,40.70008999999988],[-74.18315699999994,40.701214999999884],[-74.18316599999997,40.702384999999886],[-74.18313899999998,40.7026279999999],[-74.18309399999998,40.7028529999999],[-74.18299499999995,40.70315899999985],[-74.18284199999994,40.70346499999989],[-74.18264399999998,40.70373499999988],[-74.18242799999996,40.70395099999992],[-74.18220299999996,40.704139999999896],[-74.18203199999994,40.70425699999987],[-74.18180699999994,40.7043919999999],[-74.18157299999996,40.70449999999988],[-74.18132099999997,40.70460799999991],[-74.18080799999996,40.7047879999999],[-74.179467,40.70534599999992],[-74.17887299999995,40.70554399999987],[-74.17831499999994,40.70572399999987],[-74.17776599999996,40.70589499999988],[-74.17709099999996,40.706092999999896],[-74.17699199999998,40.70613799999988],[-74.17689299999995,40.70619199999988],[-74.17664999999994,40.70641699999988],[-74.17642499999994,40.706695999999916],[-74.17628999999994,40.70689399999988],[-74.17608299999995,40.70710999999989],[-74.17599299999995,40.70719099999991],[-74.17589399999997,40.707262999999905],[-74.17565999999994,40.70737999999988],[-74.17538099999996,40.707469999999915],[-74.17515599999996,40.707514999999894],[-74.17475999999994,40.707595999999924],[-74.17417499999993,40.70766799999991],[-74.17388699999998,40.70773099999992],[-74.17347299999994,40.707748999999865],[-74.17275299999994,40.707802999999906],[-74.17188899999996,40.707910999999854],[-74.17163699999998,40.70795599999986],[-74.17133999999999,40.707964999999895],[-74.17120499999999,40.70795599999986],[-74.16994499999998,40.707973999999886],[-74.16888299999994,40.7079379999999],[-74.16681299999993,40.70785699999989],[-74.16442799999999,40.70779399999987],[-74.16401399999995,40.70777599999992],[-74.16233999999997,40.707721999999876],[-74.16081899999995,40.70764099999991],[-74.16057599999993,40.70760499999988],[-74.16033299999998,40.70756899999987],[-74.160063,40.7074879999999],[-74.15938799999998,40.707262999999905],[-74.15904599999999,40.707145999999916],[-74.15891999999997,40.70710999999989],[-74.15827199999995,40.70687599999993],[-74.15459099999998,40.705651999999894],[-74.15409599999998,40.70544499999989],[-74.15401499999997,40.70538199999988],[-74.15387999999996,40.705327999999895],[-74.15376299999997,40.705408999999875],[-74.15323199999995,40.70524699999987],[-74.15317799999997,40.70531899999989],[-74.15306999999996,40.7052829999999],[-74.15359199999995,40.70437399999987],[-74.15386199999995,40.7038429999999],[-74.15513999999996,40.70155699999987],[-74.15544599999998,40.70108899999988],[-74.15575199999995,40.7006659999999],[-74.15600399999994,40.70026099999991],[-74.15635499999996,40.69975699999986],[-74.15745299999998,40.69809199999988],[-74.15754299999998,40.6979389999999],[-74.15758799999998,40.69781299999988],[-74.15762399999994,40.69767799999991],[-74.15829899999994,40.696705999999885],[-74.15951399999994,40.69488799999988],[-74.15958599999993,40.69476199999984],[-74.16014399999995,40.69410499999988],[-74.16057599999993,40.693222999999875],[-74.16262799999998,40.69028899999989],[-74.16279899999995,40.69002799999989],[-74.16290699999996,40.68987499999987],[-74.16292499999997,40.689874999999866],[-74.16295199999996,40.689874999999866],[-74.16306899999995,40.68989299999988],[-74.16309599999994,40.689928999999886],[-74.16322199999996,40.68998299999989],[-74.16331199999996,40.68999199999993],[-74.16341099999994,40.69000099999988],[-74.16352799999999,40.69000999999986],[-74.16380699999996,40.69004599999989],[-74.16410399999995,40.690081999999904],[-74.16417599999994,40.690081999999904],[-74.16422999999998,40.69005499999988],[-74.16436499999998,40.69003699999991],[-74.16450899999995,40.68998299999986],[-74.16467099999994,40.68988399999989],[-74.16479699999996,40.689757999999884],[-74.16491399999995,40.689586999999904],[-74.16499499999998,40.689388999999885],[-74.16528299999999,40.68891199999991],[-74.16542699999997,40.6887589999999],[-74.16548099999994,40.68863299999987],[-74.16560699999997,40.68842599999988],[-74.16576899999995,40.68802999999986],[-74.16587699999997,40.68787699999991],[-74.16583199999997,40.68757999999987],[-74.16582299999999,40.68748999999987],[-74.16580499999998,40.687156999999914],[-74.16582299999999,40.68703999999986],[-74.16589499999998,40.6868419999999],[-74.16604799999999,40.68655399999988],[-74.16639899999996,40.686022999999864],[-74.16650699999997,40.68588799999986],[-74.16674099999994,40.685491999999925],[-74.16695699999997,40.68523099999988],[-74.16738899999996,40.684546999999924],[-74.16781199999997,40.6839439999999],[-74.16791099999995,40.68379099999988],[-74.16804599999995,40.68360199999991],[-74.16816299999994,40.683475999999885],[-74.16822599999995,40.68334999999991],[-74.16848699999997,40.68299899999991],[-74.16886499999998,40.68239599999987],[-74.16916199999997,40.68199999999991],[-74.16929699999997,40.68178399999989],[-74.16947699999997,40.68155899999991],[-74.16981899999996,40.681018999999885],[-74.16995399999996,40.680874999999915],[-74.17005299999994,40.68066799999987],[-74.17041299999994,40.6801549999999],[-74.17051199999997,40.67999299999987],[-74.17067399999996,40.679650999999886],[-74.17093499999999,40.679290999999864],[-74.17144799999994,40.67847199999989],[-74.17151999999999,40.678381999999885],[-74.17160999999999,40.678255999999884],[-74.17193399999996,40.67782399999988],[-74.17200599999995,40.67773399999988],[-74.17283399999997,40.67656399999988],[-74.17314899999997,40.67619499999991],[-74.17322999999999,40.6760779999999],[-74.17329299999994,40.67601499999989],[-74.17358999999993,40.67571799999991],[-74.17423799999995,40.67493499999991],[-74.17437299999995,40.674817999999895],[-74.17484999999994,40.67432299999992],[-74.17500299999995,40.6741699999999],[-74.17538999999995,40.67375599999987],[-74.17604699999998,40.673044999999895],[-74.17630799999995,40.67276599999986],[-74.17641599999996,40.672621999999876],[-74.17663199999998,40.67239699999989],[-74.17678499999994,40.67218099999991],[-74.17697399999997,40.6719379999999],[-74.17709099999996,40.671784999999886],[-74.17734299999995,40.67155999999988],[-74.17754999999994,40.67142499999989],[-74.17778399999997,40.671316999999874],[-74.17802699999999,40.671208999999884],[-74.17862999999994,40.671037999999896],[-74.17888199999999,40.671001999999895],[-74.17912499999994,40.67099299999991],[-74.17933199999999,40.67101099999992],[-74.17979099999997,40.67115499999989],[-74.17997999999994,40.671208999999884],[-74.18010599999997,40.671262999999904],[-74.18030399999998,40.67129899999986],[-74.18133899999998,40.67170399999986],[-74.18213999999996,40.67202799999989],[-74.18384999999995,40.672648999999886],[-74.18437199999994,40.67290999999989],[-74.18458799999996,40.67302699999988],[-74.18492099999997,40.673269999999896],[-74.18503799999996,40.67335999999989],[-74.18513699999994,40.673458999999866],[-74.18547899999999,40.67390899999987],[-74.18594699999994,40.674664999999905],[-74.18670299999997,40.67578999999992],[-74.18733299999997,40.67674399999987],[-74.18767499999996,40.67729299999991],[-74.18795399999995,40.67761699999989],[-74.18819699999995,40.67792299999992],[-74.18852099999998,40.67848099999987],[-74.18877299999997,40.67885899999989],[-74.18905199999995,40.67933599999985],[-74.18935799999997,40.67975899999988],[-74.18949299999997,40.680091999999895],[-74.18969999999996,40.680793999999885],[-74.18977199999995,40.68113599999987],[-74.189781,40.681198999999886],[-74.18983499999996,40.68131599999987],[-74.18991599999998,40.68154099999988],[-74.18996999999996,40.6818019999999],[-74.18999699999995,40.6822519999999],[-74.18999699999995,40.68262999999992],[-74.18996999999996,40.68295399999989],[-74.18998799999997,40.68317899999989],[-74.18995199999995,40.683520999999885],[-74.18993399999994,40.68370999999992],[-74.189871,40.684078999999876],[-74.189781,40.68481699999991],[-74.18976299999997,40.68503299999986],[-74.18962799999997,40.686103999999915],[-74.18955599999998,40.68689599999987],[-74.18951999999996,40.6872019999999],[-74.18947499999996,40.68748999999985],[-74.18939399999994,40.68773299999988],[-74.18939399999994,40.68783199999991],[-74.18941199999995,40.687939999999855],[-74.18940299999997,40.68809299999987],[-74.18934899999994,40.68826399999989],[-74.18922299999997,40.68862399999989],[-74.18898899999994,40.68904699999991],[-74.18870099999998,40.689442999999876],[-74.18779199999994,40.690189999999866],[-74.18723399999999,40.69059499999986],[-74.18636999999995,40.69118899999991],[-74.18591099999998,40.69144999999988],[-74.18563199999994,40.69164799999987],[-74.18445299999996,40.694995999999904]]]],\"type\":\"MultiPolygon\"}", + "MULTIPOLYGON (((-74.18445299999996 40.694995999999904, -74.18448899999999 40.69509499999987, -74.18449799999996 40.69518499999987, -74.18438099999997 40.69587799999989, -74.18428199999994 40.6962109999999, -74.18402099999997 40.697074999999884, -74.18391299999996 40.69750699999986, -74.18375099999997 40.69779499999988, -74.18363399999998 40.6983259999999, -74.18356199999994 40.698451999999875, -74.18354399999998 40.69855999999988, -74.18350799999996 40.69870399999992, -74.18327399999998 40.70008999999988, -74.18315699999994 40.701214999999884, -74.18316599999997 40.702384999999886, -74.18313899999998 40.7026279999999, -74.18309399999998 40.7028529999999, -74.18299499999995 40.70315899999985, -74.18284199999994 40.70346499999989, -74.18264399999998 40.70373499999988, -74.18242799999996 40.70395099999992, -74.18220299999996 40.704139999999896, -74.18203199999994 40.70425699999987, -74.18180699999994 40.7043919999999, -74.18157299999996 40.70449999999988, -74.18132099999997 40.70460799999991, -74.18080799999996 40.7047879999999, -74.179467 40.70534599999992, -74.17887299999995 40.70554399999987, -74.17831499999994 40.70572399999987, -74.17776599999996 40.70589499999988, -74.17709099999996 40.706092999999896, -74.17699199999998 40.70613799999988, -74.17689299999995 40.70619199999988, -74.17664999999994 40.70641699999988, -74.17642499999994 40.706695999999916, -74.17628999999994 40.70689399999988, -74.17608299999995 40.70710999999989, -74.17599299999995 40.70719099999991, -74.17589399999997 40.707262999999905, -74.17565999999994 40.70737999999988, -74.17538099999996 40.707469999999915, -74.17515599999996 40.707514999999894, -74.17475999999994 40.707595999999924, -74.17417499999993 40.70766799999991, -74.17388699999998 40.70773099999992, -74.17347299999994 40.707748999999865, -74.17275299999994 40.707802999999906, -74.17188899999996 40.707910999999854, -74.17163699999998 40.70795599999986, -74.17133999999999 40.707964999999895, -74.17120499999999 40.70795599999986, -74.16994499999998 40.707973999999886, -74.16888299999994 40.7079379999999, -74.16681299999993 40.70785699999989, -74.16442799999999 40.70779399999987, -74.16401399999995 40.70777599999992, -74.16233999999997 40.707721999999876, -74.16081899999995 40.70764099999991, -74.16057599999993 40.70760499999988, -74.16033299999998 40.70756899999987, -74.160063 40.7074879999999, -74.15938799999998 40.707262999999905, -74.15904599999999 40.707145999999916, -74.15891999999997 40.70710999999989, -74.15827199999995 40.70687599999993, -74.15459099999998 40.705651999999894, -74.15409599999998 40.70544499999989, -74.15401499999997 40.70538199999988, -74.15387999999996 40.705327999999895, -74.15376299999997 40.705408999999875, -74.15323199999995 40.70524699999987, -74.15317799999997 40.70531899999989, -74.15306999999996 40.7052829999999, -74.15359199999995 40.70437399999987, -74.15386199999995 40.7038429999999, -74.15513999999996 40.70155699999987, -74.15544599999998 40.70108899999988, -74.15575199999995 40.7006659999999, -74.15600399999994 40.70026099999991, -74.15635499999996 40.69975699999986, -74.15745299999998 40.69809199999988, -74.15754299999998 40.6979389999999, -74.15758799999998 40.69781299999988, -74.15762399999994 40.69767799999991, -74.15829899999994 40.696705999999885, -74.15951399999994 40.69488799999988, -74.15958599999993 40.69476199999984, -74.16014399999995 40.69410499999988, -74.16057599999993 40.693222999999875, -74.16262799999998 40.69028899999989, -74.16279899999995 40.69002799999989, -74.16290699999996 40.68987499999987, -74.16292499999997 40.689874999999866, -74.16295199999996 40.689874999999866, -74.16306899999995 40.68989299999988, -74.16309599999994 40.689928999999886, -74.16322199999996 40.68998299999989, -74.16331199999996 40.68999199999993, -74.16341099999994 40.69000099999988, -74.16352799999999 40.69000999999986, -74.16380699999996 40.69004599999989, -74.16410399999995 40.690081999999904, -74.16417599999994 40.690081999999904, -74.16422999999998 40.69005499999988, -74.16436499999998 40.69003699999991, -74.16450899999995 40.68998299999986, -74.16467099999994 40.68988399999989, -74.16479699999996 40.689757999999884, -74.16491399999995 40.689586999999904, -74.16499499999998 40.689388999999885, -74.16528299999999 40.68891199999991, -74.16542699999997 40.6887589999999, -74.16548099999994 40.68863299999987, -74.16560699999997 40.68842599999988, -74.16576899999995 40.68802999999986, -74.16587699999997 40.68787699999991, -74.16583199999997 40.68757999999987, -74.16582299999999 40.68748999999987, -74.16580499999998 40.687156999999914, -74.16582299999999 40.68703999999986, -74.16589499999998 40.6868419999999, -74.16604799999999 40.68655399999988, -74.16639899999996 40.686022999999864, -74.16650699999997 40.68588799999986, -74.16674099999994 40.685491999999925, -74.16695699999997 40.68523099999988, -74.16738899999996 40.684546999999924, -74.16781199999997 40.6839439999999, -74.16791099999995 40.68379099999988, -74.16804599999995 40.68360199999991, -74.16816299999994 40.683475999999885, -74.16822599999995 40.68334999999991, -74.16848699999997 40.68299899999991, -74.16886499999998 40.68239599999987, -74.16916199999997 40.68199999999991, -74.16929699999997 40.68178399999989, -74.16947699999997 40.68155899999991, -74.16981899999996 40.681018999999885, -74.16995399999996 40.680874999999915, -74.17005299999994 40.68066799999987, -74.17041299999994 40.6801549999999, -74.17051199999997 40.67999299999987, -74.17067399999996 40.679650999999886, -74.17093499999999 40.679290999999864, -74.17144799999994 40.67847199999989, -74.17151999999999 40.678381999999885, -74.17160999999999 40.678255999999884, -74.17193399999996 40.67782399999988, -74.17200599999995 40.67773399999988, -74.17283399999997 40.67656399999988, -74.17314899999997 40.67619499999991, -74.17322999999999 40.6760779999999, -74.17329299999994 40.67601499999989, -74.17358999999993 40.67571799999991, -74.17423799999995 40.67493499999991, -74.17437299999995 40.674817999999895, -74.17484999999994 40.67432299999992, -74.17500299999995 40.6741699999999, -74.17538999999995 40.67375599999987, -74.17604699999998 40.673044999999895, -74.17630799999995 40.67276599999986, -74.17641599999996 40.672621999999876, -74.17663199999998 40.67239699999989, -74.17678499999994 40.67218099999991, -74.17697399999997 40.6719379999999, -74.17709099999996 40.671784999999886, -74.17734299999995 40.67155999999988, -74.17754999999994 40.67142499999989, -74.17778399999997 40.671316999999874, -74.17802699999999 40.671208999999884, -74.17862999999994 40.671037999999896, -74.17888199999999 40.671001999999895, -74.17912499999994 40.67099299999991, -74.17933199999999 40.67101099999992, -74.17979099999997 40.67115499999989, -74.17997999999994 40.671208999999884, -74.18010599999997 40.671262999999904, -74.18030399999998 40.67129899999986, -74.18133899999998 40.67170399999986, -74.18213999999996 40.67202799999989, -74.18384999999995 40.672648999999886, -74.18437199999994 40.67290999999989, -74.18458799999996 40.67302699999988, -74.18492099999997 40.673269999999896, -74.18503799999996 40.67335999999989, -74.18513699999994 40.673458999999866, -74.18547899999999 40.67390899999987, -74.18594699999994 40.674664999999905, -74.18670299999997 40.67578999999992, -74.18733299999997 40.67674399999987, -74.18767499999996 40.67729299999991, -74.18795399999995 40.67761699999989, -74.18819699999995 40.67792299999992, -74.18852099999998 40.67848099999987, -74.18877299999997 40.67885899999989, -74.18905199999995 40.67933599999985, -74.18935799999997 40.67975899999988, -74.18949299999997 40.680091999999895, -74.18969999999996 40.680793999999885, -74.18977199999995 40.68113599999987, -74.189781 40.681198999999886, -74.18983499999996 40.68131599999987, -74.18991599999998 40.68154099999988, -74.18996999999996 40.6818019999999, -74.18999699999995 40.6822519999999, -74.18999699999995 40.68262999999992, -74.18996999999996 40.68295399999989, -74.18998799999997 40.68317899999989, -74.18995199999995 40.683520999999885, -74.18993399999994 40.68370999999992, -74.189871 40.684078999999876, -74.189781 40.68481699999991, -74.18976299999997 40.68503299999986, -74.18962799999997 40.686103999999915, -74.18955599999998 40.68689599999987, -74.18951999999996 40.6872019999999, -74.18947499999996 40.68748999999985, -74.18939399999994 40.68773299999988, -74.18939399999994 40.68783199999991, -74.18941199999995 40.687939999999855, -74.18940299999997 40.68809299999987, -74.18934899999994 40.68826399999989, -74.18922299999997 40.68862399999989, -74.18898899999994 40.68904699999991, -74.18870099999998 40.689442999999876, -74.18779199999994 40.690189999999866, -74.18723399999999 40.69059499999986, -74.18636999999995 40.69118899999991, -74.18591099999998 40.69144999999988, -74.18563199999994 40.69164799999987, -74.18445299999996 40.694995999999904)))" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "type", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "properties", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"borough\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"location_id\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"objectid\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"shape_area\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"shape_leng\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"zone\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "json_geometry", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geometry", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "display(neighbourhoods.limit(1)) // <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3738db02-9bc9-437b-a723-00c438a6fb87", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Compute some basic geometry attributes\n", + "\n", + "> Mosaic provides a number of functions for extracting the properties of geometries. Here are some that are relevant to Polygon geometries:" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0f8bb69f-8e1e-4626-b37e-fd885c773fe7", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
geometrycalculatedAreacalculatedLength
MULTIPOLYGON (((-74.18445299999996 40.694995999999904, -74.18448899999999 40.69509499999987, -74.18449799999996 40.69518499999987, -74.18438099999997 40.69587799999989, -74.18428199999994 40.6962109999999, -74.18402099999997 40.697074999999884, -74.18391299999996 40.69750699999986, -74.18375099999997 40.69779499999988, -74.18363399999998 40.6983259999999, -74.18356199999994 40.698451999999875, -74.18354399999998 40.69855999999988, -74.18350799999996 40.69870399999992, -74.18327399999998 40.70008999999988, -74.18315699999994 40.701214999999884, -74.18316599999997 40.702384999999886, -74.18313899999998 40.7026279999999, -74.18309399999998 40.7028529999999, -74.18299499999995 40.70315899999985, -74.18284199999994 40.70346499999989, -74.18264399999998 40.70373499999988, -74.18242799999996 40.70395099999992, -74.18220299999996 40.704139999999896, -74.18203199999994 40.70425699999987, -74.18180699999994 40.7043919999999, -74.18157299999996 40.70449999999988, -74.18132099999997 40.70460799999991, -74.18080799999996 40.7047879999999, -74.179467 40.70534599999992, -74.17887299999995 40.70554399999987, -74.17831499999994 40.70572399999987, -74.17776599999996 40.70589499999988, -74.17709099999996 40.706092999999896, -74.17699199999998 40.70613799999988, -74.17689299999995 40.70619199999988, -74.17664999999994 40.70641699999988, -74.17642499999994 40.706695999999916, -74.17628999999994 40.70689399999988, -74.17608299999995 40.70710999999989, -74.17599299999995 40.70719099999991, -74.17589399999997 40.707262999999905, -74.17565999999994 40.70737999999988, -74.17538099999996 40.707469999999915, -74.17515599999996 40.707514999999894, -74.17475999999994 40.707595999999924, -74.17417499999993 40.70766799999991, -74.17388699999998 40.70773099999992, -74.17347299999994 40.707748999999865, -74.17275299999994 40.707802999999906, -74.17188899999996 40.707910999999854, -74.17163699999998 40.70795599999986, -74.17133999999999 40.707964999999895, -74.17120499999999 40.70795599999986, -74.16994499999998 40.707973999999886, -74.16888299999994 40.7079379999999, -74.16681299999993 40.70785699999989, -74.16442799999999 40.70779399999987, -74.16401399999995 40.70777599999992, -74.16233999999997 40.707721999999876, -74.16081899999995 40.70764099999991, -74.16057599999993 40.70760499999988, -74.16033299999998 40.70756899999987, -74.160063 40.7074879999999, -74.15938799999998 40.707262999999905, -74.15904599999999 40.707145999999916, -74.15891999999997 40.70710999999989, -74.15827199999995 40.70687599999993, -74.15459099999998 40.705651999999894, -74.15409599999998 40.70544499999989, -74.15401499999997 40.70538199999988, -74.15387999999996 40.705327999999895, -74.15376299999997 40.705408999999875, -74.15323199999995 40.70524699999987, -74.15317799999997 40.70531899999989, -74.15306999999996 40.7052829999999, -74.15359199999995 40.70437399999987, -74.15386199999995 40.7038429999999, -74.15513999999996 40.70155699999987, -74.15544599999998 40.70108899999988, -74.15575199999995 40.7006659999999, -74.15600399999994 40.70026099999991, -74.15635499999996 40.69975699999986, -74.15745299999998 40.69809199999988, -74.15754299999998 40.6979389999999, -74.15758799999998 40.69781299999988, -74.15762399999994 40.69767799999991, -74.15829899999994 40.696705999999885, -74.15951399999994 40.69488799999988, -74.15958599999993 40.69476199999984, -74.16014399999995 40.69410499999988, -74.16057599999993 40.693222999999875, -74.16262799999998 40.69028899999989, -74.16279899999995 40.69002799999989, -74.16290699999996 40.68987499999987, -74.16292499999997 40.689874999999866, -74.16295199999996 40.689874999999866, -74.16306899999995 40.68989299999988, -74.16309599999994 40.689928999999886, -74.16322199999996 40.68998299999989, -74.16331199999996 40.68999199999993, -74.16341099999994 40.69000099999988, -74.16352799999999 40.69000999999986, -74.16380699999996 40.69004599999989, -74.16410399999995 40.690081999999904, -74.16417599999994 40.690081999999904, -74.16422999999998 40.69005499999988, -74.16436499999998 40.69003699999991, -74.16450899999995 40.68998299999986, -74.16467099999994 40.68988399999989, -74.16479699999996 40.689757999999884, -74.16491399999995 40.689586999999904, -74.16499499999998 40.689388999999885, -74.16528299999999 40.68891199999991, -74.16542699999997 40.6887589999999, -74.16548099999994 40.68863299999987, -74.16560699999997 40.68842599999988, -74.16576899999995 40.68802999999986, -74.16587699999997 40.68787699999991, -74.16583199999997 40.68757999999987, -74.16582299999999 40.68748999999987, -74.16580499999998 40.687156999999914, -74.16582299999999 40.68703999999986, -74.16589499999998 40.6868419999999, -74.16604799999999 40.68655399999988, -74.16639899999996 40.686022999999864, -74.16650699999997 40.68588799999986, -74.16674099999994 40.685491999999925, -74.16695699999997 40.68523099999988, -74.16738899999996 40.684546999999924, -74.16781199999997 40.6839439999999, -74.16791099999995 40.68379099999988, -74.16804599999995 40.68360199999991, -74.16816299999994 40.683475999999885, -74.16822599999995 40.68334999999991, -74.16848699999997 40.68299899999991, -74.16886499999998 40.68239599999987, -74.16916199999997 40.68199999999991, -74.16929699999997 40.68178399999989, -74.16947699999997 40.68155899999991, -74.16981899999996 40.681018999999885, -74.16995399999996 40.680874999999915, -74.17005299999994 40.68066799999987, -74.17041299999994 40.6801549999999, -74.17051199999997 40.67999299999987, -74.17067399999996 40.679650999999886, -74.17093499999999 40.679290999999864, -74.17144799999994 40.67847199999989, -74.17151999999999 40.678381999999885, -74.17160999999999 40.678255999999884, -74.17193399999996 40.67782399999988, -74.17200599999995 40.67773399999988, -74.17283399999997 40.67656399999988, -74.17314899999997 40.67619499999991, -74.17322999999999 40.6760779999999, -74.17329299999994 40.67601499999989, -74.17358999999993 40.67571799999991, -74.17423799999995 40.67493499999991, -74.17437299999995 40.674817999999895, -74.17484999999994 40.67432299999992, -74.17500299999995 40.6741699999999, -74.17538999999995 40.67375599999987, -74.17604699999998 40.673044999999895, -74.17630799999995 40.67276599999986, -74.17641599999996 40.672621999999876, -74.17663199999998 40.67239699999989, -74.17678499999994 40.67218099999991, -74.17697399999997 40.6719379999999, -74.17709099999996 40.671784999999886, -74.17734299999995 40.67155999999988, -74.17754999999994 40.67142499999989, -74.17778399999997 40.671316999999874, -74.17802699999999 40.671208999999884, -74.17862999999994 40.671037999999896, -74.17888199999999 40.671001999999895, -74.17912499999994 40.67099299999991, -74.17933199999999 40.67101099999992, -74.17979099999997 40.67115499999989, -74.17997999999994 40.671208999999884, -74.18010599999997 40.671262999999904, -74.18030399999998 40.67129899999986, -74.18133899999998 40.67170399999986, -74.18213999999996 40.67202799999989, -74.18384999999995 40.672648999999886, -74.18437199999994 40.67290999999989, -74.18458799999996 40.67302699999988, -74.18492099999997 40.673269999999896, -74.18503799999996 40.67335999999989, -74.18513699999994 40.673458999999866, -74.18547899999999 40.67390899999987, -74.18594699999994 40.674664999999905, -74.18670299999997 40.67578999999992, -74.18733299999997 40.67674399999987, -74.18767499999996 40.67729299999991, -74.18795399999995 40.67761699999989, -74.18819699999995 40.67792299999992, -74.18852099999998 40.67848099999987, -74.18877299999997 40.67885899999989, -74.18905199999995 40.67933599999985, -74.18935799999997 40.67975899999988, -74.18949299999997 40.680091999999895, -74.18969999999996 40.680793999999885, -74.18977199999995 40.68113599999987, -74.189781 40.681198999999886, -74.18983499999996 40.68131599999987, -74.18991599999998 40.68154099999988, -74.18996999999996 40.6818019999999, -74.18999699999995 40.6822519999999, -74.18999699999995 40.68262999999992, -74.18996999999996 40.68295399999989, -74.18998799999997 40.68317899999989, -74.18995199999995 40.683520999999885, -74.18993399999994 40.68370999999992, -74.189871 40.684078999999876, -74.189781 40.68481699999991, -74.18976299999997 40.68503299999986, -74.18962799999997 40.686103999999915, -74.18955599999998 40.68689599999987, -74.18951999999996 40.6872019999999, -74.18947499999996 40.68748999999985, -74.18939399999994 40.68773299999988, -74.18939399999994 40.68783199999991, -74.18941199999995 40.687939999999855, -74.18940299999997 40.68809299999987, -74.18934899999994 40.68826399999989, -74.18922299999997 40.68862399999989, -74.18898899999994 40.68904699999991, -74.18870099999998 40.689442999999876, -74.18779199999994 40.690189999999866, -74.18723399999999 40.69059499999986, -74.18636999999995 40.69118899999991, -74.18591099999998 40.69144999999988, -74.18563199999994 40.69164799999987, -74.18445299999996 40.694995999999904)))7.823067885002558E-40.11635745318867867
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "MULTIPOLYGON (((-74.18445299999996 40.694995999999904, -74.18448899999999 40.69509499999987, -74.18449799999996 40.69518499999987, -74.18438099999997 40.69587799999989, -74.18428199999994 40.6962109999999, -74.18402099999997 40.697074999999884, -74.18391299999996 40.69750699999986, -74.18375099999997 40.69779499999988, -74.18363399999998 40.6983259999999, -74.18356199999994 40.698451999999875, -74.18354399999998 40.69855999999988, -74.18350799999996 40.69870399999992, -74.18327399999998 40.70008999999988, -74.18315699999994 40.701214999999884, -74.18316599999997 40.702384999999886, -74.18313899999998 40.7026279999999, -74.18309399999998 40.7028529999999, -74.18299499999995 40.70315899999985, -74.18284199999994 40.70346499999989, -74.18264399999998 40.70373499999988, -74.18242799999996 40.70395099999992, -74.18220299999996 40.704139999999896, -74.18203199999994 40.70425699999987, -74.18180699999994 40.7043919999999, -74.18157299999996 40.70449999999988, -74.18132099999997 40.70460799999991, -74.18080799999996 40.7047879999999, -74.179467 40.70534599999992, -74.17887299999995 40.70554399999987, -74.17831499999994 40.70572399999987, -74.17776599999996 40.70589499999988, -74.17709099999996 40.706092999999896, -74.17699199999998 40.70613799999988, -74.17689299999995 40.70619199999988, -74.17664999999994 40.70641699999988, -74.17642499999994 40.706695999999916, -74.17628999999994 40.70689399999988, -74.17608299999995 40.70710999999989, -74.17599299999995 40.70719099999991, -74.17589399999997 40.707262999999905, -74.17565999999994 40.70737999999988, -74.17538099999996 40.707469999999915, -74.17515599999996 40.707514999999894, -74.17475999999994 40.707595999999924, -74.17417499999993 40.70766799999991, -74.17388699999998 40.70773099999992, -74.17347299999994 40.707748999999865, -74.17275299999994 40.707802999999906, -74.17188899999996 40.707910999999854, -74.17163699999998 40.70795599999986, -74.17133999999999 40.707964999999895, -74.17120499999999 40.70795599999986, -74.16994499999998 40.707973999999886, -74.16888299999994 40.7079379999999, -74.16681299999993 40.70785699999989, -74.16442799999999 40.70779399999987, -74.16401399999995 40.70777599999992, -74.16233999999997 40.707721999999876, -74.16081899999995 40.70764099999991, -74.16057599999993 40.70760499999988, -74.16033299999998 40.70756899999987, -74.160063 40.7074879999999, -74.15938799999998 40.707262999999905, -74.15904599999999 40.707145999999916, -74.15891999999997 40.70710999999989, -74.15827199999995 40.70687599999993, -74.15459099999998 40.705651999999894, -74.15409599999998 40.70544499999989, -74.15401499999997 40.70538199999988, -74.15387999999996 40.705327999999895, -74.15376299999997 40.705408999999875, -74.15323199999995 40.70524699999987, -74.15317799999997 40.70531899999989, -74.15306999999996 40.7052829999999, -74.15359199999995 40.70437399999987, -74.15386199999995 40.7038429999999, -74.15513999999996 40.70155699999987, -74.15544599999998 40.70108899999988, -74.15575199999995 40.7006659999999, -74.15600399999994 40.70026099999991, -74.15635499999996 40.69975699999986, -74.15745299999998 40.69809199999988, -74.15754299999998 40.6979389999999, -74.15758799999998 40.69781299999988, -74.15762399999994 40.69767799999991, -74.15829899999994 40.696705999999885, -74.15951399999994 40.69488799999988, -74.15958599999993 40.69476199999984, -74.16014399999995 40.69410499999988, -74.16057599999993 40.693222999999875, -74.16262799999998 40.69028899999989, -74.16279899999995 40.69002799999989, -74.16290699999996 40.68987499999987, -74.16292499999997 40.689874999999866, -74.16295199999996 40.689874999999866, -74.16306899999995 40.68989299999988, -74.16309599999994 40.689928999999886, -74.16322199999996 40.68998299999989, -74.16331199999996 40.68999199999993, -74.16341099999994 40.69000099999988, -74.16352799999999 40.69000999999986, -74.16380699999996 40.69004599999989, -74.16410399999995 40.690081999999904, -74.16417599999994 40.690081999999904, -74.16422999999998 40.69005499999988, -74.16436499999998 40.69003699999991, -74.16450899999995 40.68998299999986, -74.16467099999994 40.68988399999989, -74.16479699999996 40.689757999999884, -74.16491399999995 40.689586999999904, -74.16499499999998 40.689388999999885, -74.16528299999999 40.68891199999991, -74.16542699999997 40.6887589999999, -74.16548099999994 40.68863299999987, -74.16560699999997 40.68842599999988, -74.16576899999995 40.68802999999986, -74.16587699999997 40.68787699999991, -74.16583199999997 40.68757999999987, -74.16582299999999 40.68748999999987, -74.16580499999998 40.687156999999914, -74.16582299999999 40.68703999999986, -74.16589499999998 40.6868419999999, -74.16604799999999 40.68655399999988, -74.16639899999996 40.686022999999864, -74.16650699999997 40.68588799999986, -74.16674099999994 40.685491999999925, -74.16695699999997 40.68523099999988, -74.16738899999996 40.684546999999924, -74.16781199999997 40.6839439999999, -74.16791099999995 40.68379099999988, -74.16804599999995 40.68360199999991, -74.16816299999994 40.683475999999885, -74.16822599999995 40.68334999999991, -74.16848699999997 40.68299899999991, -74.16886499999998 40.68239599999987, -74.16916199999997 40.68199999999991, -74.16929699999997 40.68178399999989, -74.16947699999997 40.68155899999991, -74.16981899999996 40.681018999999885, -74.16995399999996 40.680874999999915, -74.17005299999994 40.68066799999987, -74.17041299999994 40.6801549999999, -74.17051199999997 40.67999299999987, -74.17067399999996 40.679650999999886, -74.17093499999999 40.679290999999864, -74.17144799999994 40.67847199999989, -74.17151999999999 40.678381999999885, -74.17160999999999 40.678255999999884, -74.17193399999996 40.67782399999988, -74.17200599999995 40.67773399999988, -74.17283399999997 40.67656399999988, -74.17314899999997 40.67619499999991, -74.17322999999999 40.6760779999999, -74.17329299999994 40.67601499999989, -74.17358999999993 40.67571799999991, -74.17423799999995 40.67493499999991, -74.17437299999995 40.674817999999895, -74.17484999999994 40.67432299999992, -74.17500299999995 40.6741699999999, -74.17538999999995 40.67375599999987, -74.17604699999998 40.673044999999895, -74.17630799999995 40.67276599999986, -74.17641599999996 40.672621999999876, -74.17663199999998 40.67239699999989, -74.17678499999994 40.67218099999991, -74.17697399999997 40.6719379999999, -74.17709099999996 40.671784999999886, -74.17734299999995 40.67155999999988, -74.17754999999994 40.67142499999989, -74.17778399999997 40.671316999999874, -74.17802699999999 40.671208999999884, -74.17862999999994 40.671037999999896, -74.17888199999999 40.671001999999895, -74.17912499999994 40.67099299999991, -74.17933199999999 40.67101099999992, -74.17979099999997 40.67115499999989, -74.17997999999994 40.671208999999884, -74.18010599999997 40.671262999999904, -74.18030399999998 40.67129899999986, -74.18133899999998 40.67170399999986, -74.18213999999996 40.67202799999989, -74.18384999999995 40.672648999999886, -74.18437199999994 40.67290999999989, -74.18458799999996 40.67302699999988, -74.18492099999997 40.673269999999896, -74.18503799999996 40.67335999999989, -74.18513699999994 40.673458999999866, -74.18547899999999 40.67390899999987, -74.18594699999994 40.674664999999905, -74.18670299999997 40.67578999999992, -74.18733299999997 40.67674399999987, -74.18767499999996 40.67729299999991, -74.18795399999995 40.67761699999989, -74.18819699999995 40.67792299999992, -74.18852099999998 40.67848099999987, -74.18877299999997 40.67885899999989, -74.18905199999995 40.67933599999985, -74.18935799999997 40.67975899999988, -74.18949299999997 40.680091999999895, -74.18969999999996 40.680793999999885, -74.18977199999995 40.68113599999987, -74.189781 40.681198999999886, -74.18983499999996 40.68131599999987, -74.18991599999998 40.68154099999988, -74.18996999999996 40.6818019999999, -74.18999699999995 40.6822519999999, -74.18999699999995 40.68262999999992, -74.18996999999996 40.68295399999989, -74.18998799999997 40.68317899999989, -74.18995199999995 40.683520999999885, -74.18993399999994 40.68370999999992, -74.189871 40.684078999999876, -74.189781 40.68481699999991, -74.18976299999997 40.68503299999986, -74.18962799999997 40.686103999999915, -74.18955599999998 40.68689599999987, -74.18951999999996 40.6872019999999, -74.18947499999996 40.68748999999985, -74.18939399999994 40.68773299999988, -74.18939399999994 40.68783199999991, -74.18941199999995 40.687939999999855, -74.18940299999997 40.68809299999987, -74.18934899999994 40.68826399999989, -74.18922299999997 40.68862399999989, -74.18898899999994 40.68904699999991, -74.18870099999998 40.689442999999876, -74.18779199999994 40.690189999999866, -74.18723399999999 40.69059499999986, -74.18636999999995 40.69118899999991, -74.18591099999998 40.69144999999988, -74.18563199999994 40.69164799999987, -74.18445299999996 40.694995999999904)))", + 7.823067885002558E-4, + 0.11635745318867867 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "geometry", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "calculatedArea", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "calculatedLength", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "display(\n", + " neighbourhoods\n", + " .withColumn(\"calculatedArea\", st_area(col(\"geometry\")))\n", + " .withColumn(\"calculatedLength\", st_length(col(\"geometry\")))\n", + " // Note: The unit of measure of the area and length depends on the CRS used.\n", + " // For GPS locations it will be square radians and radians\n", + " .select(\"geometry\", \"calculatedArea\", \"calculatedLength\")\n", + " .limit(1) // <- limiting for ipynb only\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "704024a0-8171-4218-a95e-ff8ef6ace37c", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Initial Trips Data [Points]\n", + "\n", + "> We will load some Taxi trips data to represent point data; this data is coming from Databricks public datasets available in your environment. __Note: this is 1.6 billion trips as-is; while it is no problem to process this, to keep this to a quickstart level, we are going to use just 1/10th of 1% or ~1.6 million.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7ebf19ba-2e86-4a17-8e84-7e3c521251f3", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "
count? 1,608,670\n", + "trips: org.apache.spark.sql.DataFrame = [row_id: bigint, vendor_id: string ... 17 more fields]\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
count? 1,608,670\ntrips: org.apache.spark.sql.DataFrame = [row_id: bigint, vendor_id: string ... 17 more fields]\n
", + "datasetInfos": [ + { + "name": "trips", + "schema": { + "fields": [ + { + "metadata": {}, + "name": "row_id", + "nullable": false, + "type": "long" + }, + { + "metadata": {}, + "name": "vendor_id", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "pickup_datetime", + "nullable": true, + "type": "timestamp" + }, + { + "metadata": {}, + "name": "dropoff_datetime", + "nullable": true, + "type": "timestamp" + }, + { + "metadata": {}, + "name": "passenger_count", + "nullable": true, + "type": "integer" + }, + { + "metadata": {}, + "name": "trip_distance", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "pickup_longitude", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "pickup_latitude", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "rate_code_id", + "nullable": true, + "type": "integer" + }, + { + "metadata": {}, + "name": "dropoff_longitude", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "dropoff_latitude", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "fare_amount", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "extra", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "mta_tax", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "tip_amount", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "tolls_amount", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "total_amount", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "pickup_geom", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "dropoff_geom", + "nullable": true, + "type": "string" + } + ], + "type": "struct" + }, + "tableIdentifier": null, + "typeStr": "org.apache.spark.sql.DataFrame" + } + ], + "metadata": {}, + "removedWidgets": [], + "type": "html" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "\n", + "val trips = spark.table(\"delta.`/databricks-datasets/nyctaxi/tables/nyctaxi_yellow`\")\n", + " .sample(0.001)\n", + " .drop(\"vendorId\", \"rateCodeId\", \"store_and_fwd_flag\", \"payment_type\")\n", + " .withColumn(\"pickup_geom\", st_astext(st_point($\"pickup_longitude\", $\"pickup_latitude\")))\n", + " .withColumn(\"dropoff_geom\", st_astext(st_point($\"dropoff_longitude\", $\"dropoff_latitude\")))\n", + " .selectExpr(\"xxhash64(pickup_datetime, dropoff_datetime, pickup_geom, dropoff_geom) as row_id\",\"*\")\n", + "\n", + "println(s\"count? ${formatter.format(trips.count)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d905fbe9-5104-4a09-bdee-4b5adba23bcf", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Spatial Joins\n", + "\n", + "> We can use Mosaic to perform spatial joins both with and without Mosaic indexing strategies. Indexing is very important when handling very different geometries both in size and in shape (ie. number of vertices)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e9ff1fa2-ca0b-4472-8c8a-1b317da11e76", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Getting the optimal resolution\n", + "\n", + "> We can use Mosaic functionality to identify how to best index our data based on the data inside the specific dataframe. Selecting an appropriate indexing resolution can have a considerable impact on the performance." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2bff2755-9a4f-481b-a00f-93e0fd2ebd8a", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "
Optimal resolution is 9\n", + "import com.databricks.labs.mosaic.sql.MosaicFrame\n", + "mosaicFrame: com.databricks.labs.mosaic.sql.MosaicFrame = [type: string, properties: struct<borough: string, location_id: string ... 4 more fields> ... 2 more fields]\n", + "optimalResolution: Int = 9\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
Optimal resolution is 9\nimport com.databricks.labs.mosaic.sql.MosaicFrame\nmosaicFrame: com.databricks.labs.mosaic.sql.MosaicFrame = [type: string, properties: struct<borough: string, location_id: string ... 4 more fields> ... 2 more fields]\noptimalResolution: Int = 9\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "html" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "\n", + "import com.databricks.labs.mosaic.sql.MosaicFrame\n", + "\n", + "val mosaicFrame = MosaicFrame(neighbourhoods)\n", + " .setGeometryColumn(\"geometry\")\n", + "\n", + "val optimalResolution = mosaicFrame.getOptimalResolution(0.75)\n", + "\n", + "println(s\"Optimal resolution is $optimalResolution\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "b28464a3-f420-4264-b58b-a7e7d79329ad", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> Not every resolution will yield performance improvements. By a rule of thumb it is always better to under-index than over-index - if not sure select a lower resolution. Higher resolutions are needed when we have very imbalanced geometries with respect to their size or with respect to the number of vertices. In such case indexing with more indices will considerably increase the parallel nature of the operations. You can think of Mosaic as a way to partition an overly complex row into multiple rows that have a balanced amount of computation each." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "b733893f-7f52-4021-9dd6-23932494ec53", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
resolutionmean_index_areamean_geometry_areapercentile_25_geometry_areapercentile_50_geometry_areapercentile_75_geometry_area
112.3050887040151685E-71393.4792000326781461.6662802245658991.44601168828591961.150753088525
101.6135627796508305E-6199.0683724106790565.9522976726467141.6350842375098280.16427404166126
91.1294934384716961E-528.4383516881839049.42176104192583420.23359254991216740.02348569578239
87.906505133983356E-54.0625954310322991.34595717012354022.8904945528469825.717603885925354
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 11, + 2.3050887040151685E-7, + 1393.4792000326781, + 461.6662802245658, + 991.4460116882859, + 1961.150753088525 + ], + [ + 10, + 1.6135627796508305E-6, + 199.06837241067905, + 65.9522976726467, + 141.6350842375098, + 280.16427404166126 + ], + [ + 9, + 1.1294934384716961E-5, + 28.438351688183904, + 9.421761041925834, + 20.233592549912167, + 40.02348569578239 + ], + [ + 8, + 7.906505133983356E-5, + 4.062595431032299, + 1.3459571701235402, + 2.890494552846982, + 5.717603885925354 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "resolution", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "mean_index_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "mean_geometry_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "percentile_25_geometry_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "percentile_50_geometry_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "percentile_75_geometry_area", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "display(\n", + " mosaicFrame.analyzer.getResolutionMetrics()\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "eb868752-f425-4c70-aab9-9a7f0d45f049", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Indexing using the optimal resolution\n", + "\n", + "> We will use mosaic sql functions to index our points data. Here we will use resolution 9, index resolution depends on the dataset in use." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4c31c1a3-c547-4111-a162-07730752a7aa", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
row_idpickup_h3dropoff_h3vendor_idpickup_datetimedropoff_datetimepassenger_counttrip_distancepickup_longitudepickup_latituderate_code_iddropoff_longitudedropoff_latitudefare_amountextramta_taxtip_amounttolls_amounttotal_amountpickup_geomdropoff_geomtrip_line
4790840662229985948617733123877109759617733122619080703CMT2012-09-22T13:02:28.000+00002012-09-22T13:16:43.000+000012.9-73.96409540.7566721-73.97676640.78042512.50.00.50.00.013.0POINT (-73.964095 40.756672)POINT (-73.976766 40.780425)LINESTRING (-73.964095 40.756672, -73.976766 40.780425)
4640209734139842635617733123876847615617733122610954239CMT2012-09-22T13:17:08.000+00002012-09-22T13:32:01.000+000021.7-73.96863240.7591831-73.98261240.77173811.00.00.50.00.011.5POINT (-73.968632 40.759183)POINT (-73.982612 40.771738)LINESTRING (-73.968632 40.759183, -73.982612 40.771738)
-7307102645695879559617733123877109759617733123838050303CMT2012-09-22T13:32:33.000+00002012-09-22T13:36:22.000+000010.8-73.96470840.7555541-73.9572240.7663425.00.00.50.00.05.5POINT (-73.964708 40.755554)POINT (-73.95722 40.766342)LINESTRING (-73.964708 40.755554, -73.95722 40.766342)
-4628045955618738638617733123877371903617733123836477439CMT2012-09-22T14:38:57.000+00002012-09-22T14:42:54.000+000010.6-73.96238540.7605221-73.95416340.7638624.50.00.50.00.05.0POINT (-73.962385 40.760522)POINT (-73.954163 40.763862)LINESTRING (-73.962385 40.760522, -73.954163 40.763862)
-3903290589377512186617733123877371903617733123866361855CMT2012-09-22T14:30:56.000+00002012-09-22T14:40:47.000+000011.0-73.96130840.760421-73.97554640.7609978.00.00.50.00.08.5POINT (-73.961308 40.76042)POINT (-73.975546 40.760997)LINESTRING (-73.961308 40.76042, -73.975546 40.760997)
6507070034880946577617733123866099711617733123804495871CMT2012-09-22T15:04:36.000+00002012-09-22T15:23:52.000+000012.4-73.96950140.7573321-74.00021440.74790514.00.00.50.00.014.5POINT (-73.969501 40.757332)POINT (-74.000214 40.747905)LINESTRING (-73.969501 40.757332, -74.000214 40.747905)
9035681533352024775617733123878682623617733151079792639CMT2012-09-22T16:52:27.000+00002012-09-22T17:10:59.000+000013.2-73.97224240.7652421-73.99759540.72420214.50.00.50.00.015.0POINT (-73.972242 40.765242)POINT (-73.997595 40.724202)LINESTRING (-73.972242 40.765242, -73.997595 40.724202)
2778164646035401016617733123869507583617733136115826687CMT2012-09-22T18:02:32.000+00002012-09-22T18:33:28.000+0000416.6-73.97173740.7562952-73.79028440.64686352.00.00.50.04.857.3POINT (-73.971737 40.756295)POINT (-73.790284 40.646863)LINESTRING (-73.971737 40.756295, -73.790284 40.646863)
2017582055297242140617733123865837567617733151078481919CMT2012-09-22T17:34:00.000+00002012-09-22T18:17:31.000+000013.4-73.97130640.7601271-73.9998640.72371227.00.00.50.00.027.5POINT (-73.971306 40.760127)POINT (-73.99986 40.723712)LINESTRING (-73.971306 40.760127, -73.99986 40.723712)
7268476285856530227617733123869507583617733136116088831CMT2012-09-22T18:37:37.000+00002012-09-22T19:20:11.000+0000114.6-73.9733340.7546972-73.79068640.64426352.00.00.50.00.052.5POINT (-73.97333 40.754697)POINT (-73.790686 40.644263)LINESTRING (-73.97333 40.754697, -73.790686 40.644263)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 4790840662229985948, + 617733123877109759, + 617733122619080703, + "CMT", + "2012-09-22T13:02:28.000+0000", + "2012-09-22T13:16:43.000+0000", + 1, + 2.9, + -73.964095, + 40.756672, + 1, + -73.976766, + 40.780425, + 12.5, + 0.0, + 0.5, + 0.0, + 0.0, + 13.0, + "POINT (-73.964095 40.756672)", + "POINT (-73.976766 40.780425)", + "LINESTRING (-73.964095 40.756672, -73.976766 40.780425)" + ], + [ + 4640209734139842635, + 617733123876847615, + 617733122610954239, + "CMT", + "2012-09-22T13:17:08.000+0000", + "2012-09-22T13:32:01.000+0000", + 2, + 1.7, + -73.968632, + 40.759183, + 1, + -73.982612, + 40.771738, + 11.0, + 0.0, + 0.5, + 0.0, + 0.0, + 11.5, + "POINT (-73.968632 40.759183)", + "POINT (-73.982612 40.771738)", + "LINESTRING (-73.968632 40.759183, -73.982612 40.771738)" + ], + [ + -7307102645695879559, + 617733123877109759, + 617733123838050303, + "CMT", + "2012-09-22T13:32:33.000+0000", + "2012-09-22T13:36:22.000+0000", + 1, + 0.8, + -73.964708, + 40.755554, + 1, + -73.95722, + 40.766342, + 5.0, + 0.0, + 0.5, + 0.0, + 0.0, + 5.5, + "POINT (-73.964708 40.755554)", + "POINT (-73.95722 40.766342)", + "LINESTRING (-73.964708 40.755554, -73.95722 40.766342)" + ], + [ + -4628045955618738638, + 617733123877371903, + 617733123836477439, + "CMT", + "2012-09-22T14:38:57.000+0000", + "2012-09-22T14:42:54.000+0000", + 1, + 0.6, + -73.962385, + 40.760522, + 1, + -73.954163, + 40.763862, + 4.5, + 0.0, + 0.5, + 0.0, + 0.0, + 5.0, + "POINT (-73.962385 40.760522)", + "POINT (-73.954163 40.763862)", + "LINESTRING (-73.962385 40.760522, -73.954163 40.763862)" + ], + [ + -3903290589377512186, + 617733123877371903, + 617733123866361855, + "CMT", + "2012-09-22T14:30:56.000+0000", + "2012-09-22T14:40:47.000+0000", + 1, + 1.0, + -73.961308, + 40.76042, + 1, + -73.975546, + 40.760997, + 8.0, + 0.0, + 0.5, + 0.0, + 0.0, + 8.5, + "POINT (-73.961308 40.76042)", + "POINT (-73.975546 40.760997)", + "LINESTRING (-73.961308 40.76042, -73.975546 40.760997)" + ], + [ + 6507070034880946577, + 617733123866099711, + 617733123804495871, + "CMT", + "2012-09-22T15:04:36.000+0000", + "2012-09-22T15:23:52.000+0000", + 1, + 2.4, + -73.969501, + 40.757332, + 1, + -74.000214, + 40.747905, + 14.0, + 0.0, + 0.5, + 0.0, + 0.0, + 14.5, + "POINT (-73.969501 40.757332)", + "POINT (-74.000214 40.747905)", + "LINESTRING (-73.969501 40.757332, -74.000214 40.747905)" + ], + [ + 9035681533352024775, + 617733123878682623, + 617733151079792639, + "CMT", + "2012-09-22T16:52:27.000+0000", + "2012-09-22T17:10:59.000+0000", + 1, + 3.2, + -73.972242, + 40.765242, + 1, + -73.997595, + 40.724202, + 14.5, + 0.0, + 0.5, + 0.0, + 0.0, + 15.0, + "POINT (-73.972242 40.765242)", + "POINT (-73.997595 40.724202)", + "LINESTRING (-73.972242 40.765242, -73.997595 40.724202)" + ], + [ + 2778164646035401016, + 617733123869507583, + 617733136115826687, + "CMT", + "2012-09-22T18:02:32.000+0000", + "2012-09-22T18:33:28.000+0000", + 4, + 16.6, + -73.971737, + 40.756295, + 2, + -73.790284, + 40.646863, + 52.0, + 0.0, + 0.5, + 0.0, + 4.8, + 57.3, + "POINT (-73.971737 40.756295)", + "POINT (-73.790284 40.646863)", + "LINESTRING (-73.971737 40.756295, -73.790284 40.646863)" + ], + [ + 2017582055297242140, + 617733123865837567, + 617733151078481919, + "CMT", + "2012-09-22T17:34:00.000+0000", + "2012-09-22T18:17:31.000+0000", + 1, + 3.4, + -73.971306, + 40.760127, + 1, + -73.99986, + 40.723712, + 27.0, + 0.0, + 0.5, + 0.0, + 0.0, + 27.5, + "POINT (-73.971306 40.760127)", + "POINT (-73.99986 40.723712)", + "LINESTRING (-73.971306 40.760127, -73.99986 40.723712)" + ], + [ + 7268476285856530227, + 617733123869507583, + 617733136116088831, + "CMT", + "2012-09-22T18:37:37.000+0000", + "2012-09-22T19:20:11.000+0000", + 1, + 14.6, + -73.97333, + 40.754697, + 2, + -73.790686, + 40.644263, + 52.0, + 0.0, + 0.5, + 0.0, + 0.0, + 52.5, + "POINT (-73.97333 40.754697)", + "POINT (-73.790686 40.644263)", + "LINESTRING (-73.97333 40.754697, -73.790686 40.644263)" + ] + ], + "datasetInfos": [ + { + "name": "tripsWithIndex", + "schema": { + "fields": [ + { + "metadata": {}, + "name": "row_id", + "nullable": false, + "type": "long" + }, + { + "metadata": {}, + "name": "pickup_h3", + "nullable": true, + "type": "long" + }, + { + "metadata": {}, + "name": "dropoff_h3", + "nullable": true, + "type": "long" + }, + { + "metadata": {}, + "name": "vendor_id", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "pickup_datetime", + "nullable": true, + "type": "timestamp" + }, + { + "metadata": {}, + "name": "dropoff_datetime", + "nullable": true, + "type": "timestamp" + }, + { + "metadata": {}, + "name": "passenger_count", + "nullable": true, + "type": "integer" + }, + { + "metadata": {}, + "name": "trip_distance", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "pickup_longitude", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "pickup_latitude", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "rate_code_id", + "nullable": true, + "type": "integer" + }, + { + "metadata": {}, + "name": "dropoff_longitude", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "dropoff_latitude", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "fare_amount", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "extra", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "mta_tax", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "tip_amount", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "tolls_amount", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "total_amount", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "pickup_geom", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "dropoff_geom", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "trip_line", + "nullable": true, + "type": "string" + } + ], + "type": "struct" + }, + "tableIdentifier": null, + "typeStr": "org.apache.spark.sql.DataFrame" + } + ], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "row_id", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "pickup_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "dropoff_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "vendor_id", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "dropoff_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "passenger_count", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_longitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_latitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "rate_code_id", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "dropoff_longitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "dropoff_latitude", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "fare_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "extra", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "mta_tax", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tip_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "tolls_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "total_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "trip_line", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "val tripsWithIndex = trips\n", + " .withColumn(\"pickup_h3\", grid_pointascellid(col(\"pickup_geom\"), lit(optimalResolution)))\n", + " .withColumn(\"dropoff_h3\", grid_pointascellid(col(\"dropoff_geom\"), lit(optimalResolution)))\n", + " .withColumn(\"trip_line\", st_makeline(array(\"pickup_geom\", \"dropoff_geom\")))\n", + ".selectExpr(\n", + " \"row_id\", \"pickup_h3\", \"dropoff_h3\",\n", + " \"* except(row_id, pickup_h3, dropoff_h3)\"\n", + ")\n", + "display(tripsWithIndex.limit(10)) // <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e519823d-b03b-4984-9a6a-4988aff54648", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> We will also index our neighbourhoods using a built in generator function." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ac398701-f9f4-4ecf-a1c6-82a7c7535dc5", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "
count? 11,885\n", + "neighbourhoodsWithIndex: org.apache.spark.sql.DataFrame = [type: string, properties: struct<borough: string, location_id: string ... 4 more fields> ... 1 more field]\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
count? 11,885\nneighbourhoodsWithIndex: org.apache.spark.sql.DataFrame = [type: string, properties: struct<borough: string, location_id: string ... 4 more fields> ... 1 more field]\n
", + "datasetInfos": [ + { + "name": "neighbourhoodsWithIndex", + "schema": { + "fields": [ + { + "metadata": {}, + "name": "type", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "properties", + "nullable": true, + "type": { + "fields": [ + { + "metadata": {}, + "name": "borough", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "location_id", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "objectid", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "shape_area", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "shape_leng", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "zone", + "nullable": true, + "type": "string" + } + ], + "type": "struct" + } + }, + { + "metadata": {}, + "name": "mosaic_index", + "nullable": true, + "type": { + "fields": [ + { + "metadata": {}, + "name": "is_core", + "nullable": true, + "type": "boolean" + }, + { + "metadata": {}, + "name": "index_id", + "nullable": true, + "type": "long" + }, + { + "metadata": {}, + "name": "wkb", + "nullable": true, + "type": "binary" + } + ], + "type": "struct" + } + } + ], + "type": "struct" + }, + "tableIdentifier": null, + "typeStr": "org.apache.spark.sql.DataFrame" + } + ], + "metadata": {}, + "removedWidgets": [], + "type": "html" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "val neighbourhoodsWithIndex = neighbourhoods\n", + " // We break down the original geometry in multiple smaller mosaic chips, each with its\n", + " // own index\n", + " .withColumn(\"mosaic_index\", grid_tessellateexplode(col(\"geometry\"), lit(optimalResolution)))\n", + " // We don't need the original geometry any more, since we have broken it down into\n", + " // Smaller mosaic chips.\n", + " .drop(\"json_geometry\", \"geometry\")\n", + "\n", + "println(s\"count? ${formatter.format(neighbourhoodsWithIndex.count)}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "67f7a24b-8a6e-493b-9551-0d08ff757434", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
typepropertiesmosaic_index
FeatureCollectionList(EWR, 1, 1, 0.0007823067885, 0.116357453189, Newark Airport)List(true, 617733150781997055, AAAAAAMAAAABAAAACMBSi+u3pmJPQERXt9Zja+DAUowOEmsLgUBEV5j/c7NdwFKMDNGKYo5ARFdfWe/7QsBSi+k2kMI9QERXRItV/dvAUovG3BrqLkBEV2Nhr37nwFKLyBxP4SdARFedBzkzSsBSi+u3pmJPQERXt9Zja+DAUos= (truncated))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "FeatureCollection", + [ + "EWR", + "1", + "1", + "0.0007823067885", + "0.116357453189", + "Newark Airport" + ], + [ + true, + 617733150781997055, + "AAAAAAMAAAABAAAACMBSi+u3pmJPQERXt9Zja+DAUowOEmsLgUBEV5j/c7NdwFKMDNGKYo5ARFdfWe/7QsBSi+k2kMI9QERXRItV/dvAUovG3BrqLkBEV2Nhr37nwFKLyBxP4SdARFedBzkzSsBSi+u3pmJPQERXt9Zja+DAUos= (truncated)" + ] + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "type", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "properties", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"borough\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"location_id\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"objectid\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"shape_area\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"shape_leng\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"zone\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "mosaic_index", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"is_core\",\"type\":\"boolean\",\"nullable\":true,\"metadata\":{}},{\"name\":\"index_id\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"wkb\",\"type\":\"binary\",\"nullable\":true,\"metadata\":{}}]}" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "display(neighbourhoodsWithIndex.limit(1)) // <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "a8028556-2f1e-4f84-9ef0-e400815908d1", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Performing the spatial join\n", + "\n", + "> We can now do spatial joins to both pickup and drop off zones based on geolocations in our datasets." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "76b26cfb-6ebd-4b25-8bef-c718d88448a2", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
trip_distancepickup_geomdropoff_geompickup_h3dropoff_h3pickup_zonetrip_line
0.6POINT (-73.964261 40.792384)POINT (-73.955786 40.787794)617733122568486911617733122587885567Upper West Side NorthLINESTRING (-73.964261 40.792384, -73.955786 40.787794)
0.4POINT (-73.950633 40.785838)POINT (-73.948693 40.781558)617733122582380543617733122582642687East Harlem SouthLINESTRING (-73.950633 40.785838, -73.948693 40.781558)
1.0POINT (-73.953601 40.790798)POINT (-73.966704 40.788905)617733122648178687617733122560622591East Harlem SouthLINESTRING (-73.953601 40.790798, -73.966704 40.788905)
1.3POINT (-73.862603 40.769665)POINT (-73.862603 40.769665)617733124072407039617733124072407039LaGuardia AirportLINESTRING (-73.862603 40.769665, -73.862603 40.769665)
1.15POINT (-73.949988 40.780458)POINT (-73.957972 40.766948)617733122586050559617733123838050303Yorkville WestLINESTRING (-73.949988 40.780458, -73.957972 40.766948)
2.01POINT (-73.959122 40.77728)POINT (-73.969067 40.753577)617733122574778367617733123867934719Upper East Side NorthLINESTRING (-73.959122 40.77728, -73.969067 40.753577)
1.56POINT (-73.945795 40.77369)POINT (-73.96541 40.765965)617733122584739839617733123874226175Yorkville EastLINESTRING (-73.945795 40.77369, -73.96541 40.765965)
8.2POINT (-73.870503 40.773508)POINT (-73.974395 40.749617)617733124388552703617733123868721151LaGuardia AirportLINESTRING (-73.870503 40.773508, -73.974395 40.749617)
2.94POINT (-73.955023 40.769212)POINT (-73.982877 40.750892)617733122576351231617733123808690175Lenox Hill WestLINESTRING (-73.955023 40.769212, -73.982877 40.750892)
0.8POINT (-73.958105 40.77897)POINT (-73.950742 40.775888)617733122573991935617733122585264127Upper East Side NorthLINESTRING (-73.958105 40.77897, -73.950742 40.775888)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 0.6, + "POINT (-73.964261 40.792384)", + "POINT (-73.955786 40.787794)", + 617733122568486911, + 617733122587885567, + "Upper West Side North", + "LINESTRING (-73.964261 40.792384, -73.955786 40.787794)" + ], + [ + 0.4, + "POINT (-73.950633 40.785838)", + "POINT (-73.948693 40.781558)", + 617733122582380543, + 617733122582642687, + "East Harlem South", + "LINESTRING (-73.950633 40.785838, -73.948693 40.781558)" + ], + [ + 1.0, + "POINT (-73.953601 40.790798)", + "POINT (-73.966704 40.788905)", + 617733122648178687, + 617733122560622591, + "East Harlem South", + "LINESTRING (-73.953601 40.790798, -73.966704 40.788905)" + ], + [ + 1.3, + "POINT (-73.862603 40.769665)", + "POINT (-73.862603 40.769665)", + 617733124072407039, + 617733124072407039, + "LaGuardia Airport", + "LINESTRING (-73.862603 40.769665, -73.862603 40.769665)" + ], + [ + 1.15, + "POINT (-73.949988 40.780458)", + "POINT (-73.957972 40.766948)", + 617733122586050559, + 617733123838050303, + "Yorkville West", + "LINESTRING (-73.949988 40.780458, -73.957972 40.766948)" + ], + [ + 2.01, + "POINT (-73.959122 40.77728)", + "POINT (-73.969067 40.753577)", + 617733122574778367, + 617733123867934719, + "Upper East Side North", + "LINESTRING (-73.959122 40.77728, -73.969067 40.753577)" + ], + [ + 1.56, + "POINT (-73.945795 40.77369)", + "POINT (-73.96541 40.765965)", + 617733122584739839, + 617733123874226175, + "Yorkville East", + "LINESTRING (-73.945795 40.77369, -73.96541 40.765965)" + ], + [ + 8.2, + "POINT (-73.870503 40.773508)", + "POINT (-73.974395 40.749617)", + 617733124388552703, + 617733123868721151, + "LaGuardia Airport", + "LINESTRING (-73.870503 40.773508, -73.974395 40.749617)" + ], + [ + 2.94, + "POINT (-73.955023 40.769212)", + "POINT (-73.982877 40.750892)", + 617733122576351231, + 617733123808690175, + "Lenox Hill West", + "LINESTRING (-73.955023 40.769212, -73.982877 40.750892)" + ], + [ + 0.8, + "POINT (-73.958105 40.77897)", + "POINT (-73.950742 40.775888)", + 617733122573991935, + 617733122585264127, + "Upper East Side North", + "LINESTRING (-73.958105 40.77897, -73.950742 40.775888)" + ] + ], + "datasetInfos": [ + { + "name": "pickupNeighbourhoods", + "schema": { + "fields": [ + { + "metadata": {}, + "name": "pickup_zone", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "mosaic_index", + "nullable": true, + "type": { + "fields": [ + { + "metadata": {}, + "name": "is_core", + "nullable": true, + "type": "boolean" + }, + { + "metadata": {}, + "name": "index_id", + "nullable": true, + "type": "long" + }, + { + "metadata": {}, + "name": "wkb", + "nullable": true, + "type": "binary" + } + ], + "type": "struct" + } + } + ], + "type": "struct" + }, + "tableIdentifier": null, + "typeStr": "org.apache.spark.sql.DataFrame" + }, + { + "name": "withPickupZone", + "schema": { + "fields": [ + { + "metadata": {}, + "name": "trip_distance", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "pickup_geom", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "dropoff_geom", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "pickup_h3", + "nullable": true, + "type": "long" + }, + { + "metadata": {}, + "name": "dropoff_h3", + "nullable": true, + "type": "long" + }, + { + "metadata": {}, + "name": "pickup_zone", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "trip_line", + "nullable": true, + "type": "string" + } + ], + "type": "struct" + }, + "tableIdentifier": null, + "typeStr": "org.apache.spark.sql.DataFrame" + } + ], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "dropoff_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "pickup_zone", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "trip_line", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "val pickupNeighbourhoods = neighbourhoodsWithIndex.select(col(\"properties.zone\").alias(\"pickup_zone\"), col(\"mosaic_index\"))\n", + "\n", + "val withPickupZone = \n", + " tripsWithIndex.join(\n", + " pickupNeighbourhoods,\n", + " tripsWithIndex.col(\"pickup_h3\") === pickupNeighbourhoods.col(\"mosaic_index.index_id\")\n", + " ).where(\n", + " // If the borough is a core chip (the chip is fully contained within the geometry), then we do not need\n", + " // to perform any intersection, because any point matching the same index will certainly be contained in\n", + " // the borough. Otherwise we need to perform an st_contains operation on the chip geometry.\n", + " col(\"mosaic_index.is_core\") || st_contains(col(\"mosaic_index.wkb\"), col(\"pickup_geom\"))\n", + " ).select(\n", + " \"trip_distance\", \"pickup_geom\", \"dropoff_geom\", \"pickup_h3\", \"dropoff_h3\", \"pickup_zone\", \"trip_line\"\n", + " )\n", + "\n", + "display(withPickupZone.limit(10)) // <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "db947fdf-b039-4675-838f-0d16fdd4516f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> We can easily perform a similar join for the drop off location. __Note: in this case using `withPickupZone` from above as the left sid of the join.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "8edd850b-84f1-4c37-bef8-aac1836dd779", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
trip_distancepickup_geompickup_zonedropoff_geomdropoff_zonepickup_h3dropoff_h3trip_line
0.6POINT (-73.964261 40.792384)Upper West Side NorthPOINT (-73.955786 40.787794)Upper East Side North617733122568486911617733122587885567LINESTRING (-73.964261 40.792384, -73.955786 40.787794)
0.4POINT (-73.950633 40.785838)East Harlem SouthPOINT (-73.948693 40.781558)Yorkville West617733122582380543617733122582642687LINESTRING (-73.950633 40.785838, -73.948693 40.781558)
1.0POINT (-73.953601 40.790798)East Harlem SouthPOINT (-73.966704 40.788905)Upper West Side North617733122648178687617733122560622591LINESTRING (-73.953601 40.790798, -73.966704 40.788905)
1.3POINT (-73.862603 40.769665)LaGuardia AirportPOINT (-73.862603 40.769665)LaGuardia Airport617733124072407039617733124072407039LINESTRING (-73.862603 40.769665, -73.862603 40.769665)
1.15POINT (-73.949988 40.780458)Yorkville WestPOINT (-73.957972 40.766948)Lenox Hill West617733122586050559617733123838050303LINESTRING (-73.949988 40.780458, -73.957972 40.766948)
2.01POINT (-73.959122 40.77728)Upper East Side NorthPOINT (-73.969067 40.753577)UN/Turtle Bay South617733122574778367617733123867934719LINESTRING (-73.959122 40.77728, -73.969067 40.753577)
1.56POINT (-73.945795 40.77369)Yorkville EastPOINT (-73.96541 40.765965)Upper East Side South617733122584739839617733123874226175LINESTRING (-73.945795 40.77369, -73.96541 40.765965)
8.2POINT (-73.870503 40.773508)LaGuardia AirportPOINT (-73.974395 40.749617)UN/Turtle Bay South617733124388552703617733123868721151LINESTRING (-73.870503 40.773508, -73.974395 40.749617)
2.94POINT (-73.955023 40.769212)Lenox Hill WestPOINT (-73.982877 40.750892)Midtown South617733122576351231617733123808690175LINESTRING (-73.955023 40.769212, -73.982877 40.750892)
0.8POINT (-73.958105 40.77897)Upper East Side NorthPOINT (-73.950742 40.775888)Yorkville West617733122573991935617733122585264127LINESTRING (-73.958105 40.77897, -73.950742 40.775888)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 0.6, + "POINT (-73.964261 40.792384)", + "Upper West Side North", + "POINT (-73.955786 40.787794)", + "Upper East Side North", + 617733122568486911, + 617733122587885567, + "LINESTRING (-73.964261 40.792384, -73.955786 40.787794)" + ], + [ + 0.4, + "POINT (-73.950633 40.785838)", + "East Harlem South", + "POINT (-73.948693 40.781558)", + "Yorkville West", + 617733122582380543, + 617733122582642687, + "LINESTRING (-73.950633 40.785838, -73.948693 40.781558)" + ], + [ + 1.0, + "POINT (-73.953601 40.790798)", + "East Harlem South", + "POINT (-73.966704 40.788905)", + "Upper West Side North", + 617733122648178687, + 617733122560622591, + "LINESTRING (-73.953601 40.790798, -73.966704 40.788905)" + ], + [ + 1.3, + "POINT (-73.862603 40.769665)", + "LaGuardia Airport", + "POINT (-73.862603 40.769665)", + "LaGuardia Airport", + 617733124072407039, + 617733124072407039, + "LINESTRING (-73.862603 40.769665, -73.862603 40.769665)" + ], + [ + 1.15, + "POINT (-73.949988 40.780458)", + "Yorkville West", + "POINT (-73.957972 40.766948)", + "Lenox Hill West", + 617733122586050559, + 617733123838050303, + "LINESTRING (-73.949988 40.780458, -73.957972 40.766948)" + ], + [ + 2.01, + "POINT (-73.959122 40.77728)", + "Upper East Side North", + "POINT (-73.969067 40.753577)", + "UN/Turtle Bay South", + 617733122574778367, + 617733123867934719, + "LINESTRING (-73.959122 40.77728, -73.969067 40.753577)" + ], + [ + 1.56, + "POINT (-73.945795 40.77369)", + "Yorkville East", + "POINT (-73.96541 40.765965)", + "Upper East Side South", + 617733122584739839, + 617733123874226175, + "LINESTRING (-73.945795 40.77369, -73.96541 40.765965)" + ], + [ + 8.2, + "POINT (-73.870503 40.773508)", + "LaGuardia Airport", + "POINT (-73.974395 40.749617)", + "UN/Turtle Bay South", + 617733124388552703, + 617733123868721151, + "LINESTRING (-73.870503 40.773508, -73.974395 40.749617)" + ], + [ + 2.94, + "POINT (-73.955023 40.769212)", + "Lenox Hill West", + "POINT (-73.982877 40.750892)", + "Midtown South", + 617733122576351231, + 617733123808690175, + "LINESTRING (-73.955023 40.769212, -73.982877 40.750892)" + ], + [ + 0.8, + "POINT (-73.958105 40.77897)", + "Upper East Side North", + "POINT (-73.950742 40.775888)", + "Yorkville West", + 617733122573991935, + 617733122585264127, + "LINESTRING (-73.958105 40.77897, -73.950742 40.775888)" + ] + ], + "datasetInfos": [ + { + "name": "dropoffNeighbourhoods", + "schema": { + "fields": [ + { + "metadata": {}, + "name": "dropoff_zone", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "mosaic_index", + "nullable": true, + "type": { + "fields": [ + { + "metadata": {}, + "name": "is_core", + "nullable": true, + "type": "boolean" + }, + { + "metadata": {}, + "name": "index_id", + "nullable": true, + "type": "long" + }, + { + "metadata": {}, + "name": "wkb", + "nullable": true, + "type": "binary" + } + ], + "type": "struct" + } + } + ], + "type": "struct" + }, + "tableIdentifier": null, + "typeStr": "org.apache.spark.sql.DataFrame" + }, + { + "name": "withDropoffZone", + "schema": { + "fields": [ + { + "metadata": {}, + "name": "trip_distance", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "pickup_geom", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "pickup_zone", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "dropoff_geom", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "dropoff_zone", + "nullable": true, + "type": "string" + }, + { + "metadata": {}, + "name": "pickup_h3", + "nullable": true, + "type": "long" + }, + { + "metadata": {}, + "name": "dropoff_h3", + "nullable": true, + "type": "long" + }, + { + "metadata": {}, + "name": "trip_line", + "nullable": true, + "type": "string" + } + ], + "type": "struct" + }, + "tableIdentifier": null, + "typeStr": "org.apache.spark.sql.DataFrame" + } + ], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_zone", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_zone", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "dropoff_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "trip_line", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "val dropoffNeighbourhoods = neighbourhoodsWithIndex.select(col(\"properties.zone\").alias(\"dropoff_zone\"), col(\"mosaic_index\"))\n", + "\n", + "val withDropoffZone = \n", + " withPickupZone.join(\n", + " dropoffNeighbourhoods,\n", + " withPickupZone.col(\"dropoff_h3\") === dropoffNeighbourhoods.col(\"mosaic_index.index_id\")\n", + " ).where(\n", + " col(\"mosaic_index.is_core\") || st_contains(col(\"mosaic_index.wkb\"), col(\"dropoff_geom\"))\n", + " ).select(\n", + " \"trip_distance\", \"pickup_geom\", \"pickup_zone\", \"dropoff_geom\", \"dropoff_zone\", \"pickup_h3\", \"dropoff_h3\"\n", + " )\n", + " .withColumn(\"trip_line\", st_astext(st_makeline(array(st_geomfromwkt(col(\"pickup_geom\")), st_geomfromwkt(col(\"dropoff_geom\"))))))\n", + "\n", + "display(withDropoffZone.limit(10)) // <- limiting for ipynb only" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "30d4507b-7189-455e-9a4e-681d2f4714ac", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Visualise the results in Kepler\n", + "\n", + "> Mosaic abstracts interaction with Kepler in python through the use of the `%%mosaic_kepler` magic. When python is not the notebook language, you can prepend `%python` before the magic to make the switch." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "17c9cbeb-f411-4b2d-94d7-6737aaf1e1c4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Here is the initial rendering with trip lines._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "81d92d32-c979-4dd8-9e7b-1a19d2507f13", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d331fd71-d383-485e-bb6f-6bcd2302dae7", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Here is with trip lines off and some other adjustments._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4c1c94de-97bb-41e3-abd2-955b6ea3effd", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e1311242-147c-461e-9689-e10e02bd66e8", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results. Hint: you can toggle layers on/off and adjust properties._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0a093833-f267-4194-b06e-5575001727d2", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# withDropoffZone \"pickup_h3\" \"h3\" 5000" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c1466346-8537-4e15-9afc-54056129af5a", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Databricks Lakehouse can read / write most any data format\n", + "\n", + "> Here are [built-in](https://docs.databricks.com/en/external-data/index.html) formats as well as Mosaic [readers](https://databrickslabs.github.io/mosaic/api/api.html). __Note: best performance with Delta Lake format__, ref [Databricks](https://docs.databricks.com/en/delta/index.html) and [OSS](https://docs.delta.io/latest/index.html) docs for Delta Lake. Beyond built-in formats, Databricks is a platform on which you can install a wide variety of libraries, e.g. [1](https://docs.databricks.com/en/libraries/index.html#python-environment-management) | [2](https://docs.databricks.com/en/compute/compatibility.html) | [3](https://docs.databricks.com/en/init-scripts/index.html).\n", + "\n", + "Example of [reading](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameReader.html?highlight=read#pyspark.sql.DataFrameReader) and [writing](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameWriter.html?highlight=pyspark%20sql%20dataframe%20writer#pyspark.sql.DataFrameWriter) a Spark DataFrame with Delta Lake format.\n", + "\n", + "```\n", + "# - `write.format(\"delta\")` is default in Databricks\n", + "# - can save to a specified path in the Lakehouse\n", + "# - can save as a table in the Databricks Metastore\n", + "df.write.save(\"\")\n", + "df.write.saveAsTable(\"\")\n", + "```\n", + "\n", + "Example of loading a Delta Lake Table as a Spark DataFrame.\n", + "\n", + "```\n", + "# - `read.format(\"delta\")` is default in Databricks\n", + "# - can load a specified path in the Lakehouse\n", + "# - can load a table in the Databricks Metastore\n", + "df.read.load(\"\")\n", + "df.table(\"\")\n", + "```\n", + "\n", + "More on [Unity Catalog](https://docs.databricks.com/en/data-governance/unity-catalog/index.html) in Databricks Lakehouse for Governing [Tables](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#tables) and [Volumes](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#volumes)." + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 1148550101154077, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "QuickstartNotebook", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/scala/QuickstartNotebook.scala b/notebooks/examples/scala/QuickstartNotebook.scala deleted file mode 100644 index e1b1db134..000000000 --- a/notebooks/examples/scala/QuickstartNotebook.scala +++ /dev/null @@ -1,267 +0,0 @@ -// Databricks notebook source -// MAGIC %md -// MAGIC ## Setup NYC taxi zones -// MAGIC In order to setup the data please run the notebook available at "../../data/DownloadNYCTaxiZones".
-// MAGIC DownloadNYCTaxiZones notebook will make sure we have New York City Taxi zone shapes available in our environment. - -// COMMAND ---------- - -val user_name = dbutils.notebook.getContext.userName.get - -val raw_path = s"dbfs:/tmp/mosaic/$user_name" -val raw_taxi_zones_path = s"$raw_path/taxi_zones" - -print(s"The raw data is stored in $raw_path") - -// COMMAND ---------- - -// MAGIC %md -// MAGIC ## Enable Mosaic in the notebook -// MAGIC Mosaic requires Databricks Runtime (DBR) version 10.0 or higher (11.2 with photon or higher is recommended).
-// MAGIC To get started, you'll need to attach the JAR to your cluster and import instances as in the cell below. - -// COMMAND ---------- - -import com.databricks.labs.mosaic.functions.MosaicContext -import com.databricks.labs.mosaic.H3 -import com.databricks.labs.mosaic.JTS - -val mosaicContext = MosaicContext.build(H3, JTS) -import mosaicContext.functions._ -import org.apache.spark.sql.functions._ - -// COMMAND ---------- - -// MAGIC %md ## Read polygons from GeoJson - -// COMMAND ---------- - -// MAGIC %md -// MAGIC With the functionality Mosaic brings we can easily load GeoJSON files using spark.
-// MAGIC In the past this required GeoPandas in python and conversion to spark dataframe.
- -// COMMAND ---------- - -val neighbourhoods = ( - spark.read - .option("multiline", "true") - .format("json") - .load(raw_taxi_zones_path) - .select(col("type"), explode(col("features")).alias("feature")) - .select(col("type"), col("feature.properties").alias("properties"), to_json(col("feature.geometry")).alias("json_geometry")) - .withColumn("geometry", st_aswkt(st_geomfromgeojson(col("json_geometry")))) -) - -display( - neighbourhoods -) - -// COMMAND ---------- - -// MAGIC %md -// MAGIC ## Compute some basic geometry attributes - -// COMMAND ---------- - -// MAGIC %md -// MAGIC Mosaic provides a number of functions for extracting the properties of geometries. Here are some that are relevant to Polygon geometries: - -// COMMAND ---------- - -display( - neighbourhoods - .withColumn("calculatedArea", st_area(col("geometry"))) - .withColumn("calculatedLength", st_length(col("geometry"))) - // Note: The unit of measure of the area and length depends on the CRS used. - // For GPS locations it will be square radians and radians - .select("geometry", "calculatedArea", "calculatedLength") -) - -// COMMAND ---------- - -// MAGIC %md -// MAGIC ## Read points data - -// COMMAND ---------- - -// MAGIC %md -// MAGIC We will load some Taxi trips data to represent point data.
-// MAGIC We already loaded some shapes representing polygons that correspond to NYC neighbourhoods.
- -// COMMAND ---------- - -val tripsTable = spark.table("delta.`/databricks-datasets/nyctaxi/tables/nyctaxi_yellow`") - -// COMMAND ---------- - -val trips = tripsTable - .drop("vendorId", "rateCodeId", "store_and_fwd_flag", "payment_type") - .withColumn("pickup_geom", st_astext(st_point(col("pickup_longitude"), col("pickup_latitude")))) - .withColumn("dropoff_geom", st_astext(st_point(col("dropoff_longitude"), col("dropoff_latitude")))) - -// COMMAND ---------- - -display(trips.select("pickup_geom", "dropoff_geom")) - -// COMMAND ---------- - -// MAGIC %md -// MAGIC ## Spatial Joins - -// COMMAND ---------- - -// MAGIC %md -// MAGIC We can use Mosaic to perform spatial joins both with and without Mosaic indexing strategies.
-// MAGIC Indexing is very important when handling very different geometries both in size and in shape (ie. number of vertices).
- -// COMMAND ---------- - -// MAGIC %md -// MAGIC ### Getting the optimal resolution - -// COMMAND ---------- - -// MAGIC %md -// MAGIC We can use Mosaic functionality to identify how to best index our data based on the data inside the specific dataframe.
-// MAGIC Selecting an apropriate indexing resolution can have a considerable impact on the performance.
- -// COMMAND ---------- - -import com.databricks.labs.mosaic.sql.MosaicFrame - -val mosaicFrame = MosaicFrame(neighbourhoods) - .setGeometryColumn("geometry") - -val optimalResolution = mosaicFrame.getOptimalResolution(0.75) - -println(s"Optimal resolution is $optimalResolution") - -// COMMAND ---------- - -// MAGIC %md -// MAGIC Not every resolution will yield performance improvements.
-// MAGIC By a rule of thumb it is always better to under-index than over-index - if not sure select a lower resolution.
-// MAGIC Higher resolutions are needed when we have very imbalanced geometries with respect to their size or with respect to the number of vertices.
-// MAGIC In such case indexing with more indices will considerably increase the parallel nature of the operations.
-// MAGIC You can think of Mosaic as a way to partition an overly complex row into multiple rows that have a balanced amount of computation each. - -// COMMAND ---------- - -display( - mosaicFrame.analyzer.getResolutionMetrics() -) - -// COMMAND ---------- - -// MAGIC %md -// MAGIC ### Indexing using the optimal resolution - -// COMMAND ---------- - -// MAGIC %md -// MAGIC We will use mosaic sql functions to index our points data.
-// MAGIC Here we will use resolution 9, index resolution depends on the dataset in use. - -// COMMAND ---------- - -val tripsWithIndex = trips - .withColumn("pickup_h3", grid_pointascellid(col("pickup_geom"), lit(optimalResolution))) - .withColumn("dropoff_h3", grid_pointascellid(col("dropoff_geom"), lit(optimalResolution))) - -display(tripsWithIndex) - -// COMMAND ---------- - -// MAGIC %md -// MAGIC We will also index our neighbourhoods using a built in generator function. - -// COMMAND ---------- - -val neighbourhoodsWithIndex = neighbourhoods - // We break down the original geometry in multiple smaller mosaic chips, each with its - // own index - .withColumn("mosaic_index", grid_tessellateexplode(col("geometry"), lit(optimalResolution))) - // We don't need the original geometry any more, since we have broken it down into - // Smaller mosaic chips. - .drop("json_geometry", "geometry") - -display(neighbourhoodsWithIndex) - -// COMMAND ---------- - -// MAGIC %md -// MAGIC ### Performing the spatial join - -// COMMAND ---------- - -// MAGIC %md -// MAGIC We can now do spatial joins to both pickup and drop off zones based on geolocations in our datasets. - -// COMMAND ---------- - -val pickupNeighbourhoods = neighbourhoodsWithIndex.select(col("properties.zone").alias("pickup_zone"), col("mosaic_index")) - -val withPickupZone = - tripsWithIndex.join( - pickupNeighbourhoods, - tripsWithIndex.col("pickup_h3") === pickupNeighbourhoods.col("mosaic_index.index_id") - ).where( - // If the borough is a core chip (the chip is fully contained within the geometry), then we do not need - // to perform any intersection, because any point matching the same index will certainly be contained in - // the borough. Otherwise we need to perform an st_contains operation on the chip geometry. - col("mosaic_index.is_core") || st_contains(col("mosaic_index.wkb"), col("pickup_geom")) - ).select( - "trip_distance", "pickup_geom", "pickup_zone", "dropoff_geom", "pickup_h3", "dropoff_h3" - ) - -display(withPickupZone) - -// COMMAND ---------- - -// MAGIC %md -// MAGIC We can easily perform a similar join for the drop off location. - -// COMMAND ---------- - -val dropoffNeighbourhoods = neighbourhoodsWithIndex.select(col("properties.zone").alias("dropoff_zone"), col("mosaic_index")) - -val withDropoffZone = - withPickupZone.join( - dropoffNeighbourhoods, - withPickupZone.col("dropoff_h3") === dropoffNeighbourhoods.col("mosaic_index.index_id") - ).where( - col("mosaic_index.is_core") || st_contains(col("mosaic_index.wkb"), col("dropoff_geom")) - ).select( - "trip_distance", "pickup_geom", "pickup_zone", "dropoff_geom", "dropoff_zone", "pickup_h3", "dropoff_h3" - ) - .withColumn("trip_line", st_astext(st_makeline(array(st_geomfromwkt(col("pickup_geom")), st_geomfromwkt(col("dropoff_geom")))))) - -display(withDropoffZone) - -// COMMAND ---------- - -withDropoffZone.createOrReplaceTempView("withDropoffZone") - -// COMMAND ---------- - -// MAGIC %md -// MAGIC ## Visualise the results in Kepler - -// COMMAND ---------- - -// MAGIC %md -// MAGIC For visualisation there simply aren't good options in scala.
-// MAGIC Luckily in our notebooks you can easily switch to python just for UI.
-// MAGIC Mosaic abstracts interaction with Kepler in python. - -// COMMAND ---------- - -// MAGIC %python -// MAGIC from mosaic import enable_mosaic -// MAGIC enable_mosaic(spark, dbutils) - -// COMMAND ---------- - -// MAGIC %python -// MAGIC %%mosaic_kepler -// MAGIC "withDropoffZone" "pickup_h3" "h3" 5000 diff --git a/notebooks/examples/scala/README.md b/notebooks/examples/scala/README.md new file mode 100644 index 000000000..d40a00d29 --- /dev/null +++ b/notebooks/examples/scala/README.md @@ -0,0 +1,3 @@ +# Scala Examples + +> __Note: `ipynb` files can be previewed in GitHub and can also be imported into Databricks, more [here](https://docs.databricks.com/en/notebooks/notebook-export-import.html).__ diff --git a/notebooks/examples/sql/MosaicAndSedona.ipynb b/notebooks/examples/sql/MosaicAndSedona.ipynb new file mode 100644 index 000000000..eb933065b --- /dev/null +++ b/notebooks/examples/sql/MosaicAndSedona.ipynb @@ -0,0 +1,1534 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "bf98136c-9276-4388-8eef-b567621fe1a4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Mosaic & Sedona\n", + "\n", + "> You can combine the usage of [Mosaic](https://databrickslabs.github.io/mosaic/index.html) with other geospatial libraries. In this example we combine it with [Sedona](https://sedona.apache.org).\n", + "\n", + "## Setup\n", + "\n", + "This notebook will run if you have both Mosaic and Sedona installed on your cluster as described below.\n", + "\n", + "### Install Sedona\n", + "\n", + "To install Sedona, follow the [official Sedona instructions](https://sedona.apache.org/1.5.0/setup/databricks/).\n", + "\n", + "E.g. Add the following maven coordinates to a non-photon cluster [[1](https://docs.databricks.com/en/libraries/package-repositories.html)]. This is showing DBR 12.2 LTS. \n", + "\n", + "```\n", + "org.apache.sedona:sedona-spark-shaded-3.0_2.12:1.5.0\n", + "org.datasyslab:geotools-wrapper:1.5.0-28.2\n", + "```\n", + "\n", + "### Install Mosaic\n", + "\n", + "Download Mosaic JAR to your local machine (e.g. from [here](https://github.com/databrickslabs/mosaic/releases/download/v_0.3.12/mosaic-0.3.12-jar-with-dependencies.jar) for 0.3.12) and then UPLOAD to your cluster [[1](https://docs.databricks.com/en/libraries/cluster-libraries.html#install-a-library-on-a-cluster)]. \n", + "\n", + "### Notes\n", + "\n", + "* This is for [SPARK SQL](https://www.databricks.com/glossary/what-is-spark-sql#:~:text=Spark%20SQL%20is%20a%20Spark,on%20existing%20deployments%20and%20data.) which is different from [DBSQL](https://www.databricks.com/product/databricks-sql); __The best way to combine is to not register mosaic SQL functions since Sedona is primarily SQL.__\n", + "* See instructions for `SedonaContext.create(spark)` [[1](https://sedona.apache.org/1.5.0/tutorial/sql/?h=sedonacontext#initiate-sedonacontext)]. \n", + "* And, Sedona identifies that it might have issues if executed on a [Photon](https://www.databricks.com/product/photon) cluster; again this example is showing DBR 12.2 LTS on the Mosaic 0.3 series.\n", + "\n", + "--- \n", + " __Last Update__ 01 DEC 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "27dd2429-1135-457b-912f-931e7aaa447e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Prior to Setup\n", + "\n", + "> Notice that even in DBR 12.2 LTS, Databricks initially has gated functions, meaning they will not execute on the runtime but are there. However, we will see that after registering functions, e.g. from Sedona, those then become available (in DBR)." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "80dcd1b7-5f05-47a9-a5e5-f8361811cec4", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
function
st_area
st_astext
st_geogfromtext
st_geogfromwkt
st_geometrytype
st_geomfromtext
st_geomfromwkt
st_isempty
st_length
st_ndims
st_npoints
st_point
st_setsrid
st_srid
st_xmax
st_xmin
st_ymax
st_ymin
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "st_area" + ], + [ + "st_astext" + ], + [ + "st_geogfromtext" + ], + [ + "st_geogfromwkt" + ], + [ + "st_geometrytype" + ], + [ + "st_geomfromtext" + ], + [ + "st_geomfromwkt" + ], + [ + "st_isempty" + ], + [ + "st_length" + ], + [ + "st_ndims" + ], + [ + "st_npoints" + ], + [ + "st_point" + ], + [ + "st_setsrid" + ], + [ + "st_srid" + ], + [ + "st_xmax" + ], + [ + "st_xmin" + ], + [ + "st_ymax" + ], + [ + "st_ymin" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "function", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql \n", + "-- before we do anything\n", + "-- have gated product functions\n", + "show system functions like 'st_*'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "b7cac536-773b-47a4-90ce-5a2c77bdca8e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_The following exception will be thrown if you attempt to execute the gated functions:_\n", + "\n", + "```\n", + "AnalysisException: [DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE] Cannot resolve \"st_area(POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)))\" due to data type mismatch: parameter 1 requires (\"GEOMETRY\" or \"GEOGRAPHY\") type, however, \"POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))\" is of \"STRING\" type.; line 1 pos 7;\n", + "'Project [unresolvedalias(st_area(POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))), None)]\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "85cd6a7a-dd6d-4cf6-8f65-0ebf640c2ab2", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "%sql \n", + "-- assumes you are in DBR 12.2 LTS\n", + "-- so this will not execute\n", + "-- uncomment to verify\n", + "-- select st_area('POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))')" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "a4a24590-8542-4a71-a1c9-03690da5316e", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
function_desc
Function: st_area
Class: com.databricks.sql.catalyst.expressions.st.ST_Area
Usage: st_area(geo) - Returns the area of the input GEOGRAPHY or GEOMETRY value.
Extended Usage:\n", + " Examples:\n", + " \n", + " Since: 3.3.0\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "Function: st_area" + ], + [ + "Class: com.databricks.sql.catalyst.expressions.st.ST_Area" + ], + [ + "Usage: st_area(geo) - Returns the area of the input GEOGRAPHY or GEOMETRY value." + ], + [ + "Extended Usage:\n Examples:\n \n Since: 3.3.0\n" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "function_desc", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql \n", + "-- notice, e.g. these are initially gated product functions\n", + "describe function extended st_area" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "46dcda8a-cd24-4016-acf9-6ede54978d2f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup\n", + "\n", + "> We are installing Mosaic without SQL functions registered (via Scala) and are installing Sedona SQL as normal." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c91dd7bf-319c-489c-9715-6c512f027d64", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "
import org.apache.spark.sql.functions._\n", + "import com.databricks.labs.mosaic.functions.MosaicContext\n", + "import com.databricks.labs.mosaic.H3\n", + "import com.databricks.labs.mosaic.JTS\n", + "mosaicContext: com.databricks.labs.mosaic.functions.MosaicContext = com.databricks.labs.mosaic.functions.MosaicContext@70e1f779\n", + "import mosaicContext.functions._\n", + "import org.apache.sedona.spark.SedonaContext\n", + "sedona: org.apache.spark.sql.SparkSession = org.apache.spark.sql.SparkSession@6daae4a9\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "
import org.apache.spark.sql.functions._\nimport com.databricks.labs.mosaic.functions.MosaicContext\nimport com.databricks.labs.mosaic.H3\nimport com.databricks.labs.mosaic.JTS\nmosaicContext: com.databricks.labs.mosaic.functions.MosaicContext = com.databricks.labs.mosaic.functions.MosaicContext@70e1f779\nimport mosaicContext.functions._\nimport org.apache.sedona.spark.SedonaContext\nsedona: org.apache.spark.sql.SparkSession = org.apache.spark.sql.SparkSession@6daae4a9\n
", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "type": "html" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "\n", + "// -- spark functions\n", + "import org.apache.spark.sql.functions._\n", + "\n", + "// -- mosaic functions\n", + "import com.databricks.labs.mosaic.functions.MosaicContext\n", + "import com.databricks.labs.mosaic.H3\n", + "import com.databricks.labs.mosaic.JTS\n", + "\n", + "val mosaicContext = MosaicContext.build(H3, JTS)\n", + "import mosaicContext.functions._\n", + "\n", + "// ! don't register SQL functions !\n", + "// - this allows sedona to be the main spatial SQL provider\n", + "//mosaicContext.register()\n", + "\n", + "// -- sedona functions\n", + "import org.apache.sedona.spark.SedonaContext\n", + "val sedona = SedonaContext.create(spark)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "a446841d-9ce1-4b0c-97e8-b705ab06caee", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Now when we list user functions, we see all the Sedona provided ones._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0394a8a2-dcfd-49c0-a2df-85ecd0272029", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
function
hive_metastore.default.st_geohash
st_3ddistance
st_addpoint
st_affine
st_angle
st_area
st_areaspheroid
st_asbinary
st_asewkb
st_asewkt
st_asgeojson
st_asgml
st_askml
st_astext
st_azimuth
st_boundary
st_boundingdiagonal
st_buffer
st_buildarea
st_centroid
st_closestpoint
st_collect
st_collectionextract
st_concavehull
st_contains
st_convexhull
st_coorddim
st_coveredby
st_covers
st_crosses
st_degrees
st_difference
st_dimension
st_disjoint
st_distance
st_distancesphere
st_distancespheroid
st_dump
st_dumppoints
st_endpoint
st_envelope
st_envelope_aggr
st_equals
st_exteriorring
st_flipcoordinates
st_force3d
st_force_2d
st_frechetdistance
st_geogfromtext
st_geogfromwkt
st_geohash
st_geometricmedian
st_geometryn
st_geometrytype
st_geomfromewkt
st_geomfromgeohash
st_geomfromgeojson
st_geomfromgml
st_geomfromkml
st_geomfromtext
st_geomfromwkb
st_geomfromwkt
st_h3celldistance
st_h3cellids
st_h3kring
st_h3togeom
st_hausdorffdistance
st_interiorringn
st_intersection
st_intersection_aggr
st_intersects
st_isclosed
st_iscollection
st_isempty
st_isring
st_issimple
st_isvalid
st_length
st_lengthspheroid
st_linefrommultipoint
st_linefromtext
st_lineinterpolatepoint
st_linemerge
st_linestringfromtext
st_linesubstring
st_makeline
st_makepoint
st_makepolygon
st_makevalid
st_minimumboundingcircle
st_minimumboundingradius
st_mlinefromtext
st_mpolyfromtext
st_multi
st_ndims
st_normalize
st_npoints
st_nrings
st_numgeometries
st_numinteriorrings
st_numpoints
st_orderingequals
st_overlaps
st_point
st_pointfromtext
st_pointn
st_pointonsurface
st_pointz
st_polygon
st_polygonfromenvelope
st_polygonfromtext
st_reduceprecision
st_removepoint
st_reverse
st_s2cellids
st_setpoint
st_setsrid
st_simplifypreservetopology
st_split
st_srid
st_startpoint
st_subdivide
st_subdivideexplode
st_symdifference
st_touches
st_transform
st_translate
st_union
st_union_aggr
st_voronoipolygons
st_within
st_x
st_xmax
st_xmin
st_y
st_ymax
st_ymin
st_z
st_zmax
st_zmin
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "hive_metastore.default.st_geohash" + ], + [ + "st_3ddistance" + ], + [ + "st_addpoint" + ], + [ + "st_affine" + ], + [ + "st_angle" + ], + [ + "st_area" + ], + [ + "st_areaspheroid" + ], + [ + "st_asbinary" + ], + [ + "st_asewkb" + ], + [ + "st_asewkt" + ], + [ + "st_asgeojson" + ], + [ + "st_asgml" + ], + [ + "st_askml" + ], + [ + "st_astext" + ], + [ + "st_azimuth" + ], + [ + "st_boundary" + ], + [ + "st_boundingdiagonal" + ], + [ + "st_buffer" + ], + [ + "st_buildarea" + ], + [ + "st_centroid" + ], + [ + "st_closestpoint" + ], + [ + "st_collect" + ], + [ + "st_collectionextract" + ], + [ + "st_concavehull" + ], + [ + "st_contains" + ], + [ + "st_convexhull" + ], + [ + "st_coorddim" + ], + [ + "st_coveredby" + ], + [ + "st_covers" + ], + [ + "st_crosses" + ], + [ + "st_degrees" + ], + [ + "st_difference" + ], + [ + "st_dimension" + ], + [ + "st_disjoint" + ], + [ + "st_distance" + ], + [ + "st_distancesphere" + ], + [ + "st_distancespheroid" + ], + [ + "st_dump" + ], + [ + "st_dumppoints" + ], + [ + "st_endpoint" + ], + [ + "st_envelope" + ], + [ + "st_envelope_aggr" + ], + [ + "st_equals" + ], + [ + "st_exteriorring" + ], + [ + "st_flipcoordinates" + ], + [ + "st_force3d" + ], + [ + "st_force_2d" + ], + [ + "st_frechetdistance" + ], + [ + "st_geogfromtext" + ], + [ + "st_geogfromwkt" + ], + [ + "st_geohash" + ], + [ + "st_geometricmedian" + ], + [ + "st_geometryn" + ], + [ + "st_geometrytype" + ], + [ + "st_geomfromewkt" + ], + [ + "st_geomfromgeohash" + ], + [ + "st_geomfromgeojson" + ], + [ + "st_geomfromgml" + ], + [ + "st_geomfromkml" + ], + [ + "st_geomfromtext" + ], + [ + "st_geomfromwkb" + ], + [ + "st_geomfromwkt" + ], + [ + "st_h3celldistance" + ], + [ + "st_h3cellids" + ], + [ + "st_h3kring" + ], + [ + "st_h3togeom" + ], + [ + "st_hausdorffdistance" + ], + [ + "st_interiorringn" + ], + [ + "st_intersection" + ], + [ + "st_intersection_aggr" + ], + [ + "st_intersects" + ], + [ + "st_isclosed" + ], + [ + "st_iscollection" + ], + [ + "st_isempty" + ], + [ + "st_isring" + ], + [ + "st_issimple" + ], + [ + "st_isvalid" + ], + [ + "st_length" + ], + [ + "st_lengthspheroid" + ], + [ + "st_linefrommultipoint" + ], + [ + "st_linefromtext" + ], + [ + "st_lineinterpolatepoint" + ], + [ + "st_linemerge" + ], + [ + "st_linestringfromtext" + ], + [ + "st_linesubstring" + ], + [ + "st_makeline" + ], + [ + "st_makepoint" + ], + [ + "st_makepolygon" + ], + [ + "st_makevalid" + ], + [ + "st_minimumboundingcircle" + ], + [ + "st_minimumboundingradius" + ], + [ + "st_mlinefromtext" + ], + [ + "st_mpolyfromtext" + ], + [ + "st_multi" + ], + [ + "st_ndims" + ], + [ + "st_normalize" + ], + [ + "st_npoints" + ], + [ + "st_nrings" + ], + [ + "st_numgeometries" + ], + [ + "st_numinteriorrings" + ], + [ + "st_numpoints" + ], + [ + "st_orderingequals" + ], + [ + "st_overlaps" + ], + [ + "st_point" + ], + [ + "st_pointfromtext" + ], + [ + "st_pointn" + ], + [ + "st_pointonsurface" + ], + [ + "st_pointz" + ], + [ + "st_polygon" + ], + [ + "st_polygonfromenvelope" + ], + [ + "st_polygonfromtext" + ], + [ + "st_reduceprecision" + ], + [ + "st_removepoint" + ], + [ + "st_reverse" + ], + [ + "st_s2cellids" + ], + [ + "st_setpoint" + ], + [ + "st_setsrid" + ], + [ + "st_simplifypreservetopology" + ], + [ + "st_split" + ], + [ + "st_srid" + ], + [ + "st_startpoint" + ], + [ + "st_subdivide" + ], + [ + "st_subdivideexplode" + ], + [ + "st_symdifference" + ], + [ + "st_touches" + ], + [ + "st_transform" + ], + [ + "st_translate" + ], + [ + "st_union" + ], + [ + "st_union_aggr" + ], + [ + "st_voronoipolygons" + ], + [ + "st_within" + ], + [ + "st_x" + ], + [ + "st_xmax" + ], + [ + "st_xmin" + ], + [ + "st_y" + ], + [ + "st_ymax" + ], + [ + "st_ymin" + ], + [ + "st_z" + ], + [ + "st_zmax" + ], + [ + "st_zmin" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "function", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql \n", + "show user functions like 'st_*'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c87fd220-d78e-402a-9452-e15191128a1b", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Notice that the prior system registered functions have been replaced, e.g. `ST_Area`._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7d5f73c2-d7c1-4e61-bf15-41d51a1d3829", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
function_desc
Function: ST_Area
Class: org.apache.spark.sql.sedona_sql.expressions.ST_Area
Usage: N/A.
Extended Usage:\n", + " No example/argument for ST_Area.\n", + "
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "Function: ST_Area" + ], + [ + "Class: org.apache.spark.sql.sedona_sql.expressions.ST_Area" + ], + [ + "Usage: N/A." + ], + [ + "Extended Usage:\n No example/argument for ST_Area.\n" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "function_desc", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql \n", + "-- notice, e.g. the provided function now are available\n", + "describe function extended st_area" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "1805f461-ecab-4a03-980d-fb403a3a028e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Queries\n", + "\n", + "> Showing how Sedona (registered Spark SQL) and Mosaic (Scala) can co-exist on the same cluster. Not shown here, but the could also be Mosaic Python bindings." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c1e4ac30-daf0-423c-8117-b7c3c4c06e52", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
wkt
POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "wkt", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "CREATE OR REPLACE TEMPORARY VIEW sample AS (\n", + " SELECT 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))' AS wkt\n", + ");\n", + "\n", + "SELECT * FROM sample" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "fbb24b11-f88d-46fb-a365-773d35923704", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Here is a Spark SQL call to use the Sedona functions._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6f44c258-6919-43bc-9b52-a9167ce48078", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
sedona_area
550.0
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 550.0 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "sedona_area", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "SELECT ST_Area(ST_GeomFromText(wkt)) AS sedona_area FROM sample" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3a484604-c4bc-4234-acf0-32994de54554", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Here is Scala call to the same Mosaic-provided `ST_Area` function._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "ccf12e8d-82ff-47d9-ab5e-f64b2c487223", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
mosaic_area
550.0
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 550.0 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "mosaic_area", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "// verify scala functions registered\n", + "display(\n", + " spark\n", + " .table(\"sample\")\n", + " .select(st_area($\"wkt\").as(\"mosaic_area\"))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "6dd1e21d-7a84-4c5e-b5f6-b02831d846b0", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Mosaic + Sedona_\n", + "\n", + "> Showing blending Mosaic calls (in Scala) with Sedona (Spark SQL) calls." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e0602e02-01ec-45cd-8c17-aa30e0d0d969", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
mosaic_areasedona_areawkt
550.0550.0POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 550.0, + 550.0, + "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "mosaic_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "sedona_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "wkt", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%scala\n", + "display(\n", + " spark.table(\"sample\")\n", + " .select(\n", + " st_area($\"wkt\").as(\"mosaic_area\"), // <- mosaic (scala)\n", + " expr(\"ST_Area(ST_GeomFromText(wkt)) AS sedona_area\"), // <- sedona (spark sql)\n", + " $\"wkt\"\n", + " )\n", + ")" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 1148550101113066, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "MosaicAndSedona", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/sql/MosaicAndSedona.sql b/notebooks/examples/sql/MosaicAndSedona.sql deleted file mode 100644 index 40b33167b..000000000 --- a/notebooks/examples/sql/MosaicAndSedona.sql +++ /dev/null @@ -1,56 +0,0 @@ --- Databricks notebook source --- MAGIC %md --- MAGIC # Mosaic & Sedona --- MAGIC --- MAGIC You can combine the usage of Mosaic with other geospatial libraries. --- MAGIC --- MAGIC In this example we combine the use of [Sedona](https://sedona.apache.org) and Mosaic. --- MAGIC --- MAGIC ## Setup --- MAGIC --- MAGIC This notebook will run if you have both Mosaic and Sedona installed on your cluster. --- MAGIC --- MAGIC ### Install sedona --- MAGIC --- MAGIC To install Sedona, follow the [official Sedona instructions](https://sedona.apache.org/1.4.0/setup/databricks). - --- COMMAND ---------- - --- MAGIC %python --- MAGIC # import pyspark.sql.functions as f --- MAGIC # import mosaic as mos --- MAGIC # from sedona.register.geo_registrator import SedonaRegistrator --- MAGIC --- MAGIC # mos.enable_mosaic(spark, dbutils) # Enable Mosaic --- MAGIC # SedonaRegistrator.registerAll(spark) # Register Sedona SQL functions - --- COMMAND ---------- - --- MAGIC %scala --- MAGIC // Register Sedona in the 'default' database --- MAGIC import org.apache.sedona.sql.utils.SedonaSQLRegistrator --- MAGIC SedonaSQLRegistrator.registerAll(spark) --- MAGIC --- MAGIC // Import Mosaic functions --- MAGIC import com.databricks.labs.mosaic.functions.MosaicContext --- MAGIC import com.databricks.labs.mosaic.H3 --- MAGIC import com.databricks.labs.mosaic.JTS --- MAGIC --- MAGIC val mosaicContext = MosaicContext.build(H3, JTS) --- MAGIC import mosaicContext.functions._ --- MAGIC import org.apache.spark.sql.functions._ - --- COMMAND ---------- - --- MAGIC %scala --- MAGIC // Example dataset --- MAGIC spark.createDataFrame(Seq(Tuple1("POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))"))).toDF("wkt").createOrReplaceTempView("sample") - --- COMMAND ---------- - -SELECT - mosaic.ST_Area(wkt) as mosaic_area, -- Mosaic - ST_Area(ST_GeomFromWKT(wkt)) as sedona_area, -- Sedona - ST_FlipCoordinates(ST_GeomFromWKT(wkt)) as sedona_flipped, -- Sedona - wkt -FROM sample diff --git a/notebooks/examples/sql/QuickstartNotebook.ipynb b/notebooks/examples/sql/QuickstartNotebook.ipynb new file mode 100644 index 000000000..a174d3d2f --- /dev/null +++ b/notebooks/examples/sql/QuickstartNotebook.ipynb @@ -0,0 +1,2316 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "db1d4ea7-d138-4740-ac41-74998430b3df", + "showTitle": false, + "title": "" + } + }, + "source": [ + "# Mosaic Quickstart\n", + "\n", + "> Perform a point-in-polygon spatial join between NYC Taxi trips and zones. __Note: this does not get into performance tweaks that are available for scaled joins.__\n", + "\n", + "1. To use Databricks Labs [Mosaic](https://databrickslabs.github.io/mosaic/index.html) library for geospatial data engineering, analysis, and visualization functionality:\n", + " * Install with `%pip install databricks-mosaic`\n", + " * Import and use with the following:\n", + " ```\n", + " import mosaic as mos\n", + " mos.enable_mosaic(spark, dbutils)\n", + " ```\n", + "

\n", + "\n", + "2. To use [KeplerGl](https://kepler.gl/) OSS library for map layer rendering:\n", + " * Already installed with Mosaic, use `%%mosaic_kepler` magic [[Mosaic Docs](https://databrickslabs.github.io/mosaic/usage/kepler.html)]\n", + " * Import with `from keplergl import KeplerGl` to use directly\n", + "\n", + "If you have trouble with Volume access:\n", + "\n", + "* For Mosaic 0.3 series (< DBR 13) - you can copy resources to DBFS as a workaround\n", + "* For Mosaic 0.4 series (DBR 13.3 LTS) - you will need to either copy resources to DBFS or setup for Unity Catalog + Shared Access which will involve your workspace admin. Instructions, as updated, will be [here](https://databrickslabs.github.io/mosaic/usage/install-gdal.html).\n", + "\n", + "--- \n", + " __Last Update__ 01 DEC 2023 [Mosaic 0.3.12]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d6cbd7f0-cfa1-41f9-88dc-dccd355343d4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Install Mosaic\n", + "\n", + "> Mosaic framework is available via pip install and it comes with bindings for Python, SQL, Scala and R. The wheel file coming with pip installation is registering any necessary jars for other language support." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2fb6d01c-9da4-471a-b765-eb4578600eb1", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Python interpreter will be restarted.\nPython interpreter will be restarted.\n" + ] + } + ], + "source": [ + "%pip install \"databricks-mosaic<0.4,>=0.3\" --quiet # <- Mosaic 0.3 series\n", + "# %pip install \"databricks-mosaic<0.5,>=0.4\" --quiet # <- Mosaic 0.4 series (as available)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "3444513e-7349-4159-8dda-c5bff1225a12", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# -- configure AQE for more compute heavy operations\n", + "# - choose option-1 or option-2 below, essential for REPARTITION!\n", + "# spark.conf.set(\"spark.databricks.optimizer.adaptive.enabled\", False) # <- option-1: turn off completely for full control\n", + "spark.conf.set(\"spark.sql.adaptive.coalescePartitions.enabled\", False) # <- option-2: just tweak partition management\n", + "spark.conf.set(\"spark.sql.shuffle.partitions\", 1_024) # <-- default is 200\n", + "\n", + "# -- import databricks + spark functions\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.functions import col, udf\n", + "from pyspark.sql.types import *\n", + "\n", + "# -- setup mosaic\n", + "import mosaic as mos\n", + "\n", + "mos.enable_mosaic(spark, dbutils)\n", + "# mos.enable_gdal(spark) # <- not needed for this example\n", + "\n", + "# --other imports\n", + "import os\n", + "import pathlib\n", + "import requests\n", + "import warnings\n", + "\n", + "warnings.simplefilter(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "9251d814-2e9f-4287-8fd9-769f0bf40c68", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Setup Data" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c1f01df5-a33a-4d99-91f3-3dbe066ecc98", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Initial data stored in '/tmp/mosaic/mjohns@databricks.com'\n" + ] + } + ], + "source": [ + "user_name = dbutils.notebook.entry_point.getDbutils().notebook().getContext().userName().get()\n", + "\n", + "data_dir = f\"/tmp/mosaic/{user_name}\" # <- DBFS\n", + "print(f\"Initial data stored in '{data_dir}'\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "124695f4-6e1d-462c-b0a8-433fa7f7803b", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "none on /local_disk0/.wsfs type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions)\nworkspace on /Workspace type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)\n/: on /dbfs type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)\n/: on /Volumes type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)\n" + ] + } + ], + "source": [ + "%sh mount -l -t fuse" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "293022d3-40c6-4928-946b-7bfe8a6fbb1e", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Download NYC Taxi Zones\n", + "\n", + "> Make sure we have New York City Taxi zone shapes available in our environment." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e3283b3f-4b81-459c-b513-2d782e9acc7f", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "ZONE_DIR_FUSE? '/dbfs/tmp/mosaic/mjohns@databricks.com/taxi_zones'\n" + ] + } + ], + "source": [ + "zone_dir = f\"{data_dir}/taxi_zones\" # <- DBFS\n", + "zone_dir_fuse = f\"/dbfs{zone_dir}\" # <- FUSE\n", + "dbutils.fs.mkdirs(zone_dir)\n", + "\n", + "os.environ['ZONE_DIR_FUSE'] = zone_dir_fuse\n", + "print(f\"ZONE_DIR_FUSE? '{zone_dir_fuse}'\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "941175c3-4142-4254-b47d-c8e813dfe95c", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "...skipping '/dbfs/tmp/mosaic/mjohns@databricks.com/taxi_zones/nyc_taxi_zones.geojson', already exits.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "

pathnamesizemodificationTime
dbfs:/tmp/mosaic/mjohns@databricks.com/taxi_zones/nyc_taxi_zones.geojsonnyc_taxi_zones.geojson38924781701183475000
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "dbfs:/tmp/mosaic/mjohns@databricks.com/taxi_zones/nyc_taxi_zones.geojson", + "nyc_taxi_zones.geojson", + 3892478, + 1701183475000 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "path", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "name", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "size", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "modificationTime", + "type": "\"long\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "zone_url = 'https://data.cityofnewyork.us/api/geospatial/d3c5-ddgc?method=export&format=GeoJSON'\n", + "\n", + "zone_fusepath = pathlib.Path(zone_dir_fuse) / 'nyc_taxi_zones.geojson'\n", + "if not zone_fuse_path.exists():\n", + " req = requests.get(zone_url)\n", + " with open(zone_fuse_path, 'wb') as f:\n", + " f.write(req.content)\n", + "else:\n", + " print(f\"...skipping '{zone_fuse_path}', already exits.\")\n", + "\n", + "display(dbutils.fs.ls(zone_dir))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "56b5edd3-3e43-428b-b13d-752c2a3a18a3", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Initial Taxi Zone from GeoJSON [Polygons]\n", + "\n", + "> With the functionality Mosaic brings we can easily load GeoJSON files. " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "172476a3-aa95-45cd-91e8-040d865b37d1", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "%python \n", + "# Note: Here we are using python for convenience since our\n", + "# data is on DBFS; after we create a temp view, can pick up \n", + "# in Spark SQL\n", + "(\n", + " spark.read\n", + " .option(\"multiline\", \"true\")\n", + " .format(\"json\")\n", + " .load(zone_dir)\n", + " .select(\"type\", F.explode(col(\"features\")).alias(\"feature\"))\n", + " .select(\"type\", col(\"feature.properties\").alias(\"properties\"), F.to_json(col(\"feature.geometry\")).alias(\"json_geometry\"))\n", + " .withColumn(\"geometry\", mos.st_aswkt(mos.st_geomfromgeojson(\"json_geometry\")))\n", + ").createOrReplaceTempView(\"neighbourhoods\")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "8927e98f-5978-4408-ac88-909a87fcf602", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
count
263
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "263" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "count", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql select format_number(count(1), 0) as count from neighbourhoods" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "7b63951b-7335-4160-94a0-ec94ea995fcf", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
typepropertiesjson_geometrygeometry
FeatureCollectionList(EWR, 1, 1, 0.0007823067885, 0.116357453189, Newark Airport){\"coordinates\":[[[[-74.18445299999996,40.694995999999904],[-74.18448899999999,40.69509499999987],[-74.18449799999996,40.69518499999987],[-74.18438099999997,40.69587799999989],[-74.18428199999994,40.6962109999999],[-74.18402099999997,40.697074999999884],[-74.18391299999996,40.69750699999986],[-74.18375099999997,40.69779499999988],[-74.18363399999998,40.6983259999999],[-74.18356199999994,40.698451999999875],[-74.18354399999998,40.69855999999988],[-74.18350799999996,40.69870399999992],[-74.18327399999998,40.70008999999988],[-74.18315699999994,40.701214999999884],[-74.18316599999997,40.702384999999886],[-74.18313899999998,40.7026279999999],[-74.18309399999998,40.7028529999999],[-74.18299499999995,40.70315899999985],[-74.18284199999994,40.70346499999989],[-74.18264399999998,40.70373499999988],[-74.18242799999996,40.70395099999992],[-74.18220299999996,40.704139999999896],[-74.18203199999994,40.70425699999987],[-74.18180699999994,40.7043919999999],[-74.18157299999996,40.70449999999988],[-74.18132099999997,40.70460799999991],[-74.18080799999996,40.7047879999999],[-74.179467,40.70534599999992],[-74.17887299999995,40.70554399999987],[-74.17831499999994,40.70572399999987],[-74.17776599999996,40.70589499999988],[-74.17709099999996,40.706092999999896],[-74.17699199999998,40.70613799999988],[-74.17689299999995,40.70619199999988],[-74.17664999999994,40.70641699999988],[-74.17642499999994,40.706695999999916],[-74.17628999999994,40.70689399999988],[-74.17608299999995,40.70710999999989],[-74.17599299999995,40.70719099999991],[-74.17589399999997,40.707262999999905],[-74.17565999999994,40.70737999999988],[-74.17538099999996,40.707469999999915],[-74.17515599999996,40.707514999999894],[-74.17475999999994,40.707595999999924],[-74.17417499999993,40.70766799999991],[-74.17388699999998,40.70773099999992],[-74.17347299999994,40.707748999999865],[-74.17275299999994,40.707802999999906],[-74.17188899999996,40.707910999999854],[-74.17163699999998,40.70795599999986],[-74.17133999999999,40.707964999999895],[-74.17120499999999,40.70795599999986],[-74.16994499999998,40.707973999999886],[-74.16888299999994,40.7079379999999],[-74.16681299999993,40.70785699999989],[-74.16442799999999,40.70779399999987],[-74.16401399999995,40.70777599999992],[-74.16233999999997,40.707721999999876],[-74.16081899999995,40.70764099999991],[-74.16057599999993,40.70760499999988],[-74.16033299999998,40.70756899999987],[-74.160063,40.7074879999999],[-74.15938799999998,40.707262999999905],[-74.15904599999999,40.707145999999916],[-74.15891999999997,40.70710999999989],[-74.15827199999995,40.70687599999993],[-74.15459099999998,40.705651999999894],[-74.15409599999998,40.70544499999989],[-74.15401499999997,40.70538199999988],[-74.15387999999996,40.705327999999895],[-74.15376299999997,40.705408999999875],[-74.15323199999995,40.70524699999987],[-74.15317799999997,40.70531899999989],[-74.15306999999996,40.7052829999999],[-74.15359199999995,40.70437399999987],[-74.15386199999995,40.7038429999999],[-74.15513999999996,40.70155699999987],[-74.15544599999998,40.70108899999988],[-74.15575199999995,40.7006659999999],[-74.15600399999994,40.70026099999991],[-74.15635499999996,40.69975699999986],[-74.15745299999998,40.69809199999988],[-74.15754299999998,40.6979389999999],[-74.15758799999998,40.69781299999988],[-74.15762399999994,40.69767799999991],[-74.15829899999994,40.696705999999885],[-74.15951399999994,40.69488799999988],[-74.15958599999993,40.69476199999984],[-74.16014399999995,40.69410499999988],[-74.16057599999993,40.693222999999875],[-74.16262799999998,40.69028899999989],[-74.16279899999995,40.69002799999989],[-74.16290699999996,40.68987499999987],[-74.16292499999997,40.689874999999866],[-74.16295199999996,40.689874999999866],[-74.16306899999995,40.68989299999988],[-74.16309599999994,40.689928999999886],[-74.16322199999996,40.68998299999989],[-74.16331199999996,40.68999199999993],[-74.16341099999994,40.69000099999988],[-74.16352799999999,40.69000999999986],[-74.16380699999996,40.69004599999989],[-74.16410399999995,40.690081999999904],[-74.16417599999994,40.690081999999904],[-74.16422999999998,40.69005499999988],[-74.16436499999998,40.69003699999991],[-74.16450899999995,40.68998299999986],[-74.16467099999994,40.68988399999989],[-74.16479699999996,40.689757999999884],[-74.16491399999995,40.689586999999904],[-74.16499499999998,40.689388999999885],[-74.16528299999999,40.68891199999991],[-74.16542699999997,40.6887589999999],[-74.16548099999994,40.68863299999987],[-74.16560699999997,40.68842599999988],[-74.16576899999995,40.68802999999986],[-74.16587699999997,40.68787699999991],[-74.16583199999997,40.68757999999987],[-74.16582299999999,40.68748999999987],[-74.16580499999998,40.687156999999914],[-74.16582299999999,40.68703999999986],[-74.16589499999998,40.6868419999999],[-74.16604799999999,40.68655399999988],[-74.16639899999996,40.686022999999864],[-74.16650699999997,40.68588799999986],[-74.16674099999994,40.685491999999925],[-74.16695699999997,40.68523099999988],[-74.16738899999996,40.684546999999924],[-74.16781199999997,40.6839439999999],[-74.16791099999995,40.68379099999988],[-74.16804599999995,40.68360199999991],[-74.16816299999994,40.683475999999885],[-74.16822599999995,40.68334999999991],[-74.16848699999997,40.68299899999991],[-74.16886499999998,40.68239599999987],[-74.16916199999997,40.68199999999991],[-74.16929699999997,40.68178399999989],[-74.16947699999997,40.68155899999991],[-74.16981899999996,40.681018999999885],[-74.16995399999996,40.680874999999915],[-74.17005299999994,40.68066799999987],[-74.17041299999994,40.6801549999999],[-74.17051199999997,40.67999299999987],[-74.17067399999996,40.679650999999886],[-74.17093499999999,40.679290999999864],[-74.17144799999994,40.67847199999989],[-74.17151999999999,40.678381999999885],[-74.17160999999999,40.678255999999884],[-74.17193399999996,40.67782399999988],[-74.17200599999995,40.67773399999988],[-74.17283399999997,40.67656399999988],[-74.17314899999997,40.67619499999991],[-74.17322999999999,40.6760779999999],[-74.17329299999994,40.67601499999989],[-74.17358999999993,40.67571799999991],[-74.17423799999995,40.67493499999991],[-74.17437299999995,40.674817999999895],[-74.17484999999994,40.67432299999992],[-74.17500299999995,40.6741699999999],[-74.17538999999995,40.67375599999987],[-74.17604699999998,40.673044999999895],[-74.17630799999995,40.67276599999986],[-74.17641599999996,40.672621999999876],[-74.17663199999998,40.67239699999989],[-74.17678499999994,40.67218099999991],[-74.17697399999997,40.6719379999999],[-74.17709099999996,40.671784999999886],[-74.17734299999995,40.67155999999988],[-74.17754999999994,40.67142499999989],[-74.17778399999997,40.671316999999874],[-74.17802699999999,40.671208999999884],[-74.17862999999994,40.671037999999896],[-74.17888199999999,40.671001999999895],[-74.17912499999994,40.67099299999991],[-74.17933199999999,40.67101099999992],[-74.17979099999997,40.67115499999989],[-74.17997999999994,40.671208999999884],[-74.18010599999997,40.671262999999904],[-74.18030399999998,40.67129899999986],[-74.18133899999998,40.67170399999986],[-74.18213999999996,40.67202799999989],[-74.18384999999995,40.672648999999886],[-74.18437199999994,40.67290999999989],[-74.18458799999996,40.67302699999988],[-74.18492099999997,40.673269999999896],[-74.18503799999996,40.67335999999989],[-74.18513699999994,40.673458999999866],[-74.18547899999999,40.67390899999987],[-74.18594699999994,40.674664999999905],[-74.18670299999997,40.67578999999992],[-74.18733299999997,40.67674399999987],[-74.18767499999996,40.67729299999991],[-74.18795399999995,40.67761699999989],[-74.18819699999995,40.67792299999992],[-74.18852099999998,40.67848099999987],[-74.18877299999997,40.67885899999989],[-74.18905199999995,40.67933599999985],[-74.18935799999997,40.67975899999988],[-74.18949299999997,40.680091999999895],[-74.18969999999996,40.680793999999885],[-74.18977199999995,40.68113599999987],[-74.189781,40.681198999999886],[-74.18983499999996,40.68131599999987],[-74.18991599999998,40.68154099999988],[-74.18996999999996,40.6818019999999],[-74.18999699999995,40.6822519999999],[-74.18999699999995,40.68262999999992],[-74.18996999999996,40.68295399999989],[-74.18998799999997,40.68317899999989],[-74.18995199999995,40.683520999999885],[-74.18993399999994,40.68370999999992],[-74.189871,40.684078999999876],[-74.189781,40.68481699999991],[-74.18976299999997,40.68503299999986],[-74.18962799999997,40.686103999999915],[-74.18955599999998,40.68689599999987],[-74.18951999999996,40.6872019999999],[-74.18947499999996,40.68748999999985],[-74.18939399999994,40.68773299999988],[-74.18939399999994,40.68783199999991],[-74.18941199999995,40.687939999999855],[-74.18940299999997,40.68809299999987],[-74.18934899999994,40.68826399999989],[-74.18922299999997,40.68862399999989],[-74.18898899999994,40.68904699999991],[-74.18870099999998,40.689442999999876],[-74.18779199999994,40.690189999999866],[-74.18723399999999,40.69059499999986],[-74.18636999999995,40.69118899999991],[-74.18591099999998,40.69144999999988],[-74.18563199999994,40.69164799999987],[-74.18445299999996,40.694995999999904]]]],\"type\":\"MultiPolygon\"}MULTIPOLYGON (((-74.18445299999996 40.694995999999904, -74.18448899999999 40.69509499999987, -74.18449799999996 40.69518499999987, -74.18438099999997 40.69587799999989, -74.18428199999994 40.6962109999999, -74.18402099999997 40.697074999999884, -74.18391299999996 40.69750699999986, -74.18375099999997 40.69779499999988, -74.18363399999998 40.6983259999999, -74.18356199999994 40.698451999999875, -74.18354399999998 40.69855999999988, -74.18350799999996 40.69870399999992, -74.18327399999998 40.70008999999988, -74.18315699999994 40.701214999999884, -74.18316599999997 40.702384999999886, -74.18313899999998 40.7026279999999, -74.18309399999998 40.7028529999999, -74.18299499999995 40.70315899999985, -74.18284199999994 40.70346499999989, -74.18264399999998 40.70373499999988, -74.18242799999996 40.70395099999992, -74.18220299999996 40.704139999999896, -74.18203199999994 40.70425699999987, -74.18180699999994 40.7043919999999, -74.18157299999996 40.70449999999988, -74.18132099999997 40.70460799999991, -74.18080799999996 40.7047879999999, -74.179467 40.70534599999992, -74.17887299999995 40.70554399999987, -74.17831499999994 40.70572399999987, -74.17776599999996 40.70589499999988, -74.17709099999996 40.706092999999896, -74.17699199999998 40.70613799999988, -74.17689299999995 40.70619199999988, -74.17664999999994 40.70641699999988, -74.17642499999994 40.706695999999916, -74.17628999999994 40.70689399999988, -74.17608299999995 40.70710999999989, -74.17599299999995 40.70719099999991, -74.17589399999997 40.707262999999905, -74.17565999999994 40.70737999999988, -74.17538099999996 40.707469999999915, -74.17515599999996 40.707514999999894, -74.17475999999994 40.707595999999924, -74.17417499999993 40.70766799999991, -74.17388699999998 40.70773099999992, -74.17347299999994 40.707748999999865, -74.17275299999994 40.707802999999906, -74.17188899999996 40.707910999999854, -74.17163699999998 40.70795599999986, -74.17133999999999 40.707964999999895, -74.17120499999999 40.70795599999986, -74.16994499999998 40.707973999999886, -74.16888299999994 40.7079379999999, -74.16681299999993 40.70785699999989, -74.16442799999999 40.70779399999987, -74.16401399999995 40.70777599999992, -74.16233999999997 40.707721999999876, -74.16081899999995 40.70764099999991, -74.16057599999993 40.70760499999988, -74.16033299999998 40.70756899999987, -74.160063 40.7074879999999, -74.15938799999998 40.707262999999905, -74.15904599999999 40.707145999999916, -74.15891999999997 40.70710999999989, -74.15827199999995 40.70687599999993, -74.15459099999998 40.705651999999894, -74.15409599999998 40.70544499999989, -74.15401499999997 40.70538199999988, -74.15387999999996 40.705327999999895, -74.15376299999997 40.705408999999875, -74.15323199999995 40.70524699999987, -74.15317799999997 40.70531899999989, -74.15306999999996 40.7052829999999, -74.15359199999995 40.70437399999987, -74.15386199999995 40.7038429999999, -74.15513999999996 40.70155699999987, -74.15544599999998 40.70108899999988, -74.15575199999995 40.7006659999999, -74.15600399999994 40.70026099999991, -74.15635499999996 40.69975699999986, -74.15745299999998 40.69809199999988, -74.15754299999998 40.6979389999999, -74.15758799999998 40.69781299999988, -74.15762399999994 40.69767799999991, -74.15829899999994 40.696705999999885, -74.15951399999994 40.69488799999988, -74.15958599999993 40.69476199999984, -74.16014399999995 40.69410499999988, -74.16057599999993 40.693222999999875, -74.16262799999998 40.69028899999989, -74.16279899999995 40.69002799999989, -74.16290699999996 40.68987499999987, -74.16292499999997 40.689874999999866, -74.16295199999996 40.689874999999866, -74.16306899999995 40.68989299999988, -74.16309599999994 40.689928999999886, -74.16322199999996 40.68998299999989, -74.16331199999996 40.68999199999993, -74.16341099999994 40.69000099999988, -74.16352799999999 40.69000999999986, -74.16380699999996 40.69004599999989, -74.16410399999995 40.690081999999904, -74.16417599999994 40.690081999999904, -74.16422999999998 40.69005499999988, -74.16436499999998 40.69003699999991, -74.16450899999995 40.68998299999986, -74.16467099999994 40.68988399999989, -74.16479699999996 40.689757999999884, -74.16491399999995 40.689586999999904, -74.16499499999998 40.689388999999885, -74.16528299999999 40.68891199999991, -74.16542699999997 40.6887589999999, -74.16548099999994 40.68863299999987, -74.16560699999997 40.68842599999988, -74.16576899999995 40.68802999999986, -74.16587699999997 40.68787699999991, -74.16583199999997 40.68757999999987, -74.16582299999999 40.68748999999987, -74.16580499999998 40.687156999999914, -74.16582299999999 40.68703999999986, -74.16589499999998 40.6868419999999, -74.16604799999999 40.68655399999988, -74.16639899999996 40.686022999999864, -74.16650699999997 40.68588799999986, -74.16674099999994 40.685491999999925, -74.16695699999997 40.68523099999988, -74.16738899999996 40.684546999999924, -74.16781199999997 40.6839439999999, -74.16791099999995 40.68379099999988, -74.16804599999995 40.68360199999991, -74.16816299999994 40.683475999999885, -74.16822599999995 40.68334999999991, -74.16848699999997 40.68299899999991, -74.16886499999998 40.68239599999987, -74.16916199999997 40.68199999999991, -74.16929699999997 40.68178399999989, -74.16947699999997 40.68155899999991, -74.16981899999996 40.681018999999885, -74.16995399999996 40.680874999999915, -74.17005299999994 40.68066799999987, -74.17041299999994 40.6801549999999, -74.17051199999997 40.67999299999987, -74.17067399999996 40.679650999999886, -74.17093499999999 40.679290999999864, -74.17144799999994 40.67847199999989, -74.17151999999999 40.678381999999885, -74.17160999999999 40.678255999999884, -74.17193399999996 40.67782399999988, -74.17200599999995 40.67773399999988, -74.17283399999997 40.67656399999988, -74.17314899999997 40.67619499999991, -74.17322999999999 40.6760779999999, -74.17329299999994 40.67601499999989, -74.17358999999993 40.67571799999991, -74.17423799999995 40.67493499999991, -74.17437299999995 40.674817999999895, -74.17484999999994 40.67432299999992, -74.17500299999995 40.6741699999999, -74.17538999999995 40.67375599999987, -74.17604699999998 40.673044999999895, -74.17630799999995 40.67276599999986, -74.17641599999996 40.672621999999876, -74.17663199999998 40.67239699999989, -74.17678499999994 40.67218099999991, -74.17697399999997 40.6719379999999, -74.17709099999996 40.671784999999886, -74.17734299999995 40.67155999999988, -74.17754999999994 40.67142499999989, -74.17778399999997 40.671316999999874, -74.17802699999999 40.671208999999884, -74.17862999999994 40.671037999999896, -74.17888199999999 40.671001999999895, -74.17912499999994 40.67099299999991, -74.17933199999999 40.67101099999992, -74.17979099999997 40.67115499999989, -74.17997999999994 40.671208999999884, -74.18010599999997 40.671262999999904, -74.18030399999998 40.67129899999986, -74.18133899999998 40.67170399999986, -74.18213999999996 40.67202799999989, -74.18384999999995 40.672648999999886, -74.18437199999994 40.67290999999989, -74.18458799999996 40.67302699999988, -74.18492099999997 40.673269999999896, -74.18503799999996 40.67335999999989, -74.18513699999994 40.673458999999866, -74.18547899999999 40.67390899999987, -74.18594699999994 40.674664999999905, -74.18670299999997 40.67578999999992, -74.18733299999997 40.67674399999987, -74.18767499999996 40.67729299999991, -74.18795399999995 40.67761699999989, -74.18819699999995 40.67792299999992, -74.18852099999998 40.67848099999987, -74.18877299999997 40.67885899999989, -74.18905199999995 40.67933599999985, -74.18935799999997 40.67975899999988, -74.18949299999997 40.680091999999895, -74.18969999999996 40.680793999999885, -74.18977199999995 40.68113599999987, -74.189781 40.681198999999886, -74.18983499999996 40.68131599999987, -74.18991599999998 40.68154099999988, -74.18996999999996 40.6818019999999, -74.18999699999995 40.6822519999999, -74.18999699999995 40.68262999999992, -74.18996999999996 40.68295399999989, -74.18998799999997 40.68317899999989, -74.18995199999995 40.683520999999885, -74.18993399999994 40.68370999999992, -74.189871 40.684078999999876, -74.189781 40.68481699999991, -74.18976299999997 40.68503299999986, -74.18962799999997 40.686103999999915, -74.18955599999998 40.68689599999987, -74.18951999999996 40.6872019999999, -74.18947499999996 40.68748999999985, -74.18939399999994 40.68773299999988, -74.18939399999994 40.68783199999991, -74.18941199999995 40.687939999999855, -74.18940299999997 40.68809299999987, -74.18934899999994 40.68826399999989, -74.18922299999997 40.68862399999989, -74.18898899999994 40.68904699999991, -74.18870099999998 40.689442999999876, -74.18779199999994 40.690189999999866, -74.18723399999999 40.69059499999986, -74.18636999999995 40.69118899999991, -74.18591099999998 40.69144999999988, -74.18563199999994 40.69164799999987, -74.18445299999996 40.694995999999904)))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "FeatureCollection", + [ + "EWR", + "1", + "1", + "0.0007823067885", + "0.116357453189", + "Newark Airport" + ], + "{\"coordinates\":[[[[-74.18445299999996,40.694995999999904],[-74.18448899999999,40.69509499999987],[-74.18449799999996,40.69518499999987],[-74.18438099999997,40.69587799999989],[-74.18428199999994,40.6962109999999],[-74.18402099999997,40.697074999999884],[-74.18391299999996,40.69750699999986],[-74.18375099999997,40.69779499999988],[-74.18363399999998,40.6983259999999],[-74.18356199999994,40.698451999999875],[-74.18354399999998,40.69855999999988],[-74.18350799999996,40.69870399999992],[-74.18327399999998,40.70008999999988],[-74.18315699999994,40.701214999999884],[-74.18316599999997,40.702384999999886],[-74.18313899999998,40.7026279999999],[-74.18309399999998,40.7028529999999],[-74.18299499999995,40.70315899999985],[-74.18284199999994,40.70346499999989],[-74.18264399999998,40.70373499999988],[-74.18242799999996,40.70395099999992],[-74.18220299999996,40.704139999999896],[-74.18203199999994,40.70425699999987],[-74.18180699999994,40.7043919999999],[-74.18157299999996,40.70449999999988],[-74.18132099999997,40.70460799999991],[-74.18080799999996,40.7047879999999],[-74.179467,40.70534599999992],[-74.17887299999995,40.70554399999987],[-74.17831499999994,40.70572399999987],[-74.17776599999996,40.70589499999988],[-74.17709099999996,40.706092999999896],[-74.17699199999998,40.70613799999988],[-74.17689299999995,40.70619199999988],[-74.17664999999994,40.70641699999988],[-74.17642499999994,40.706695999999916],[-74.17628999999994,40.70689399999988],[-74.17608299999995,40.70710999999989],[-74.17599299999995,40.70719099999991],[-74.17589399999997,40.707262999999905],[-74.17565999999994,40.70737999999988],[-74.17538099999996,40.707469999999915],[-74.17515599999996,40.707514999999894],[-74.17475999999994,40.707595999999924],[-74.17417499999993,40.70766799999991],[-74.17388699999998,40.70773099999992],[-74.17347299999994,40.707748999999865],[-74.17275299999994,40.707802999999906],[-74.17188899999996,40.707910999999854],[-74.17163699999998,40.70795599999986],[-74.17133999999999,40.707964999999895],[-74.17120499999999,40.70795599999986],[-74.16994499999998,40.707973999999886],[-74.16888299999994,40.7079379999999],[-74.16681299999993,40.70785699999989],[-74.16442799999999,40.70779399999987],[-74.16401399999995,40.70777599999992],[-74.16233999999997,40.707721999999876],[-74.16081899999995,40.70764099999991],[-74.16057599999993,40.70760499999988],[-74.16033299999998,40.70756899999987],[-74.160063,40.7074879999999],[-74.15938799999998,40.707262999999905],[-74.15904599999999,40.707145999999916],[-74.15891999999997,40.70710999999989],[-74.15827199999995,40.70687599999993],[-74.15459099999998,40.705651999999894],[-74.15409599999998,40.70544499999989],[-74.15401499999997,40.70538199999988],[-74.15387999999996,40.705327999999895],[-74.15376299999997,40.705408999999875],[-74.15323199999995,40.70524699999987],[-74.15317799999997,40.70531899999989],[-74.15306999999996,40.7052829999999],[-74.15359199999995,40.70437399999987],[-74.15386199999995,40.7038429999999],[-74.15513999999996,40.70155699999987],[-74.15544599999998,40.70108899999988],[-74.15575199999995,40.7006659999999],[-74.15600399999994,40.70026099999991],[-74.15635499999996,40.69975699999986],[-74.15745299999998,40.69809199999988],[-74.15754299999998,40.6979389999999],[-74.15758799999998,40.69781299999988],[-74.15762399999994,40.69767799999991],[-74.15829899999994,40.696705999999885],[-74.15951399999994,40.69488799999988],[-74.15958599999993,40.69476199999984],[-74.16014399999995,40.69410499999988],[-74.16057599999993,40.693222999999875],[-74.16262799999998,40.69028899999989],[-74.16279899999995,40.69002799999989],[-74.16290699999996,40.68987499999987],[-74.16292499999997,40.689874999999866],[-74.16295199999996,40.689874999999866],[-74.16306899999995,40.68989299999988],[-74.16309599999994,40.689928999999886],[-74.16322199999996,40.68998299999989],[-74.16331199999996,40.68999199999993],[-74.16341099999994,40.69000099999988],[-74.16352799999999,40.69000999999986],[-74.16380699999996,40.69004599999989],[-74.16410399999995,40.690081999999904],[-74.16417599999994,40.690081999999904],[-74.16422999999998,40.69005499999988],[-74.16436499999998,40.69003699999991],[-74.16450899999995,40.68998299999986],[-74.16467099999994,40.68988399999989],[-74.16479699999996,40.689757999999884],[-74.16491399999995,40.689586999999904],[-74.16499499999998,40.689388999999885],[-74.16528299999999,40.68891199999991],[-74.16542699999997,40.6887589999999],[-74.16548099999994,40.68863299999987],[-74.16560699999997,40.68842599999988],[-74.16576899999995,40.68802999999986],[-74.16587699999997,40.68787699999991],[-74.16583199999997,40.68757999999987],[-74.16582299999999,40.68748999999987],[-74.16580499999998,40.687156999999914],[-74.16582299999999,40.68703999999986],[-74.16589499999998,40.6868419999999],[-74.16604799999999,40.68655399999988],[-74.16639899999996,40.686022999999864],[-74.16650699999997,40.68588799999986],[-74.16674099999994,40.685491999999925],[-74.16695699999997,40.68523099999988],[-74.16738899999996,40.684546999999924],[-74.16781199999997,40.6839439999999],[-74.16791099999995,40.68379099999988],[-74.16804599999995,40.68360199999991],[-74.16816299999994,40.683475999999885],[-74.16822599999995,40.68334999999991],[-74.16848699999997,40.68299899999991],[-74.16886499999998,40.68239599999987],[-74.16916199999997,40.68199999999991],[-74.16929699999997,40.68178399999989],[-74.16947699999997,40.68155899999991],[-74.16981899999996,40.681018999999885],[-74.16995399999996,40.680874999999915],[-74.17005299999994,40.68066799999987],[-74.17041299999994,40.6801549999999],[-74.17051199999997,40.67999299999987],[-74.17067399999996,40.679650999999886],[-74.17093499999999,40.679290999999864],[-74.17144799999994,40.67847199999989],[-74.17151999999999,40.678381999999885],[-74.17160999999999,40.678255999999884],[-74.17193399999996,40.67782399999988],[-74.17200599999995,40.67773399999988],[-74.17283399999997,40.67656399999988],[-74.17314899999997,40.67619499999991],[-74.17322999999999,40.6760779999999],[-74.17329299999994,40.67601499999989],[-74.17358999999993,40.67571799999991],[-74.17423799999995,40.67493499999991],[-74.17437299999995,40.674817999999895],[-74.17484999999994,40.67432299999992],[-74.17500299999995,40.6741699999999],[-74.17538999999995,40.67375599999987],[-74.17604699999998,40.673044999999895],[-74.17630799999995,40.67276599999986],[-74.17641599999996,40.672621999999876],[-74.17663199999998,40.67239699999989],[-74.17678499999994,40.67218099999991],[-74.17697399999997,40.6719379999999],[-74.17709099999996,40.671784999999886],[-74.17734299999995,40.67155999999988],[-74.17754999999994,40.67142499999989],[-74.17778399999997,40.671316999999874],[-74.17802699999999,40.671208999999884],[-74.17862999999994,40.671037999999896],[-74.17888199999999,40.671001999999895],[-74.17912499999994,40.67099299999991],[-74.17933199999999,40.67101099999992],[-74.17979099999997,40.67115499999989],[-74.17997999999994,40.671208999999884],[-74.18010599999997,40.671262999999904],[-74.18030399999998,40.67129899999986],[-74.18133899999998,40.67170399999986],[-74.18213999999996,40.67202799999989],[-74.18384999999995,40.672648999999886],[-74.18437199999994,40.67290999999989],[-74.18458799999996,40.67302699999988],[-74.18492099999997,40.673269999999896],[-74.18503799999996,40.67335999999989],[-74.18513699999994,40.673458999999866],[-74.18547899999999,40.67390899999987],[-74.18594699999994,40.674664999999905],[-74.18670299999997,40.67578999999992],[-74.18733299999997,40.67674399999987],[-74.18767499999996,40.67729299999991],[-74.18795399999995,40.67761699999989],[-74.18819699999995,40.67792299999992],[-74.18852099999998,40.67848099999987],[-74.18877299999997,40.67885899999989],[-74.18905199999995,40.67933599999985],[-74.18935799999997,40.67975899999988],[-74.18949299999997,40.680091999999895],[-74.18969999999996,40.680793999999885],[-74.18977199999995,40.68113599999987],[-74.189781,40.681198999999886],[-74.18983499999996,40.68131599999987],[-74.18991599999998,40.68154099999988],[-74.18996999999996,40.6818019999999],[-74.18999699999995,40.6822519999999],[-74.18999699999995,40.68262999999992],[-74.18996999999996,40.68295399999989],[-74.18998799999997,40.68317899999989],[-74.18995199999995,40.683520999999885],[-74.18993399999994,40.68370999999992],[-74.189871,40.684078999999876],[-74.189781,40.68481699999991],[-74.18976299999997,40.68503299999986],[-74.18962799999997,40.686103999999915],[-74.18955599999998,40.68689599999987],[-74.18951999999996,40.6872019999999],[-74.18947499999996,40.68748999999985],[-74.18939399999994,40.68773299999988],[-74.18939399999994,40.68783199999991],[-74.18941199999995,40.687939999999855],[-74.18940299999997,40.68809299999987],[-74.18934899999994,40.68826399999989],[-74.18922299999997,40.68862399999989],[-74.18898899999994,40.68904699999991],[-74.18870099999998,40.689442999999876],[-74.18779199999994,40.690189999999866],[-74.18723399999999,40.69059499999986],[-74.18636999999995,40.69118899999991],[-74.18591099999998,40.69144999999988],[-74.18563199999994,40.69164799999987],[-74.18445299999996,40.694995999999904]]]],\"type\":\"MultiPolygon\"}", + "MULTIPOLYGON (((-74.18445299999996 40.694995999999904, -74.18448899999999 40.69509499999987, -74.18449799999996 40.69518499999987, -74.18438099999997 40.69587799999989, -74.18428199999994 40.6962109999999, -74.18402099999997 40.697074999999884, -74.18391299999996 40.69750699999986, -74.18375099999997 40.69779499999988, -74.18363399999998 40.6983259999999, -74.18356199999994 40.698451999999875, -74.18354399999998 40.69855999999988, -74.18350799999996 40.69870399999992, -74.18327399999998 40.70008999999988, -74.18315699999994 40.701214999999884, -74.18316599999997 40.702384999999886, -74.18313899999998 40.7026279999999, -74.18309399999998 40.7028529999999, -74.18299499999995 40.70315899999985, -74.18284199999994 40.70346499999989, -74.18264399999998 40.70373499999988, -74.18242799999996 40.70395099999992, -74.18220299999996 40.704139999999896, -74.18203199999994 40.70425699999987, -74.18180699999994 40.7043919999999, -74.18157299999996 40.70449999999988, -74.18132099999997 40.70460799999991, -74.18080799999996 40.7047879999999, -74.179467 40.70534599999992, -74.17887299999995 40.70554399999987, -74.17831499999994 40.70572399999987, -74.17776599999996 40.70589499999988, -74.17709099999996 40.706092999999896, -74.17699199999998 40.70613799999988, -74.17689299999995 40.70619199999988, -74.17664999999994 40.70641699999988, -74.17642499999994 40.706695999999916, -74.17628999999994 40.70689399999988, -74.17608299999995 40.70710999999989, -74.17599299999995 40.70719099999991, -74.17589399999997 40.707262999999905, -74.17565999999994 40.70737999999988, -74.17538099999996 40.707469999999915, -74.17515599999996 40.707514999999894, -74.17475999999994 40.707595999999924, -74.17417499999993 40.70766799999991, -74.17388699999998 40.70773099999992, -74.17347299999994 40.707748999999865, -74.17275299999994 40.707802999999906, -74.17188899999996 40.707910999999854, -74.17163699999998 40.70795599999986, -74.17133999999999 40.707964999999895, -74.17120499999999 40.70795599999986, -74.16994499999998 40.707973999999886, -74.16888299999994 40.7079379999999, -74.16681299999993 40.70785699999989, -74.16442799999999 40.70779399999987, -74.16401399999995 40.70777599999992, -74.16233999999997 40.707721999999876, -74.16081899999995 40.70764099999991, -74.16057599999993 40.70760499999988, -74.16033299999998 40.70756899999987, -74.160063 40.7074879999999, -74.15938799999998 40.707262999999905, -74.15904599999999 40.707145999999916, -74.15891999999997 40.70710999999989, -74.15827199999995 40.70687599999993, -74.15459099999998 40.705651999999894, -74.15409599999998 40.70544499999989, -74.15401499999997 40.70538199999988, -74.15387999999996 40.705327999999895, -74.15376299999997 40.705408999999875, -74.15323199999995 40.70524699999987, -74.15317799999997 40.70531899999989, -74.15306999999996 40.7052829999999, -74.15359199999995 40.70437399999987, -74.15386199999995 40.7038429999999, -74.15513999999996 40.70155699999987, -74.15544599999998 40.70108899999988, -74.15575199999995 40.7006659999999, -74.15600399999994 40.70026099999991, -74.15635499999996 40.69975699999986, -74.15745299999998 40.69809199999988, -74.15754299999998 40.6979389999999, -74.15758799999998 40.69781299999988, -74.15762399999994 40.69767799999991, -74.15829899999994 40.696705999999885, -74.15951399999994 40.69488799999988, -74.15958599999993 40.69476199999984, -74.16014399999995 40.69410499999988, -74.16057599999993 40.693222999999875, -74.16262799999998 40.69028899999989, -74.16279899999995 40.69002799999989, -74.16290699999996 40.68987499999987, -74.16292499999997 40.689874999999866, -74.16295199999996 40.689874999999866, -74.16306899999995 40.68989299999988, -74.16309599999994 40.689928999999886, -74.16322199999996 40.68998299999989, -74.16331199999996 40.68999199999993, -74.16341099999994 40.69000099999988, -74.16352799999999 40.69000999999986, -74.16380699999996 40.69004599999989, -74.16410399999995 40.690081999999904, -74.16417599999994 40.690081999999904, -74.16422999999998 40.69005499999988, -74.16436499999998 40.69003699999991, -74.16450899999995 40.68998299999986, -74.16467099999994 40.68988399999989, -74.16479699999996 40.689757999999884, -74.16491399999995 40.689586999999904, -74.16499499999998 40.689388999999885, -74.16528299999999 40.68891199999991, -74.16542699999997 40.6887589999999, -74.16548099999994 40.68863299999987, -74.16560699999997 40.68842599999988, -74.16576899999995 40.68802999999986, -74.16587699999997 40.68787699999991, -74.16583199999997 40.68757999999987, -74.16582299999999 40.68748999999987, -74.16580499999998 40.687156999999914, -74.16582299999999 40.68703999999986, -74.16589499999998 40.6868419999999, -74.16604799999999 40.68655399999988, -74.16639899999996 40.686022999999864, -74.16650699999997 40.68588799999986, -74.16674099999994 40.685491999999925, -74.16695699999997 40.68523099999988, -74.16738899999996 40.684546999999924, -74.16781199999997 40.6839439999999, -74.16791099999995 40.68379099999988, -74.16804599999995 40.68360199999991, -74.16816299999994 40.683475999999885, -74.16822599999995 40.68334999999991, -74.16848699999997 40.68299899999991, -74.16886499999998 40.68239599999987, -74.16916199999997 40.68199999999991, -74.16929699999997 40.68178399999989, -74.16947699999997 40.68155899999991, -74.16981899999996 40.681018999999885, -74.16995399999996 40.680874999999915, -74.17005299999994 40.68066799999987, -74.17041299999994 40.6801549999999, -74.17051199999997 40.67999299999987, -74.17067399999996 40.679650999999886, -74.17093499999999 40.679290999999864, -74.17144799999994 40.67847199999989, -74.17151999999999 40.678381999999885, -74.17160999999999 40.678255999999884, -74.17193399999996 40.67782399999988, -74.17200599999995 40.67773399999988, -74.17283399999997 40.67656399999988, -74.17314899999997 40.67619499999991, -74.17322999999999 40.6760779999999, -74.17329299999994 40.67601499999989, -74.17358999999993 40.67571799999991, -74.17423799999995 40.67493499999991, -74.17437299999995 40.674817999999895, -74.17484999999994 40.67432299999992, -74.17500299999995 40.6741699999999, -74.17538999999995 40.67375599999987, -74.17604699999998 40.673044999999895, -74.17630799999995 40.67276599999986, -74.17641599999996 40.672621999999876, -74.17663199999998 40.67239699999989, -74.17678499999994 40.67218099999991, -74.17697399999997 40.6719379999999, -74.17709099999996 40.671784999999886, -74.17734299999995 40.67155999999988, -74.17754999999994 40.67142499999989, -74.17778399999997 40.671316999999874, -74.17802699999999 40.671208999999884, -74.17862999999994 40.671037999999896, -74.17888199999999 40.671001999999895, -74.17912499999994 40.67099299999991, -74.17933199999999 40.67101099999992, -74.17979099999997 40.67115499999989, -74.17997999999994 40.671208999999884, -74.18010599999997 40.671262999999904, -74.18030399999998 40.67129899999986, -74.18133899999998 40.67170399999986, -74.18213999999996 40.67202799999989, -74.18384999999995 40.672648999999886, -74.18437199999994 40.67290999999989, -74.18458799999996 40.67302699999988, -74.18492099999997 40.673269999999896, -74.18503799999996 40.67335999999989, -74.18513699999994 40.673458999999866, -74.18547899999999 40.67390899999987, -74.18594699999994 40.674664999999905, -74.18670299999997 40.67578999999992, -74.18733299999997 40.67674399999987, -74.18767499999996 40.67729299999991, -74.18795399999995 40.67761699999989, -74.18819699999995 40.67792299999992, -74.18852099999998 40.67848099999987, -74.18877299999997 40.67885899999989, -74.18905199999995 40.67933599999985, -74.18935799999997 40.67975899999988, -74.18949299999997 40.680091999999895, -74.18969999999996 40.680793999999885, -74.18977199999995 40.68113599999987, -74.189781 40.681198999999886, -74.18983499999996 40.68131599999987, -74.18991599999998 40.68154099999988, -74.18996999999996 40.6818019999999, -74.18999699999995 40.6822519999999, -74.18999699999995 40.68262999999992, -74.18996999999996 40.68295399999989, -74.18998799999997 40.68317899999989, -74.18995199999995 40.683520999999885, -74.18993399999994 40.68370999999992, -74.189871 40.684078999999876, -74.189781 40.68481699999991, -74.18976299999997 40.68503299999986, -74.18962799999997 40.686103999999915, -74.18955599999998 40.68689599999987, -74.18951999999996 40.6872019999999, -74.18947499999996 40.68748999999985, -74.18939399999994 40.68773299999988, -74.18939399999994 40.68783199999991, -74.18941199999995 40.687939999999855, -74.18940299999997 40.68809299999987, -74.18934899999994 40.68826399999989, -74.18922299999997 40.68862399999989, -74.18898899999994 40.68904699999991, -74.18870099999998 40.689442999999876, -74.18779199999994 40.690189999999866, -74.18723399999999 40.69059499999986, -74.18636999999995 40.69118899999991, -74.18591099999998 40.69144999999988, -74.18563199999994 40.69164799999987, -74.18445299999996 40.694995999999904)))" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "type", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "properties", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"borough\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"location_id\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"objectid\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"shape_area\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"shape_leng\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"zone\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "json_geometry", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "geometry", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql \n", + "-- limiting for ipynb only\n", + "select * from neighbourhoods limit 1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "3738db02-9bc9-437b-a723-00c438a6fb87", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Compute some basic geometry attributes\n", + "\n", + "> Mosaic provides a number of functions for extracting the properties of geometries. Here are some that are relevant to Polygon geometries:" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c7103a81-672b-4427-ab98-89e8cec0c094", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
geometrycalculatedAreacalculatedLength
MULTIPOLYGON (((-74.18445299999996 40.694995999999904, -74.18448899999999 40.69509499999987, -74.18449799999996 40.69518499999987, -74.18438099999997 40.69587799999989, -74.18428199999994 40.6962109999999, -74.18402099999997 40.697074999999884, -74.18391299999996 40.69750699999986, -74.18375099999997 40.69779499999988, -74.18363399999998 40.6983259999999, -74.18356199999994 40.698451999999875, -74.18354399999998 40.69855999999988, -74.18350799999996 40.69870399999992, -74.18327399999998 40.70008999999988, -74.18315699999994 40.701214999999884, -74.18316599999997 40.702384999999886, -74.18313899999998 40.7026279999999, -74.18309399999998 40.7028529999999, -74.18299499999995 40.70315899999985, -74.18284199999994 40.70346499999989, -74.18264399999998 40.70373499999988, -74.18242799999996 40.70395099999992, -74.18220299999996 40.704139999999896, -74.18203199999994 40.70425699999987, -74.18180699999994 40.7043919999999, -74.18157299999996 40.70449999999988, -74.18132099999997 40.70460799999991, -74.18080799999996 40.7047879999999, -74.179467 40.70534599999992, -74.17887299999995 40.70554399999987, -74.17831499999994 40.70572399999987, -74.17776599999996 40.70589499999988, -74.17709099999996 40.706092999999896, -74.17699199999998 40.70613799999988, -74.17689299999995 40.70619199999988, -74.17664999999994 40.70641699999988, -74.17642499999994 40.706695999999916, -74.17628999999994 40.70689399999988, -74.17608299999995 40.70710999999989, -74.17599299999995 40.70719099999991, -74.17589399999997 40.707262999999905, -74.17565999999994 40.70737999999988, -74.17538099999996 40.707469999999915, -74.17515599999996 40.707514999999894, -74.17475999999994 40.707595999999924, -74.17417499999993 40.70766799999991, -74.17388699999998 40.70773099999992, -74.17347299999994 40.707748999999865, -74.17275299999994 40.707802999999906, -74.17188899999996 40.707910999999854, -74.17163699999998 40.70795599999986, -74.17133999999999 40.707964999999895, -74.17120499999999 40.70795599999986, -74.16994499999998 40.707973999999886, -74.16888299999994 40.7079379999999, -74.16681299999993 40.70785699999989, -74.16442799999999 40.70779399999987, -74.16401399999995 40.70777599999992, -74.16233999999997 40.707721999999876, -74.16081899999995 40.70764099999991, -74.16057599999993 40.70760499999988, -74.16033299999998 40.70756899999987, -74.160063 40.7074879999999, -74.15938799999998 40.707262999999905, -74.15904599999999 40.707145999999916, -74.15891999999997 40.70710999999989, -74.15827199999995 40.70687599999993, -74.15459099999998 40.705651999999894, -74.15409599999998 40.70544499999989, -74.15401499999997 40.70538199999988, -74.15387999999996 40.705327999999895, -74.15376299999997 40.705408999999875, -74.15323199999995 40.70524699999987, -74.15317799999997 40.70531899999989, -74.15306999999996 40.7052829999999, -74.15359199999995 40.70437399999987, -74.15386199999995 40.7038429999999, -74.15513999999996 40.70155699999987, -74.15544599999998 40.70108899999988, -74.15575199999995 40.7006659999999, -74.15600399999994 40.70026099999991, -74.15635499999996 40.69975699999986, -74.15745299999998 40.69809199999988, -74.15754299999998 40.6979389999999, -74.15758799999998 40.69781299999988, -74.15762399999994 40.69767799999991, -74.15829899999994 40.696705999999885, -74.15951399999994 40.69488799999988, -74.15958599999993 40.69476199999984, -74.16014399999995 40.69410499999988, -74.16057599999993 40.693222999999875, -74.16262799999998 40.69028899999989, -74.16279899999995 40.69002799999989, -74.16290699999996 40.68987499999987, -74.16292499999997 40.689874999999866, -74.16295199999996 40.689874999999866, -74.16306899999995 40.68989299999988, -74.16309599999994 40.689928999999886, -74.16322199999996 40.68998299999989, -74.16331199999996 40.68999199999993, -74.16341099999994 40.69000099999988, -74.16352799999999 40.69000999999986, -74.16380699999996 40.69004599999989, -74.16410399999995 40.690081999999904, -74.16417599999994 40.690081999999904, -74.16422999999998 40.69005499999988, -74.16436499999998 40.69003699999991, -74.16450899999995 40.68998299999986, -74.16467099999994 40.68988399999989, -74.16479699999996 40.689757999999884, -74.16491399999995 40.689586999999904, -74.16499499999998 40.689388999999885, -74.16528299999999 40.68891199999991, -74.16542699999997 40.6887589999999, -74.16548099999994 40.68863299999987, -74.16560699999997 40.68842599999988, -74.16576899999995 40.68802999999986, -74.16587699999997 40.68787699999991, -74.16583199999997 40.68757999999987, -74.16582299999999 40.68748999999987, -74.16580499999998 40.687156999999914, -74.16582299999999 40.68703999999986, -74.16589499999998 40.6868419999999, -74.16604799999999 40.68655399999988, -74.16639899999996 40.686022999999864, -74.16650699999997 40.68588799999986, -74.16674099999994 40.685491999999925, -74.16695699999997 40.68523099999988, -74.16738899999996 40.684546999999924, -74.16781199999997 40.6839439999999, -74.16791099999995 40.68379099999988, -74.16804599999995 40.68360199999991, -74.16816299999994 40.683475999999885, -74.16822599999995 40.68334999999991, -74.16848699999997 40.68299899999991, -74.16886499999998 40.68239599999987, -74.16916199999997 40.68199999999991, -74.16929699999997 40.68178399999989, -74.16947699999997 40.68155899999991, -74.16981899999996 40.681018999999885, -74.16995399999996 40.680874999999915, -74.17005299999994 40.68066799999987, -74.17041299999994 40.6801549999999, -74.17051199999997 40.67999299999987, -74.17067399999996 40.679650999999886, -74.17093499999999 40.679290999999864, -74.17144799999994 40.67847199999989, -74.17151999999999 40.678381999999885, -74.17160999999999 40.678255999999884, -74.17193399999996 40.67782399999988, -74.17200599999995 40.67773399999988, -74.17283399999997 40.67656399999988, -74.17314899999997 40.67619499999991, -74.17322999999999 40.6760779999999, -74.17329299999994 40.67601499999989, -74.17358999999993 40.67571799999991, -74.17423799999995 40.67493499999991, -74.17437299999995 40.674817999999895, -74.17484999999994 40.67432299999992, -74.17500299999995 40.6741699999999, -74.17538999999995 40.67375599999987, -74.17604699999998 40.673044999999895, -74.17630799999995 40.67276599999986, -74.17641599999996 40.672621999999876, -74.17663199999998 40.67239699999989, -74.17678499999994 40.67218099999991, -74.17697399999997 40.6719379999999, -74.17709099999996 40.671784999999886, -74.17734299999995 40.67155999999988, -74.17754999999994 40.67142499999989, -74.17778399999997 40.671316999999874, -74.17802699999999 40.671208999999884, -74.17862999999994 40.671037999999896, -74.17888199999999 40.671001999999895, -74.17912499999994 40.67099299999991, -74.17933199999999 40.67101099999992, -74.17979099999997 40.67115499999989, -74.17997999999994 40.671208999999884, -74.18010599999997 40.671262999999904, -74.18030399999998 40.67129899999986, -74.18133899999998 40.67170399999986, -74.18213999999996 40.67202799999989, -74.18384999999995 40.672648999999886, -74.18437199999994 40.67290999999989, -74.18458799999996 40.67302699999988, -74.18492099999997 40.673269999999896, -74.18503799999996 40.67335999999989, -74.18513699999994 40.673458999999866, -74.18547899999999 40.67390899999987, -74.18594699999994 40.674664999999905, -74.18670299999997 40.67578999999992, -74.18733299999997 40.67674399999987, -74.18767499999996 40.67729299999991, -74.18795399999995 40.67761699999989, -74.18819699999995 40.67792299999992, -74.18852099999998 40.67848099999987, -74.18877299999997 40.67885899999989, -74.18905199999995 40.67933599999985, -74.18935799999997 40.67975899999988, -74.18949299999997 40.680091999999895, -74.18969999999996 40.680793999999885, -74.18977199999995 40.68113599999987, -74.189781 40.681198999999886, -74.18983499999996 40.68131599999987, -74.18991599999998 40.68154099999988, -74.18996999999996 40.6818019999999, -74.18999699999995 40.6822519999999, -74.18999699999995 40.68262999999992, -74.18996999999996 40.68295399999989, -74.18998799999997 40.68317899999989, -74.18995199999995 40.683520999999885, -74.18993399999994 40.68370999999992, -74.189871 40.684078999999876, -74.189781 40.68481699999991, -74.18976299999997 40.68503299999986, -74.18962799999997 40.686103999999915, -74.18955599999998 40.68689599999987, -74.18951999999996 40.6872019999999, -74.18947499999996 40.68748999999985, -74.18939399999994 40.68773299999988, -74.18939399999994 40.68783199999991, -74.18941199999995 40.687939999999855, -74.18940299999997 40.68809299999987, -74.18934899999994 40.68826399999989, -74.18922299999997 40.68862399999989, -74.18898899999994 40.68904699999991, -74.18870099999998 40.689442999999876, -74.18779199999994 40.690189999999866, -74.18723399999999 40.69059499999986, -74.18636999999995 40.69118899999991, -74.18591099999998 40.69144999999988, -74.18563199999994 40.69164799999987, -74.18445299999996 40.694995999999904)))7.823067885002558E-40.11635745318867867
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "MULTIPOLYGON (((-74.18445299999996 40.694995999999904, -74.18448899999999 40.69509499999987, -74.18449799999996 40.69518499999987, -74.18438099999997 40.69587799999989, -74.18428199999994 40.6962109999999, -74.18402099999997 40.697074999999884, -74.18391299999996 40.69750699999986, -74.18375099999997 40.69779499999988, -74.18363399999998 40.6983259999999, -74.18356199999994 40.698451999999875, -74.18354399999998 40.69855999999988, -74.18350799999996 40.69870399999992, -74.18327399999998 40.70008999999988, -74.18315699999994 40.701214999999884, -74.18316599999997 40.702384999999886, -74.18313899999998 40.7026279999999, -74.18309399999998 40.7028529999999, -74.18299499999995 40.70315899999985, -74.18284199999994 40.70346499999989, -74.18264399999998 40.70373499999988, -74.18242799999996 40.70395099999992, -74.18220299999996 40.704139999999896, -74.18203199999994 40.70425699999987, -74.18180699999994 40.7043919999999, -74.18157299999996 40.70449999999988, -74.18132099999997 40.70460799999991, -74.18080799999996 40.7047879999999, -74.179467 40.70534599999992, -74.17887299999995 40.70554399999987, -74.17831499999994 40.70572399999987, -74.17776599999996 40.70589499999988, -74.17709099999996 40.706092999999896, -74.17699199999998 40.70613799999988, -74.17689299999995 40.70619199999988, -74.17664999999994 40.70641699999988, -74.17642499999994 40.706695999999916, -74.17628999999994 40.70689399999988, -74.17608299999995 40.70710999999989, -74.17599299999995 40.70719099999991, -74.17589399999997 40.707262999999905, -74.17565999999994 40.70737999999988, -74.17538099999996 40.707469999999915, -74.17515599999996 40.707514999999894, -74.17475999999994 40.707595999999924, -74.17417499999993 40.70766799999991, -74.17388699999998 40.70773099999992, -74.17347299999994 40.707748999999865, -74.17275299999994 40.707802999999906, -74.17188899999996 40.707910999999854, -74.17163699999998 40.70795599999986, -74.17133999999999 40.707964999999895, -74.17120499999999 40.70795599999986, -74.16994499999998 40.707973999999886, -74.16888299999994 40.7079379999999, -74.16681299999993 40.70785699999989, -74.16442799999999 40.70779399999987, -74.16401399999995 40.70777599999992, -74.16233999999997 40.707721999999876, -74.16081899999995 40.70764099999991, -74.16057599999993 40.70760499999988, -74.16033299999998 40.70756899999987, -74.160063 40.7074879999999, -74.15938799999998 40.707262999999905, -74.15904599999999 40.707145999999916, -74.15891999999997 40.70710999999989, -74.15827199999995 40.70687599999993, -74.15459099999998 40.705651999999894, -74.15409599999998 40.70544499999989, -74.15401499999997 40.70538199999988, -74.15387999999996 40.705327999999895, -74.15376299999997 40.705408999999875, -74.15323199999995 40.70524699999987, -74.15317799999997 40.70531899999989, -74.15306999999996 40.7052829999999, -74.15359199999995 40.70437399999987, -74.15386199999995 40.7038429999999, -74.15513999999996 40.70155699999987, -74.15544599999998 40.70108899999988, -74.15575199999995 40.7006659999999, -74.15600399999994 40.70026099999991, -74.15635499999996 40.69975699999986, -74.15745299999998 40.69809199999988, -74.15754299999998 40.6979389999999, -74.15758799999998 40.69781299999988, -74.15762399999994 40.69767799999991, -74.15829899999994 40.696705999999885, -74.15951399999994 40.69488799999988, -74.15958599999993 40.69476199999984, -74.16014399999995 40.69410499999988, -74.16057599999993 40.693222999999875, -74.16262799999998 40.69028899999989, -74.16279899999995 40.69002799999989, -74.16290699999996 40.68987499999987, -74.16292499999997 40.689874999999866, -74.16295199999996 40.689874999999866, -74.16306899999995 40.68989299999988, -74.16309599999994 40.689928999999886, -74.16322199999996 40.68998299999989, -74.16331199999996 40.68999199999993, -74.16341099999994 40.69000099999988, -74.16352799999999 40.69000999999986, -74.16380699999996 40.69004599999989, -74.16410399999995 40.690081999999904, -74.16417599999994 40.690081999999904, -74.16422999999998 40.69005499999988, -74.16436499999998 40.69003699999991, -74.16450899999995 40.68998299999986, -74.16467099999994 40.68988399999989, -74.16479699999996 40.689757999999884, -74.16491399999995 40.689586999999904, -74.16499499999998 40.689388999999885, -74.16528299999999 40.68891199999991, -74.16542699999997 40.6887589999999, -74.16548099999994 40.68863299999987, -74.16560699999997 40.68842599999988, -74.16576899999995 40.68802999999986, -74.16587699999997 40.68787699999991, -74.16583199999997 40.68757999999987, -74.16582299999999 40.68748999999987, -74.16580499999998 40.687156999999914, -74.16582299999999 40.68703999999986, -74.16589499999998 40.6868419999999, -74.16604799999999 40.68655399999988, -74.16639899999996 40.686022999999864, -74.16650699999997 40.68588799999986, -74.16674099999994 40.685491999999925, -74.16695699999997 40.68523099999988, -74.16738899999996 40.684546999999924, -74.16781199999997 40.6839439999999, -74.16791099999995 40.68379099999988, -74.16804599999995 40.68360199999991, -74.16816299999994 40.683475999999885, -74.16822599999995 40.68334999999991, -74.16848699999997 40.68299899999991, -74.16886499999998 40.68239599999987, -74.16916199999997 40.68199999999991, -74.16929699999997 40.68178399999989, -74.16947699999997 40.68155899999991, -74.16981899999996 40.681018999999885, -74.16995399999996 40.680874999999915, -74.17005299999994 40.68066799999987, -74.17041299999994 40.6801549999999, -74.17051199999997 40.67999299999987, -74.17067399999996 40.679650999999886, -74.17093499999999 40.679290999999864, -74.17144799999994 40.67847199999989, -74.17151999999999 40.678381999999885, -74.17160999999999 40.678255999999884, -74.17193399999996 40.67782399999988, -74.17200599999995 40.67773399999988, -74.17283399999997 40.67656399999988, -74.17314899999997 40.67619499999991, -74.17322999999999 40.6760779999999, -74.17329299999994 40.67601499999989, -74.17358999999993 40.67571799999991, -74.17423799999995 40.67493499999991, -74.17437299999995 40.674817999999895, -74.17484999999994 40.67432299999992, -74.17500299999995 40.6741699999999, -74.17538999999995 40.67375599999987, -74.17604699999998 40.673044999999895, -74.17630799999995 40.67276599999986, -74.17641599999996 40.672621999999876, -74.17663199999998 40.67239699999989, -74.17678499999994 40.67218099999991, -74.17697399999997 40.6719379999999, -74.17709099999996 40.671784999999886, -74.17734299999995 40.67155999999988, -74.17754999999994 40.67142499999989, -74.17778399999997 40.671316999999874, -74.17802699999999 40.671208999999884, -74.17862999999994 40.671037999999896, -74.17888199999999 40.671001999999895, -74.17912499999994 40.67099299999991, -74.17933199999999 40.67101099999992, -74.17979099999997 40.67115499999989, -74.17997999999994 40.671208999999884, -74.18010599999997 40.671262999999904, -74.18030399999998 40.67129899999986, -74.18133899999998 40.67170399999986, -74.18213999999996 40.67202799999989, -74.18384999999995 40.672648999999886, -74.18437199999994 40.67290999999989, -74.18458799999996 40.67302699999988, -74.18492099999997 40.673269999999896, -74.18503799999996 40.67335999999989, -74.18513699999994 40.673458999999866, -74.18547899999999 40.67390899999987, -74.18594699999994 40.674664999999905, -74.18670299999997 40.67578999999992, -74.18733299999997 40.67674399999987, -74.18767499999996 40.67729299999991, -74.18795399999995 40.67761699999989, -74.18819699999995 40.67792299999992, -74.18852099999998 40.67848099999987, -74.18877299999997 40.67885899999989, -74.18905199999995 40.67933599999985, -74.18935799999997 40.67975899999988, -74.18949299999997 40.680091999999895, -74.18969999999996 40.680793999999885, -74.18977199999995 40.68113599999987, -74.189781 40.681198999999886, -74.18983499999996 40.68131599999987, -74.18991599999998 40.68154099999988, -74.18996999999996 40.6818019999999, -74.18999699999995 40.6822519999999, -74.18999699999995 40.68262999999992, -74.18996999999996 40.68295399999989, -74.18998799999997 40.68317899999989, -74.18995199999995 40.683520999999885, -74.18993399999994 40.68370999999992, -74.189871 40.684078999999876, -74.189781 40.68481699999991, -74.18976299999997 40.68503299999986, -74.18962799999997 40.686103999999915, -74.18955599999998 40.68689599999987, -74.18951999999996 40.6872019999999, -74.18947499999996 40.68748999999985, -74.18939399999994 40.68773299999988, -74.18939399999994 40.68783199999991, -74.18941199999995 40.687939999999855, -74.18940299999997 40.68809299999987, -74.18934899999994 40.68826399999989, -74.18922299999997 40.68862399999989, -74.18898899999994 40.68904699999991, -74.18870099999998 40.689442999999876, -74.18779199999994 40.690189999999866, -74.18723399999999 40.69059499999986, -74.18636999999995 40.69118899999991, -74.18591099999998 40.69144999999988, -74.18563199999994 40.69164799999987, -74.18445299999996 40.694995999999904)))", + 7.823067885002558E-4, + 0.11635745318867867 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "geometry", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "calculatedArea", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "calculatedLength", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "-- limiting for ipynb only\n", + "select \n", + " geometry, \n", + " st_area(geometry) as calculatedArea, \n", + " st_length(geometry) as calculatedLength \n", + "from neighbourhoods \n", + "limit 1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "704024a0-8171-4218-a95e-ff8ef6ace37c", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Initial Trips Data [Points]\n", + "\n", + "> We will load some Taxi trips data to represent point data; this data is coming from Databricks public datasets available in your environment. __Note: this is 1.6 billion trips as-is; while it is no problem to process this, to keep this to a quickstart level, we are going to use just 1/10th of 1% or ~1.6 million.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "983adfbd-0bb4-43e7-941d-55fb8844b306", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
count
1,611,203
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "1,611,203" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "count", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql \n", + "create or replace temp view trips as (\n", + " select \n", + " xxhash64(pickup_datetime, dropoff_datetime, pickup_geom, dropoff_geom) as row_id, *\n", + " from (\n", + " select \n", + " trip_distance,\n", + " pickup_datetime,\n", + " dropoff_datetime,\n", + " st_astext(st_point(pickup_longitude, pickup_latitude)) as pickup_geom,\n", + " st_astext(st_point(dropoff_longitude, dropoff_latitude)) as dropoff_geom,\n", + " total_amount\n", + " from delta.`/databricks-datasets/nyctaxi/tables/nyctaxi_yellow`\n", + " tablesample (0.1 percent) repeatable (123)\n", + " )\n", + ");\n", + "\n", + "select format_number(count(1),0) as count from trips;" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d905fbe9-5104-4a09-bdee-4b5adba23bcf", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Spatial Joins\n", + "\n", + "> We can use Mosaic to perform spatial joins both with and without Mosaic indexing strategies. Indexing is very important when handling very different geometries both in size and in shape (ie. number of vertices)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e9ff1fa2-ca0b-4472-8c8a-1b317da11e76", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Getting the optimal resolution\n", + "\n", + "> We can use Mosaic functionality to identify how to best index our data based on the data inside the specific dataframe. Selecting an appropriate indexing resolution can have a considerable impact on the performance." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "2bff2755-9a4f-481b-a00f-93e0fd2ebd8a", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimal resolution is 9\n" + ] + } + ], + "source": [ + "from mosaic import MosaicFrame\n", + "\n", + "neighbourhoods_mosaic_frame = MosaicFrame(spark.table(\"neighbourhoods\"), \"geometry\")\n", + "optimal_resolution = neighbourhoods_mosaic_frame.get_optimal_resolution(sample_fraction=0.75)\n", + "\n", + "print(f\"Optimal resolution is {optimal_resolution}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "b28464a3-f420-4264-b58b-a7e7d79329ad", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> Not every resolution will yield performance improvements. By a rule of thumb it is always better to under-index than over-index - if not sure select a lower resolution. Higher resolutions are needed when we have very imbalanced geometries with respect to their size or with respect to the number of vertices. In such case indexing with more indices will considerably increase the parallel nature of the operations. You can think of Mosaic as a way to partition an overly complex row into multiple rows that have a balanced amount of computation each." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "6129062a-c951-4e1d-aac7-e146225dc9d8", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
resolutionmean_index_areamean_geometry_areapercentile_25_geometry_areapercentile_50_geometry_areapercentile_75_geometry_area
101.613031989295642E-6209.2813735025822366.88836237217488140.47899017489053277.457697890302
91.129122336468363E-529.897340555608889.55548081312268720.06842816384189739.63681595151253
112.3043288507855827E-71464.9712436152888468.2190572805376983.35402474692811942.206045030451
87.90392229801954E-54.2710130172709331.36505729876610032.86689439030573875.662355037138002
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 10, + 1.613031989295642E-6, + 209.28137350258223, + 66.88836237217488, + 140.47899017489053, + 277.457697890302 + ], + [ + 9, + 1.129122336468363E-5, + 29.89734055560888, + 9.555480813122687, + 20.068428163841897, + 39.63681595151253 + ], + [ + 11, + 2.3043288507855827E-7, + 1464.9712436152888, + 468.2190572805376, + 983.3540247469281, + 1942.206045030451 + ], + [ + 8, + 7.90392229801954E-5, + 4.271013017270933, + 1.3650572987661003, + 2.8668943903057387, + 5.662355037138002 + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "resolution", + "type": "\"integer\"" + }, + { + "metadata": "{}", + "name": "mean_index_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "mean_geometry_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "percentile_25_geometry_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "percentile_50_geometry_area", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "percentile_75_geometry_area", + "type": "\"double\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "display(\n", + " neighbourhoods_mosaic_frame.get_resolution_metrics(sample_rows=150)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "eb868752-f425-4c70-aab9-9a7f0d45f049", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Indexing using the optimal resolution\n", + "\n", + "> We will use mosaic sql functions to index our points data. Here we will use resolution 9, index resolution depends on the dataset in use." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "e0e73687-eda2-46de-8d86-e38375d38b58", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
row_idpickup_h3dropoff_h3trip_distancepickup_datetimedropoff_datetimepickup_geomdropoff_geomtotal_amounttrip_line
89727808757135120736177331225768755196177331238747504631.072009-09-29T10:59:00.000+00002009-09-29T11:07:00.000+0000POINT (-73.956758 40.769978)POINT (-73.97026 40.765078)6.1LINESTRING (-73.956758 40.769978, -73.97026 40.765078)
45956017075756627936177331243885527036177331238658375678.82009-09-15T10:31:04.000+00002009-09-15T11:06:37.000+0000POINT (-73.872786 40.774201)POINT (-73.974646 40.760039)26.1LINESTRING (-73.872786 40.774201, -73.974646 40.760039)
31377993212758462316177331226439843836177331226521108471.12009-09-17T07:02:38.000+00002009-09-17T07:07:17.000+0000POINT (-73.94527 40.786908)POINT (-73.938264 40.797143)5.3LINESTRING (-73.94527 40.786908, -73.938264 40.797143)
-444650668213766046177331225870991356177331225750405111.42009-09-01T11:52:04.000+00002009-09-01T11:59:17.000+0000POINT (-73.967334 40.788187)POINT (-73.955356 40.78257)6.1LINESTRING (-73.967334 40.788187, -73.955356 40.78257)
-23003782924435447556177331225760890876177331238658375671.52009-09-28T09:09:40.000+00002009-09-28T09:17:04.000+0000POINT (-73.956012 40.772426)POINT (-73.972197 40.759981)6.9LINESTRING (-73.956012 40.772426, -73.972197 40.759981)
-44992069449022164136177331225760890876177331243576197114.32009-09-05T01:47:07.000+00002009-09-05T01:58:06.000+0000POINT (-73.956822 40.770955)POINT (-73.922656 40.767439)11.7LINESTRING (-73.956822 40.770955, -73.922656 40.767439)
56578353006779902296177331225742540796177331238380503031.12009-09-18T09:07:45.000+00002009-09-18T09:18:32.000+0000POINT (-73.955658 40.776628)POINT (-73.958469 40.766472)7.3LINESTRING (-73.955658 40.776628, -73.958469 40.766472)
82566615274726672976177331225852641276177331238726533113.12009-09-19T19:53:31.000+00002009-09-19T20:08:56.000+0000POINT (-73.948588 40.773806)POINT (-73.985448 40.756029)10.9LINESTRING (-73.948588 40.773806, -73.985448 40.756029)
91917781604722246046177331225742540796177331510879191033.862009-09-28T20:11:00.000+00002009-09-28T20:29:00.000+0000POINT (-73.95882 40.777945)POINT (-73.992457 40.7305)15.4LINESTRING (-73.95882 40.777945, -73.992457 40.7305)
-25326786790545572946177331225829048316177331509728378873.172009-09-19T11:58:00.000+00002009-09-19T12:15:00.000+0000POINT (-73.954202 40.7845)POINT (-73.987672 40.757067)11.3LINESTRING (-73.954202 40.7845, -73.987672 40.757067)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 8972780875713512073, + 617733122576875519, + 617733123874750463, + 1.07, + "2009-09-29T10:59:00.000+0000", + "2009-09-29T11:07:00.000+0000", + "POINT (-73.956758 40.769978)", + "POINT (-73.97026 40.765078)", + 6.1, + "LINESTRING (-73.956758 40.769978, -73.97026 40.765078)" + ], + [ + 4595601707575662793, + 617733124388552703, + 617733123865837567, + 8.8, + "2009-09-15T10:31:04.000+0000", + "2009-09-15T11:06:37.000+0000", + "POINT (-73.872786 40.774201)", + "POINT (-73.974646 40.760039)", + 26.1, + "LINESTRING (-73.872786 40.774201, -73.974646 40.760039)" + ], + [ + 3137799321275846231, + 617733122643984383, + 617733122652110847, + 1.1, + "2009-09-17T07:02:38.000+0000", + "2009-09-17T07:07:17.000+0000", + "POINT (-73.94527 40.786908)", + "POINT (-73.938264 40.797143)", + 5.3, + "LINESTRING (-73.94527 40.786908, -73.938264 40.797143)" + ], + [ + -44465066821376604, + 617733122587099135, + 617733122575040511, + 1.4, + "2009-09-01T11:52:04.000+0000", + "2009-09-01T11:59:17.000+0000", + "POINT (-73.967334 40.788187)", + "POINT (-73.955356 40.78257)", + 6.1, + "LINESTRING (-73.967334 40.788187, -73.955356 40.78257)" + ], + [ + -2300378292443544755, + 617733122576089087, + 617733123865837567, + 1.5, + "2009-09-28T09:09:40.000+0000", + "2009-09-28T09:17:04.000+0000", + "POINT (-73.956012 40.772426)", + "POINT (-73.972197 40.759981)", + 6.9, + "LINESTRING (-73.956012 40.772426, -73.972197 40.759981)" + ], + [ + -4499206944902216413, + 617733122576089087, + 617733124357619711, + 4.3, + "2009-09-05T01:47:07.000+0000", + "2009-09-05T01:58:06.000+0000", + "POINT (-73.956822 40.770955)", + "POINT (-73.922656 40.767439)", + 11.7, + "LINESTRING (-73.956822 40.770955, -73.922656 40.767439)" + ], + [ + 5657835300677990229, + 617733122574254079, + 617733123838050303, + 1.1, + "2009-09-18T09:07:45.000+0000", + "2009-09-18T09:18:32.000+0000", + "POINT (-73.955658 40.776628)", + "POINT (-73.958469 40.766472)", + 7.3, + "LINESTRING (-73.955658 40.776628, -73.958469 40.766472)" + ], + [ + 8256661527472667297, + 617733122585264127, + 617733123872653311, + 3.1, + "2009-09-19T19:53:31.000+0000", + "2009-09-19T20:08:56.000+0000", + "POINT (-73.948588 40.773806)", + "POINT (-73.985448 40.756029)", + 10.9, + "LINESTRING (-73.948588 40.773806, -73.985448 40.756029)" + ], + [ + 9191778160472224604, + 617733122574254079, + 617733151087919103, + 3.86, + "2009-09-28T20:11:00.000+0000", + "2009-09-28T20:29:00.000+0000", + "POINT (-73.95882 40.777945)", + "POINT (-73.992457 40.7305)", + 15.4, + "LINESTRING (-73.95882 40.777945, -73.992457 40.7305)" + ], + [ + -2532678679054557294, + 617733122582904831, + 617733150972837887, + 3.17, + "2009-09-19T11:58:00.000+0000", + "2009-09-19T12:15:00.000+0000", + "POINT (-73.954202 40.7845)", + "POINT (-73.987672 40.757067)", + 11.3, + "LINESTRING (-73.954202 40.7845, -73.987672 40.757067)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "row_id", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "pickup_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "dropoff_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "dropoff_datetime", + "type": "\"timestamp\"" + }, + { + "metadata": "{}", + "name": "pickup_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "total_amount", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "trip_line", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "create or replace temp view tripsWithIndex as (\n", + " select \n", + " row_id, pickup_h3, dropoff_h3,\n", + " * except(row_id, pickup_h3, dropoff_h3)\n", + " from (\n", + " select \n", + " *,\n", + " grid_pointascellid(pickup_geom, 9) as pickup_h3,\n", + " grid_pointascellid(dropoff_geom, 9) as dropoff_h3,\n", + " st_makeline(array(pickup_geom, dropoff_geom)) as trip_line\n", + " from trips\n", + " )\n", + ");\n", + "\n", + "select * from tripsWithIndex limit 10;" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e519823d-b03b-4984-9a6a-4988aff54648", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> We will also index our neighbourhoods using a built in generator function." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "1c2ea737-1d6b-4399-b339-4394b1c7b286", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
count
11,885
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "11,885" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "count", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "-- [1] We break down the original geometry in multiple smaller mosaic chips,\n", + "-- each with its own index.\n", + "-- [2] We don't need the original geometry any more, since we have broken\n", + "-- it down into smaller mosaic chips.\n", + "create or replace temp view neighbourhoodsWithIndex as (\n", + " select \n", + " * except(geometry, json_geometry),\n", + " grid_tessellateexplode(geometry, 9) as mosaic_index\n", + " from neighbourhoods\n", + ");\n", + "\n", + "-- notice the explode results in more rows\n", + "select format_number(count(1),0) as count from neighbourhoodsWithIndex" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "662e27dc-26cd-4681-bd13-bfc1e56440b4", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
typepropertiesmosaic_index
FeatureCollectionList(EWR, 1, 1, 0.0007823067885, 0.116357453189, Newark Airport)List(true, 617733150781997055, AAAAAAMAAAABAAAACMBSi+u3pmJPQERXt9Zja+DAUowOEmsLgUBEV5j/c7NdwFKMDNGKYo5ARFdfWe/7QsBSi+k2kMI9QERXRItV/dvAUovG3BrqLkBEV2Nhr37nwFKLyBxP4SdARFedBzkzSsBSi+u3pmJPQERXt9Zja+DAUos= (truncated))
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + "FeatureCollection", + [ + "EWR", + "1", + "1", + "0.0007823067885", + "0.116357453189", + "Newark Airport" + ], + [ + true, + 617733150781997055, + "AAAAAAMAAAABAAAACMBSi+u3pmJPQERXt9Zja+DAUowOEmsLgUBEV5j/c7NdwFKMDNGKYo5ARFdfWe/7QsBSi+k2kMI9QERXRItV/dvAUovG3BrqLkBEV2Nhr37nwFKLyBxP4SdARFedBzkzSsBSi+u3pmJPQERXt9Zja+DAUos= (truncated)" + ] + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "type", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "properties", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"borough\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"location_id\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"objectid\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"shape_area\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"shape_leng\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"zone\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}}]}" + }, + { + "metadata": "{}", + "name": "mosaic_index", + "type": "{\"type\":\"struct\",\"fields\":[{\"name\":\"is_core\",\"type\":\"boolean\",\"nullable\":true,\"metadata\":{}},{\"name\":\"index_id\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"wkb\",\"type\":\"binary\",\"nullable\":true,\"metadata\":{}}]}" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql \n", + "-- limiting for ipynb only\n", + "select * from neighbourhoodsWithIndex limit 1;" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "a8028556-2f1e-4f84-9ef0-e400815908d1", + "showTitle": false, + "title": "" + } + }, + "source": [ + "### Performing the spatial join\n", + "\n", + "> We can now do spatial joins to both pickup and drop off zones based on geolocations in our datasets." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "43a8f2f9-36e1-49a6-820a-7f240be56b60", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
trip_distancepickup_geomdropoff_geompickup_h3dropoff_h3pickup_zonetrip_line
1.07POINT (-73.956758 40.769978)POINT (-73.97026 40.765078)617733122576875519617733123874750463Lenox Hill WestLINESTRING (-73.956758 40.769978, -73.97026 40.765078)
8.8POINT (-73.872786 40.774201)POINT (-73.974646 40.760039)617733124388552703617733123865837567LaGuardia AirportLINESTRING (-73.872786 40.774201, -73.974646 40.760039)
1.1POINT (-73.94527 40.786908)POINT (-73.938264 40.797143)617733122643984383617733122652110847East Harlem SouthLINESTRING (-73.94527 40.786908, -73.938264 40.797143)
1.4POINT (-73.967334 40.788187)POINT (-73.955356 40.78257)617733122587099135617733122575040511Upper West Side NorthLINESTRING (-73.967334 40.788187, -73.955356 40.78257)
1.5POINT (-73.956012 40.772426)POINT (-73.972197 40.759981)617733122576089087617733123865837567Lenox Hill WestLINESTRING (-73.956012 40.772426, -73.972197 40.759981)
4.3POINT (-73.956822 40.770955)POINT (-73.922656 40.767439)617733122576089087617733124357619711Lenox Hill WestLINESTRING (-73.956822 40.770955, -73.922656 40.767439)
1.1POINT (-73.955658 40.776628)POINT (-73.958469 40.766472)617733122574254079617733123838050303Upper East Side NorthLINESTRING (-73.955658 40.776628, -73.958469 40.766472)
3.1POINT (-73.948588 40.773806)POINT (-73.985448 40.756029)617733122585264127617733123872653311Yorkville EastLINESTRING (-73.948588 40.773806, -73.985448 40.756029)
3.86POINT (-73.95882 40.777945)POINT (-73.992457 40.7305)617733122574254079617733151087919103Upper East Side NorthLINESTRING (-73.95882 40.777945, -73.992457 40.7305)
3.17POINT (-73.954202 40.7845)POINT (-73.987672 40.757067)617733122582904831617733150972837887Upper East Side NorthLINESTRING (-73.954202 40.7845, -73.987672 40.757067)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 1.07, + "POINT (-73.956758 40.769978)", + "POINT (-73.97026 40.765078)", + 617733122576875519, + 617733123874750463, + "Lenox Hill West", + "LINESTRING (-73.956758 40.769978, -73.97026 40.765078)" + ], + [ + 8.8, + "POINT (-73.872786 40.774201)", + "POINT (-73.974646 40.760039)", + 617733124388552703, + 617733123865837567, + "LaGuardia Airport", + "LINESTRING (-73.872786 40.774201, -73.974646 40.760039)" + ], + [ + 1.1, + "POINT (-73.94527 40.786908)", + "POINT (-73.938264 40.797143)", + 617733122643984383, + 617733122652110847, + "East Harlem South", + "LINESTRING (-73.94527 40.786908, -73.938264 40.797143)" + ], + [ + 1.4, + "POINT (-73.967334 40.788187)", + "POINT (-73.955356 40.78257)", + 617733122587099135, + 617733122575040511, + "Upper West Side North", + "LINESTRING (-73.967334 40.788187, -73.955356 40.78257)" + ], + [ + 1.5, + "POINT (-73.956012 40.772426)", + "POINT (-73.972197 40.759981)", + 617733122576089087, + 617733123865837567, + "Lenox Hill West", + "LINESTRING (-73.956012 40.772426, -73.972197 40.759981)" + ], + [ + 4.3, + "POINT (-73.956822 40.770955)", + "POINT (-73.922656 40.767439)", + 617733122576089087, + 617733124357619711, + "Lenox Hill West", + "LINESTRING (-73.956822 40.770955, -73.922656 40.767439)" + ], + [ + 1.1, + "POINT (-73.955658 40.776628)", + "POINT (-73.958469 40.766472)", + 617733122574254079, + 617733123838050303, + "Upper East Side North", + "LINESTRING (-73.955658 40.776628, -73.958469 40.766472)" + ], + [ + 3.1, + "POINT (-73.948588 40.773806)", + "POINT (-73.985448 40.756029)", + 617733122585264127, + 617733123872653311, + "Yorkville East", + "LINESTRING (-73.948588 40.773806, -73.985448 40.756029)" + ], + [ + 3.86, + "POINT (-73.95882 40.777945)", + "POINT (-73.992457 40.7305)", + 617733122574254079, + 617733151087919103, + "Upper East Side North", + "LINESTRING (-73.95882 40.777945, -73.992457 40.7305)" + ], + [ + 3.17, + "POINT (-73.954202 40.7845)", + "POINT (-73.987672 40.757067)", + 617733122582904831, + 617733150972837887, + "Upper East Side North", + "LINESTRING (-73.954202 40.7845, -73.987672 40.757067)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "dropoff_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "pickup_zone", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "trip_line", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "\n", + "create or replace temp view withPickupZone as (\n", + " select \n", + " trip_distance, pickup_geom, dropoff_geom, pickup_h3, dropoff_h3, pickup_zone, trip_line\n", + " from tripsWithIndex\n", + " join (\n", + " select \n", + " properties.zone as pickup_zone,\n", + " mosaic_index\n", + " from neighbourhoodsWithIndex\n", + " )\n", + " on mosaic_index.index_id == pickup_h3\n", + " where mosaic_index.is_core or st_contains(mosaic_index.wkb, pickup_geom)\n", + ");\n", + "\n", + "-- limiting for ipynb only\n", + "select * from withPickupZone limit 10;" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "db947fdf-b039-4675-838f-0d16fdd4516f", + "showTitle": false, + "title": "" + } + }, + "source": [ + "> We can easily perform a similar join for the drop off location. __Note: in this case using `withPickupZone` from above as the left sid of the join.__" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "implicitDf": true, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "c6f658f2-15f0-4fd9-8df8-531e83480178", + "showTitle": false, + "title": "" + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "
trip_distancepickup_geomdropoff_geompickup_h3dropoff_h3pickup_zonedropoff_zonetrip_line
1.07POINT (-73.956758 40.769978)POINT (-73.97026 40.765078)617733122576875519617733123874750463Lenox Hill WestUpper East Side SouthLINESTRING (-73.956758 40.769978, -73.97026 40.765078)
8.8POINT (-73.872786 40.774201)POINT (-73.974646 40.760039)617733124388552703617733123865837567LaGuardia AirportMidtown CenterLINESTRING (-73.872786 40.774201, -73.974646 40.760039)
1.1POINT (-73.94527 40.786908)POINT (-73.938264 40.797143)617733122643984383617733122652110847East Harlem SouthEast Harlem NorthLINESTRING (-73.94527 40.786908, -73.938264 40.797143)
1.4POINT (-73.967334 40.788187)POINT (-73.955356 40.78257)617733122587099135617733122575040511Upper West Side NorthUpper East Side NorthLINESTRING (-73.967334 40.788187, -73.955356 40.78257)
1.5POINT (-73.956012 40.772426)POINT (-73.972197 40.759981)617733122576089087617733123865837567Lenox Hill WestMidtown CenterLINESTRING (-73.956012 40.772426, -73.972197 40.759981)
4.3POINT (-73.956822 40.770955)POINT (-73.922656 40.767439)617733122576089087617733124357619711Lenox Hill WestOld AstoriaLINESTRING (-73.956822 40.770955, -73.922656 40.767439)
1.1POINT (-73.955658 40.776628)POINT (-73.958469 40.766472)617733122574254079617733123838050303Upper East Side NorthLenox Hill WestLINESTRING (-73.955658 40.776628, -73.958469 40.766472)
3.1POINT (-73.948588 40.773806)POINT (-73.985448 40.756029)617733122585264127617733123872653311Yorkville EastTimes Sq/Theatre DistrictLINESTRING (-73.948588 40.773806, -73.985448 40.756029)
3.86POINT (-73.95882 40.777945)POINT (-73.992457 40.7305)617733122574254079617733151087919103Upper East Side NorthGreenwich Village NorthLINESTRING (-73.95882 40.777945, -73.992457 40.7305)
3.17POINT (-73.954202 40.7845)POINT (-73.987672 40.757067)617733122582904831617733150972837887Upper East Side NorthTimes Sq/Theatre DistrictLINESTRING (-73.954202 40.7845, -73.987672 40.757067)
" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "aggData": [], + "aggError": "", + "aggOverflow": false, + "aggSchema": [], + "aggSeriesLimitReached": false, + "aggType": "", + "arguments": {}, + "columnCustomDisplayInfos": {}, + "data": [ + [ + 1.07, + "POINT (-73.956758 40.769978)", + "POINT (-73.97026 40.765078)", + 617733122576875519, + 617733123874750463, + "Lenox Hill West", + "Upper East Side South", + "LINESTRING (-73.956758 40.769978, -73.97026 40.765078)" + ], + [ + 8.8, + "POINT (-73.872786 40.774201)", + "POINT (-73.974646 40.760039)", + 617733124388552703, + 617733123865837567, + "LaGuardia Airport", + "Midtown Center", + "LINESTRING (-73.872786 40.774201, -73.974646 40.760039)" + ], + [ + 1.1, + "POINT (-73.94527 40.786908)", + "POINT (-73.938264 40.797143)", + 617733122643984383, + 617733122652110847, + "East Harlem South", + "East Harlem North", + "LINESTRING (-73.94527 40.786908, -73.938264 40.797143)" + ], + [ + 1.4, + "POINT (-73.967334 40.788187)", + "POINT (-73.955356 40.78257)", + 617733122587099135, + 617733122575040511, + "Upper West Side North", + "Upper East Side North", + "LINESTRING (-73.967334 40.788187, -73.955356 40.78257)" + ], + [ + 1.5, + "POINT (-73.956012 40.772426)", + "POINT (-73.972197 40.759981)", + 617733122576089087, + 617733123865837567, + "Lenox Hill West", + "Midtown Center", + "LINESTRING (-73.956012 40.772426, -73.972197 40.759981)" + ], + [ + 4.3, + "POINT (-73.956822 40.770955)", + "POINT (-73.922656 40.767439)", + 617733122576089087, + 617733124357619711, + "Lenox Hill West", + "Old Astoria", + "LINESTRING (-73.956822 40.770955, -73.922656 40.767439)" + ], + [ + 1.1, + "POINT (-73.955658 40.776628)", + "POINT (-73.958469 40.766472)", + 617733122574254079, + 617733123838050303, + "Upper East Side North", + "Lenox Hill West", + "LINESTRING (-73.955658 40.776628, -73.958469 40.766472)" + ], + [ + 3.1, + "POINT (-73.948588 40.773806)", + "POINT (-73.985448 40.756029)", + 617733122585264127, + 617733123872653311, + "Yorkville East", + "Times Sq/Theatre District", + "LINESTRING (-73.948588 40.773806, -73.985448 40.756029)" + ], + [ + 3.86, + "POINT (-73.95882 40.777945)", + "POINT (-73.992457 40.7305)", + 617733122574254079, + 617733151087919103, + "Upper East Side North", + "Greenwich Village North", + "LINESTRING (-73.95882 40.777945, -73.992457 40.7305)" + ], + [ + 3.17, + "POINT (-73.954202 40.7845)", + "POINT (-73.987672 40.757067)", + 617733122582904831, + 617733150972837887, + "Upper East Side North", + "Times Sq/Theatre District", + "LINESTRING (-73.954202 40.7845, -73.987672 40.757067)" + ] + ], + "datasetInfos": [], + "dbfsResultPath": null, + "isJsonSchema": true, + "metadata": {}, + "overflow": false, + "plotOptions": { + "customPlotOptions": {}, + "displayType": "table", + "pivotAggregation": null, + "pivotColumns": null, + "xColumns": null, + "yColumns": null + }, + "removedWidgets": [], + "schema": [ + { + "metadata": "{}", + "name": "trip_distance", + "type": "\"double\"" + }, + { + "metadata": "{}", + "name": "pickup_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_geom", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "pickup_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "dropoff_h3", + "type": "\"long\"" + }, + { + "metadata": "{}", + "name": "pickup_zone", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "dropoff_zone", + "type": "\"string\"" + }, + { + "metadata": "{}", + "name": "trip_line", + "type": "\"string\"" + } + ], + "type": "table" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "%sql\n", + "create or replace temp view withDropoffZone as (\n", + " select \n", + " trip_distance, pickup_geom, dropoff_geom, pickup_h3, dropoff_h3, pickup_zone, dropoff_zone, trip_line\n", + " from withPickupZone\n", + " join (\n", + " select \n", + " properties.zone as dropoff_zone,\n", + " mosaic_index\n", + " from neighbourhoodsWithIndex\n", + " )\n", + " on mosaic_index.index_id == dropoff_h3\n", + " where mosaic_index.is_core or st_contains(mosaic_index.wkb, dropoff_geom)\n", + ");\n", + "\n", + "-- limiting for ipynb only\n", + "select * from withDropoffZone limit 10" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "30d4507b-7189-455e-9a4e-681d2f4714ac", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Visualise the results in Kepler\n", + "\n", + "> Mosaic abstracts interaction with Kepler in python through the use of the `%%mosaic_kepler` magic. When python is not the notebook language, you can prepend `%python` before the magic to make the switch." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "17c9cbeb-f411-4b2d-94d7-6737aaf1e1c4", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Here is the initial rendering with trip lines._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "81d92d32-c979-4dd8-9e7b-1a19d2507f13", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "d331fd71-d383-485e-bb6f-6bcd2302dae7", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Here is with trip lines off and some other adjustments._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "4c1c94de-97bb-41e3-abd2-955b6ea3effd", + "showTitle": false, + "title": "" + }, + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.databricks.v1+output": { + "addedWidgets": {}, + "arguments": {}, + "data": "", + "datasetInfos": [], + "metadata": {}, + "removedWidgets": [], + "textData": null, + "type": "htmlSandbox" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "displayHTML(\"\"\"\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "e1311242-147c-461e-9689-e10e02bd66e8", + "showTitle": false, + "title": "" + } + }, + "source": [ + "_Uncomment the following within databricks for actual results. Hint: you can toggle layers on/off and adjust properties._" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "inputWidgets": {}, + "nuid": "0a093833-f267-4194-b06e-5575001727d2", + "showTitle": false, + "title": "" + } + }, + "outputs": [], + "source": [ + "# %%mosaic_kepler\n", + "# withDropoffZone \"pickup_h3\" \"h3\" 5000" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "inputWidgets": {}, + "nuid": "c1466346-8537-4e15-9afc-54056129af5a", + "showTitle": false, + "title": "" + } + }, + "source": [ + "## Databricks Lakehouse can read / write most any data format\n", + "\n", + "> Here are [built-in](https://docs.databricks.com/en/external-data/index.html) formats as well as Mosaic [readers](https://databrickslabs.github.io/mosaic/api/api.html). __Note: best performance with Delta Lake format__, ref [Databricks](https://docs.databricks.com/en/delta/index.html) and [OSS](https://docs.delta.io/latest/index.html) docs for Delta Lake. Beyond built-in formats, Databricks is a platform on which you can install a wide variety of libraries, e.g. [1](https://docs.databricks.com/en/libraries/index.html#python-environment-management) | [2](https://docs.databricks.com/en/compute/compatibility.html) | [3](https://docs.databricks.com/en/init-scripts/index.html).\n", + "\n", + "Example of [reading](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameReader.html?highlight=read#pyspark.sql.DataFrameReader) and [writing](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrameWriter.html?highlight=pyspark%20sql%20dataframe%20writer#pyspark.sql.DataFrameWriter) a Spark DataFrame with Delta Lake format.\n", + "\n", + "```\n", + "# - `write.format(\"delta\")` is default in Databricks\n", + "# - can save to a specified path in the Lakehouse\n", + "# - can save as a table in the Databricks Metastore\n", + "df.write.save(\"\")\n", + "df.write.saveAsTable(\"\")\n", + "```\n", + "\n", + "Example of loading a Delta Lake Table as a Spark DataFrame.\n", + "\n", + "```\n", + "# - `read.format(\"delta\")` is default in Databricks\n", + "# - can load a specified path in the Lakehouse\n", + "# - can load a table in the Databricks Metastore\n", + "df.read.load(\"\")\n", + "df.table(\"\")\n", + "```\n", + "\n", + "More on [Unity Catalog](https://docs.databricks.com/en/data-governance/unity-catalog/index.html) in Databricks Lakehouse for Governing [Tables](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#tables) and [Volumes](https://docs.databricks.com/en/data-governance/unity-catalog/index.html#volumes)." + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "dashboards": [], + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": 1148550101132091, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 2 + }, + "notebookName": "QuickstartNotebook", + "widgets": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/examples/sql/QuickstartNotebook.sql b/notebooks/examples/sql/QuickstartNotebook.sql deleted file mode 100644 index 01e1ed996..000000000 --- a/notebooks/examples/sql/QuickstartNotebook.sql +++ /dev/null @@ -1,272 +0,0 @@ --- Databricks notebook source --- MAGIC %md --- MAGIC ## Setup NYC taxi zones --- MAGIC In order to setup the data please run the notebook available at "../../data/DownloadNYCTaxiZones".
--- MAGIC DownloadNYCTaxiZones notebook will make sure we have New York City Taxi zone shapes available in our environment. - --- COMMAND ---------- - --- MAGIC %python --- MAGIC user_name = dbutils.notebook.entry_point.getDbutils().notebook().getContext().userName().get() --- MAGIC --- MAGIC raw_path = f"dbfs:/tmp/mosaic/{user_name}" --- MAGIC raw_taxi_zones_path = f"{raw_path}/taxi_zones" --- MAGIC --- MAGIC print(f"The raw data is stored in {raw_path}") - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## Enable Mosaic in the notebook --- MAGIC To get started, you'll need to attach the JAR to your cluster and import instances as in the cell below.
- --- COMMAND ---------- - --- MAGIC %python --- MAGIC import mosaic as mos --- MAGIC mos.enable_mosaic(spark, dbutils) - --- COMMAND ---------- - --- MAGIC %md ## Read polygons from GeoJson - --- COMMAND ---------- - --- MAGIC %md --- MAGIC With the functionallity Mosaic brings we can easily load GeoJSON files using spark.
--- MAGIC In the past this required GeoPandas in python and conversion to spark dataframe.
--- MAGIC Scala and SQL were hard to demo.
- --- COMMAND ---------- - --- MAGIC %python --- MAGIC # Note: Here we are using python as a proxy to programmatically --- MAGIC # pass the location of our data source for taxi zones. --- MAGIC spark.sql(f"drop table if exists taxi_zones;") --- MAGIC spark.sql( --- MAGIC f""" --- MAGIC create table if not exists taxi_zones --- MAGIC using json --- MAGIC options (multiline = true) --- MAGIC location "{raw_taxi_zones_path}"; --- MAGIC """ --- MAGIC ) - --- COMMAND ---------- - -create or replace temp view neighbourhoods as ( - select - type, - feature.properties as properties, - st_astext(st_geomfromgeojson(to_json(feature.geometry))) as geometry - from ( - select - type, - explode(features) as feature - from taxi_zones - ) -); -select * from neighbourhoods; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## Compute some basic geometry attributes - --- COMMAND ---------- - --- MAGIC %md --- MAGIC Mosaic provides a number of functions for extracting the properties of geometries. Here are some that are relevant to Polygon geometries: - --- COMMAND ---------- - -select geometry, st_area(geometry), st_length(geometry) from neighbourhoods; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## Read points data - --- COMMAND ---------- - --- MAGIC %md --- MAGIC We will load some Taxi trips data to represent point data.
--- MAGIC We already loaded some shapes representing polygons that correspond to NYC neighbourhoods.
- --- COMMAND ---------- - -create table if not exists nyctaxi_yellow -using delta -location "/databricks-datasets/nyctaxi/tables/nyctaxi_yellow" - --- COMMAND ---------- - -create or replace temp view trips as ( - select - trip_distance, - pickup_datetime, - dropoff_datetime, - st_astext(st_point(pickup_longitude, pickup_latitude)) as pickup_geom, - st_astext(st_point(dropoff_longitude, dropoff_latitude)) as dropoff_geom, - total_amount - from nyctaxi_yellow -) - --- COMMAND ---------- - -select * from trips - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## Spatial Joins - --- COMMAND ---------- - --- MAGIC %md --- MAGIC We can use Mosaic to perform spatial joins both with and without Mosaic indexing strategies.
--- MAGIC Indexing is very important when handling very different geometries both in size and in shape (ie. number of vertices).
- --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### Getting the optimal resolution - --- COMMAND ---------- - --- MAGIC %md --- MAGIC We can use Mosaic functionality to identify how to best index our data based on the data inside the specific dataframe.
--- MAGIC Selecting an apropriate indexing resolution can have a considerable impact on the performance.
- --- COMMAND ---------- - --- MAGIC %python --- MAGIC from mosaic import MosaicFrame --- MAGIC --- MAGIC neighbourhoods_mosaic_frame = MosaicFrame(spark.read.table("neighbourhoods"), "geometry") --- MAGIC optimal_resolution = neighbourhoods_mosaic_frame.get_optimal_resolution(sample_fraction=0.75) --- MAGIC --- MAGIC print(f"Optimal resolution is {optimal_resolution}") - --- COMMAND ---------- - --- MAGIC %md --- MAGIC It is worth noting that not each resolution will yield performance improvements.
--- MAGIC By a rule of thumb it is always better to under index than over index - if not sure select a lower resolution.
--- MAGIC Higher resolutions are needed when we have very imbalanced geometries with respect to their size or with respect to the number of vertices.
--- MAGIC In such case indexing with more indices will considerably increase the parallel nature of the operations.
--- MAGIC You can think of Mosaic as a way to partition an overly complex row into multiple rows that have a balanced amount of computation each. - --- COMMAND ---------- - --- MAGIC %python --- MAGIC display( --- MAGIC neighbourhoods_mosaic_frame.get_resolution_metrics(sample_rows=150) --- MAGIC ) - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### Indexing using the optimal resolution - --- COMMAND ---------- - --- MAGIC %md --- MAGIC We will use mosaic sql functions to index our points data.
--- MAGIC Here we will use resolution 9, index resolution depends on the dataset in use. - --- COMMAND ---------- - -create or replace temp view tripsWithIndex as ( - select - *, - grid_pointascellid(pickup_geom, 9) as pickup_h3, - grid_pointascellid(dropoff_geom, 9) as dropoff_h3, - st_makeline(array(pickup_geom, dropoff_geom)) as trip_line - from trips -) - --- COMMAND ---------- - --- MAGIC %md --- MAGIC We will also index our neighbourhoods using a built in generator function. - --- COMMAND ---------- - -create or replace temp view neighbourhoodsWithIndex as ( - select - *, - grid_tessellateexplode(geometry, 9) as mosaic_index - from neighbourhoods -) - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### Performing the spatial join - --- COMMAND ---------- - --- MAGIC %md --- MAGIC We can now do spatial joins to both pickup and drop off zones based on geolocations in our datasets. - --- COMMAND ---------- - -create or replace temp view withPickupZone as ( - select - trip_distance, pickup_geom, dropoff_geom, pickup_h3, dropoff_h3, pickup_zone, trip_line - from tripsWithIndex - join ( - select - properties.zone as pickup_zone, - mosaic_index - from neighbourhoodsWithIndex - ) - on mosaic_index.index_id == pickup_h3 - where mosaic_index.is_core or st_contains(mosaic_index.wkb, pickup_geom) -); -select * from withPickupZone; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC We can easily perform a similar join for the drop off location. - --- COMMAND ---------- - -create or replace temp view withDropoffZone as ( - select - trip_distance, pickup_geom, dropoff_geom, pickup_h3, dropoff_h3, pickup_zone, dropoff_zone, trip_line - from withPickupZone - join ( - select - properties.zone as dropoff_zone, - mosaic_index - from neighbourhoodsWithIndex - ) - on mosaic_index.index_id == dropoff_h3 - where mosaic_index.is_core or st_contains(mosaic_index.wkb, dropoff_geom) -); -select * from withDropoffZone; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## Visualise the results in Kepler - --- COMMAND ---------- - --- MAGIC %md --- MAGIC For visualisation there simply aren't good options in scala.
--- MAGIC Luckily in our notebooks you can easily switch to python just for UI.
--- MAGIC Mosaic abstracts interaction with Kepler in python. - --- COMMAND ---------- - --- MAGIC %python --- MAGIC %%mosaic_kepler --- MAGIC "withDropoffZone" "pickup_h3" "h3" 5000 - --- COMMAND ---------- - - diff --git a/notebooks/examples/sql/README.md b/notebooks/examples/sql/README.md new file mode 100644 index 000000000..92885f6cf --- /dev/null +++ b/notebooks/examples/sql/README.md @@ -0,0 +1,5 @@ +# Spark SQL Examples + +> A couple of examples focusing on Spark SQL in Databricks DBR Clusters. + +__Note: `ipynb` files can be previewed in GitHub and can also be imported into Databricks, more [here](https://docs.databricks.com/en/notebooks/notebook-export-import.html).__ diff --git a/python/mosaic/api/aggregators.py b/python/mosaic/api/aggregators.py index b4e9bf7e1..e221d06ba 100644 --- a/python/mosaic/api/aggregators.py +++ b/python/mosaic/api/aggregators.py @@ -16,6 +16,7 @@ "grid_cell_intersection_agg", "rst_merge_agg", "rst_combineavg_agg", + "rst_derivedband_agg", "st_intersection_agg", "st_intersects_agg", ] @@ -209,3 +210,23 @@ def rst_combineavg_agg(raster: ColumnOrName) -> Column: return config.mosaic_context.invoke_function( "rst_combineavg_agg", pyspark_to_java_column(raster) ) + + +def rst_derivedband_agg(raster: ColumnOrName, pythonFunc: ColumnOrName, funcName: ColumnOrName) -> Column: + """ + Returns the raster representing the aggregation of rasters using provided python function. + + Parameters + ---------- + raster: Column + pythonFunc: Column + funcName: Column + + Returns + ------- + Column + The resulting raster. + """ + return config.mosaic_context.invoke_function( + "rst_derivedband_agg", pyspark_to_java_column(raster), pyspark_to_java_column(pythonFunc), pyspark_to_java_column(funcName) + ) diff --git a/python/mosaic/api/raster.py b/python/mosaic/api/raster.py index e84d41ad4..ffc29cebe 100644 --- a/python/mosaic/api/raster.py +++ b/python/mosaic/api/raster.py @@ -13,6 +13,7 @@ "rst_boundingbox", "rst_clip", "rst_combineavg", + "rst_derivedband", "rst_frombands", "rst_fromfile", "rst_georeference", @@ -145,6 +146,34 @@ def rst_combineavg(rasters: ColumnOrName) -> Column: ) +def rst_derivedband(raster: ColumnOrName, pythonFunc: ColumnOrName, funcName: ColumnOrName) -> Column: + """ + Creates a new band by applying the given python function to the input rasters. + The result is a raster tile. + + Parameters + ---------- + raster : Column (StringType) + Path to the raster file. + pythonFunc : Column (StringType) + The python function to apply to the bands. + funcName : Column (StringType) + The name of the function. + + Returns + ------- + Column (StringType) + The path to the new raster. + + """ + return config.mosaic_context.invoke_function( + "rst_derivedband", + pyspark_to_java_column(raster), + pyspark_to_java_column(pythonFunc), + pyspark_to_java_column(funcName), + ) + + def rst_georeference(raster: ColumnOrName) -> Column: """ Returns GeoTransform of the raster as a GT array of doubles. diff --git a/python/setup.cfg b/python/setup.cfg index 2bc75b1be..1d34b6c9a 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -24,7 +24,6 @@ setup_requires = install_requires = keplergl==0.3.2 h3==3.7.3 - gdal[numpy]==3.4.3 [options.package_data] mosaic = diff --git a/python/test/test_raster_functions.py b/python/test/test_raster_functions.py index 077bd06df..cfbcb39ee 100644 --- a/python/test/test_raster_functions.py +++ b/python/test/test_raster_functions.py @@ -1,7 +1,3 @@ -import logging -import random -import unittest - from pyspark.sql.functions import abs, col, first, lit, sqrt, array from .context import api @@ -124,7 +120,7 @@ def test_raster_flatmap_functions(self): ) overlap_result.write.format("noop").mode("overwrite").save() - self.assertEqual(overlap_result.count(), 86) + self.assertEqual(overlap_result.count(), 87) def test_raster_aggregator_functions(self): collection = ( diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/api/FormatLookup.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/api/FormatLookup.scala new file mode 100644 index 000000000..e3aeb5296 --- /dev/null +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/api/FormatLookup.scala @@ -0,0 +1,137 @@ +package com.databricks.labs.mosaic.core.raster.api + +object FormatLookup { + + // ShortDriverName -> FormatExtension + val formats: Map[String, String] = Map( + "AAIGrid" -> "asc", + "ACE2" -> "ace2", + "ADRG" -> "gen", + "AIG" -> "aig", + "AIRSAR" -> "airsar", + "ARCGEN" -> "gen", + "ARG" -> "arg", + "BLX" -> "blx", + "BMP" -> "bmp", + "BT" -> "bt", + "CAD" -> "dwg", + "CEOS" -> "ceos", + "COASP" -> "coasp", + "COSAR" -> "cosar", + "CPG" -> "cpg", + "CSW" -> "csw", + "CTG" -> "ctg", + "DB2ODBC" -> "db2", + "DERIVED" -> "derived", + "DGN" -> "dgn", + "DIMAP" -> "dim", + "DIPEx" -> "dipex", + "DOQ1" -> "doq1", + "DOQ2" -> "doq2", + "DTED" -> "dt0", + "DXF" -> "dxf", + "ECRGTOC" -> "toc", + "ECRGTP" -> "ecrgtp", + "EEDA" -> "eeda", + "EIR" -> "eir", + "ELAS" -> "elas", + "ENVI" -> "hdr", + "ERS" -> "ers", + "ESAT" -> "esat", + "ESRI Shapefile" -> "shp", + "ESRI" -> "ers", + "FAST" -> "fst", + "FIT" -> "fit", + "FITS" -> "fits", + "GFF" -> "gff", + "GIF" -> "gif", + "GLOBE" -> "globe", + "GMT" -> "gmt", + "GNM" -> "gnm", + "GRASSASCIIGrid" -> "asc", + "GRASS" -> "grass", + "GRIB" -> "grb", + "GTiff" -> "tif", + "GXF" -> "gxf", + "HDF4" -> "hdf4", + "HDF5" -> "hdf5", + "HF2" -> "hf2", + "HFA" -> "img", + "HTTP" -> "http", + "IDRISI" -> "rst", + "ILWIS" -> "mpr", + "INGR" -> "grd", + "IRIS" -> "ppm", + "ISIS2" -> "cub", + "ISIS3" -> "cub", + "JDEM" -> "mem", + "JPEG2000" -> "jp2", + "JPEG" -> "jpg", + "JP2OpenJPEG" -> "jp2", + "KMLSUPEROVERLAY" -> "kml", + "LAN" -> "lan", + "LCP" -> "lcp", + "L1B" -> "l1b", + "MBTiles" -> "mbtiles", + "MEM" -> "mem", + "MFF" -> "mff", + "MG4Lidar" -> "mg4l", + "MRF" -> "mrf", + "MSGN" -> "msgn", + "NDF" -> "ndf", + "NITF" -> "ntf", + "NTv2" -> "gsb", + "ODBC" -> "odbc", + "OGR_GMT" -> "gmt", + "OGR_PDS" -> "pds", + "OGR_SDTS" -> "sdts", + "OGR_VRT" -> "vrt", + "OGR" -> "shp", + "OpenAir" -> "oar", + "PCIDSK" -> "pix", + "PCRaster" -> "map", + "PDF" -> "pdf", + "PDS" -> "pds", + "PGDUMP" -> "pgdump", + "PGeo" -> "mdb", + "PLMOSAIC" -> "mosaic", + "PNG" -> "png", + "PostgreSQL" -> "pg", + "R" -> "r", + "RDA" -> "rda", + "RIK" -> "rik", + "RMF" -> "rmf", + "ROI_PAC" -> "rsc", + "RPFTOC" -> "toc", + "RS2" -> "rs2", + "RST" -> "rst", + "SAGA" -> "sdat", + "SAR_CEOS" -> "ceos", + "SAR_SG" -> "sgm", + "SDTS" -> "sdts", + "SEGUKOOA" -> "dat", + "SEGY" -> "segy", + "Sentinel2" -> "jp2", + "SRTMHGT" -> "hgt", + "SQLite" -> "sqlite", + "SUA" -> "sua", + "SVG" -> "svg", + "TIGER" -> "tiger", + "TIL" -> "til", + "TSX" -> "tsx", + "USGSDEM" -> "dem", + "VDV" -> "vdv", + "VICAR" -> "vicar", + "VFK" -> "vfk", + "VRT" -> "vrt", + "WCS" -> "wcs", + "WFS" -> "wfs", + "WMS" -> "wms", + "XLS" -> "xls", + "XLSX" -> "xlsx", + "XPlane" -> "bin", + "netCDF" -> "nc", + "Zarr" -> "zarr" + ) + +} diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/api/GDAL.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/api/GDAL.scala index cfb3e4fd0..44937d6af 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/api/GDAL.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/api/GDAL.scala @@ -9,6 +9,8 @@ import org.apache.spark.unsafe.types.UTF8String import org.gdal.gdal.gdal import org.gdal.gdalconst.gdalconstConstants._ +import java.util.UUID + /** * GDAL Raster API. It uses [[MosaicRasterGDAL]] as the * [[com.databricks.labs.mosaic.core.raster.io.RasterReader]]. @@ -66,8 +68,9 @@ object GDAL { def getExtension(driverShortName: String): String = { val driver = gdal.GetDriverByName(driverShortName) val result = driver.GetMetadataItem("DMD_EXTENSION") + val toReturn = if (result == null) FormatLookup.formats(driverShortName) else result driver.delete() - result + toReturn } /** @@ -84,7 +87,7 @@ object GDAL { * Returns a Raster object. */ def readRaster( - inputRaster: => Any, + inputRaster: Any, parentPath: String, shortDriverName: String, inputDT: DataType @@ -117,13 +120,14 @@ object GDAL { * @return * Returns the paths of the written rasters. */ - def writeRasters(generatedRasters: => Seq[MosaicRasterGDAL], checkpointPath: String, rasterDT: DataType): Seq[Any] = { + def writeRasters(generatedRasters: Seq[MosaicRasterGDAL], checkpointPath: String, rasterDT: DataType): Seq[Any] = { generatedRasters.map(raster => if (raster != null) { rasterDT match { case StringType => + val uuid = UUID.randomUUID().toString val extension = GDAL.getExtension(raster.getDriversShortName) - val writePath = s"$checkpointPath/${raster.uuid}.$extension" + val writePath = s"$checkpointPath/$uuid.$extension" val outPath = raster.writeToPath(writePath) RasterCleaner.dispose(raster) UTF8String.fromString(outPath) @@ -159,7 +163,7 @@ object GDAL { * @return * Returns a Raster object. */ - def raster(content: => Array[Byte], parentPath: String, driverShortName: String): MosaicRasterGDAL = + def raster(content: Array[Byte], parentPath: String, driverShortName: String): MosaicRasterGDAL = MosaicRasterGDAL.readRaster(content, parentPath, driverShortName) /** diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/gdal/MosaicRasterBandGDAL.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/gdal/MosaicRasterBandGDAL.scala index 48eef2f07..3fa45f8e5 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/gdal/MosaicRasterBandGDAL.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/gdal/MosaicRasterBandGDAL.scala @@ -7,7 +7,7 @@ import scala.collection.JavaConverters.dictionaryAsScalaMapConverter import scala.util._ /** GDAL implementation of the MosaicRasterBand trait. */ -class MosaicRasterBandGDAL(band: => Band, id: Int) { +case class MosaicRasterBandGDAL(band: Band, id: Int) { def getBand: Band = band diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/gdal/MosaicRasterGDAL.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/gdal/MosaicRasterGDAL.scala index 42653c6bd..67178e172 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/gdal/MosaicRasterGDAL.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/gdal/MosaicRasterGDAL.scala @@ -9,7 +9,6 @@ import com.databricks.labs.mosaic.core.raster.io.{RasterCleaner, RasterReader, R import com.databricks.labs.mosaic.core.raster.operator.clip.RasterClipByVector import com.databricks.labs.mosaic.core.types.model.GeometryTypeEnum.POLYGON import com.databricks.labs.mosaic.utils.PathUtils -import org.apache.orc.util.Murmur3 import org.gdal.gdal.gdal.GDALInfo import org.gdal.gdal.{Dataset, InfoOptions, gdal} import org.gdal.gdalconst.gdalconstConstants._ @@ -18,17 +17,15 @@ import org.gdal.osr.SpatialReference import org.locationtech.proj4j.CRSFactory import java.nio.file.{Files, Paths, StandardCopyOption} -import java.util.{Locale, UUID, Vector => JVector} +import java.util.{Locale, Vector => JVector} import scala.collection.JavaConverters.dictionaryAsScalaMapConverter import scala.util.Try /** GDAL implementation of the MosaicRaster trait. */ //noinspection DuplicatedCode -class MosaicRasterGDAL( - _uuid: Long, - raster: => Dataset, +case class MosaicRasterGDAL( + raster: Dataset, path: String, - isTemp: Boolean, parentPath: String, driverShortName: String, memSize: Long @@ -100,7 +97,7 @@ class MosaicRasterGDAL( def pixelDiagSize: Double = math.sqrt(pixelXSize * pixelXSize + pixelYSize * pixelYSize) /** @return Returns file extension. */ - def getRasterFileExtension: String = getRaster.GetDriver().GetMetadataItem("DMD_EXTENSION") + def getRasterFileExtension: String = GDAL.getExtension(driverShortName) /** @return Returns the raster's bands as a Seq. */ def getBands: Seq[MosaicRasterBandGDAL] = (1 to numBands).map(getBand) @@ -148,7 +145,6 @@ class MosaicRasterGDAL( .getOrElse(Map.empty[String, String]) ) .getOrElse(Map.empty[String, String]) - } /** @@ -167,7 +163,7 @@ class MosaicRasterGDAL( val pieces = path.split(":") Seq( key -> pieces.last, - s"${pieces.last}_vsimem" -> path, + s"${pieces.last}_tmp" -> path, pieces.last -> s"${pieces.head}:$parentPath:${pieces.last}" ) } else Seq(key -> subdatasetsMap(key)) @@ -208,7 +204,7 @@ class MosaicRasterGDAL( */ def getBand(bandId: Int): MosaicRasterBandGDAL = { if (bandId > 0 && numBands >= bandId) { - new MosaicRasterBandGDAL(raster.GetRasterBand(bandId), bandId) + MosaicRasterBandGDAL(raster.GetRasterBand(bandId), bandId) } else { throw new ArrayIndexOutOfBoundsException() } @@ -270,7 +266,7 @@ class MosaicRasterGDAL( * @return * Returns a Seq of the results of the function. */ - def transformBands[T](f: => MosaicRasterBandGDAL => T): Seq[T] = for (i <- 1 to numBands) yield f(getBand(i)) + def transformBands[T](f: MosaicRasterBandGDAL => T): Seq[T] = for (i <- 1 to numBands) yield f(getBand(i)) /** * @return @@ -348,28 +344,13 @@ class MosaicRasterGDAL( * bytes. */ def cleanUp(): Unit = { - val isInMem = path.contains("/vsimem/") val isSubdataset = PathUtils.isSubdataset(path) val filePath = if (isSubdataset) PathUtils.fromSubdatasetPath(path) else path val pamFilePath = s"$filePath.aux.xml" - if (isInMem) { - // Delete the raster from the virtual file system - // Note that Unlink is not the same as Delete - // Unlink may leave PAM residuals - Try(gdal.GetDriverByName(driverShortName).Delete(path)) - Try(gdal.GetDriverByName(driverShortName).Delete(filePath)) - Try(gdal.Unlink(path)) - Try(gdal.Unlink(filePath)) - Try(gdal.Unlink(pamFilePath)) - } - if (isTemp) { - Try(gdal.GetDriverByName(driverShortName).Delete(path)) - Try(Files.deleteIfExists(Paths.get(path))) - Try(Files.deleteIfExists(Paths.get(filePath))) - Try(Files.deleteIfExists(Paths.get(pamFilePath))) - val tmpParent = Paths.get(path).getParent - if (tmpParent != null) Try(Files.deleteIfExists(tmpParent)) - } + Try(gdal.GetDriverByName(driverShortName).Delete(path)) + Try(Files.deleteIfExists(Paths.get(path))) + Try(Files.deleteIfExists(Paths.get(filePath))) + Try(Files.deleteIfExists(Paths.get(pamFilePath))) } /** @@ -381,15 +362,8 @@ class MosaicRasterGDAL( */ def getMemSize: Long = { if (memSize == -1) { - if (PathUtils.isInMemory(path)) { - val tempPath = PathUtils.createTmpFilePath(this.uuid.toString, GDAL.getExtension(driverShortName)) - writeToPath(tempPath) - val size = Files.size(Paths.get(tempPath)) - Files.delete(Paths.get(tempPath)) - size - } else { - Files.size(Paths.get(path)) - } + val toRead = if (path.startsWith("/vsizip/")) path.replace("/vsizip/", "") else path + Files.size(Paths.get(toRead)) } else { memSize } @@ -406,15 +380,10 @@ class MosaicRasterGDAL( * A boolean indicating if the write was successful. */ def writeToPath(path: String, dispose: Boolean = true): String = { - val isInMem = PathUtils.isInMemory(getPath) - if (isInMem) { - val driver = raster.GetDriver() - val ds = driver.CreateCopy(path, this.flushCache().getRaster) - ds.FlushCache() - ds.delete() - } else { - Files.copy(Paths.get(getPath), Paths.get(path), StandardCopyOption.REPLACE_EXISTING).toString - } + val driver = raster.GetDriver() + val ds = driver.CreateCopy(path, this.flushCache().getRaster) + ds.FlushCache() + ds.delete() if (dispose) RasterCleaner.dispose(this) path } @@ -426,19 +395,18 @@ class MosaicRasterGDAL( * A byte array containing the raster data. */ def writeToBytes(dispose: Boolean = true): Array[Byte] = { - if (PathUtils.isInMemory(path)) { - // Create a temporary directory to store the raster - // This is needed because Files cannot read from /vsimem/ directly - val path = PathUtils.createTmpFilePath(uuid.toString, GDAL.getExtension(driverShortName)) - writeToPath(path, dispose) - val byteArray = Files.readAllBytes(Paths.get(path)) - Files.delete(Paths.get(path)) - byteArray - } else { - val byteArray = Files.readAllBytes(Paths.get(path)) - if (dispose) RasterCleaner.dispose(this) - byteArray - } + val isSubdataset = PathUtils.isSubdataset(path) + val readPath = + if (isSubdataset) { + val tmpPath = PathUtils.createTmpFilePath(getRasterFileExtension) + writeToPath(tmpPath, dispose = false) + } else { + path + } + val byteArray = Files.readAllBytes(Paths.get(readPath)) + if (dispose) RasterCleaner.dispose(this) + Files.deleteIfExists(Paths.get(readPath)) + byteArray } /** @@ -460,15 +428,9 @@ class MosaicRasterGDAL( * usable again. */ def refresh(): MosaicRasterGDAL = { - new MosaicRasterGDAL(uuid, openRaster(path), path, isTemp, parentPath, driverShortName, memSize) + MosaicRasterGDAL(openRaster(path), path, parentPath, driverShortName, memSize) } - /** - * @return - * Returns the raster's UUID. - */ - def uuid: Long = _uuid - /** * @return * Returns the raster's size. @@ -511,12 +473,16 @@ class MosaicRasterGDAL( .getOrElse(Map.empty[String, String]) .values .find(_.toUpperCase(Locale.ROOT).endsWith(subsetName.toUpperCase(Locale.ROOT))) - .getOrElse(throw new Exception(s"Subdataset $subsetName not found")) + .getOrElse(throw new Exception(s""" + |Subdataset $subsetName not found! + |Available subdatasets: + | ${subdatasets.keys.filterNot(_.startsWith("SUBDATASET_")).mkString(", ")} + """.stripMargin)) val ds = openRaster(path) // Avoid costly IO to compute MEM size here // It will be available when the raster is serialized for next operation // If value is needed then it will be computed when getMemSize is called - MosaicRasterGDAL(ds, path, isTemp = false, parentPath, driverShortName, -1) + MosaicRasterGDAL(ds, path, parentPath, driverShortName, -1) } } @@ -554,7 +520,7 @@ object MosaicRasterGDAL extends RasterReader { */ def identifyDriver(parentPath: String): String = { val isSubdataset = PathUtils.isSubdataset(parentPath) - val path = PathUtils.getCleanPath(parentPath, parentPath.endsWith(".zip")) + val path = PathUtils.getCleanPath(parentPath) val readPath = if (isSubdataset) PathUtils.getSubdatasetPath(path) else PathUtils.getZipPath(path) @@ -563,58 +529,6 @@ object MosaicRasterGDAL extends RasterReader { driverShortName } - /** - * Creates a MosaicRaster object from a GDAL raster object. - * @param dataset - * The GDAL raster object. - * @param path - * The path to the raster file in vsimem or in temp dir. - * @param isTemp - * A boolean indicating if the raster is temporary. - * @param parentPath - * The path to the file of the raster on disk. - * @param driverShortName - * The driver short name of the raster. - * @param memSize - * The size of the raster in memory. - * @return - * A MosaicRaster object. - */ - def apply( - dataset: => Dataset, - path: String, - isTemp: Boolean, - parentPath: String, - driverShortName: String, - memSize: Long - ): MosaicRasterGDAL = { - val uuid = Murmur3.hash64(path.getBytes()) - val raster = new MosaicRasterGDAL(uuid, dataset, path, isTemp, parentPath, driverShortName, memSize) - raster - } - - /** - * Creates a MosaicRaster object from a file system path. - * @param path - * The path to the raster file. - * @param isTemp - * A boolean indicating if the raster is temporary. - * @param parentPath - * The path to the file of the raster on disk. - * @param driverShortName - * The driver short name of the raster. - * @param memSize - * The size of the raster in memory. - * @return - * A MosaicRaster object. - */ - def apply(path: String, isTemp: Boolean, parentPath: String, driverShortName: String, memSize: Long): MosaicRasterGDAL = { - val uuid = Murmur3.hash64(path.getBytes()) - val dataset = openRaster(path, Some(driverShortName)) - val raster = new MosaicRasterGDAL(uuid, dataset, path, isTemp, parentPath, driverShortName, memSize) - raster - } - /** * Reads a raster from a file system path. Reads a subdataset if the path * is to a subdataset. @@ -629,9 +543,7 @@ object MosaicRasterGDAL extends RasterReader { */ override def readRaster(inPath: String, parentPath: String): MosaicRasterGDAL = { val isSubdataset = PathUtils.isSubdataset(inPath) - val localCopy = PathUtils.copyToTmp(inPath) - val path = PathUtils.getCleanPath(localCopy, localCopy.endsWith(".zip")) - val uuid = Murmur3.hash64(path.getBytes()) + val path = PathUtils.getCleanPath(inPath) val readPath = if (isSubdataset) PathUtils.getSubdatasetPath(path) else PathUtils.getZipPath(path) @@ -642,7 +554,7 @@ object MosaicRasterGDAL extends RasterReader { // It will be available when the raster is serialized for next operation // If value is needed then it will be computed when getMemSize is called // We cannot just use memSize value of the parent due to the fact that the raster could be a subdataset - val raster = new MosaicRasterGDAL(uuid, dataset, path, true, parentPath, driverShortName, -1) + val raster = MosaicRasterGDAL(dataset, path, parentPath, driverShortName, -1) raster } @@ -655,30 +567,26 @@ object MosaicRasterGDAL extends RasterReader { * @return * A MosaicRaster object. */ - override def readRaster(contentBytes: => Array[Byte], parentPath: String, driverShortName: String): MosaicRasterGDAL = { + override def readRaster(contentBytes: Array[Byte], parentPath: String, driverShortName: String): MosaicRasterGDAL = { if (Option(contentBytes).isEmpty || contentBytes.isEmpty) { - new MosaicRasterGDAL(-1L, null, "", false, parentPath, "", -1) + MosaicRasterGDAL(null, "", parentPath, "", -1) } else { // This is a temp UUID for purposes of reading the raster through GDAL from memory // The stable UUID is kept in metadata of the raster - val uuid = Murmur3.hash64(UUID.randomUUID().toString.getBytes()) val extension = GDAL.getExtension(driverShortName) - val virtualPath = s"/vsimem/$uuid.$extension" - gdal.FileFromMemBuffer(virtualPath, contentBytes) - // Try reading as a virtual file, if that fails, read as a zipped virtual file - val dataset = Option( - openRaster(virtualPath, Some(driverShortName)) - ).getOrElse({ - // Unlink the previous virtual file - gdal.Unlink(virtualPath) - // Create a virtual zip file - val virtualZipPath = s"/vsimem/$uuid.zip" - val zippedPath = s"/vsizip/$virtualZipPath" - gdal.FileFromMemBuffer(virtualZipPath, contentBytes) - openRaster(zippedPath, Some(driverShortName)) - }) - val raster = new MosaicRasterGDAL(uuid, dataset, virtualPath, false, parentPath, driverShortName, contentBytes.length) - raster + val tmpPath = PathUtils.createTmpFilePath(extension) + Files.write(Paths.get(tmpPath), contentBytes) + // Try reading as a tmp file, if that fails, rename as a zipped file + val dataset = openRaster(tmpPath, Some(driverShortName)) + if (dataset == null) { + val zippedPath = PathUtils.createTmpFilePath("zip") + Files.move(Paths.get(tmpPath), Paths.get(zippedPath), StandardCopyOption.REPLACE_EXISTING) + val readPath = PathUtils.getZipPath(zippedPath) + val ds = openRaster(readPath, Some(driverShortName)) + MosaicRasterGDAL(ds, readPath, parentPath, driverShortName, contentBytes.length) + } else { + MosaicRasterGDAL(dataset, tmpPath, parentPath, driverShortName, contentBytes.length) + } } } diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/io/RasterCleaner.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/io/RasterCleaner.scala index 9a8be672a..b83bd2b8c 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/io/RasterCleaner.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/io/RasterCleaner.scala @@ -30,7 +30,7 @@ object RasterCleaner { * @param ds * The dataset to destroy. */ - def destroy(ds: => Dataset): Unit = { + def destroy(ds: Dataset): Unit = { if (ds != null) { try { ds.FlushCache() @@ -49,7 +49,7 @@ object RasterCleaner { * @param raster * The raster to destroy and clean up. */ - def dispose(raster: => Any): Unit = { + def dispose(raster: Any): Unit = { raster match { case r: MosaicRasterGDAL => r.destroy() diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/io/RasterReader.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/io/RasterReader.scala index 65ef016cc..b207789ae 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/io/RasterReader.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/io/RasterReader.scala @@ -42,7 +42,7 @@ trait RasterReader extends Logging { * @return * A MosaicRaster object. */ - def readRaster(contentBytes: => Array[Byte], parentPath: String, driverShortName: String): MosaicRasterGDAL + def readRaster(contentBytes: Array[Byte], parentPath: String, driverShortName: String): MosaicRasterGDAL /** * Reads a raster band from a file system path. Reads a subdataset band if diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/CombineAVG.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/CombineAVG.scala index e41f82a09..caab0f299 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/CombineAVG.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/CombineAVG.scala @@ -18,7 +18,7 @@ object CombineAVG { * @return * A new raster with average of input rasters. */ - def compute(rasters: => Seq[MosaicRasterGDAL]): MosaicRasterGDAL = { + def compute(rasters: Seq[MosaicRasterGDAL]): MosaicRasterGDAL = { val pythonFunc = """ |import numpy as np diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/NDVI.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/NDVI.scala index 1b60baba8..e3ab94d98 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/NDVI.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/NDVI.scala @@ -20,14 +20,11 @@ object NDVI { * @return * MosaicRasterGDAL with NDVI computed. */ - def compute(raster: => MosaicRasterGDAL, redIndex: Int, nirIndex: Int): MosaicRasterGDAL = { - val tmpPath = PathUtils.createTmpFilePath(raster.uuid.toString, GDAL.getExtension(raster.getDriversShortName)) - raster.writeToPath(tmpPath) - val tmpRaster = MosaicRasterGDAL(tmpPath, isTemp=true, raster.getParentPath, raster.getDriversShortName, raster.getMemSize) - val ndviPath = PathUtils.createTmpFilePath(raster.uuid.toString + "NDVI", GDAL.getExtension(raster.getDriversShortName)) + def compute(raster: MosaicRasterGDAL, redIndex: Int, nirIndex: Int): MosaicRasterGDAL = { + val ndviPath = PathUtils.createTmpFilePath(GDAL.getExtension(raster.getDriversShortName)) // noinspection ScalaStyle val gdalCalcCommand = - s"""gdal_calc -A ${tmpRaster.getPath} --A_band=$redIndex -B ${tmpRaster.getPath} --B_band=$nirIndex --outfile=$ndviPath --calc="(B-A)/(B+A)"""" + s"""gdal_calc -A ${raster.getPath} --A_band=$redIndex -B ${raster.getPath} --B_band=$nirIndex --outfile=$ndviPath --calc="(B-A)/(B+A)"""" GDALCalc.executeCalc(gdalCalcCommand, ndviPath) } diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/clip/RasterClipByVector.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/clip/RasterClipByVector.scala index 2c40ab81c..6daabc25c 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/clip/RasterClipByVector.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/clip/RasterClipByVector.scala @@ -35,18 +35,17 @@ object RasterClipByVector { * @return * A clipped raster. */ - def clip(raster: => MosaicRasterGDAL, geometry: MosaicGeometry, geomCRS: SpatialReference, geometryAPI: GeometryAPI): MosaicRasterGDAL = { + def clip(raster: MosaicRasterGDAL, geometry: MosaicGeometry, geomCRS: SpatialReference, geometryAPI: GeometryAPI): MosaicRasterGDAL = { val rasterCRS = raster.getSpatialReference val outShortName = raster.getDriversShortName val geomSrcCRS = if (geomCRS == null ) rasterCRS else geomCRS - val resultFileName = PathUtils.createTmpFilePath(raster.uuid.toString, GDAL.getExtension(outShortName)) + val resultFileName = PathUtils.createTmpFilePath(GDAL.getExtension(outShortName)) val shapeFileName = VectorClipper.generateClipper(geometry, geomSrcCRS, rasterCRS, geometryAPI) val result = GDALWarp.executeWarp( resultFileName, - isTemp = true, Seq(raster), command = s"gdalwarp -wo CUTLINE_ALL_TOUCHED=TRUE -of $outShortName -cutline $shapeFileName -crop_to_cutline -co COMPRESS=DEFLATE -dstalpha" ) diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/clip/VectorClipper.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/clip/VectorClipper.scala index 7c7ea58f2..ae03b2d01 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/clip/VectorClipper.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/clip/VectorClipper.scala @@ -2,6 +2,7 @@ package com.databricks.labs.mosaic.core.raster.operator.clip import com.databricks.labs.mosaic.core.geometry.MosaicGeometry import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.utils.PathUtils import org.gdal.gdal.gdal import org.gdal.ogr.ogrConstants.OFTInteger import org.gdal.ogr.{DataSource, Feature, ogr} @@ -21,8 +22,7 @@ object VectorClipper { * The shapefile name. */ private def getShapefileName: String = { - val uuid = java.util.UUID.randomUUID() - val shapeFileName = s"/vsimem/${uuid.toString}.shp" + val shapeFileName = PathUtils.createTmpFilePath(".shp") shapeFileName } diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALBuildVRT.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALBuildVRT.scala index c3b57d5f3..389defad6 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALBuildVRT.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALBuildVRT.scala @@ -11,8 +11,6 @@ object GDALBuildVRT { * * @param outputPath * The output path of the VRT file. - * @param isTemp - * Whether the output is a temp file. * @param rasters * The rasters to build the VRT from. * @param command @@ -20,14 +18,22 @@ object GDALBuildVRT { * @return * A MosaicRaster object. */ - def executeVRT(outputPath: String, isTemp: Boolean, rasters: => Seq[MosaicRasterGDAL], command: String): MosaicRasterGDAL = { + def executeVRT(outputPath: String, rasters: Seq[MosaicRasterGDAL], command: String): MosaicRasterGDAL = { require(command.startsWith("gdalbuildvrt"), "Not a valid GDAL Build VRT command.") val vrtOptionsVec = OperatorOptions.parseOptions(command) val vrtOptions = new BuildVRTOptions(vrtOptionsVec) val result = gdal.BuildVRT(outputPath, rasters.map(_.getRaster).toArray, vrtOptions) + if (result == null) { + throw new Exception( + s""" + |Build VRT failed. + |Command: $command + |Error: ${gdal.GetLastErrorMsg} + |""".stripMargin) + } // TODO: Figure out multiple parents, should this be an array? // VRT files are just meta files, mem size doesnt make much sense so we keep -1 - MosaicRasterGDAL(result, outputPath, isTemp, rasters.head.getParentPath, "VRT", -1).flushCache() + MosaicRasterGDAL(result, outputPath, rasters.head.getParentPath, "VRT", -1).flushCache() } } diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALCalc.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALCalc.scala index eca7f16d6..97a273d13 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALCalc.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALCalc.scala @@ -2,11 +2,22 @@ package com.databricks.labs.mosaic.core.raster.operator.gdal import com.databricks.labs.mosaic.core.raster.api.GDAL import com.databricks.labs.mosaic.core.raster.gdal.MosaicRasterGDAL +import com.databricks.labs.mosaic.utils.SysUtils /** GDALCalc is a helper object for executing GDAL Calc commands. */ object GDALCalc { - val gdal_calc = "/usr/lib/python3/dist-packages/osgeo_utils/gdal_calc.py" + val gdal_calc: String = { + val calcPath = SysUtils.runCommand("find / -iname gdal_calc.py")._1.split("\n").headOption.getOrElse("") + if (calcPath.isEmpty) { + throw new RuntimeException("Could not find gdal_calc.py.") + } + if (calcPath == "ERROR") { + "/usr/lib/python3/dist-packages/osgeo_utils/gdal_calc.py" + } else { + calcPath + } + } /** * Executes the GDAL Calc command. @@ -19,9 +30,17 @@ object GDALCalc { */ def executeCalc(gdalCalcCommand: String, resultPath: String): MosaicRasterGDAL = { require(gdalCalcCommand.startsWith("gdal_calc"), "Not a valid GDAL Calc command.") - import sys.process._ val toRun = gdalCalcCommand.replace("gdal_calc", gdal_calc) - s"python3 $toRun".!! + val commandRes = SysUtils.runCommand(s"python3 $toRun") + if (commandRes._1 == "ERROR") { + throw new RuntimeException(s""" + |GDAL Calc command failed: + |STDOUT: + |${commandRes._2} + |STDERR: + |${commandRes._3} + |""".stripMargin) + } val result = GDAL.raster(resultPath, resultPath) result } diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALTranslate.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALTranslate.scala index 0b44e006c..bf266cfbf 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALTranslate.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALTranslate.scala @@ -13,8 +13,6 @@ object GDALTranslate { * * @param outputPath * The output path of the translated file. - * @param isTemp - * Whether the output is a temp file. * @param raster * The raster to translate. * @param command @@ -22,13 +20,21 @@ object GDALTranslate { * @return * A MosaicRaster object. */ - def executeTranslate(outputPath: String, isTemp: Boolean, raster: => MosaicRasterGDAL, command: String): MosaicRasterGDAL = { + def executeTranslate(outputPath: String, raster: MosaicRasterGDAL, command: String): MosaicRasterGDAL = { require(command.startsWith("gdal_translate"), "Not a valid GDAL Translate command.") val translateOptionsVec = OperatorOptions.parseOptions(command) val translateOptions = new TranslateOptions(translateOptionsVec) val result = gdal.Translate(outputPath, raster.getRaster, translateOptions) + if (result == null) { + throw new Exception( + s""" + |Translate failed. + |Command: $command + |Error: ${gdal.GetLastErrorMsg} + |""".stripMargin) + } val size = Files.size(Paths.get(outputPath)) - MosaicRasterGDAL(result, outputPath, isTemp, raster.getParentPath, raster.getDriversShortName, size).flushCache() + raster.copy(raster = result, path = outputPath, memSize = size).flushCache() } } diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALWarp.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALWarp.scala index e8393d728..2b13a957b 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALWarp.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/gdal/GDALWarp.scala @@ -13,8 +13,6 @@ object GDALWarp { * * @param outputPath * The output path of the warped file. - * @param isTemp - * Whether the output is a temp file. * @param rasters * The rasters to warp. * @param command @@ -22,7 +20,7 @@ object GDALWarp { * @return * A MosaicRaster object. */ - def executeWarp(outputPath: String, isTemp: Boolean, rasters: => Seq[MosaicRasterGDAL], command: String): MosaicRasterGDAL = { + def executeWarp(outputPath: String, rasters: Seq[MosaicRasterGDAL], command: String): MosaicRasterGDAL = { require(command.startsWith("gdalwarp"), "Not a valid GDAL Warp command.") // Test: gdal.ParseCommandLine(command) val warpOptionsVec = OperatorOptions.parseOptions(command) @@ -30,15 +28,21 @@ object GDALWarp { val result = gdal.Warp(outputPath, rasters.map(_.getRaster).toArray, warpOptions) // TODO: Figure out multiple parents, should this be an array? // Format will always be the same as the first raster + if (result == null) { + throw new Exception(s""" + |Warp failed. + |Command: $command + |Error: ${gdal.GetLastErrorMsg} + |""".stripMargin) + } val size = Files.size(Paths.get(outputPath)) - MosaicRasterGDAL( - result, - outputPath, - isTemp, - rasters.head.getParentPath, - rasters.head.getDriversShortName, - size - ).flushCache() + rasters.head + .copy( + raster = result, + path = outputPath, + memSize = size + ) + .flushCache() } } diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/merge/MergeBands.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/merge/MergeBands.scala index 2bd605445..6333c50c8 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/merge/MergeBands.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/merge/MergeBands.scala @@ -18,23 +18,20 @@ object MergeBands { * @return * A MosaicRaster object. */ - def merge(rasters: => Seq[MosaicRasterGDAL], resampling: String): MosaicRasterGDAL = { - val rasterUUID = java.util.UUID.randomUUID.toString + def merge(rasters: Seq[MosaicRasterGDAL], resampling: String): MosaicRasterGDAL = { val outShortName = rasters.head.getRaster.GetDriver.getShortName - val vrtPath = PathUtils.createTmpFilePath(rasterUUID, "vrt") - val rasterPath = PathUtils.createTmpFilePath(rasterUUID, "tif") + val vrtPath = PathUtils.createTmpFilePath("vrt") + val rasterPath = PathUtils.createTmpFilePath("tif") val vrtRaster = GDALBuildVRT.executeVRT( vrtPath, - isTemp = true, rasters, command = s"gdalbuildvrt -separate -resolution highest" ) val result = GDALTranslate.executeTranslate( rasterPath, - isTemp = true, vrtRaster, command = s"gdal_translate -r $resampling -of $outShortName -co COMPRESS=DEFLATE" ) @@ -57,23 +54,20 @@ object MergeBands { * @return * A MosaicRaster object. */ - def merge(rasters: => Seq[MosaicRasterGDAL], pixel: (Double, Double), resampling: String): MosaicRasterGDAL = { - val rasterUUID = java.util.UUID.randomUUID.toString + def merge(rasters: Seq[MosaicRasterGDAL], pixel: (Double, Double), resampling: String): MosaicRasterGDAL = { val outShortName = rasters.head.getRaster.GetDriver.getShortName - val vrtPath = PathUtils.createTmpFilePath(rasterUUID, "vrt") - val rasterPath = PathUtils.createTmpFilePath(rasterUUID, "tif") + val vrtPath = PathUtils.createTmpFilePath("vrt") + val rasterPath = PathUtils.createTmpFilePath("tif") val vrtRaster = GDALBuildVRT.executeVRT( vrtPath, - isTemp = true, rasters, command = s"gdalbuildvrt -separate -resolution user -tr ${pixel._1} ${pixel._2}" ) val result = GDALTranslate.executeTranslate( rasterPath, - isTemp = true, vrtRaster, command = s"gdalwarp -r $resampling -of $outShortName -co COMPRESS=DEFLATE -overwrite" ) diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/merge/MergeRasters.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/merge/MergeRasters.scala index 08adf2053..694d9940a 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/merge/MergeRasters.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/merge/MergeRasters.scala @@ -16,23 +16,20 @@ object MergeRasters { * @return * A MosaicRaster object. */ - def merge(rasters: => Seq[MosaicRasterGDAL]): MosaicRasterGDAL = { - val rasterUUID = java.util.UUID.randomUUID.toString + def merge(rasters: Seq[MosaicRasterGDAL]): MosaicRasterGDAL = { val outShortName = rasters.head.getRaster.GetDriver.getShortName - val vrtPath = PathUtils.createTmpFilePath(rasterUUID, "vrt") - val rasterPath = PathUtils.createTmpFilePath(rasterUUID, "tif") + val vrtPath = PathUtils.createTmpFilePath("vrt") + val rasterPath = PathUtils.createTmpFilePath("tif") val vrtRaster = GDALBuildVRT.executeVRT( vrtPath, - isTemp = true, rasters, command = s"gdalbuildvrt -resolution highest" ) val result = GDALTranslate.executeTranslate( rasterPath, - isTemp = true, vrtRaster, command = s"gdal_translate -r bilinear -of $outShortName -co COMPRESS=DEFLATE" ) diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/pixel/PixelCombineRasters.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/pixel/PixelCombineRasters.scala index 4462d01a3..5bf49fb96 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/pixel/PixelCombineRasters.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/pixel/PixelCombineRasters.scala @@ -19,26 +19,24 @@ object PixelCombineRasters { * @return * A MosaicRaster object. */ - def combine(rasters: => Seq[MosaicRasterGDAL], pythonFunc: String, pythonFuncName: String): MosaicRasterGDAL = { - val rasterUUID = java.util.UUID.randomUUID.toString + def combine(rasters: Seq[MosaicRasterGDAL], pythonFunc: String, pythonFuncName: String): MosaicRasterGDAL = { val outShortName = rasters.head.getRaster.GetDriver.getShortName - val vrtPath = PathUtils.createTmpFilePath(rasterUUID, "vrt") - val rasterPath = PathUtils.createTmpFilePath(rasterUUID, "tif") + val vrtPath = PathUtils.createTmpFilePath("vrt") + val rasterPath = PathUtils.createTmpFilePath("tif") val vrtRaster = GDALBuildVRT.executeVRT( vrtPath, - isTemp = true, rasters, command = s"gdalbuildvrt -resolution highest" ) + vrtRaster.destroy() addPixelFunction(vrtPath, pythonFunc, pythonFuncName) val result = GDALTranslate.executeTranslate( rasterPath, - isTemp = true, - vrtRaster, + vrtRaster.refresh(), command = s"gdal_translate -r bilinear -of $outShortName -co COMPRESS=DEFLATE" ) diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/proj/RasterProject.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/proj/RasterProject.scala index a091c4495..efd7c8c67 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/proj/RasterProject.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/proj/RasterProject.scala @@ -25,10 +25,10 @@ object RasterProject { * @return * A projected raster. */ - def project(raster: => MosaicRasterGDAL, destCRS: SpatialReference): MosaicRasterGDAL = { + def project(raster: MosaicRasterGDAL, destCRS: SpatialReference): MosaicRasterGDAL = { val outShortName = raster.getDriversShortName - val resultFileName = PathUtils.createTmpFilePath(raster.uuid.toString, GDAL.getExtension(outShortName)) + val resultFileName = PathUtils.createTmpFilePath(GDAL.getExtension(outShortName)) // Note that Null is the right value here val authName = destCRS.GetAuthorityName(null) @@ -36,7 +36,6 @@ object RasterProject { val result = GDALWarp.executeWarp( resultFileName, - isTemp = true, Seq(raster), command = s"gdalwarp -of $outShortName -t_srs $authName:$authCode -r cubic -overwrite -co COMPRESS=DEFLATE" ) diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/BalancedSubdivision.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/BalancedSubdivision.scala index 17cb39885..75e59c1fa 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/BalancedSubdivision.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/BalancedSubdivision.scala @@ -19,7 +19,7 @@ object BalancedSubdivision { * @return * The number of splits. */ - def getNumSplits(raster: => MosaicRasterGDAL, destSize: Int): Int = { + def getNumSplits(raster: MosaicRasterGDAL, destSize: Int): Int = { val size = raster.getMemSize val n = size.toDouble / (destSize * 1000 * 1000) val nInt = Math.ceil(n).toInt @@ -76,7 +76,7 @@ object BalancedSubdivision { * A sequence of MosaicRaster objects. */ def splitRaster( - tile: => MosaicRasterTile, + tile: MosaicRasterTile, sizeInMb: Int ): Seq[MosaicRasterTile] = { val numSplits = getNumSplits(tile.getRaster, sizeInMb) diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/OverlappingTiles.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/OverlappingTiles.scala index 5897347ab..c1498ea05 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/OverlappingTiles.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/OverlappingTiles.scala @@ -28,7 +28,7 @@ object OverlappingTiles { * A sequence of MosaicRasterTile objects. */ def reTile( - tile: => MosaicRasterTile, + tile: MosaicRasterTile, tileWidth: Int, tileHeight: Int, overlapPercentage: Int @@ -46,14 +46,12 @@ object OverlappingTiles { val width = Math.min(tileWidth, xSize - i) val height = Math.min(tileHeight, ySize - j) - val uuid = java.util.UUID.randomUUID.toString val fileExtension = GDAL.getExtension(tile.getDriver) - val rasterPath = PathUtils.createTmpFilePath(uuid, fileExtension) + val rasterPath = PathUtils.createTmpFilePath(fileExtension) val shortName = raster.getRaster.GetDriver.getShortName val result = GDALTranslate.executeTranslate( rasterPath, - isTemp = true, raster, command = s"gdal_translate -of $shortName -srcwin $xOff $yOff $width $height" ) @@ -70,7 +68,7 @@ object OverlappingTiles { val (_, valid) = tiles.flatten.partition(_._1) - valid.map(t => new MosaicRasterTile(null, t._2, raster.getParentPath, raster.getDriversShortName)) + valid.map(t => MosaicRasterTile(null, t._2, raster.getParentPath, raster.getDriversShortName)) } diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/RasterTessellate.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/RasterTessellate.scala index 8c5ce4f32..d186de0a5 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/RasterTessellate.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/RasterTessellate.scala @@ -27,7 +27,7 @@ object RasterTessellate { * @return * A sequence of MosaicRasterTile objects. */ - def tessellate(raster: => MosaicRasterGDAL, resolution: Int, indexSystem: IndexSystem, geometryAPI: GeometryAPI): Seq[MosaicRasterTile] = { + def tessellate(raster: MosaicRasterGDAL, resolution: Int, indexSystem: IndexSystem, geometryAPI: GeometryAPI): Seq[MosaicRasterTile] = { val indexSR = indexSystem.osrSpatialRef val bbox = raster.bbox(geometryAPI, indexSR) val cells = Mosaic.mosaicFill(bbox, resolution, keepCoreGeom = false, indexSystem, geometryAPI) @@ -38,13 +38,12 @@ object RasterTessellate { val cellID = cell.cellIdAsLong(indexSystem) val isValidCell = indexSystem.isValid(cellID) if (!isValidCell) { - (false, new MosaicRasterTile(cell.index, null, "", "")) + (false, MosaicRasterTile(cell.index, null, "", "")) } else { val cellRaster = tmpRaster.getRasterForCell(cellID, indexSystem, geometryAPI) val isValidRaster = cellRaster.getBandStats.values.map(_("mean")).sum > 0 && !cellRaster.isEmpty ( - isValidRaster, - new MosaicRasterTile(cell.index, cellRaster, raster.getParentPath, raster.getDriversShortName) + isValidRaster, MosaicRasterTile(cell.index, cellRaster, raster.getParentPath, raster.getDriversShortName) ) } }) diff --git a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/ReTile.scala b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/ReTile.scala index e03712467..edaab4720 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/ReTile.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/raster/operator/retile/ReTile.scala @@ -1,7 +1,7 @@ package com.databricks.labs.mosaic.core.raster.operator.retile import com.databricks.labs.mosaic.core.raster.io.RasterCleaner.dispose -import com.databricks.labs.mosaic.core.raster.operator.gdal.GDALTranslate +import com.databricks.labs.mosaic.core.raster.operator.gdal.{GDALBuildVRT, GDALTranslate} import com.databricks.labs.mosaic.core.types.model.MosaicRasterTile import com.databricks.labs.mosaic.utils.PathUtils @@ -22,7 +22,7 @@ object ReTile { * A sequence of MosaicRasterTile objects. */ def reTile( - tile: => MosaicRasterTile, + tile: MosaicRasterTile, tileWidth: Int, tileHeight: Int ): Seq[MosaicRasterTile] = { @@ -37,14 +37,12 @@ object ReTile { val xOffset = if (xMin + tileWidth + 1 > xR) xR - xMin else tileWidth + 1 val yOffset = if (yMin + tileHeight + 1 > yR) yR - yMin else tileHeight + 1 - val rasterUUID = java.util.UUID.randomUUID.toString val fileExtension = raster.getRasterFileExtension - val rasterPath = PathUtils.createTmpFilePath(rasterUUID, fileExtension) + val rasterPath = PathUtils.createTmpFilePath(fileExtension) val shortDriver = raster.getDriversShortName val result = GDALTranslate.executeTranslate( rasterPath, - isTemp = true, raster, command = s"gdal_translate -of $shortDriver -srcwin $xMin $yMin $xOffset $yOffset -co COMPRESS=DEFLATE" ) @@ -59,7 +57,7 @@ object ReTile { val (_, valid) = tiles.partition(_._1) - valid.map(t => new MosaicRasterTile(null, t._2, raster.getParentPath, raster.getDriversShortName)) + valid.map(t => MosaicRasterTile(null, t._2, raster.getParentPath, raster.getDriversShortName)) } diff --git a/src/main/scala/com/databricks/labs/mosaic/core/types/model/MosaicRasterTile.scala b/src/main/scala/com/databricks/labs/mosaic/core/types/model/MosaicRasterTile.scala index 48435d7da..e7a8e9218 100644 --- a/src/main/scala/com/databricks/labs/mosaic/core/types/model/MosaicRasterTile.scala +++ b/src/main/scala/com/databricks/labs/mosaic/core/types/model/MosaicRasterTile.scala @@ -19,9 +19,9 @@ import org.apache.spark.unsafe.types.UTF8String * @param driver * Driver used to read the raster. */ -class MosaicRasterTile( +case class MosaicRasterTile( index: Either[Long, String], - raster: => MosaicRasterGDAL, + raster: MosaicRasterGDAL, parentPath: String, driver: String ) { @@ -55,13 +55,13 @@ class MosaicRasterTile( (indexSystem.getCellIdDataType, index) match { case (_: LongType, Left(_)) => this case (_: StringType, Right(_)) => this - case (_: LongType, Right(value)) => new MosaicRasterTile( + case (_: LongType, Right(value)) => MosaicRasterTile( index = Left(indexSystem.parse(value)), raster = raster, parentPath = parentPath, driver = driver ) - case (_: StringType, Left(value)) => new MosaicRasterTile( + case (_: StringType, Left(value)) => MosaicRasterTile( index = Right(indexSystem.format(value)), raster = raster, parentPath = parentPath, @@ -162,12 +162,12 @@ object MosaicRasterTile { // noinspection TypeCheckCanBeMatch if (Option(index).isDefined) { if (index.isInstanceOf[Long]) { - new MosaicRasterTile(Left(index.asInstanceOf[Long]), raster, parentPath, driver) + MosaicRasterTile(Left(index.asInstanceOf[Long]), raster, parentPath, driver) } else { - new MosaicRasterTile(Right(index.asInstanceOf[UTF8String].toString), raster, parentPath, driver) + MosaicRasterTile(Right(index.asInstanceOf[UTF8String].toString), raster, parentPath, driver) } } else { - new MosaicRasterTile(null, raster, parentPath, driver) + MosaicRasterTile(null, raster, parentPath, driver) } } diff --git a/src/main/scala/com/databricks/labs/mosaic/datasource/OGRFileFormat.scala b/src/main/scala/com/databricks/labs/mosaic/datasource/OGRFileFormat.scala index b1b6b78b4..166151678 100644 --- a/src/main/scala/com/databricks/labs/mosaic/datasource/OGRFileFormat.scala +++ b/src/main/scala/com/databricks/labs/mosaic/datasource/OGRFileFormat.scala @@ -366,8 +366,8 @@ object OGRFileFormat extends Serializable { * @return * the data source */ - def getDataSource(driverName: String, path: String, useZipPath: Boolean): org.gdal.ogr.DataSource = { - val cleanPath = PathUtils.getCleanPath(path, useZipPath) + def getDataSource(driverName: String, path: String): org.gdal.ogr.DataSource = { + val cleanPath = PathUtils.getCleanPath(path) // 0 is for no update driver if (driverName.nonEmpty) { ogr.GetDriverByName(driverName).Open(cleanPath, 0) @@ -398,10 +398,9 @@ object OGRFileFormat extends Serializable { val layerN = options.getOrElse("layerNumber", "0").toInt val layerName = options.getOrElse("layerName", "") val inferenceLimit = options.getOrElse("inferenceLimit", "200").toInt - val useZipPath = options.getOrElse("vsizip", "false").toBoolean val asWKB = options.getOrElse("asWKB", "false").toBoolean - val dataset = getDataSource(driverName, path, useZipPath) + val dataset = getDataSource(driverName, path) val resolvedLayerName = if (layerName.isEmpty) dataset.GetLayer(layerN).GetName() else layerName val layer = dataset.GetLayer(resolvedLayerName) layer.ResetReading() @@ -454,10 +453,9 @@ object OGRFileFormat extends Serializable { val layerN = options.getOrElse("layerNumber", "0").toInt val layerName = options.getOrElse("layerName", "") - val useZipPath = options.getOrElse("vsizip", "false").toBoolean val asWKB = options.getOrElse("asWKB", "false").toBoolean val path = file.filePath - val dataset = getDataSource(driverName, path, useZipPath) + val dataset = getDataSource(driverName, path) val resolvedLayerName = if (layerName.isEmpty) dataset.GetLayer(layerN).GetName() else layerName val layer = dataset.GetLayerByName(resolvedLayerName) layer.ResetReading() diff --git a/src/main/scala/com/databricks/labs/mosaic/datasource/gdal/ReTileOnRead.scala b/src/main/scala/com/databricks/labs/mosaic/datasource/gdal/ReTileOnRead.scala index acd53e535..285df2191 100644 --- a/src/main/scala/com/databricks/labs/mosaic/datasource/gdal/ReTileOnRead.scala +++ b/src/main/scala/com/databricks/labs/mosaic/datasource/gdal/ReTileOnRead.scala @@ -8,11 +8,14 @@ import com.databricks.labs.mosaic.core.types.RasterTileType import com.databricks.labs.mosaic.core.types.model.MosaicRasterTile import com.databricks.labs.mosaic.datasource.Utils import com.databricks.labs.mosaic.datasource.gdal.GDALFileFormat._ +import com.databricks.labs.mosaic.utils.PathUtils import org.apache.hadoop.fs.{FileStatus, FileSystem} import org.apache.spark.sql.SparkSession import org.apache.spark.sql.catalyst.InternalRow import org.apache.spark.sql.types._ +import java.nio.file.{Files, Paths} + /** An object defining the retiling read strategy for the GDAL file format. */ object ReTileOnRead extends ReadStrategy { @@ -81,7 +84,8 @@ object ReTileOnRead extends ReadStrategy { val uuid = getUUID(status) val sizeInMB = options.getOrElse("sizeInMB", "16").toInt - val tiles = localSubdivide(inPath, sizeInMB) + val tmpPath = PathUtils.copyToTmp(inPath) + val tiles = localSubdivide(tmpPath, inPath, sizeInMB) val rows = tiles.map(tile => { val trimmedSchema = StructType(requiredSchema.filter(field => field.name != TILE)) @@ -104,6 +108,8 @@ object ReTileOnRead extends ReadStrategy { row }) + Files.deleteIfExists(Paths.get(tmpPath)) + rows.iterator } @@ -117,9 +123,10 @@ object ReTileOnRead extends ReadStrategy { * @return * A tuple of the raster and the tiles. */ - def localSubdivide(inPath: String, sizeInMB: Int): Seq[MosaicRasterTile] = { - val raster = MosaicRasterGDAL.readRaster(inPath, inPath) - val inTile = new MosaicRasterTile(null, raster, inPath, raster.getDriversShortName) + def localSubdivide(inPath: String, parentPath: String, sizeInMB: Int): Seq[MosaicRasterTile] = { + val cleanPath = PathUtils.getCleanPath(inPath) + val raster = MosaicRasterGDAL.readRaster(cleanPath, parentPath) + val inTile = new MosaicRasterTile(null, raster, parentPath, raster.getDriversShortName) val tiles = BalancedSubdivision.splitRaster(inTile, sizeInMB) RasterCleaner.dispose(raster) RasterCleaner.dispose(inTile) diff --git a/src/main/scala/com/databricks/labs/mosaic/datasource/gdal/ReadInMemory.scala b/src/main/scala/com/databricks/labs/mosaic/datasource/gdal/ReadInMemory.scala index 381804ff9..540afa8a7 100644 --- a/src/main/scala/com/databricks/labs/mosaic/datasource/gdal/ReadInMemory.scala +++ b/src/main/scala/com/databricks/labs/mosaic/datasource/gdal/ReadInMemory.scala @@ -6,6 +6,7 @@ import com.databricks.labs.mosaic.core.raster.io.RasterCleaner import com.databricks.labs.mosaic.core.types.RasterTileType import com.databricks.labs.mosaic.datasource.Utils import com.databricks.labs.mosaic.datasource.gdal.GDALFileFormat._ +import com.databricks.labs.mosaic.utils.PathUtils import org.apache.hadoop.fs.{FileStatus, FileSystem} import org.apache.spark.sql.SparkSession import org.apache.spark.sql.catalyst.InternalRow diff --git a/src/main/scala/com/databricks/labs/mosaic/datasource/multiread/OGRMultiReadDataFrameReader.scala b/src/main/scala/com/databricks/labs/mosaic/datasource/multiread/OGRMultiReadDataFrameReader.scala index a3ce92180..4947b9134 100644 --- a/src/main/scala/com/databricks/labs/mosaic/datasource/multiread/OGRMultiReadDataFrameReader.scala +++ b/src/main/scala/com/databricks/labs/mosaic/datasource/multiread/OGRMultiReadDataFrameReader.scala @@ -36,9 +36,8 @@ class OGRMultiReadDataFrameReader(sparkSession: SparkSession) extends MosaicData val layerNumber = config("layerNumber").toInt val layerName = config("layerName") val chunkSize = config("chunkSize").toInt - val vsizip = config("vsizip").toBoolean - val ds = OGRFileFormat.getDataSource(driverName, headPath, vsizip) + val ds = OGRFileFormat.getDataSource(driverName, headPath) val layer = OGRFileFormat.getLayer(ds, layerNumber, layerName) val partitionCount = 1 + (layer.GetFeatureCount / chunkSize) diff --git a/src/main/scala/com/databricks/labs/mosaic/datasource/multiread/RasterAsGridReader.scala b/src/main/scala/com/databricks/labs/mosaic/datasource/multiread/RasterAsGridReader.scala index 4cb39066a..c1f805afa 100644 --- a/src/main/scala/com/databricks/labs/mosaic/datasource/multiread/RasterAsGridReader.scala +++ b/src/main/scala/com/databricks/labs/mosaic/datasource/multiread/RasterAsGridReader.scala @@ -19,12 +19,11 @@ class RasterAsGridReader(sparkSession: SparkSession) extends MosaicDataFrameRead private val mc = MosaicContext.context() import mc.functions._ - val vsizipPathColF: Column => Column = - (path: Column) => - when( - path.endsWith(".zip"), - concat(lit("/vsizip/"), path) - ).otherwise(path) + def getNPartitions(config: Map[String, String]): Int = { + val shufflePartitions = sparkSession.conf.get("spark.sql.shuffle.partitions") + val nPartitions = config.getOrElse("nPartitions", shufflePartitions).toInt + nPartitions + } override def load(path: String): DataFrame = load(Seq(path): _*) @@ -32,12 +31,14 @@ class RasterAsGridReader(sparkSession: SparkSession) extends MosaicDataFrameRead val config = getConfig val resolution = config("resolution").toInt + val nPartitions = getNPartitions(config) val pathsDf = sparkSession.read .format("gdal") .option("extensions", config("extensions")) .option("raster_storage", "in-memory") .load(paths: _*) + .repartition(nPartitions) val rasterToGridCombiner = getRasterToGridFunc(config("combiner")) @@ -61,6 +62,7 @@ class RasterAsGridReader(sparkSession: SparkSession) extends MosaicDataFrameRead col("band_id"), explode(col("grid_measures")).alias("grid_measures") ) + .repartition(nPartitions) .select( col("band_id"), col("grid_measures").getItem("cellID").alias("cell_id"), @@ -87,12 +89,15 @@ class RasterAsGridReader(sparkSession: SparkSession) extends MosaicDataFrameRead private def retileRaster(rasterDf: DataFrame, config: Map[String, String]) = { val retile = config("retile").toBoolean val tileSize = config("tileSize").toInt + val nPartitions = getNPartitions(config) if (retile) { - rasterDf.withColumn( - "tile", - rst_retile(col("tile"), lit(tileSize), lit(tileSize)) - ) + rasterDf + .withColumn( + "tile", + rst_retile(col("tile"), lit(tileSize), lit(tileSize)) + ) + .repartition(nPartitions) } else { rasterDf } @@ -141,6 +146,7 @@ class RasterAsGridReader(sparkSession: SparkSession) extends MosaicDataFrameRead */ private def kRingResample(rasterDf: DataFrame, config: Map[String, String]) = { val k = config("kRingInterpolate").toInt + val nPartitions = getNPartitions(config) def weighted_sum(measureCol: String, weightCol: String) = { sum(col(measureCol) * col(weightCol)) / sum(col(weightCol)) @@ -150,6 +156,7 @@ class RasterAsGridReader(sparkSession: SparkSession) extends MosaicDataFrameRead rasterDf .withColumn("origin_cell_id", col("cell_id")) .withColumn("cell_id", explode(grid_cellkring(col("origin_cell_id"), k))) + .repartition(nPartitions) .withColumn("weight", lit(k + 1) - grid_distance(col("origin_cell_id"), col("cell_id"))) .groupBy("band_id", "cell_id") .agg(weighted_sum("measure", "weight")) diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_BandMetaData.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_BandMetaData.scala index cf9bd60ba..241d913bc 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_BandMetaData.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_BandMetaData.scala @@ -40,7 +40,7 @@ case class RST_BandMetaData(raster: Expression, band: Expression, expressionConf * @return * The band metadata of the band as a map type result. */ - override def bandTransform(raster: => MosaicRasterTile, band: MosaicRasterBandGDAL): Any = { + override def bandTransform(raster: MosaicRasterTile, band: MosaicRasterBandGDAL): Any = { buildMapString(band.metadata) } } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_BoundingBox.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_BoundingBox.scala index 397d3ee8e..dad890b74 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_BoundingBox.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_BoundingBox.scala @@ -28,7 +28,7 @@ case class RST_BoundingBox( * @return * The bounding box of the raster as a WKB polygon. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { val raster = tile.getRaster val gt = raster.getRaster.GetGeoTransform() val (originX, originY) = GDAL.toWorldCoord(gt, 0, 0) diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Clip.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Clip.scala index 7bad9b5d1..5e1f5b4ac 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Clip.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Clip.scala @@ -38,16 +38,11 @@ case class RST_Clip( * @return * The clipped raster. */ - override def rasterTransform(tile: => MosaicRasterTile, arg1: Any): Any = { + override def rasterTransform(tile: MosaicRasterTile, arg1: Any): Any = { val geometry = geometryAPI.geometry(arg1, geometryExpr.dataType) val geomCRS = geometry.getSpatialReferenceOSR val clipped = RasterClipByVector.clip(tile.getRaster, geometry, geomCRS, geometryAPI) - new MosaicRasterTile( - tile.getIndex, - clipped, - tile.getParentPath, - tile.getDriver - ) + tile.copy(raster = clipped) } } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvg.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvg.scala index adb4974ee..1d923fdc1 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvg.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvg.scala @@ -24,9 +24,9 @@ case class RST_CombineAvg( with CodegenFallback { /** Combines the rasters using average of pixels. */ - override def rasterTransform(tiles: => Seq[MosaicRasterTile]): Any = { + override def rasterTransform(tiles: Seq[MosaicRasterTile]): Any = { val index = if (tiles.map(_.getIndex).groupBy(identity).size == 1) tiles.head.getIndex else null - new MosaicRasterTile( + MosaicRasterTile( index, CombineAVG.compute(tiles.map(_.getRaster)), tiles.head.getParentPath, @@ -39,7 +39,7 @@ case class RST_CombineAvg( /** Expression info required for the expression registration for spark SQL. */ object RST_CombineAvg extends WithExpressionInfo { - override def name: String = "rst_combine_avg" + override def name: String = "rst_combineavg" override def usage: String = """ diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvgAgg.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvgAgg.scala index 767275953..c24680977 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvgAgg.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvgAgg.scala @@ -65,8 +65,6 @@ case class RST_CombineAvgAgg( if (buffer.isEmpty) { null - } else if (buffer.size == 1) { - buffer.head } else { // Do do move the expression @@ -79,7 +77,7 @@ case class RST_CombineAvgAgg( val parentPath = tiles.head.getParentPath val driver = tiles.head.getDriver - val result = new MosaicRasterTile(idx, combined, parentPath, driver) + val result = MosaicRasterTile(idx, combined, parentPath, driver) .formatCellId(IndexSystemFactory.getIndexSystem(expressionConfig.getIndexSystem)) .serialize(BinaryType, expressionConfig.getRasterCheckpoint) diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBand.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBand.scala new file mode 100644 index 000000000..c1d9ea15a --- /dev/null +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBand.scala @@ -0,0 +1,76 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.raster.operator.pixel.PixelCombineRasters +import com.databricks.labs.mosaic.core.types.RasterTileType +import com.databricks.labs.mosaic.core.types.model.MosaicRasterTile +import com.databricks.labs.mosaic.expressions.base.{GenericExpressionFactory, WithExpressionInfo} +import com.databricks.labs.mosaic.expressions.raster.base.RasterArray2ArgExpression +import com.databricks.labs.mosaic.functions.MosaicExpressionConfig +import org.apache.spark.sql.catalyst.analysis.FunctionRegistry.FunctionBuilder +import org.apache.spark.sql.catalyst.expressions.codegen.CodegenFallback +import org.apache.spark.sql.catalyst.expressions.{Expression, NullIntolerant} +import org.apache.spark.unsafe.types.UTF8String + +/** Expression for combining rasters using average of pixels. */ +case class RST_DerivedBand( + rastersExpr: Expression, + pythonFuncExpr: Expression, + funcNameExpr: Expression, + expressionConfig: MosaicExpressionConfig +) extends RasterArray2ArgExpression[RST_DerivedBand]( + rastersExpr, + pythonFuncExpr, + funcNameExpr, + RasterTileType(expressionConfig.getCellIdType), + returnsRaster = true, + expressionConfig = expressionConfig + ) + with NullIntolerant + with CodegenFallback { + + /** Combines the rasters using average of pixels. */ + override def rasterTransform(tiles: Seq[MosaicRasterTile], arg1: Any, arg2: Any): Any = { + val pythonFunc = arg1.asInstanceOf[UTF8String].toString + val funcName = arg2.asInstanceOf[UTF8String].toString + val index = if (tiles.map(_.getIndex).groupBy(identity).size == 1) tiles.head.getIndex else null + val result = PixelCombineRasters.combine(tiles.map(_.getRaster), pythonFunc, funcName) + MosaicRasterTile( + index, + result, + tiles.head.getParentPath, + tiles.head.getDriver + ) + } + +} + +/** Expression info required for the expression registration for spark SQL. */ +object RST_DerivedBand extends WithExpressionInfo { + + override def name: String = "rst_derivedband" + + override def usage: String = + """ + |_FUNC_(expr1) - Returns a raster that is a result of combining an array of rasters using provided python function. + |""".stripMargin + + override def example: String = + """ + | Examples: + | > SELECT _FUNC_( + | array(raster_tile_1, raster_tile_2, raster_tile_3), + | 'def average(in_ar, out_ar, xoff, yoff, xsize, ysize, raster_xsize, raster_ysize, buf_radius, gt, **kwargs): + | out_ar[:] = np.sum(in_ar, axis=0) / len(in_ar) + | ', + | 'average' + | ); + | {index_id, raster, parent_path, driver} + | {index_id, raster, parent_path, driver} + | ... + | """.stripMargin + + override def builder(expressionConfig: MosaicExpressionConfig): FunctionBuilder = { + GenericExpressionFactory.getBaseBuilder[RST_DerivedBand](3, expressionConfig) + } + +} diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandAgg.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandAgg.scala new file mode 100644 index 000000000..aa85362c6 --- /dev/null +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandAgg.scala @@ -0,0 +1,148 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.index.IndexSystemFactory +import com.databricks.labs.mosaic.core.raster.api.GDAL +import com.databricks.labs.mosaic.core.raster.io.RasterCleaner +import com.databricks.labs.mosaic.core.raster.operator.pixel.PixelCombineRasters +import com.databricks.labs.mosaic.core.types.RasterTileType +import com.databricks.labs.mosaic.core.types.model.MosaicRasterTile +import com.databricks.labs.mosaic.expressions.raster.base.RasterExpressionSerialization +import com.databricks.labs.mosaic.functions.MosaicExpressionConfig +import org.apache.spark.sql.catalyst.InternalRow +import org.apache.spark.sql.catalyst.expressions.aggregate.{ImperativeAggregate, TypedImperativeAggregate} +import org.apache.spark.sql.catalyst.expressions.{Expression, ExpressionInfo, UnsafeProjection, UnsafeRow} +import org.apache.spark.sql.catalyst.trees.TernaryLike +import org.apache.spark.sql.catalyst.util.GenericArrayData +import org.apache.spark.sql.types.{ArrayType, BinaryType, DataType} +import org.apache.spark.unsafe.types.UTF8String + +import scala.collection.mutable.ArrayBuffer + +/** + * Returns a new raster that is a result of combining an array of rasters using + * average of pixels. + */ +//noinspection DuplicatedCode +case class RST_DerivedBandAgg( + rasterExpr: Expression, + pythonFuncExpr: Expression, + funcNameExpr: Expression, + expressionConfig: MosaicExpressionConfig, + mutableAggBufferOffset: Int = 0, + inputAggBufferOffset: Int = 0 +) extends TypedImperativeAggregate[ArrayBuffer[Any]] + with TernaryLike[Expression] + with RasterExpressionSerialization { + + GDAL.enable() + + override lazy val deterministic: Boolean = true + override val nullable: Boolean = false + override val dataType: DataType = RasterTileType(expressionConfig.getCellIdType) + override def prettyName: String = "rst_combine_avg_agg" + + private lazy val projection = UnsafeProjection.create(Array[DataType](ArrayType(elementType = dataType, containsNull = false))) + private lazy val row = new UnsafeRow(1) + + override def first: Expression = rasterExpr + override def second: Expression = pythonFuncExpr + override def third: Expression = funcNameExpr + + def update(buffer: ArrayBuffer[Any], input: InternalRow): ArrayBuffer[Any] = { + val value = first.eval(input) + buffer += InternalRow.copyValue(value) + buffer + } + + def merge(buffer: ArrayBuffer[Any], input: ArrayBuffer[Any]): ArrayBuffer[Any] = { + buffer ++= input + } + + override def createAggregationBuffer(): ArrayBuffer[Any] = ArrayBuffer.empty + + override def withNewInputAggBufferOffset(newInputAggBufferOffset: Int): ImperativeAggregate = + copy(inputAggBufferOffset = newInputAggBufferOffset) + + override def withNewMutableAggBufferOffset(newMutableAggBufferOffset: Int): ImperativeAggregate = + copy(mutableAggBufferOffset = newMutableAggBufferOffset) + + override def eval(buffer: ArrayBuffer[Any]): Any = { + GDAL.enable() + + if (buffer.isEmpty) { + null + } else { + + // This works for Literals only + val pythonFunc = pythonFuncExpr.eval(null).asInstanceOf[UTF8String].toString + val funcName = funcNameExpr.eval(null).asInstanceOf[UTF8String].toString + + // Do do move the expression + val tiles = buffer.map(row => MosaicRasterTile.deserialize(row.asInstanceOf[InternalRow], expressionConfig.getCellIdType)) + + // If merging multiple index rasters, the index value is dropped + val idx = if (tiles.map(_.getIndex).groupBy(identity).size == 1) tiles.head.getIndex else null + + val combined = PixelCombineRasters.combine(tiles.map(_.getRaster), pythonFunc, funcName) + // TODO: should parent path be an array? + val parentPath = tiles.head.getParentPath + val driver = tiles.head.getDriver + + val result = MosaicRasterTile(idx, combined, parentPath, driver) + .formatCellId(IndexSystemFactory.getIndexSystem(expressionConfig.getIndexSystem)) + .serialize(BinaryType, expressionConfig.getRasterCheckpoint) + + tiles.foreach(RasterCleaner.dispose(_)) + RasterCleaner.dispose(result) + + result + } + } + + override def serialize(obj: ArrayBuffer[Any]): Array[Byte] = { + val array = new GenericArrayData(obj.toArray) + projection.apply(InternalRow.apply(array)).getBytes + } + + override def deserialize(bytes: Array[Byte]): ArrayBuffer[Any] = { + val buffer = createAggregationBuffer() + row.pointTo(bytes, bytes.length) + row.getArray(0).foreach(dataType, (_, x: Any) => buffer += x) + buffer + } + + override protected def withNewChildrenInternal(newFirst: Expression, newSecond: Expression, newThird: Expression): RST_DerivedBandAgg = + copy(rasterExpr = newFirst, pythonFuncExpr = newSecond, funcNameExpr = newThird) + +} + +/** Expression info required for the expression registration for spark SQL. */ +object RST_DerivedBandAgg { + + def registryExpressionInfo(db: Option[String]): ExpressionInfo = + new ExpressionInfo( + classOf[RST_DerivedBandAgg].getCanonicalName, + db.orNull, + "rst_derived_band_agg", + """ + | _FUNC_(tiles)) - Combines rasters into a single raster using provided python function. + """.stripMargin, + "", + """ + | Examples: + | > SELECT _FUNC_(raster_tile, + | 'def average(in_ar, out_ar, xoff, yoff, xsize, ysize, raster_xsize, raster_ysize, buf_radius, gt, **kwargs): + | out_ar[:] = np.sum(in_ar, axis=0) / len(in_ar) + | ', + | 'average' + | ); + | {index_id, raster, parent_path, driver} + | """.stripMargin, + "", + "agg_funcs", + "1.0", + "", + "built-in" + ) + +} diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromBands.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromBands.scala index fdb4bfdf0..e29238176 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromBands.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromBands.scala @@ -30,9 +30,9 @@ case class RST_FromBands( * @return * The stacked and resampled raster. */ - override def rasterTransform(rasters: => Seq[MosaicRasterTile]): Any = { + override def rasterTransform(rasters: Seq[MosaicRasterTile]): Any = { val raster = MergeBands.merge(rasters.map(_.getRaster), "bilinear") - new MosaicRasterTile(rasters.head.getIndex, raster, rasters.head.getParentPath, rasters.head.getDriver) + rasters.head.copy(raster = raster) } } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromFile.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromFile.scala index fa69cfcfa..5d13f49bb 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromFile.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromFile.scala @@ -10,6 +10,7 @@ import com.databricks.labs.mosaic.core.types.model.MosaicRasterTile import com.databricks.labs.mosaic.datasource.gdal.ReTileOnRead import com.databricks.labs.mosaic.expressions.base.{GenericExpressionFactory, WithExpressionInfo} import com.databricks.labs.mosaic.functions.MosaicExpressionConfig +import com.databricks.labs.mosaic.utils.PathUtils import org.apache.spark.sql.catalyst.InternalRow import org.apache.spark.sql.catalyst.analysis.FunctionRegistry.FunctionBuilder import org.apache.spark.sql.catalyst.expressions.codegen.CodegenFallback @@ -17,6 +18,8 @@ import org.apache.spark.sql.catalyst.expressions.{CollectionGenerator, Expressio import org.apache.spark.sql.types.{DataType, IntegerType, StructField, StructType} import org.apache.spark.unsafe.types.UTF8String +import java.nio.file.{Files, Paths, StandardCopyOption} + /** * The raster for construction of a raster tile. This should be the first * expression in the expression tree for a raster tile. @@ -59,18 +62,24 @@ case class RST_FromFile( override def eval(input: InternalRow): TraversableOnce[InternalRow] = { GDAL.enable() val path = rasterPathExpr.eval(input).asInstanceOf[UTF8String].toString + val driver = MosaicRasterGDAL.identifyDriver(path) + val tmpPath = PathUtils.createTmpFilePath(GDAL.getExtension(driver)) + val readPath = PathUtils.getCleanPath(path) + Files.copy(Paths.get(readPath), Paths.get(tmpPath), StandardCopyOption.REPLACE_EXISTING) val targetSize = sizeInMB.eval(input).asInstanceOf[Int] if (targetSize <= 0) { - val raster = MosaicRasterGDAL.readRaster(path, path) - val tile = new MosaicRasterTile(null, raster, path, raster.getDriversShortName) + val raster = MosaicRasterGDAL.readRaster(tmpPath, path) + val tile = MosaicRasterTile(null, raster, path, raster.getDriversShortName) val row = tile.formatCellId(indexSystem).serialize() RasterCleaner.dispose(raster) RasterCleaner.dispose(tile) + Files.deleteIfExists(Paths.get(tmpPath)) Seq(InternalRow.fromSeq(Seq(row))) } else { - val tiles = ReTileOnRead.localSubdivide(path, targetSize) + val tiles = ReTileOnRead.localSubdivide(tmpPath, path, targetSize) val rows = tiles.map(_.formatCellId(indexSystem).serialize()) tiles.foreach(RasterCleaner.dispose(_)) + Files.deleteIfExists(Paths.get(tmpPath)) rows.map(row => InternalRow.fromSeq(Seq(row))) } } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_GeoReference.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_GeoReference.scala index 72a33e41c..fef2a4c32 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_GeoReference.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_GeoReference.scala @@ -16,7 +16,7 @@ case class RST_GeoReference(raster: Expression, expressionConfig: MosaicExpressi with CodegenFallback { /** Returns the georeference of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { val raster = tile.getRaster val geoTransform = raster.getRaster.GetGeoTransform() buildMapDouble( diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetNoData.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetNoData.scala index 25c1a0442..8f10b89cb 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetNoData.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetNoData.scala @@ -31,7 +31,7 @@ case class RST_GetNoData( * @return * The no data value of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { ArrayData.toArrayData(tile.getRaster.getBands.map(_.noDataValue)) } @@ -40,7 +40,7 @@ case class RST_GetNoData( /** Expression info required for the expression registration for spark SQL. */ object RST_GetNoData extends WithExpressionInfo { - override def name: String = "rst_get_no_data" + override def name: String = "rst_getnodata" override def usage: String = """ diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetSubdataset.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetSubdataset.scala index 1449bf6f3..3c8af03d8 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetSubdataset.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetSubdataset.scala @@ -23,10 +23,10 @@ case class RST_GetSubdataset(raster: Expression, subsetName: Expression, express with CodegenFallback { /** Returns the subdatasets of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile, arg1: Any): Any = { + override def rasterTransform(tile: MosaicRasterTile, arg1: Any): Any = { val subsetName = arg1.asInstanceOf[UTF8String].toString val subdataset = tile.getRaster.getSubdataset(subsetName) - new MosaicRasterTile(tile.getIndex, subdataset, tile.getParentPath, tile.getDriver) + tile.copy(raster = subdataset) } } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Height.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Height.scala index 02a6da249..ceb638f29 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Height.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Height.scala @@ -16,7 +16,7 @@ case class RST_Height(raster: Expression, expressionConfig: MosaicExpressionConf with CodegenFallback { /** Returns the width of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = tile.getRaster.ySize + override def rasterTransform(tile: MosaicRasterTile): Any = tile.getRaster.ySize } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_InitNoData.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_InitNoData.scala index 604bba92a..ba5831424 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_InitNoData.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_InitNoData.scala @@ -33,25 +33,19 @@ case class RST_InitNoData( * @return * The raster with initialized no data values. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { val noDataValues = tile.getRaster.getBands.map(_.noDataValue).mkString(" ") val dstNoDataValues = tile.getRaster.getBands .map(_.getBand.getDataType) .map(GDAL.getNoDataConstant) .mkString(" ") - val resultPath = PathUtils.createTmpFilePath(tile.getRaster.uuid.toString, GDAL.getExtension(tile.getDriver)) + val resultPath = PathUtils.createTmpFilePath(GDAL.getExtension(tile.getDriver)) val result = GDALWarp.executeWarp( resultPath, - isTemp = true, Seq(tile.getRaster), command = s"""gdalwarp -of ${tile.getDriver} -dstnodata "$dstNoDataValues" -srcnodata "$noDataValues"""" ) - new MosaicRasterTile( - tile.getIndex, - result, - tile.getParentPath, - tile.getDriver - ) + tile.copy(raster = result) } } @@ -59,7 +53,7 @@ case class RST_InitNoData( /** Expression info required for the expression registration for spark SQL. */ object RST_InitNoData extends WithExpressionInfo { - override def name: String = "rst_init_no_data" + override def name: String = "rst_initnodata" override def usage: String = """ diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_IsEmpty.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_IsEmpty.scala index b54b63b55..d4fac7209 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_IsEmpty.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_IsEmpty.scala @@ -16,7 +16,7 @@ case class RST_IsEmpty(raster: Expression, expressionConfig: MosaicExpressionCon with CodegenFallback { /** Returns true if the raster is empty. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { val raster = tile.getRaster (raster.ySize == 0 && raster.xSize == 0) || raster.isEmpty } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MapAlgebra.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MapAlgebra.scala new file mode 100644 index 000000000..69461ebd4 --- /dev/null +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MapAlgebra.scala @@ -0,0 +1,122 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.raster.api.GDAL +import com.databricks.labs.mosaic.core.raster.operator.gdal.GDALCalc +import com.databricks.labs.mosaic.core.types.RasterTileType +import com.databricks.labs.mosaic.core.types.model.MosaicRasterTile +import com.databricks.labs.mosaic.expressions.base.{GenericExpressionFactory, WithExpressionInfo} +import com.databricks.labs.mosaic.expressions.raster.base.RasterArray1ArgExpression +import com.databricks.labs.mosaic.functions.MosaicExpressionConfig +import com.databricks.labs.mosaic.utils.PathUtils +import org.apache.spark.sql.catalyst.analysis.FunctionRegistry.FunctionBuilder +import org.apache.spark.sql.catalyst.expressions.codegen.CodegenFallback +import org.apache.spark.sql.catalyst.expressions.{Expression, NullIntolerant} +import org.apache.spark.unsafe.types.UTF8String + +/** The expression for computing NDVI index. */ +case class RST_MapAlgebra( + rastersExpr: Expression, + jsonSpecExpr: Expression, + expressionConfig: MosaicExpressionConfig +) extends RasterArray1ArgExpression[RST_MapAlgebra]( + rastersExpr, + jsonSpecExpr, + RasterTileType(expressionConfig.getCellIdType), + returnsRaster = true, + expressionConfig = expressionConfig + ) + with NullIntolerant + with CodegenFallback { + + /** + * Computes NDVI index. + * @param tiles + * The raster to be used. + * @param arg1 + * The red band index. + * @return + * The raster contains NDVI index. + */ + override def rasterTransform(tiles: Seq[MosaicRasterTile], arg1: Any): Any = { + val jsonSpec = arg1.asInstanceOf[UTF8String].toString + val extension = GDAL.getExtension(tiles.head.getDriver) + val resultPath = PathUtils.createTmpFilePath(extension) + val command = parseSpec(jsonSpec, resultPath, tiles) + val result = GDALCalc.executeCalc(command, resultPath) + val index = if (tiles.map(_.getIndex).groupBy(identity).size == 1) tiles.head.getIndex else null + MosaicRasterTile( + index, + result, + resultPath, + tiles.head.getDriver + ) + } + + def parseSpec(jsonSpec: String, resultPath: String, tiles: Seq[MosaicRasterTile]): String = { + import org.json4s._ + import org.json4s.jackson.JsonMethods._ + implicit val formats: DefaultFormats.type = org.json4s.DefaultFormats + + val AZRasters = ('A' to 'Z').toList.map(l => s"${l}_index") + val AZBands = ('A' to 'Z').toList.map(l => s"${l}_band") + val json = parse(jsonSpec) + + val namedRasters = AZRasters + .map(raster => (raster, (json \ raster).toOption)) + .filter(_._2.isDefined) + .map(raster => (raster._1, raster._2.get.extract[Int])) + .map { case (raster, index) => (raster, tiles(index).getRaster.getPath) } + + val paramRasters = (if (namedRasters.isEmpty) { + tiles.zipWithIndex.map { case (tile, index) => (s"${('A' + index).toChar}", tile.getRaster.getPath) } + } else { + namedRasters + }) + .map(raster => s" -${raster._1.split("_").head} ${raster._2}") + .mkString + + val namedBands = AZBands + .map(band => (band, (json \ band).toOption)) + .filter(_._2.isDefined) + .map(band => (band._1, band._2.get.extract[Int])) + .map(band => s" --${band._1}=${band._2}") + .mkString + + val calc = (json \ "calc").toOption + .map(_.extract[String]) + .getOrElse( + throw new IllegalArgumentException("Calc parameter is required") + ) + val extraOptions = (json \ "extra_options").toOption.map(_.extract[String]).getOrElse("") + + "gdal_calc" + paramRasters + + namedBands + + s" --outfile=$resultPath" + + s" --calc=$calc" + s" $extraOptions" + } + +} + +/** Expression info required for the expression registration for spark SQL. */ +object RST_MapAlgebra extends WithExpressionInfo { + + override def name: String = "rst_mapalgebra" + + override def usage: String = + """ + |_FUNC_(expr1, expr2) - Performs map algebra on the rasters. + |""".stripMargin + + override def example: String = + """ + | Examples: + | > SELECT _FUNC_(raster_tiles, "{calc: 'A+B', A_index: 0, B_index: 1}"); + | {index_id, raster, parent_path, driver} + | ... + | """.stripMargin + + override def builder(expressionConfig: MosaicExpressionConfig): FunctionBuilder = { + GenericExpressionFactory.getBaseBuilder[RST_MapAlgebra](2, expressionConfig) + } + +} diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MemSize.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MemSize.scala index eeffa8814..804c4f195 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MemSize.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MemSize.scala @@ -16,7 +16,7 @@ case class RST_MemSize(raster: Expression, expressionConfig: MosaicExpressionCon with CodegenFallback { /** Returns the memory size of the raster in bytes. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = tile.getRaster.getMemSize + override def rasterTransform(tile: MosaicRasterTile): Any = tile.getRaster.getMemSize } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Merge.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Merge.scala index 54870aa65..1dd52295e 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Merge.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Merge.scala @@ -30,15 +30,10 @@ case class RST_Merge( * @return * The merged raster. */ - override def rasterTransform(tiles: => Seq[MosaicRasterTile]): Any = { + override def rasterTransform(tiles: Seq[MosaicRasterTile]): Any = { val index = if (tiles.map(_.getIndex).groupBy(identity).size == 1) tiles.head.getIndex else null val raster = MergeRasters.merge(tiles.map(_.getRaster)) - new MosaicRasterTile( - index, - raster, - tiles.head.getParentPath, - tiles.head.getDriver - ) + tiles.head.copy(raster = raster, index = index) } } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MergeAgg.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MergeAgg.scala index 552feb0b5..3b59618b9 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MergeAgg.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MergeAgg.scala @@ -79,7 +79,7 @@ case class RST_MergeAgg( val parentPath = tiles.head.getParentPath val driver = tiles.head.getDriver - val result = new MosaicRasterTile(idx, merged, parentPath, driver) + val result = MosaicRasterTile(idx, merged, parentPath, driver) .formatCellId(IndexSystemFactory.getIndexSystem(expressionConfig.getIndexSystem)) .serialize(BinaryType, expressionConfig.getRasterCheckpoint) diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MetaData.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MetaData.scala index 1e62808f7..8a96ff0d1 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MetaData.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_MetaData.scala @@ -16,7 +16,7 @@ case class RST_MetaData(raster: Expression, expressionConfig: MosaicExpressionCo with CodegenFallback { /** Returns the metadata of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = buildMapString(tile.getRaster.metadata) + override def rasterTransform(tile: MosaicRasterTile): Any = buildMapString(tile.getRaster.metadata) } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_NDVI.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_NDVI.scala index 636b079ac..0c1b3be38 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_NDVI.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_NDVI.scala @@ -38,11 +38,11 @@ case class RST_NDVI( * @return * The raster contains NDVI index. */ - override def rasterTransform(tile: => MosaicRasterTile, arg1: Any, arg2: Any): Any = { + override def rasterTransform(tile: MosaicRasterTile, arg1: Any, arg2: Any): Any = { val redInd = arg1.asInstanceOf[Int] val nirInd = arg2.asInstanceOf[Int] val result = NDVI.compute(tile.getRaster, redInd, nirInd) - new MosaicRasterTile(tile.getIndex, result, tile.getParentPath, tile.getDriver) + tile.copy(raster = result) } } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_NumBands.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_NumBands.scala index b4694821d..f5dd09551 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_NumBands.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_NumBands.scala @@ -16,7 +16,7 @@ case class RST_NumBands(raster: Expression, expressionConfig: MosaicExpressionCo with CodegenFallback { /** Returns the number of bands in the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = tile.getRaster.numBands + override def rasterTransform(tile: MosaicRasterTile): Any = tile.getRaster.numBands } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_PixelHeight.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_PixelHeight.scala index 1aad1085c..c7cd790c6 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_PixelHeight.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_PixelHeight.scala @@ -17,7 +17,7 @@ case class RST_PixelHeight(raster: Expression, expressionConfig: MosaicExpressio with CodegenFallback { /** Returns the pixel height of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { val raster = tile.getRaster val scaleY = raster.getRaster.GetGeoTransform()(5) val skewX = raster.getRaster.GetGeoTransform()(2) diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_PixelWidth.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_PixelWidth.scala index b623c303e..4a5f37916 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_PixelWidth.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_PixelWidth.scala @@ -17,7 +17,7 @@ case class RST_PixelWidth(raster: Expression, expressionConfig: MosaicExpression with CodegenFallback { /** Returns the pixel width of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { val raster = tile.getRaster val scaleX = raster.getRaster.GetGeoTransform()(1) val skewY = raster.getRaster.GetGeoTransform()(4) diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_RasterToWorldCoord.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_RasterToWorldCoord.scala index 11e734a67..09bbb8b77 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_RasterToWorldCoord.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_RasterToWorldCoord.scala @@ -27,7 +27,7 @@ case class RST_RasterToWorldCoord( * GeoTransform. This ensures the projection of the raster is respected. * The output is a WKT point. */ - override def rasterTransform(tile: => MosaicRasterTile, arg1: Any, arg2: Any): Any = { + override def rasterTransform(tile: MosaicRasterTile, arg1: Any, arg2: Any): Any = { val x = arg1.asInstanceOf[Int] val y = arg2.asInstanceOf[Int] val gt = tile.getRaster.getRaster.GetGeoTransform() diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_RasterToWorldCoordX.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_RasterToWorldCoordX.scala index 0ef8a7def..3f2158500 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_RasterToWorldCoordX.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_RasterToWorldCoordX.scala @@ -25,7 +25,7 @@ case class RST_RasterToWorldCoordX( * Returns the world coordinates of the raster x pixel by applying * GeoTransform. This ensures the projection of the raster is respected. */ - override def rasterTransform(tile: => MosaicRasterTile, arg1: Any, arg2: Any): Any = { + override def rasterTransform(tile: MosaicRasterTile, arg1: Any, arg2: Any): Any = { val x = arg1.asInstanceOf[Int] val y = arg2.asInstanceOf[Int] val gt = tile.getRaster.getRaster.GetGeoTransform() diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_RasterToWorldCoordY.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_RasterToWorldCoordY.scala index 2e6703b3c..15e7cf87d 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_RasterToWorldCoordY.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_RasterToWorldCoordY.scala @@ -25,7 +25,7 @@ case class RST_RasterToWorldCoordY( * Returns the world coordinates of the raster y pixel by applying * GeoTransform. This ensures the projection of the raster is respected. */ - override def rasterTransform(tile: => MosaicRasterTile, arg1: Any, arg2: Any): Any = { + override def rasterTransform(tile: MosaicRasterTile, arg1: Any, arg2: Any): Any = { val x = arg1.asInstanceOf[Int] val y = arg2.asInstanceOf[Int] val gt = tile.getRaster.getRaster.GetGeoTransform() diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ReTile.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ReTile.scala index 1d5fdedec..4465866dc 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ReTile.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ReTile.scala @@ -26,7 +26,7 @@ case class RST_ReTile( * Returns a set of new rasters with the specified tile size (tileWidth x * tileHeight). */ - override def rasterGenerator(tile: => MosaicRasterTile): Seq[MosaicRasterTile] = { + override def rasterGenerator(tile: MosaicRasterTile): Seq[MosaicRasterTile] = { val tileWidthValue = tileWidthExpr.eval().asInstanceOf[Int] val tileHeightValue = tileHeightExpr.eval().asInstanceOf[Int] ReTile.reTile(tile, tileWidthValue, tileHeightValue) diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Rotation.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Rotation.scala index b54506882..c3cd097c7 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Rotation.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Rotation.scala @@ -16,7 +16,7 @@ case class RST_Rotation(raster: Expression, expressionConfig: MosaicExpressionCo with CodegenFallback { /** Returns the rotation angle of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { val gt = tile.getRaster.getRaster.GetGeoTransform() // arctan of y_skew and x_scale math.atan(gt(4) / gt(1)) diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SRID.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SRID.scala index 293227d37..c8bce06b7 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SRID.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SRID.scala @@ -19,7 +19,7 @@ case class RST_SRID(raster: Expression, expressionConfig: MosaicExpressionConfig with CodegenFallback { /** Returns the SRID of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { // Reference: https://gis.stackexchange.com/questions/267321/extracting-epsg-from-a-raster-using-gdal-bindings-in-python val proj = new SpatialReference(tile.getRaster.getRaster.GetProjection()) Try(proj.AutoIdentifyEPSG()) diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ScaleX.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ScaleX.scala index 4deaca6fd..c16891871 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ScaleX.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ScaleX.scala @@ -16,7 +16,7 @@ case class RST_ScaleX(raster: Expression, expressionConfig: MosaicExpressionConf with CodegenFallback { /** Returns the scale x of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { tile.getRaster.getRaster.GetGeoTransform()(1) } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ScaleY.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ScaleY.scala index 5875bbf7a..3b0779763 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ScaleY.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ScaleY.scala @@ -16,7 +16,7 @@ case class RST_ScaleY(raster: Expression, expressionConfig: MosaicExpressionConf with CodegenFallback { /** Returns the scale y of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { tile.getRaster.getRaster.GetGeoTransform()(5) } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SetNoData.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SetNoData.scala index 268091a10..a089ba4f6 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SetNoData.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SetNoData.scala @@ -11,6 +11,7 @@ import com.databricks.labs.mosaic.utils.PathUtils import org.apache.spark.sql.catalyst.analysis.FunctionRegistry.FunctionBuilder import org.apache.spark.sql.catalyst.expressions.codegen.CodegenFallback import org.apache.spark.sql.catalyst.expressions.{Expression, NullIntolerant} +import org.apache.spark.sql.catalyst.util.ArrayData /** Returns a raster with the specified no data values. */ case class RST_SetNoData( @@ -36,26 +37,22 @@ case class RST_SetNoData( * @return * The raster with the specified no data values. */ - override def rasterTransform(tile: => MosaicRasterTile, arg1: Any): Any = { + override def rasterTransform(tile: MosaicRasterTile, arg1: Any): Any = { val noDataValues = tile.getRaster.getBands.map(_.noDataValue).mkString(" ") val dstNoDataValues = (arg1 match { - case doubles: Array[Double] => doubles case d: Double => Array.fill[Double](tile.getRaster.numBands)(d) - case _ => throw new IllegalArgumentException("No data values must be an array of doubles or a double") + case i: Int => Array.fill[Double](tile.getRaster.numBands)(i.toDouble) + case l: Long => Array.fill[Double](tile.getRaster.numBands)(l.toDouble) + case arrayData: ArrayData => arrayData.array.map(_.toString.toDouble) // Trick to convert SQL decimal to double + case _ => throw new IllegalArgumentException("No data values must be an array of numerical or a numerical value.") }).mkString(" ") - val resultPath = PathUtils.createTmpFilePath(tile.getRaster.uuid.toString, GDAL.getExtension(tile.getDriver)) + val resultPath = PathUtils.createTmpFilePath(GDAL.getExtension(tile.getDriver)) val result = GDALWarp.executeWarp( resultPath, - isTemp = true, Seq(tile.getRaster), command = s"""gdalwarp -of ${tile.getDriver} -dstnodata "$dstNoDataValues" -srcnodata "$noDataValues"""" ) - new MosaicRasterTile( - tile.getIndex, - result, - tile.getParentPath, - tile.getDriver - ) + tile.copy(raster = result) } } @@ -63,7 +60,7 @@ case class RST_SetNoData( /** Expression info required for the expression registration for spark SQL. */ object RST_SetNoData extends WithExpressionInfo { - override def name: String = "rst_set_no_data" + override def name: String = "rst_setnodata" override def usage: String = """ diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SkewX.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SkewX.scala index 697b758da..ee3d0c4dd 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SkewX.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SkewX.scala @@ -16,7 +16,7 @@ case class RST_SkewX(raster: Expression, expressionConfig: MosaicExpressionConfi with CodegenFallback { /** Returns the skew x of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { tile.getRaster.getRaster.GetGeoTransform()(2) } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SkewY.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SkewY.scala index 1fe4893c5..ff9903687 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SkewY.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_SkewY.scala @@ -16,7 +16,7 @@ case class RST_SkewY(raster: Expression, expressionConfig: MosaicExpressionConfi with CodegenFallback { /** Returns the skew y of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { tile.getRaster.getRaster.GetGeoTransform()(4) } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Subdatasets.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Subdatasets.scala index c90a967c3..8c58e7f74 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Subdatasets.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Subdatasets.scala @@ -21,7 +21,7 @@ case class RST_Subdatasets(raster: Expression, expressionConfig: MosaicExpressio with CodegenFallback { /** Returns the subdatasets of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = buildMapString(tile.getRaster.subdatasets) + override def rasterTransform(tile: MosaicRasterTile): Any = buildMapString(tile.getRaster.subdatasets) } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Subdivide.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Subdivide.scala index f0756d6fc..9692ccf2d 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Subdivide.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Subdivide.scala @@ -19,7 +19,7 @@ case class RST_Subdivide( with CodegenFallback { /** Returns a set of new rasters with the specified tile size (In MB). */ - override def rasterGenerator(tile: => MosaicRasterTile): Seq[MosaicRasterTile] = { + override def rasterGenerator(tile: MosaicRasterTile): Seq[MosaicRasterTile] = { val targetSize = sizeInMB.eval().asInstanceOf[Int] BalancedSubdivision.splitRaster(tile, targetSize) } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Summary.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Summary.scala index bcc296afa..ea75617c1 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Summary.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Summary.scala @@ -21,7 +21,7 @@ case class RST_Summary(raster: Expression, expressionConfig: MosaicExpressionCon with CodegenFallback { /** Returns the summary info the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { val raster = tile.getRaster val vector = new JVector[String]() // For other flags check the way gdalinfo.py script is called, InfoOptions expects a collection of same flags. diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Tessellate.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Tessellate.scala index bb22cdc5b..e2fa3cd22 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Tessellate.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Tessellate.scala @@ -25,7 +25,7 @@ case class RST_Tessellate( * Returns a set of new rasters which are the result of the tessellation of * the input raster. */ - override def rasterGenerator(tile: => MosaicRasterTile, resolution: Int): Seq[MosaicRasterTile] = { + override def rasterGenerator(tile: MosaicRasterTile, resolution: Int): Seq[MosaicRasterTile] = { RasterTessellate.tessellate( tile.getRaster, resolution, diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ToOverlappingTiles.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ToOverlappingTiles.scala index 287d2389d..5866e00aa 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ToOverlappingTiles.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_ToOverlappingTiles.scala @@ -27,7 +27,7 @@ case class RST_ToOverlappingTiles( * Returns a set of new rasters which are the result of a rolling window * over the input raster. */ - override def rasterGenerator(tile: => MosaicRasterTile): Seq[MosaicRasterTile] = { + override def rasterGenerator(tile: MosaicRasterTile): Seq[MosaicRasterTile] = { val tileWidthValue = tileWidthExpr.eval().asInstanceOf[Int] val tileHeightValue = tileHeightExpr.eval().asInstanceOf[Int] val overlapValue = overlapExpr.eval().asInstanceOf[Int] diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_TryOpen.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_TryOpen.scala index f526cdb2a..b364d39da 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_TryOpen.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_TryOpen.scala @@ -16,7 +16,7 @@ case class RST_TryOpen(raster: Expression, expressionConfig: MosaicExpressionCon with CodegenFallback { /** Returns true if the raster can be opened. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { Option(tile.getRaster.getRaster).isDefined } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_UpperLeftX.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_UpperLeftX.scala index 7a53e488a..4f050bc7e 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_UpperLeftX.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_UpperLeftX.scala @@ -16,7 +16,7 @@ case class RST_UpperLeftX(raster: Expression, expressionConfig: MosaicExpression with CodegenFallback { /** Returns the upper left x of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { tile.getRaster.getRaster.GetGeoTransform()(0) } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_UpperLeftY.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_UpperLeftY.scala index 8e6525bab..0e052e3ae 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_UpperLeftY.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_UpperLeftY.scala @@ -16,7 +16,7 @@ case class RST_UpperLeftY(raster: Expression, expressionConfig: MosaicExpression with CodegenFallback { /** Returns the upper left y of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = { + override def rasterTransform(tile: MosaicRasterTile): Any = { tile.getRaster.getRaster.GetGeoTransform()(3) } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Width.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Width.scala index a8a9a280d..4bd56686a 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Width.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_Width.scala @@ -16,7 +16,7 @@ case class RST_Width(raster: Expression, expressionConfig: MosaicExpressionConfi with CodegenFallback { /** Returns the width of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile): Any = tile.getRaster.xSize + override def rasterTransform(tile: MosaicRasterTile): Any = tile.getRaster.xSize } diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_WorldToRasterCoord.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_WorldToRasterCoord.scala index 6f1774bf3..e5cf95180 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_WorldToRasterCoord.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_WorldToRasterCoord.scala @@ -25,7 +25,7 @@ case class RST_WorldToRasterCoord( * Returns the x and y of the raster by applying GeoTransform as a tuple of * Integers. This will ensure projection of the raster is respected. */ - override def rasterTransform(tile: => MosaicRasterTile, arg1: Any, arg2: Any): Any = { + override def rasterTransform(tile: MosaicRasterTile, arg1: Any, arg2: Any): Any = { val xGeo = arg1.asInstanceOf[Double] val yGeo = arg2.asInstanceOf[Double] val gt = tile.getRaster.getRaster.GetGeoTransform() diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_WorldToRasterCoordX.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_WorldToRasterCoordX.scala index 7f6c3d65d..2b6f6aa0c 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_WorldToRasterCoordX.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_WorldToRasterCoordX.scala @@ -25,7 +25,7 @@ case class RST_WorldToRasterCoordX( * Returns the x coordinate of the raster by applying GeoTransform. This * will ensure projection of the raster is respected. */ - override def rasterTransform(tile: => MosaicRasterTile, arg1: Any, arg2: Any): Any = { + override def rasterTransform(tile: MosaicRasterTile, arg1: Any, arg2: Any): Any = { val xGeo = arg1.asInstanceOf[Double] val gt = tile.getRaster.getRaster.GetGeoTransform() GDAL.fromWorldCoord(gt, xGeo, 0)._1 diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_WorldToRasterCoordY.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_WorldToRasterCoordY.scala index 16b2f2831..23540c7c7 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_WorldToRasterCoordY.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/RST_WorldToRasterCoordY.scala @@ -25,7 +25,7 @@ case class RST_WorldToRasterCoordY( * Returns the y coordinate of the raster by applying GeoTransform. This * will ensure projection of the raster is respected. */ - override def rasterTransform(tile: => MosaicRasterTile, arg1: Any, arg2: Any): Any = { + override def rasterTransform(tile: MosaicRasterTile, arg1: Any, arg2: Any): Any = { val xGeo = arg1.asInstanceOf[Double] val gt = tile.getRaster.getRaster.GetGeoTransform() GDAL.fromWorldCoord(gt, xGeo, 0)._2 diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/Raster1ArgExpression.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/Raster1ArgExpression.scala index df8bd761e..082a98d88 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/Raster1ArgExpression.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/Raster1ArgExpression.scala @@ -59,7 +59,7 @@ abstract class Raster1ArgExpression[T <: Expression: ClassTag]( * @return * A result of the expression. */ - def rasterTransform(raster: => MosaicRasterTile, arg1: Any): Any + def rasterTransform(raster: MosaicRasterTile, arg1: Any): Any /** * Evaluation of the expression. It evaluates the raster path and the loads diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/Raster2ArgExpression.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/Raster2ArgExpression.scala index 1db525c82..5c01a88e2 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/Raster2ArgExpression.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/Raster2ArgExpression.scala @@ -1,7 +1,6 @@ package com.databricks.labs.mosaic.expressions.raster.base import com.databricks.labs.mosaic.core.raster.api.GDAL -import com.databricks.labs.mosaic.core.raster.gdal.MosaicRasterGDAL import com.databricks.labs.mosaic.core.raster.io.RasterCleaner import com.databricks.labs.mosaic.core.types.model.MosaicRasterTile import com.databricks.labs.mosaic.expressions.base.GenericExpressionFactory @@ -66,7 +65,7 @@ abstract class Raster2ArgExpression[T <: Expression: ClassTag]( * @return * A result of the expression. */ - def rasterTransform(raster: => MosaicRasterTile, arg1: Any, arg2: Any): Any + def rasterTransform(raster: MosaicRasterTile, arg1: Any, arg2: Any): Any /** * Evaluation of the expression. It evaluates the raster path and the loads diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArray1ArgExpression.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArray1ArgExpression.scala new file mode 100644 index 000000000..2f06f8cc1 --- /dev/null +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArray1ArgExpression.scala @@ -0,0 +1,89 @@ +package com.databricks.labs.mosaic.expressions.raster.base + +import com.databricks.labs.mosaic.core.raster.api.GDAL +import com.databricks.labs.mosaic.core.raster.io.RasterCleaner +import com.databricks.labs.mosaic.core.types.model.MosaicRasterTile +import com.databricks.labs.mosaic.expressions.base.GenericExpressionFactory +import com.databricks.labs.mosaic.functions.MosaicExpressionConfig +import org.apache.spark.sql.catalyst.expressions.{BinaryExpression, Expression, NullIntolerant} +import org.apache.spark.sql.types.{ArrayType, DataType} + +import scala.reflect.ClassTag + +/** + * Base class for all raster expressions that take two arguments. It provides + * the boilerplate code needed to create a function builder for a given + * expression. It minimises amount of code needed to create a new expression. + * + * @param rastersExpr + * The rasters expression. It is an array column containing rasters as either + * paths or as content byte arrays. + * @param outputType + * The output type of the result. + * @param expressionConfig + * Additional arguments for the expression (expressionConfigs). + * @tparam T + * The type of the extending class. + */ +abstract class RasterArray1ArgExpression[T <: Expression: ClassTag]( + rastersExpr: Expression, + arg1Expr: Expression, + outputType: DataType, + returnsRaster: Boolean, + expressionConfig: MosaicExpressionConfig +) extends BinaryExpression + with NullIntolerant + with Serializable + with RasterExpressionSerialization { + + GDAL.enable() + + /** Output Data Type */ + override def dataType: DataType = if (returnsRaster) rastersExpr.dataType.asInstanceOf[ArrayType].elementType else outputType + + override def left: Expression = rastersExpr + + override def right: Expression = arg1Expr + + /** + * The function to be overridden by the extending class. It is called when + * the expression is evaluated. It provides the rasters to the expression. + * It abstracts spark serialization from the caller. + * @param rasters + * The sequence of rasters to be used. + * @param arg1 + * The first argument to the expression. + * @return + * A result of the expression. + */ + def rasterTransform(rasters: Seq[MosaicRasterTile], arg1: Any): Any + + /** + * Evaluation of the expression. It evaluates the raster path and the loads + * the raster from the path. It handles the clean up of the raster before + * returning the results. + * @param input + * The InternalRow of the expression. It contains an array containing + * raster tiles. It may be used for other argument expressions so it is + * passed to rasterTransform. + * + * @return + * The result of the expression. + */ + override def nullSafeEval(input: Any, arg1: Any): Any = { + GDAL.enable() + val tiles = RasterArrayUtils.getTiles(input, rastersExpr, expressionConfig) + val result = rasterTransform(tiles, arg1) + val serialized = serialize(result, returnsRaster, dataType, expressionConfig) + tiles.foreach(t => RasterCleaner.dispose(t)) + serialized + } + + override def makeCopy(newArgs: Array[AnyRef]): Expression = GenericExpressionFactory.makeCopyImpl[T](this, newArgs, 2, expressionConfig) + + override def withNewChildrenInternal( + newFirst: Expression, + newSecond: Expression + ): Expression = makeCopy(Array(newFirst, newSecond)) + +} diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArray2ArgExpression.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArray2ArgExpression.scala new file mode 100644 index 000000000..1e7fb60a6 --- /dev/null +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArray2ArgExpression.scala @@ -0,0 +1,95 @@ +package com.databricks.labs.mosaic.expressions.raster.base + +import com.databricks.labs.mosaic.core.raster.api.GDAL +import com.databricks.labs.mosaic.core.raster.io.RasterCleaner +import com.databricks.labs.mosaic.core.types.model.MosaicRasterTile +import com.databricks.labs.mosaic.expressions.base.GenericExpressionFactory +import com.databricks.labs.mosaic.functions.MosaicExpressionConfig +import org.apache.spark.sql.catalyst.expressions.{Expression, NullIntolerant, TernaryExpression} +import org.apache.spark.sql.types.{ArrayType, DataType} + +import scala.reflect.ClassTag + +/** + * Base class for all raster expressions that take two arguments. It provides + * the boilerplate code needed to create a function builder for a given + * expression. It minimises amount of code needed to create a new expression. + * + * @param rastersExpr + * The rasters expression. It is an array column containing rasters as either + * paths or as content byte arrays. + * @param outputType + * The output type of the result. + * @param expressionConfig + * Additional arguments for the expression (expressionConfigs). + * @tparam T + * The type of the extending class. + */ +abstract class RasterArray2ArgExpression[T <: Expression: ClassTag]( + rastersExpr: Expression, + arg1Expr: Expression, + arg2Expr: Expression, + outputType: DataType, + returnsRaster: Boolean, + expressionConfig: MosaicExpressionConfig +) extends TernaryExpression + with NullIntolerant + with Serializable + with RasterExpressionSerialization { + + GDAL.enable() + + /** Output Data Type */ + override def dataType: DataType = if (returnsRaster) rastersExpr.dataType.asInstanceOf[ArrayType].elementType else outputType + + override def first: Expression = rastersExpr + + override def second: Expression = arg1Expr + + override def third: Expression = arg2Expr + + /** + * The function to be overridden by the extending class. It is called when + * the expression is evaluated. It provides the rasters to the expression. + * It abstracts spark serialization from the caller. + * @param rasters + * The sequence of rasters to be used. + * @param arg1 + * The first argument to the expression. + * @param arg2 + * The second argument to the expression. + * @return + * A result of the expression. + */ + def rasterTransform(rasters: Seq[MosaicRasterTile], arg1: Any, arg2: Any): Any + + /** + * Evaluation of the expression. It evaluates the raster path and the loads + * the raster from the path. It handles the clean up of the raster before + * returning the results. + * @param input + * The InternalRow of the expression. It contains an array containing + * raster tiles. It may be used for other argument expressions so it is + * passed to rasterTransform. + * + * @return + * The result of the expression. + */ + override def nullSafeEval(input: Any, arg1: Any, arg2: Any): Any = { + GDAL.enable() + val tiles = RasterArrayUtils.getTiles(input, rastersExpr, expressionConfig) + val result = rasterTransform(tiles, arg1, arg2) + val serialized = serialize(result, returnsRaster, dataType, expressionConfig) + tiles.foreach(t => RasterCleaner.dispose(t)) + serialized + } + + override def makeCopy(newArgs: Array[AnyRef]): Expression = GenericExpressionFactory.makeCopyImpl[T](this, newArgs, 3, expressionConfig) + + override def withNewChildrenInternal( + newFirst: Expression, + newSecond: Expression, + newThird: Expression + ): Expression = makeCopy(Array(newFirst, newSecond, newThird)) + +} diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArrayExpression.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArrayExpression.scala index 928b994b6..8daa0678b 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArrayExpression.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArrayExpression.scala @@ -5,9 +5,7 @@ import com.databricks.labs.mosaic.core.raster.io.RasterCleaner import com.databricks.labs.mosaic.core.types.model.MosaicRasterTile import com.databricks.labs.mosaic.expressions.base.GenericExpressionFactory import com.databricks.labs.mosaic.functions.MosaicExpressionConfig -import org.apache.spark.sql.catalyst.InternalRow import org.apache.spark.sql.catalyst.expressions.{Expression, NullIntolerant, UnaryExpression} -import org.apache.spark.sql.catalyst.util.ArrayData import org.apache.spark.sql.types.{ArrayType, DataType} import scala.reflect.ClassTag @@ -53,30 +51,23 @@ abstract class RasterArrayExpression[T <: Expression: ClassTag]( * @return * A result of the expression. */ - def rasterTransform(rasters: => Seq[MosaicRasterTile]): Any + def rasterTransform(rasters: Seq[MosaicRasterTile]): Any /** * Evaluation of the expression. It evaluates the raster path and the loads * the raster from the path. It handles the clean up of the raster before * returning the results. * @param input - * The input to the expression. It is an array containing paths to raster - * files or byte arrays containing the raster files contents. + * The InternalRow of the expression. It contains an array containing + * raster tiles. It may be used for other argument expressions so it is + * passed to rasterTransform. * * @return * The result of the expression. */ override def nullSafeEval(input: Any): Any = { GDAL.enable() - val rasterDT = rastersExpr.dataType.asInstanceOf[ArrayType].elementType - val arrayData = input.asInstanceOf[ArrayData] - val n = arrayData.numElements() - val tiles = (0 until n) - .map(i => - MosaicRasterTile - .deserialize(arrayData.get(i, rasterDT).asInstanceOf[InternalRow], expressionConfig.getCellIdType) - ) - + val tiles = RasterArrayUtils.getTiles(input, rastersExpr, expressionConfig) val result = rasterTransform(tiles) val serialized = serialize(result, returnsRaster, dataType, expressionConfig) tiles.foreach(t => RasterCleaner.dispose(t)) diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArrayUtils.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArrayUtils.scala new file mode 100644 index 000000000..0dd19346c --- /dev/null +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterArrayUtils.scala @@ -0,0 +1,24 @@ +package com.databricks.labs.mosaic.expressions.raster.base + +import com.databricks.labs.mosaic.core.types.model.MosaicRasterTile +import com.databricks.labs.mosaic.functions.MosaicExpressionConfig +import org.apache.spark.sql.catalyst.InternalRow +import org.apache.spark.sql.catalyst.expressions.Expression +import org.apache.spark.sql.catalyst.util.ArrayData +import org.apache.spark.sql.types.ArrayType + +object RasterArrayUtils { + + def getTiles(input: Any, rastersExpr: Expression, expressionConfig: MosaicExpressionConfig): Seq[MosaicRasterTile] = { + val rasterDT = rastersExpr.dataType.asInstanceOf[ArrayType].elementType + val arrayData = input.asInstanceOf[ArrayData] + val n = arrayData.numElements() + val tiles = (0 until n) + .map(i => + MosaicRasterTile + .deserialize(arrayData.get(i, rasterDT).asInstanceOf[InternalRow], expressionConfig.getCellIdType) + ) + tiles + } + +} diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterBandExpression.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterBandExpression.scala index 1efcfb553..008f0df09 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterBandExpression.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterBandExpression.scala @@ -61,7 +61,7 @@ abstract class RasterBandExpression[T <: Expression: ClassTag]( * @return * The result of the expression. */ - def bandTransform(raster: => MosaicRasterTile, band: MosaicRasterBandGDAL): Any + def bandTransform(raster: MosaicRasterTile, band: MosaicRasterBandGDAL): Any /** * Evaluation of the expression. It evaluates the raster path and the loads diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterExpression.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterExpression.scala index 2207424a5..31751d0e1 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterExpression.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterExpression.scala @@ -61,7 +61,7 @@ abstract class RasterExpression[T <: Expression: ClassTag]( * @return * The result of the expression. */ - def rasterTransform(raster: => MosaicRasterTile): Any + def rasterTransform(raster: MosaicRasterTile): Any /** * Evaluation of the expression. It evaluates the raster path and the loads diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterExpressionSerialization.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterExpressionSerialization.scala index 0087314f9..a9bf17917 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterExpressionSerialization.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterExpressionSerialization.scala @@ -28,7 +28,7 @@ trait RasterExpressionSerialization { * The serialized result of the expression. */ def serialize( - data: => Any, + data: Any, returnsRaster: Boolean, outputDataType: DataType, expressionConfig: MosaicExpressionConfig diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterGeneratorExpression.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterGeneratorExpression.scala index 8cb68c49d..4ad7d126e 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterGeneratorExpression.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterGeneratorExpression.scala @@ -70,7 +70,7 @@ abstract class RasterGeneratorExpression[T <: Expression: ClassTag]( * @return * Sequence of generated new rasters to be written. */ - def rasterGenerator(raster: => MosaicRasterTile): Seq[MosaicRasterTile] + def rasterGenerator(raster: MosaicRasterTile): Seq[MosaicRasterTile] override def eval(input: InternalRow): TraversableOnce[InternalRow] = { GDAL.enable() diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterGridExpression.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterGridExpression.scala index b1e83de1b..26fcf0aa2 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterGridExpression.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterGridExpression.scala @@ -55,7 +55,7 @@ trait RasterGridExpression { * band. */ def griddedPixels( - raster: => MosaicRasterGDAL, + raster: MosaicRasterGDAL, indexSystem: IndexSystem, resolution: Int ): Seq[Map[Long, Seq[Double]]] = { diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterTessellateGeneratorExpression.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterTessellateGeneratorExpression.scala index 8e02543c6..a31f001cd 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterTessellateGeneratorExpression.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterTessellateGeneratorExpression.scala @@ -68,7 +68,7 @@ abstract class RasterTessellateGeneratorExpression[T <: Expression: ClassTag]( * @return * Sequence of generated new rasters to be written. */ - def rasterGenerator(raster: => MosaicRasterTile, resolution: Int): Seq[MosaicRasterTile] + def rasterGenerator(raster: MosaicRasterTile, resolution: Int): Seq[MosaicRasterTile] override def eval(input: InternalRow): TraversableOnce[InternalRow] = { GDAL.enable() diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterToGridExpression.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterToGridExpression.scala index 4d39c35cb..98b9bafc6 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterToGridExpression.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/raster/base/RasterToGridExpression.scala @@ -56,7 +56,7 @@ abstract class RasterToGridExpression[T <: Expression: ClassTag, P]( * @return * Sequence of (cellId, measure) of each band of the raster. */ - override def rasterTransform(tile: => MosaicRasterTile, arg1: Any): Any = { + override def rasterTransform(tile: MosaicRasterTile, arg1: Any): Any = { GDAL.enable() val resolution = arg1.asInstanceOf[Int] val transformed = griddedPixels(tile.getRaster, indexSystem, resolution) diff --git a/src/main/scala/com/databricks/labs/mosaic/expressions/util/OGRReadeWithOffset.scala b/src/main/scala/com/databricks/labs/mosaic/expressions/util/OGRReadeWithOffset.scala index ebb3f1c99..99494ca96 100644 --- a/src/main/scala/com/databricks/labs/mosaic/expressions/util/OGRReadeWithOffset.scala +++ b/src/main/scala/com/databricks/labs/mosaic/expressions/util/OGRReadeWithOffset.scala @@ -21,7 +21,6 @@ case class OGRReadeWithOffset(pathExpr: Expression, chunkIndexExpr: Expression, val layerNumber: Int = config("layerNumber").toInt val layerName: String = config("layerName") val chunkSize: Int = config("chunkSize").toInt - val vsizip: Boolean = config("vsizip").toBoolean val asWKB: Boolean = config("asWKB").toBoolean override def collectionType: DataType = schema @@ -35,7 +34,7 @@ case class OGRReadeWithOffset(pathExpr: Expression, chunkIndexExpr: Expression, val chunkIndex = chunkIndexExpr.eval(input).asInstanceOf[Int] OGRFileFormat.enableOGRDrivers() - val ds = OGRFileFormat.getDataSource(driverName, path, vsizip) + val ds = OGRFileFormat.getDataSource(driverName, path) val layer = OGRFileFormat.getLayer(ds, layerNumber, layerName) val start = chunkIndex * chunkSize diff --git a/src/main/scala/com/databricks/labs/mosaic/functions/MosaicContext.scala b/src/main/scala/com/databricks/labs/mosaic/functions/MosaicContext.scala index 88c53d6fb..2caa02251 100644 --- a/src/main/scala/com/databricks/labs/mosaic/functions/MosaicContext.scala +++ b/src/main/scala/com/databricks/labs/mosaic/functions/MosaicContext.scala @@ -21,6 +21,7 @@ import org.apache.spark.sql.catalyst.expressions.{Expression, Literal} import org.apache.spark.sql.functions._ import org.apache.spark.sql.types.{LongType, StringType} +import java.nio.file.Files import scala.reflect.runtime.universe //noinspection DuplicatedCode @@ -257,6 +258,7 @@ class MosaicContext(indexSystem: IndexSystem, geometryAPI: GeometryAPI) extends mosaicRegistry.registerExpression[RST_BoundingBox](expressionConfig) mosaicRegistry.registerExpression[RST_Clip](expressionConfig) mosaicRegistry.registerExpression[RST_CombineAvg](expressionConfig) + mosaicRegistry.registerExpression[RST_DerivedBand](expressionConfig) mosaicRegistry.registerExpression[RST_GeoReference](expressionConfig) mosaicRegistry.registerExpression[RST_GetNoData](expressionConfig) mosaicRegistry.registerExpression[RST_GetSubdataset](expressionConfig) @@ -267,6 +269,7 @@ class MosaicContext(indexSystem: IndexSystem, geometryAPI: GeometryAPI) extends mosaicRegistry.registerExpression[RST_Merge](expressionConfig) mosaicRegistry.registerExpression[RST_FromBands](expressionConfig) mosaicRegistry.registerExpression[RST_MetaData](expressionConfig) + mosaicRegistry.registerExpression[RST_MapAlgebra](expressionConfig) mosaicRegistry.registerExpression[RST_NDVI](expressionConfig) mosaicRegistry.registerExpression[RST_NumBands](expressionConfig) mosaicRegistry.registerExpression[RST_PixelWidth](expressionConfig) @@ -337,6 +340,11 @@ class MosaicContext(indexSystem: IndexSystem, geometryAPI: GeometryAPI) extends RST_CombineAvgAgg.registryExpressionInfo(database), (exprs: Seq[Expression]) => RST_CombineAvgAgg(exprs(0), expressionConfig) ) + registry.registerFunction( + FunctionIdentifier("rst_derivedband_agg", database), + RST_DerivedBandAgg.registryExpressionInfo(database), + (exprs: Seq[Expression]) => RST_DerivedBandAgg(exprs(0), exprs(1), exprs(2), expressionConfig) + ) /** IndexSystem and GeometryAPI Specific methods */ registry.registerFunction( @@ -628,6 +636,8 @@ class MosaicContext(indexSystem: IndexSystem, geometryAPI: GeometryAPI) extends def rst_boundingbox(raster: Column): Column = ColumnAdapter(RST_BoundingBox(raster.expr, expressionConfig)) def rst_clip(raster: Column, geometry: Column): Column = ColumnAdapter(RST_Clip(raster.expr, geometry.expr, expressionConfig)) def rst_combineavg(rasterArray: Column): Column = ColumnAdapter(RST_CombineAvg(rasterArray.expr, expressionConfig)) + def rst_derivedband(raster: Column, pythonFunc: Column, funcName: Column): Column = + ColumnAdapter(RST_DerivedBand(raster.expr, pythonFunc.expr, funcName.expr, expressionConfig)) def rst_georeference(raster: Column): Column = ColumnAdapter(RST_GeoReference(raster.expr, expressionConfig)) def rst_getnodata(raster: Column): Column = ColumnAdapter(RST_GetNoData(raster.expr, expressionConfig)) def rst_getsubdataset(raster: Column, subdatasetName: Column): Column = @@ -641,6 +651,8 @@ class MosaicContext(indexSystem: IndexSystem, geometryAPI: GeometryAPI) extends def rst_frombands(bandsArray: Column): Column = ColumnAdapter(RST_FromBands(bandsArray.expr, expressionConfig)) def rst_merge(rasterArray: Column): Column = ColumnAdapter(RST_Merge(rasterArray.expr, expressionConfig)) def rst_metadata(raster: Column): Column = ColumnAdapter(RST_MetaData(raster.expr, expressionConfig)) + def rst_mapalgebra(rasterArray: Column, jsonSpec: Column): Column = + ColumnAdapter(RST_MapAlgebra(rasterArray.expr, jsonSpec.expr, expressionConfig)) def rst_ndvi(raster: Column, band1: Column, band2: Column): Column = ColumnAdapter(RST_NDVI(raster.expr, band1.expr, band2.expr, expressionConfig)) def rst_ndvi(raster: Column, band1: Int, band2: Int): Column = @@ -738,6 +750,10 @@ class MosaicContext(indexSystem: IndexSystem, geometryAPI: GeometryAPI) extends ColumnAdapter(RST_MergeAgg(raster.expr, expressionConfig).toAggregateExpression(isDistinct = false)) def rst_combineavg_agg(raster: Column): Column = ColumnAdapter(RST_CombineAvgAgg(raster.expr, expressionConfig).toAggregateExpression(isDistinct = false)) + def rst_derivedband_agg(raster: Column, pythonFunc: Column, funcName: Column): Column = + ColumnAdapter( + RST_DerivedBandAgg(raster.expr, pythonFunc.expr, funcName.expr, expressionConfig).toAggregateExpression(isDistinct = false) + ) /** IndexSystem Specific */ @@ -947,6 +963,8 @@ class MosaicContext(indexSystem: IndexSystem, geometryAPI: GeometryAPI) extends object MosaicContext extends Logging { + val tmpDir: String = Files.createTempDirectory("mosaic").toAbsolutePath.toString + private var instance: Option[MosaicContext] = None def build(indexSystem: IndexSystem, geometryAPI: GeometryAPI): MosaicContext = { diff --git a/src/main/scala/com/databricks/labs/mosaic/gdal/MosaicGDAL.scala b/src/main/scala/com/databricks/labs/mosaic/gdal/MosaicGDAL.scala index 4b26bc472..f5849056d 100644 --- a/src/main/scala/com/databricks/labs/mosaic/gdal/MosaicGDAL.scala +++ b/src/main/scala/com/databricks/labs/mosaic/gdal/MosaicGDAL.scala @@ -1,5 +1,6 @@ package com.databricks.labs.mosaic.gdal +import com.databricks.labs.mosaic.functions.MosaicContext import org.apache.spark.internal.Logging import org.apache.spark.sql.SparkSession import org.gdal.gdal.gdal @@ -42,8 +43,8 @@ object MosaicGDAL extends Logging { /** Configures the GDAL environment. */ def configureGDAL(): Unit = { - val CPL_TMPDIR = Files.createTempDirectory("mosaic-gdal-tmp").toAbsolutePath.toString - val GDAL_PAM_PROXY_DIR = Files.createTempDirectory("mosaic-gdal-tmp").toAbsolutePath.toString + val CPL_TMPDIR = MosaicContext.tmpDir + val GDAL_PAM_PROXY_DIR = MosaicContext.tmpDir gdal.SetConfigOption("GDAL_VRT_ENABLE_PYTHON", "YES") gdal.SetConfigOption("GDAL_DISABLE_READDIR_ON_OPEN", "EMPTY_DIR") gdal.SetConfigOption("CPL_TMPDIR", CPL_TMPDIR) diff --git a/src/main/scala/com/databricks/labs/mosaic/utils/PathUtils.scala b/src/main/scala/com/databricks/labs/mosaic/utils/PathUtils.scala index 718f892f2..f3fb9d7b9 100644 --- a/src/main/scala/com/databricks/labs/mosaic/utils/PathUtils.scala +++ b/src/main/scala/com/databricks/labs/mosaic/utils/PathUtils.scala @@ -1,31 +1,16 @@ package com.databricks.labs.mosaic.utils +import com.databricks.labs.mosaic.core.raster.api.GDAL +import com.databricks.labs.mosaic.core.raster.gdal.MosaicRasterGDAL +import com.databricks.labs.mosaic.functions.MosaicContext + import java.nio.file.{Files, Paths} -import java.util.UUID object PathUtils { - def getFormatExtension(rawPath: String): String = { - val path: String = resolvePath(rawPath) - val fileName = path.split("/").last - val extension = fileName.split("\\.").last - extension - } - - private def resolvePath(rawPath: String): String = { - val path = - if (isSubdataset(rawPath)) { - val _ :: filePath :: _ :: Nil = rawPath.split(":").toList - filePath - } else { - rawPath - } - path - } - - def getCleanPath(path: String, useZipPath: Boolean): String = { + def getCleanPath(path: String): String = { val cleanPath = path.replace("file:/", "/").replace("dbfs:/", "/dbfs/") - if (useZipPath && cleanPath.endsWith(".zip")) { + if (cleanPath.endsWith(".zip") || cleanPath.contains(".zip:")) { getZipPath(cleanPath) } else { cleanPath @@ -36,10 +21,6 @@ object PathUtils { path.split(":").length == 3 } - def isInMemory(path: String): Boolean = { - path.startsWith("/vsimem/") || path.contains("/vsimem/") - } - def getSubdatasetPath(path: String): String = { // Subdatasets are paths with a colon in them. // We need to check for this condition and handle it. @@ -60,37 +41,9 @@ object PathUtils { readPath } - def copyToTmp(rawPath: String): String = { - try { - val path: String = resolvePath(rawPath) - - val fileName = path.split("/").last - val extension = getFormatExtension(path) - - val inPath = getCleanPath(path, useZipPath = extension == "zip") - - val randomID = UUID.randomUUID().toString - val tmpDir = Files.createTempDirectory(s"mosaic_local_$randomID").toFile.getAbsolutePath - - val outPath = s"$tmpDir/$fileName" - - Files.createDirectories(Paths.get(tmpDir)) - Files.copy(Paths.get(inPath), Paths.get(outPath)) - - if (isSubdataset(rawPath)) { - val format :: _ :: subdataset :: Nil = rawPath.split(":").toList - getSubdatasetPath(s"$format:$outPath:$subdataset") - } else { - outPath - } - } catch { - case _: Throwable => rawPath - } - } - - def createTmpFilePath(uuid: String, extension: String): String = { - val randomID = UUID.randomUUID() - val tmpDir = Files.createTempDirectory(s"mosaic_tmp_$randomID").toFile.getAbsolutePath + def createTmpFilePath(extension: String): String = { + val tmpDir = MosaicContext.tmpDir + val uuid = java.util.UUID.randomUUID.toString val outPath = s"$tmpDir/raster_${uuid.replace("-", "_")}.$extension" Files.createDirectories(Paths.get(outPath).getParent) outPath @@ -98,7 +51,20 @@ object PathUtils { def fromSubdatasetPath(path: String): String = { val _ :: filePath :: _ :: Nil = path.split(":").toList - filePath + var result = filePath + if (filePath.startsWith("\"")) result = result.drop(1) + if (filePath.endsWith("\"")) result = result.dropRight(1) + result + } + + def copyToTmp(inPath: String): String = { + val cleanPath = getCleanPath(inPath) + val copyFromPath = inPath.replace("file:/", "/").replace("dbfs:/", "/dbfs/") + val driver = MosaicRasterGDAL.identifyDriver(cleanPath) + val extension = if (inPath.endsWith(".zip")) "zip" else GDAL.getExtension(driver) + val tmpPath = createTmpFilePath(extension) + Files.copy(Paths.get(copyFromPath), Paths.get(tmpPath)) + tmpPath } } diff --git a/src/main/scala/com/databricks/labs/mosaic/utils/SysUtils.scala b/src/main/scala/com/databricks/labs/mosaic/utils/SysUtils.scala new file mode 100644 index 000000000..85fa12785 --- /dev/null +++ b/src/main/scala/com/databricks/labs/mosaic/utils/SysUtils.scala @@ -0,0 +1,26 @@ +package com.databricks.labs.mosaic.utils + +import java.io.{ByteArrayOutputStream, PrintWriter} + +object SysUtils { + + import sys.process._ + + def runCommand(cmd: String): (String, String, String) = { + val stdoutStream = new ByteArrayOutputStream + val stderrStream = new ByteArrayOutputStream + val stdoutWriter = new PrintWriter(stdoutStream) + val stderrWriter = new PrintWriter(stderrStream) + val exitValue = try { + //noinspection ScalaStyle + cmd.!!(ProcessLogger(stdoutWriter.println, stderrWriter.println)) + } catch { + case _: Exception => "ERROR" + } finally { + stdoutWriter.close() + stderrWriter.close() + } + (exitValue, stdoutStream.toString, stderrStream.toString) + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/core/raster/TestRasterBandGDAL.scala b/src/test/scala/com/databricks/labs/mosaic/core/raster/TestRasterBandGDAL.scala index 34d743ac1..15eef2009 100644 --- a/src/test/scala/com/databricks/labs/mosaic/core/raster/TestRasterBandGDAL.scala +++ b/src/test/scala/com/databricks/labs/mosaic/core/raster/TestRasterBandGDAL.scala @@ -30,7 +30,7 @@ class TestRasterBandGDAL extends SharedSparkSessionGDAL { val testValues = testBand.values(1000, 1000, 100, 50) testValues.length shouldBe 5000 - testRaster.cleanUp() + testRaster.getRaster.delete() } test("Read band metadata and pixel data from a GRIdded Binary file.") { @@ -49,7 +49,7 @@ class TestRasterBandGDAL extends SharedSparkSessionGDAL { val testValues = testBand.values(1, 1, 4, 5) testValues.length shouldBe 20 - testRaster.cleanUp() + testRaster.getRaster.delete() } test("Read band metadata and pixel data from a NetCDF file.") { @@ -74,8 +74,8 @@ class TestRasterBandGDAL extends SharedSparkSessionGDAL { noException should be thrownBy testBand.values testValues.length shouldBe 1000 - testRaster.cleanUp() - superRaster.cleanUp() + testRaster.getRaster.delete() + superRaster.getRaster.delete() } } diff --git a/src/test/scala/com/databricks/labs/mosaic/core/raster/TestRasterGDAL.scala b/src/test/scala/com/databricks/labs/mosaic/core/raster/TestRasterGDAL.scala index a0055f9d9..e39279843 100644 --- a/src/test/scala/com/databricks/labs/mosaic/core/raster/TestRasterGDAL.scala +++ b/src/test/scala/com/databricks/labs/mosaic/core/raster/TestRasterGDAL.scala @@ -46,7 +46,8 @@ class TestRasterGDAL extends SharedSparkSessionGDAL { noException should be thrownBy testRaster.spatialRef an[Exception] should be thrownBy testRaster.getBand(-1) an[Exception] should be thrownBy testRaster.getBand(Int.MaxValue) - testRaster.cleanUp() + + testRaster.getRaster.delete() } test("Read raster metadata from a GRIdded Binary file.") { @@ -62,7 +63,8 @@ class TestRasterGDAL extends SharedSparkSessionGDAL { testRaster.proj4String shouldBe "+proj=longlat +R=6371229 +no_defs" testRaster.SRID shouldBe 0 testRaster.extent shouldBe Seq(-0.375, -0.375, 10.125, 10.125) - testRaster.cleanUp() + + testRaster.getRaster.delete() } test("Read raster metadata from a NetCDF file.") { @@ -86,16 +88,16 @@ class TestRasterGDAL extends SharedSparkSessionGDAL { testRaster.SRID shouldBe 0 testRaster.extent shouldBe Seq(-180.00000610436345, -89.99999847369712, 180.00000610436345, 89.99999847369712) - testRaster.cleanUp() - superRaster.cleanUp() + testRaster.getRaster.delete() + superRaster.getRaster.delete() } test("Raster pixel and extent sizes are correct.") { assume(System.getProperty("os.name") == "Linux") val testRaster = MosaicRasterGDAL.readRaster( - filePath("/modis/MCD43A4.A2018185.h10v07.006.2018194033728_B01.TIF"), - filePath("/modis/MCD43A4.A2018185.h10v07.006.2018194033728_B01.TIF") + filePath("/modis/MCD43A4.A2018185.h10v07.006.2018194033728_B01.TIF"), + filePath("/modis/MCD43A4.A2018185.h10v07.006.2018194033728_B01.TIF") ) testRaster.pixelXSize - 463.312716527 < 0.0000001 shouldBe true @@ -110,7 +112,7 @@ class TestRasterGDAL extends SharedSparkSessionGDAL { testRaster.xMin - -8895604.157333 < 0.0000001 shouldBe true testRaster.yMin - 2223901.039333 < 0.0000001 shouldBe true - testRaster.cleanUp() + testRaster.getRaster.delete() } } diff --git a/src/test/scala/com/databricks/labs/mosaic/datasource/OGRFileFormatTest.scala b/src/test/scala/com/databricks/labs/mosaic/datasource/OGRFileFormatTest.scala index 001642880..6ed735d1f 100644 --- a/src/test/scala/com/databricks/labs/mosaic/datasource/OGRFileFormatTest.scala +++ b/src/test/scala/com/databricks/labs/mosaic/datasource/OGRFileFormatTest.scala @@ -1,10 +1,9 @@ package com.databricks.labs.mosaic.datasource -import com.databricks.labs.mosaic.{H3, JTS} -import com.databricks.labs.mosaic.core.raster.api.GDAL import com.databricks.labs.mosaic.expressions.util.OGRReadeWithOffset import com.databricks.labs.mosaic.functions.MosaicContext import com.databricks.labs.mosaic.utils.PathUtils +import com.databricks.labs.mosaic.{H3, JTS} import org.apache.spark.sql.QueryTest import org.apache.spark.sql.functions.{col, lit} import org.apache.spark.sql.test.SharedSparkSessionGDAL @@ -81,7 +80,7 @@ class OGRFileFormatTest extends QueryTest with SharedSparkSessionGDAL { noException should be thrownBy OGRFileFormat.enableOGRDrivers(force = true) - val path = PathUtils.getCleanPath(getClass.getResource("/binary/geodb/bridges.gdb.zip").getPath, useZipPath = true) + val path = PathUtils.getCleanPath(getClass.getResource("/binary/geodb/bridges.gdb.zip").getPath) val ds = ogr.Open(path, 0) noException should be thrownBy OGRFileFormat.getLayer(ds, 0, "layer2") diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvgBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvgBehaviors.scala new file mode 100644 index 000000000..b0f1225d2 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvgBehaviors.scala @@ -0,0 +1,52 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.core.index.IndexSystem +import com.databricks.labs.mosaic.functions.MosaicContext +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.functions.collect_set +import org.scalatest.matchers.should.Matchers._ + +trait RST_CombineAvgBehaviors extends QueryTest { + + // noinspection MapGetGet + def behaviors(indexSystem: IndexSystem, geometryAPI: GeometryAPI): Unit = { + val mc = MosaicContext.build(indexSystem, geometryAPI) + mc.register() + val sc = spark + import mc.functions._ + import sc.implicits._ + + val rastersInMemory = spark.read + .format("gdal") + .option("raster_storage", "in-memory") + .load("src/test/resources/modis") + + val gridTiles = rastersInMemory.union(rastersInMemory) + .withColumn("tiles", rst_tessellate($"tile", 2)) + .select("path", "tiles") + .groupBy("path") + .agg( + rst_combineavg(collect_set($"tiles")).as("tiles") + ) + .select("tiles") + + rastersInMemory.union(rastersInMemory) + .createOrReplaceTempView("source") + + noException should be thrownBy spark.sql(""" + |select rst_combineavg(collect_set(tiles)) as tiles + |from ( + | select path, rst_tessellate(tile, 2) as tiles + | from source + |) + |group by path + |""".stripMargin).take(1) + + val result = gridTiles.collect() + + result.length should be(rastersInMemory.count()) + + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvgTest.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvgTest.scala new file mode 100644 index 000000000..f6430df30 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_CombineAvgTest.scala @@ -0,0 +1,32 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.JTS +import com.databricks.labs.mosaic.core.index.H3IndexSystem +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions.CodegenObjectFactoryMode +import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.sql.test.SharedSparkSessionGDAL + +import scala.util.Try + +class RST_CombineAvgTest extends QueryTest with SharedSparkSessionGDAL with RST_CombineAvgBehaviors { + + private val noCodegen = + withSQLConf( + SQLConf.WHOLESTAGE_CODEGEN_ENABLED.key -> "false", + SQLConf.CODEGEN_FACTORY_MODE.key -> CodegenObjectFactoryMode.NO_CODEGEN.toString + ) _ + + // Hotfix for SharedSparkSession afterAll cleanup. + override def afterAll(): Unit = Try(super.afterAll()) + + // These tests are not index system nor geometry API specific. + // Only testing one pairing is sufficient. + test("Testing RST_CombineAvg with manual GDAL registration (H3, JTS).") { + noCodegen { + assume(System.getProperty("os.name") == "Linux") + behaviors(H3IndexSystem, JTS) + } + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandAggBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandAggBehaviors.scala new file mode 100644 index 000000000..c3668bd83 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandAggBehaviors.scala @@ -0,0 +1,73 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.core.index.IndexSystem +import com.databricks.labs.mosaic.functions.MosaicContext +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.functions.lit +import org.scalatest.matchers.should.Matchers._ + +trait RST_DerivedBandAggBehaviors extends QueryTest { + + // noinspection MapGetGet + def behaviors(indexSystem: IndexSystem, geometryAPI: GeometryAPI): Unit = { + val mc = MosaicContext.build(indexSystem, geometryAPI) + mc.register() + val sc = spark + import mc.functions._ + import sc.implicits._ + + val rastersInMemory = spark.read + .format("gdal") + .option("raster_storage", "in-memory") + .load("src/test/resources/modis") + + val funcName = "multiply" + + // Example code from: https://gdal.org/drivers/raster/vrt.html#vrt-that-multiplies-the-values-of-the-source-file-by-a-factor-of-1-5 + val pyFuncCode = """ + |import numpy as np + |def multiply(in_ar, out_ar, xoff, yoff, xsize, ysize, raster_xsize,raster_ysize, buf_radius, gt, **kwargs): + | factor = 1.5 + | out_ar[:] = np.round_(np.clip(in_ar[0] * factor,0,255)) + |""".stripMargin + + val gridTiles = rastersInMemory.union(rastersInMemory) + .withColumn("tiles", rst_tessellate($"tile", 2)) + .select("path", "tiles") + .groupBy("path") + .agg( + rst_derivedband_agg($"tiles", lit(pyFuncCode), lit(funcName)).as("tiles") + ) + .select("tiles") + + rastersInMemory.union(rastersInMemory) + .createOrReplaceTempView("source") + + // Do not indent the code in the SQL statement + // It will be wrongly interpreted in python as broken + noException should be thrownBy spark.sql(""" + |select rst_derivedband_agg( + | tiles, + |" + |import numpy as np + |def multiply(in_ar, out_ar, xoff, yoff, xsize, ysize, raster_xsize,raster_ysize, buf_radius, gt, **kwargs): + | factor = 1.2 + | out_ar[:] = np.round_(np.clip(in_ar[0] * factor,0,255)) + |", + | "multiply" + |) as tiles + |from ( + | select path, rst_tessellate(tile, 2) as tiles + | from source + |) + |group by path + |""".stripMargin).take(1) + + val result = gridTiles.collect() + + result.length should be(rastersInMemory.count()) + + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandAggTest.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandAggTest.scala new file mode 100644 index 000000000..0ed21a397 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandAggTest.scala @@ -0,0 +1,32 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.JTS +import com.databricks.labs.mosaic.core.index.H3IndexSystem +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions.CodegenObjectFactoryMode +import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.sql.test.SharedSparkSessionGDAL + +import scala.util.Try + +class RST_DerivedBandAggTest extends QueryTest with SharedSparkSessionGDAL with RST_DerivedBandAggBehaviors { + + private val noCodegen = + withSQLConf( + SQLConf.WHOLESTAGE_CODEGEN_ENABLED.key -> "false", + SQLConf.CODEGEN_FACTORY_MODE.key -> CodegenObjectFactoryMode.NO_CODEGEN.toString + ) _ + + // Hotfix for SharedSparkSession afterAll cleanup. + override def afterAll(): Unit = Try(super.afterAll()) + + // These tests are not index system nor geometry API specific. + // Only testing one pairing is sufficient. + test("Testing RST_DerivedBandAggTest with manual GDAL registration (H3, JTS).") { + noCodegen { + assume(System.getProperty("os.name") == "Linux") + behaviors(H3IndexSystem, JTS) + } + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandBehaviors.scala new file mode 100644 index 000000000..bd2ded02a --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandBehaviors.scala @@ -0,0 +1,75 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.core.index.IndexSystem +import com.databricks.labs.mosaic.functions.MosaicContext +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.functions.{collect_set, lit} +import org.scalatest.matchers.should.Matchers._ + +trait RST_DerivedBandBehaviors extends QueryTest { + + // noinspection MapGetGet + def behaviors(indexSystem: IndexSystem, geometryAPI: GeometryAPI): Unit = { + val mc = MosaicContext.build(indexSystem, geometryAPI) + mc.register() + val sc = spark + import mc.functions._ + import sc.implicits._ + + val rastersInMemory = spark.read + .format("gdal") + .option("raster_storage", "in-memory") + .load("src/test/resources/modis") + + val funcName = "multiply" + + // Example code from: https://gdal.org/drivers/raster/vrt.html#vrt-that-multiplies-the-values-of-the-source-file-by-a-factor-of-1-5 + val pyFuncCode = + """ + |import numpy as np + |def multiply(in_ar, out_ar, xoff, yoff, xsize, ysize, raster_xsize,raster_ysize, buf_radius, gt, **kwargs): + | factor = 1.5 + | out_ar[:] = np.round_(np.clip(in_ar[0] * factor,0,255)) + |""".stripMargin + + val gridTiles = rastersInMemory.union(rastersInMemory) + .withColumn("tiles", rst_tessellate($"tile", 2)) + .select("path", "tiles") + .groupBy("path") + .agg( + rst_derivedband(collect_set($"tiles"), lit(pyFuncCode), lit(funcName)).as("tiles") + ) + .select("tiles") + + rastersInMemory.union(rastersInMemory) + .createOrReplaceTempView("source") + + // Do not indent the code in the SQL statement + // It will be wrongly interpreted in python as broken + noException should be thrownBy spark.sql( + """ + |select rst_derivedband( + | collect_set(tiles), + |" + |import numpy as np + |def multiply(in_ar, out_ar, xoff, yoff, xsize, ysize, raster_xsize,raster_ysize, buf_radius, gt, **kwargs): + | factor = 1.2 + | out_ar[:] = np.round_(np.clip(in_ar[0] * factor,0,255)) + |", + | "multiply" + |) as tiles + |from ( + | select path, rst_tessellate(tile, 2) as tiles + | from source + |) + |group by path + |""".stripMargin).take(1) + + val result = gridTiles.collect() + + result.length should be(rastersInMemory.count()) + + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandTest.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandTest.scala new file mode 100644 index 000000000..9960ef4d7 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_DerivedBandTest.scala @@ -0,0 +1,32 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.JTS +import com.databricks.labs.mosaic.core.index.H3IndexSystem +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions.CodegenObjectFactoryMode +import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.sql.test.SharedSparkSessionGDAL + +import scala.util.Try + +class RST_DerivedBandTest extends QueryTest with SharedSparkSessionGDAL with RST_DerivedBandBehaviors { + + private val noCodegen = + withSQLConf( + SQLConf.WHOLESTAGE_CODEGEN_ENABLED.key -> "false", + SQLConf.CODEGEN_FACTORY_MODE.key -> CodegenObjectFactoryMode.NO_CODEGEN.toString + ) _ + + // Hotfix for SharedSparkSession afterAll cleanup. + override def afterAll(): Unit = Try(super.afterAll()) + + // These tests are not index system nor geometry API specific. + // Only testing one pairing is sufficient. + test("Testing RST_DerivedBandTest with manual GDAL registration (H3, JTS).") { + noCodegen { + assume(System.getProperty("os.name") == "Linux") + behaviors(H3IndexSystem, JTS) + } + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromBandsBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromBandsBehaviors.scala new file mode 100644 index 000000000..3a7f7f4a2 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromBandsBehaviors.scala @@ -0,0 +1,56 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.core.index.IndexSystem +import com.databricks.labs.mosaic.functions.MosaicContext +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.functions.array +import org.scalatest.matchers.should.Matchers._ + +trait RST_FromBandsBehaviors extends QueryTest { + + // noinspection MapGetGet + def behaviors(indexSystem: IndexSystem, geometryAPI: GeometryAPI): Unit = { + val mc = MosaicContext.build(indexSystem, geometryAPI) + mc.register() + val sc = spark + import mc.functions._ + import sc.implicits._ + + val rastersInMemory = spark.read + .format("binaryFile") + .load("src/test/resources/modis") + + val gridTiles = rastersInMemory + .withColumn("tile", rst_fromfile($"path")) + .withColumn("bbox", rst_boundingbox($"tile")) + .withColumn("stacked", rst_frombands(array($"tile", $"tile", $"tile"))) + .withColumn("bbox2", rst_boundingbox($"stacked")) + .withColumn("result", st_area($"bbox") === st_area($"bbox2")) + .select("result") + .as[Boolean] + .collect() + + gridTiles.forall(identity) should be(true) + + rastersInMemory.createOrReplaceTempView("source") + + val gridTilesSQL = spark + .sql(""" + |with subquery as ( + | select rst_fromfile(path) as tile from source + |), + |subquery2 as ( + | select rst_frombands(array(tile, tile, tile)) as stacked, tile from subquery + |) + |select st_area(rst_boundingbox(tile)) == st_area(rst_boundingbox(stacked)) as result + |from subquery2 + |""".stripMargin) + .as[Boolean] + .collect() + + gridTilesSQL.forall(identity) should be(true) + + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromBandsTest.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromBandsTest.scala new file mode 100644 index 000000000..b60888125 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_FromBandsTest.scala @@ -0,0 +1,32 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.JTS +import com.databricks.labs.mosaic.core.index.H3IndexSystem +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions.CodegenObjectFactoryMode +import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.sql.test.SharedSparkSessionGDAL + +import scala.util.Try + +class RST_FromBandsTest extends QueryTest with SharedSparkSessionGDAL with RST_FromBandsBehaviors { + + private val noCodegen = + withSQLConf( + SQLConf.WHOLESTAGE_CODEGEN_ENABLED.key -> "false", + SQLConf.CODEGEN_FACTORY_MODE.key -> CodegenObjectFactoryMode.NO_CODEGEN.toString + ) _ + + // Hotfix for SharedSparkSession afterAll cleanup. + override def afterAll(): Unit = Try(super.afterAll()) + + // These tests are not index system nor geometry API specific. + // Only testing one pairing is sufficient. + test("Testing RST_FromBands with manual GDAL registration (H3, JTS).") { + noCodegen { + assume(System.getProperty("os.name") == "Linux") + behaviors(H3IndexSystem, JTS) + } + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetNoDataBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetNoDataBehaviors.scala new file mode 100644 index 000000000..b1154f55e --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetNoDataBehaviors.scala @@ -0,0 +1,49 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.core.index.IndexSystem +import com.databricks.labs.mosaic.functions.MosaicContext +import org.apache.spark.sql.QueryTest +import org.scalatest.matchers.should.Matchers._ + +trait RST_GetNoDataBehaviors extends QueryTest { + + //noinspection MapGetGet + def behaviors(indexSystem: IndexSystem, geometryAPI: GeometryAPI): Unit = { + val mc = MosaicContext.build(indexSystem, geometryAPI) + mc.register() + val sc = spark + import mc.functions._ + import sc.implicits._ + + val rastersInMemory = spark.read + .format("gdal") + .option("raster_storage", "in-memory") + .load("src/test/resources/modis/") + + val noDataVals = rastersInMemory + .withColumn("no_data", rst_getnodata($"tile")) + .select("no_data") + + rastersInMemory + .createOrReplaceTempView("source") + + noException should be thrownBy spark.sql(""" + |select rst_getnodata(tile) from source + |""".stripMargin) + + noException should be thrownBy rastersInMemory + .withColumn("no_data", rst_getnodata($"tile")) + .select("no_data") + + val result = noDataVals.as[Seq[Double]].collect() + + result.forall(_.forall(_ == 32767.0)) should be(true) + + an[Exception] should be thrownBy spark.sql(""" + |select rst_getnodata() from source + |""".stripMargin) + + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetNoDataTest.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetNoDataTest.scala new file mode 100644 index 000000000..ce29c5870 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetNoDataTest.scala @@ -0,0 +1,32 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.JTS +import com.databricks.labs.mosaic.core.index.H3IndexSystem +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions.CodegenObjectFactoryMode +import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.sql.test.SharedSparkSessionGDAL + +import scala.util.Try + +class RST_GetNoDataTest extends QueryTest with SharedSparkSessionGDAL with RST_GetNoDataBehaviors { + + private val noCodegen = + withSQLConf( + SQLConf.WHOLESTAGE_CODEGEN_ENABLED.key -> "false", + SQLConf.CODEGEN_FACTORY_MODE.key -> CodegenObjectFactoryMode.NO_CODEGEN.toString + ) _ + + // Hotfix for SharedSparkSession afterAll cleanup. + override def afterAll(): Unit = Try(super.afterAll()) + + // These tests are not index system nor geometry API specific. + // Only testing one pairing is sufficient. + test("Testing RST_GetNoData with manual GDAL registration (H3, JTS).") { + noCodegen { + assume(System.getProperty("os.name") == "Linux") + behaviors(H3IndexSystem, JTS) + } + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetSubdatasetBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetSubdatasetBehaviors.scala new file mode 100644 index 000000000..cc572e475 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetSubdatasetBehaviors.scala @@ -0,0 +1,51 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.core.index.IndexSystem +import com.databricks.labs.mosaic.functions.MosaicContext +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.functions.lit +import org.scalatest.matchers.should.Matchers._ + +trait RST_GetSubdatasetBehaviors extends QueryTest { + + //noinspection MapGetGet + def behaviors(indexSystem: IndexSystem, geometryAPI: GeometryAPI): Unit = { + val mc = MosaicContext.build(indexSystem, geometryAPI) + mc.register() + val sc = spark + import mc.functions._ + import sc.implicits._ + + val rastersInMemory = spark.read + .format("gdal") + .option("raster_storage", "in-memory") + .load("src/test/resources/binary/netcdf-coral") + + val geoReferenceDf = rastersInMemory + .withColumn("subdataset", rst_getsubdataset($"tile", lit("bleaching_alert_area"))) + .select(rst_georeference($"subdataset")) + + rastersInMemory + .createOrReplaceTempView("source") + + noException should be thrownBy spark.sql(""" + |select rst_georeference(rst_getsubdataset(tile, "bleaching_alert_area")) from source + |""".stripMargin) + + val result = geoReferenceDf.as[Map[String, Double]].take(1).head + + result.get("upperLeftX").get != 0.0 shouldBe true + result.get("upperLeftY").get != 0.0 shouldBe true + result.get("scaleX").get != 0.0 shouldBe true + result.get("scaleY").get != 0.0 shouldBe true + result.get("skewX").get != 0.0 shouldBe false + result.get("skewY").get != 0.0 shouldBe false + + an[Exception] should be thrownBy spark.sql(""" + |select rst_getsubdataset() from source + |""".stripMargin) + + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetSubdatasetTest.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetSubdatasetTest.scala new file mode 100644 index 000000000..019e4f226 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_GetSubdatasetTest.scala @@ -0,0 +1,32 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.JTS +import com.databricks.labs.mosaic.core.index.H3IndexSystem +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions.CodegenObjectFactoryMode +import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.sql.test.SharedSparkSessionGDAL + +import scala.util.Try + +class RST_GetSubdatasetTest extends QueryTest with SharedSparkSessionGDAL with RST_GetSubdatasetBehaviors { + + private val noCodegen = + withSQLConf( + SQLConf.WHOLESTAGE_CODEGEN_ENABLED.key -> "false", + SQLConf.CODEGEN_FACTORY_MODE.key -> CodegenObjectFactoryMode.NO_CODEGEN.toString + ) _ + + // Hotfix for SharedSparkSession afterAll cleanup. + override def afterAll(): Unit = Try(super.afterAll()) + + // These tests are not index system nor geometry API specific. + // Only testing one pairing is sufficient. + test("Testing RST_GetSubdataset with manual GDAL registration (H3, JTS).") { + noCodegen { + assume(System.getProperty("os.name") == "Linux") + behaviors(H3IndexSystem, JTS) + } + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_InitNoDataBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_InitNoDataBehaviors.scala new file mode 100644 index 000000000..cb00638e1 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_InitNoDataBehaviors.scala @@ -0,0 +1,53 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.core.index.IndexSystem +import com.databricks.labs.mosaic.functions.MosaicContext +import org.apache.spark.sql.QueryTest +import org.scalatest.matchers.should.Matchers._ + +trait RST_InitNoDataBehaviors extends QueryTest { + + //noinspection MapGetGet + def behaviors(indexSystem: IndexSystem, geometryAPI: GeometryAPI): Unit = { + val mc = MosaicContext.build(indexSystem, geometryAPI) + mc.register() + val sc = spark + import mc.functions._ + import sc.implicits._ + + val rastersInMemory = spark.read + .format("gdal") + .option("raster_storage", "in-memory") + .load("src/test/resources/modis/") + + val noDataVals = rastersInMemory + .withColumn("tile", rst_initnodata($"tile")) + .withColumn("no_data", rst_getnodata($"tile")) + .select("no_data") + + rastersInMemory + .createOrReplaceTempView("source") + + noException should be thrownBy spark.sql( + """ + |select rst_getnodata(rst_initnodata(tile)) from source + |""".stripMargin) + + noException should be thrownBy rastersInMemory + .withColumn("tile", rst_initnodata($"tile")) + .withColumn("no_data", rst_getnodata($"tile")) + .select("no_data") + + val result = noDataVals.as[Seq[Double]].collect() + + result.forall(_.forall(_ == -32768.0)) should be(true) + + an[Exception] should be thrownBy spark.sql( + """ + |select rst_initnodata() from source + |""".stripMargin) + + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_InitNoDataTest.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_InitNoDataTest.scala new file mode 100644 index 000000000..f861e8fef --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_InitNoDataTest.scala @@ -0,0 +1,32 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.JTS +import com.databricks.labs.mosaic.core.index.H3IndexSystem +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions.CodegenObjectFactoryMode +import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.sql.test.SharedSparkSessionGDAL + +import scala.util.Try + +class RST_InitNoDataTest extends QueryTest with SharedSparkSessionGDAL with RST_InitNoDataBehaviors { + + private val noCodegen = + withSQLConf( + SQLConf.WHOLESTAGE_CODEGEN_ENABLED.key -> "false", + SQLConf.CODEGEN_FACTORY_MODE.key -> CodegenObjectFactoryMode.NO_CODEGEN.toString + ) _ + + // Hotfix for SharedSparkSession afterAll cleanup. + override def afterAll(): Unit = Try(super.afterAll()) + + // These tests are not index system nor geometry API specific. + // Only testing one pairing is sufficient. + test("Testing RST_InitNoData with manual GDAL registration (H3, JTS).") { + noCodegen { + assume(System.getProperty("os.name") == "Linux") + behaviors(H3IndexSystem, JTS) + } + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_MapAlgebraBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_MapAlgebraBehaviors.scala new file mode 100644 index 000000000..fd15f8102 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_MapAlgebraBehaviors.scala @@ -0,0 +1,79 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.core.index.IndexSystem +import com.databricks.labs.mosaic.functions.MosaicContext +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.functions.{array, lit} +import org.scalatest.matchers.should.Matchers._ + +trait RST_MapAlgebraBehaviors extends QueryTest { + + // noinspection MapGetGet + def behaviors(indexSystem: IndexSystem, geometryAPI: GeometryAPI): Unit = { + val mc = MosaicContext.build(indexSystem, geometryAPI) + mc.register() + val sc = spark + import mc.functions._ + import sc.implicits._ + + val rastersInMemory = spark.read + .format("gdal") + .option("raster_storage", "in-memory") + .load("src/test/resources/modis") + + val gridTiles = rastersInMemory + .withColumn("tiles", array($"tile", $"tile", $"tile")) + .withColumn("map_algebra", rst_mapalgebra($"tiles", lit("""{"calc": "A+B/C", "A_index": 0, "B_index": 1, "C_index": 2}"""))) + .select("tiles") + + rastersInMemory + .createOrReplaceTempView("source") + + noException should be thrownBy spark.sql( + """ + |select rst_mapalgebra(tiles, '{"calc": "A+B/C", "A_index": 0, "B_index": 1, "C_index": 2}') + | as tiles + |from ( + | select array(tile, tile, tile) as tiles + | from source + |) + |""".stripMargin).take(1) + + noException should be thrownBy spark.sql( + """ + |select rst_mapalgebra(tiles, '{"calc": "A+B/C"}') + | as tiles + |from ( + | select array(tile, tile, tile) as tiles + | from source + |) + |""".stripMargin).take(1) + + noException should be thrownBy spark.sql( + """ + |select rst_mapalgebra(tiles, '{"calc": "A+B/C", "A_index": 0, "B_index": 1, "C_index": 1}') + | as tiles + |from ( + | select array(tile, tile, tile) as tiles + | from source + |) + |""".stripMargin).take(1) + + noException should be thrownBy spark.sql( + """ + |select rst_mapalgebra(tiles, '{"calc": "A+B/C", "A_index": 0, "B_index": 1, "C_index": 2, "A_band": 1, "B_band": 1, "C_band": 1}') + | as tiles + |from ( + | select array(tile, tile, tile) as tiles + | from source + |) + |""".stripMargin).take(1) + + val result = gridTiles.collect() + + result.length should be(rastersInMemory.count()) + + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_MapAlgebraTest.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_MapAlgebraTest.scala new file mode 100644 index 000000000..d7be403a3 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_MapAlgebraTest.scala @@ -0,0 +1,32 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.JTS +import com.databricks.labs.mosaic.core.index.H3IndexSystem +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions.CodegenObjectFactoryMode +import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.sql.test.SharedSparkSessionGDAL + +import scala.util.Try + +class RST_MapAlgebraTest extends QueryTest with SharedSparkSessionGDAL with RST_MapAlgebraBehaviors { + + private val noCodegen = + withSQLConf( + SQLConf.WHOLESTAGE_CODEGEN_ENABLED.key -> "false", + SQLConf.CODEGEN_FACTORY_MODE.key -> CodegenObjectFactoryMode.NO_CODEGEN.toString + ) _ + + // Hotfix for SharedSparkSession afterAll cleanup. + override def afterAll(): Unit = Try(super.afterAll()) + + // These tests are not index system nor geometry API specific. + // Only testing one pairing is sufficient. + test("Testing RST_MapAlgebra with manual GDAL registration (H3, JTS).") { + noCodegen { + assume(System.getProperty("os.name") == "Linux") + behaviors(H3IndexSystem, JTS) + } + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_NDVIBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_NDVIBehaviors.scala new file mode 100644 index 000000000..b433ccd79 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_NDVIBehaviors.scala @@ -0,0 +1,44 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.core.index.IndexSystem +import com.databricks.labs.mosaic.functions.MosaicContext +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.functions.{array, lit} +import org.scalatest.matchers.should.Matchers._ + +trait RST_NDVIBehaviors extends QueryTest { + + // noinspection MapGetGet + def behaviors(indexSystem: IndexSystem, geometryAPI: GeometryAPI): Unit = { + val mc = MosaicContext.build(indexSystem, geometryAPI) + mc.register() + val sc = spark + import mc.functions._ + import sc.implicits._ + + val rastersInMemory = spark.read + .format("gdal") + .option("raster_storage", "in-memory") + .load("src/test/resources/modis") + + val gridTiles = rastersInMemory + .withColumn("ndvi", rst_ndvi($"tile", lit(1), lit(1))) + .select("ndvi") + + rastersInMemory + .createOrReplaceTempView("source") + + noException should be thrownBy spark.sql( + """ + |select rst_ndvi(tile, 1, 1) + | from source + |""".stripMargin).take(1) + + val result = gridTiles.collect() + + result.length should be(rastersInMemory.count()) + + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_NDVITest.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_NDVITest.scala new file mode 100644 index 000000000..881ccad1e --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_NDVITest.scala @@ -0,0 +1,32 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.JTS +import com.databricks.labs.mosaic.core.index.H3IndexSystem +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions.CodegenObjectFactoryMode +import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.sql.test.SharedSparkSessionGDAL + +import scala.util.Try + +class RST_NDVITest extends QueryTest with SharedSparkSessionGDAL with RST_NDVIBehaviors { + + private val noCodegen = + withSQLConf( + SQLConf.WHOLESTAGE_CODEGEN_ENABLED.key -> "false", + SQLConf.CODEGEN_FACTORY_MODE.key -> CodegenObjectFactoryMode.NO_CODEGEN.toString + ) _ + + // Hotfix for SharedSparkSession afterAll cleanup. + override def afterAll(): Unit = Try(super.afterAll()) + + // These tests are not index system nor geometry API specific. + // Only testing one pairing is sufficient. + test("Testing RST_NDVITest with manual GDAL registration (H3, JTS).") { + noCodegen { + assume(System.getProperty("os.name") == "Linux") + behaviors(H3IndexSystem, JTS) + } + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_SetNoDataBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_SetNoDataBehaviors.scala new file mode 100644 index 000000000..c28403817 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_SetNoDataBehaviors.scala @@ -0,0 +1,50 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.core.index.IndexSystem +import com.databricks.labs.mosaic.functions.MosaicContext +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.functions.lit +import org.scalatest.matchers.should.Matchers._ + +trait RST_SetNoDataBehaviors extends QueryTest { + + // noinspection MapGetGet + def behaviors(indexSystem: IndexSystem, geometryAPI: GeometryAPI): Unit = { + val mc = MosaicContext.build(indexSystem, geometryAPI) + mc.register() + val sc = spark + import mc.functions._ + import sc.implicits._ + + val rastersInMemory = spark.read + .format("gdal") + .option("raster_storage", "in-memory") + .load("src/test/resources/modis") + + val gridTiles = rastersInMemory + .withColumn("tile", rst_setnodata($"tile", lit(1))) + .select("tile") + + rastersInMemory + .createOrReplaceTempView("source") + + noException should be thrownBy spark.sql( + """ + |select rst_setnodata(tile, 1) + | from source + |""".stripMargin).take(1) + + noException should be thrownBy spark.sql( + """ + |select rst_setnodata(tile, array(1.0)) + | from source + |""".stripMargin).take(1) + + val result = gridTiles.collect() + + result.length should be(rastersInMemory.count()) + + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_SetNoDataTest.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_SetNoDataTest.scala new file mode 100644 index 000000000..28a0a0726 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_SetNoDataTest.scala @@ -0,0 +1,32 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.JTS +import com.databricks.labs.mosaic.core.index.H3IndexSystem +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions.CodegenObjectFactoryMode +import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.sql.test.SharedSparkSessionGDAL + +import scala.util.Try + +class RST_SetNoDataTest extends QueryTest with SharedSparkSessionGDAL with RST_SetNoDataBehaviors { + + private val noCodegen = + withSQLConf( + SQLConf.WHOLESTAGE_CODEGEN_ENABLED.key -> "false", + SQLConf.CODEGEN_FACTORY_MODE.key -> CodegenObjectFactoryMode.NO_CODEGEN.toString + ) _ + + // Hotfix for SharedSparkSession afterAll cleanup. + override def afterAll(): Unit = Try(super.afterAll()) + + // These tests are not index system nor geometry API specific. + // Only testing one pairing is sufficient. + test("Testing RST_SetNoData with manual GDAL registration (H3, JTS).") { + noCodegen { + assume(System.getProperty("os.name") == "Linux") + behaviors(H3IndexSystem, JTS) + } + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_ToOverlappingTilesBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_ToOverlappingTilesBehaviors.scala new file mode 100644 index 000000000..d51f26891 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_ToOverlappingTilesBehaviors.scala @@ -0,0 +1,45 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.core.index.IndexSystem +import com.databricks.labs.mosaic.functions.MosaicContext +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.functions.lit +import org.scalatest.matchers.should.Matchers._ + +trait RST_ToOverlappingTilesBehaviors extends QueryTest { + + // noinspection MapGetGet + def behaviors(indexSystem: IndexSystem, geometryAPI: GeometryAPI): Unit = { + val mc = MosaicContext.build(indexSystem, geometryAPI) + mc.register() + val sc = spark + import mc.functions._ + import sc.implicits._ + + val rastersInMemory = spark.read + .format("gdal") + .option("raster_storage", "in-memory") + .load("src/test/resources/modis") + + val gridTiles = rastersInMemory + .withColumn("tile", rst_to_overlapping_tiles($"tile", lit(500), lit(500), lit(10))) + .select("tile") + + rastersInMemory + .createOrReplaceTempView("source") + + noException should be thrownBy spark.sql( + """ + |select rst_to_overlapping_tiles(tile, 500, 500, 10) + | from source + |""".stripMargin).take(1) + + + val result = gridTiles.collect() + + result.length > rastersInMemory.count() should be(true) + + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_ToOverlappingTilesTest.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_ToOverlappingTilesTest.scala new file mode 100644 index 000000000..397f77330 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_ToOverlappingTilesTest.scala @@ -0,0 +1,32 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.JTS +import com.databricks.labs.mosaic.core.index.H3IndexSystem +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions.CodegenObjectFactoryMode +import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.sql.test.SharedSparkSessionGDAL + +import scala.util.Try + +class RST_ToOverlappingTilesTest extends QueryTest with SharedSparkSessionGDAL with RST_ToOverlappingTilesBehaviors { + + private val noCodegen = + withSQLConf( + SQLConf.WHOLESTAGE_CODEGEN_ENABLED.key -> "false", + SQLConf.CODEGEN_FACTORY_MODE.key -> CodegenObjectFactoryMode.NO_CODEGEN.toString + ) _ + + // Hotfix for SharedSparkSession afterAll cleanup. + override def afterAll(): Unit = Try(super.afterAll()) + + // These tests are not index system nor geometry API specific. + // Only testing one pairing is sufficient. + test("Testing RST_ToOverlappingTilesTest with manual GDAL registration (H3, JTS).") { + noCodegen { + assume(System.getProperty("os.name") == "Linux") + behaviors(H3IndexSystem, JTS) + } + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_TryOpenBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_TryOpenBehaviors.scala new file mode 100644 index 000000000..3e5669614 --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_TryOpenBehaviors.scala @@ -0,0 +1,44 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.GeometryAPI +import com.databricks.labs.mosaic.core.index.IndexSystem +import com.databricks.labs.mosaic.functions.MosaicContext +import org.apache.spark.sql.QueryTest +import org.scalatest.matchers.should.Matchers._ + +trait RST_TryOpenBehaviors extends QueryTest { + + // noinspection MapGetGet + def behaviors(indexSystem: IndexSystem, geometryAPI: GeometryAPI): Unit = { + val mc = MosaicContext.build(indexSystem, geometryAPI) + mc.register() + val sc = spark + import mc.functions._ + import sc.implicits._ + + val rastersInMemory = spark.read + .format("gdal") + .option("raster_storage", "in-memory") + .load("src/test/resources/modis") + + val gridTiles = rastersInMemory + .withColumn("tile", rst_tryopen($"tile")) + .select("tile") + + rastersInMemory + .createOrReplaceTempView("source") + + noException should be thrownBy spark.sql( + """ + |select rst_tryopen(tile) + | from source + |""".stripMargin).take(1) + + + val result = gridTiles.collect() + + result.length == rastersInMemory.count() should be(true) + + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_TryOpenTest.scala b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_TryOpenTest.scala new file mode 100644 index 000000000..ea24694db --- /dev/null +++ b/src/test/scala/com/databricks/labs/mosaic/expressions/raster/RST_TryOpenTest.scala @@ -0,0 +1,32 @@ +package com.databricks.labs.mosaic.expressions.raster + +import com.databricks.labs.mosaic.core.geometry.api.JTS +import com.databricks.labs.mosaic.core.index.H3IndexSystem +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions.CodegenObjectFactoryMode +import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.sql.test.SharedSparkSessionGDAL + +import scala.util.Try + +class RST_TryOpenTest extends QueryTest with SharedSparkSessionGDAL with RST_TryOpenBehaviors { + + private val noCodegen = + withSQLConf( + SQLConf.WHOLESTAGE_CODEGEN_ENABLED.key -> "false", + SQLConf.CODEGEN_FACTORY_MODE.key -> CodegenObjectFactoryMode.NO_CODEGEN.toString + ) _ + + // Hotfix for SharedSparkSession afterAll cleanup. + override def afterAll(): Unit = Try(super.afterAll()) + + // These tests are not index system nor geometry API specific. + // Only testing one pairing is sufficient. + test("Testing RST_TryOpen with manual GDAL registration (H3, JTS).") { + noCodegen { + assume(System.getProperty("os.name") == "Linux") + behaviors(H3IndexSystem, JTS) + } + } + +} diff --git a/src/test/scala/com/databricks/labs/mosaic/models/knn/SpatialKNNBehaviors.scala b/src/test/scala/com/databricks/labs/mosaic/models/knn/SpatialKNNBehaviors.scala index c142672ee..bc20f5ecb 100644 --- a/src/test/scala/com/databricks/labs/mosaic/models/knn/SpatialKNNBehaviors.scala +++ b/src/test/scala/com/databricks/labs/mosaic/models/knn/SpatialKNNBehaviors.scala @@ -28,7 +28,7 @@ trait SpatialKNNBehaviors extends MosaicSpatialQueryTest { val boroughs: DataFrame = getBoroughs(mc) - val tempLocation = Files.createTempDirectory("mosaic").toAbsolutePath.toString + val tempLocation = MosaicContext.tmpDir spark.sparkContext.setCheckpointDir(tempLocation) spark.sparkContext.setLogLevel("ERROR") @@ -93,7 +93,7 @@ trait SpatialKNNBehaviors extends MosaicSpatialQueryTest { val boroughs: DataFrame = getBoroughs(mc) - val tempLocation = Files.createTempDirectory("mosaic").toAbsolutePath.toString + val tempLocation = MosaicContext.tmpDir spark.sparkContext.setCheckpointDir(tempLocation) spark.sparkContext.setLogLevel("ERROR") diff --git a/src/test/scala/org/apache/spark/sql/test/SharedSparkSessionGDAL.scala b/src/test/scala/org/apache/spark/sql/test/SharedSparkSessionGDAL.scala index a666e0578..91e93240f 100644 --- a/src/test/scala/org/apache/spark/sql/test/SharedSparkSessionGDAL.scala +++ b/src/test/scala/org/apache/spark/sql/test/SharedSparkSessionGDAL.scala @@ -23,8 +23,7 @@ trait SharedSparkSessionGDAL extends SharedSparkSession { val session = new TestSparkSession(conf) session.sparkContext.setLogLevel("FATAL") Try { - val tempPath = Files.createTempDirectory("mosaic-gdal") - MosaicGDAL.prepareEnvironment(session, tempPath.toAbsolutePath.toString) + MosaicGDAL.prepareEnvironment(session, "/tmp") MosaicGDAL.enableGDAL(session) } session