| |
| <!doctype html> |
| <html lang="en" class="no-js"> |
| <head> |
| <meta name="robots" content="noindex, follow"> |
| |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| |
| <meta name="description" content="Apache Sedona is a cluster computing system for processing large-scale spatial data. Sedona extends existing cluster computing systems, such as Apache Spark, Apache Flink, and Snowflake, with a set of out-of-the-box distributed Spatial Datasets and Spatial SQL that efficiently load, process, and analyze large-scale spatial data across machines."> |
| |
| |
| |
| <link rel="canonical" href="https://sedona.apache.org/latest/tutorial/flink/sql/"> |
| |
| |
| <link rel="prev" href="../../../setup/flink/platform/"> |
| |
| |
| <link rel="next" href="../pyflink-sql/"> |
| |
| |
| |
| <link rel="alternate" href="./" hreflang="en"> |
| |
| <link rel="alternate" href="../../../zh/tutorial/flink/sql/" hreflang="zh"> |
| |
| |
| |
| <link rel="icon" href="../../../favicon.ico"> |
| <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7"> |
| |
| |
| |
| <title>Spatial SQL app (Flink) - Apache Sedona</title> |
| |
| |
| |
| <link rel="stylesheet" href="../../../assets/stylesheets/main.ec1eaa64.min.css"> |
| |
| |
| <link rel="stylesheet" href="../../../assets/stylesheets/palette.ab4e12ef.min.css"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <link rel="stylesheet" href="../../../assets/stylesheets/extra.min.css"> |
| |
| <script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> |
| |
| |
| |
| |
| |
| |
| <meta name="google-site-verification" content="o2riomKLozYKc2IQivWGsrI2unuyQs7hXiAD4kGMCTQ" /> |
| <link rel="apple-touch-icon" sizes="180x180" href="../../../favicons/apple-touch-icon.png"> |
| <link rel="icon" type="image/png" sizes="32x32" href="../../../favicons/favicon-32x32.png"> |
| <link rel="icon" type="image/png" sizes="16x16" href="../../../favicons/favicon-16x16.png"> |
| <link rel="manifest" href="../../../favicons/site.webmanifest"> |
| <meta name="msapplication-config" content="../../../favicons/browserconfig.xml"> |
| <meta name="msapplication-TileColor" content="#ca463a"> |
| <meta name="theme-color" content="#ca463a"> |
| |
| </head> |
| |
| |
| |
| |
| |
| |
| |
| <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="deep-orange" data-md-color-accent="green"> |
| |
| |
| <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> |
| <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> |
| <label class="md-overlay" for="__drawer"></label> |
| <div data-md-component="skip"> |
| |
| |
| <a href="#set-up-dependencies" class="md-skip"> |
| Skip to content |
| </a> |
| |
| </div> |
| <div data-md-component="announce"> |
| |
| </div> |
| |
| <div data-md-color-scheme="default" data-md-component="outdated" hidden> |
| |
| <aside class="md-banner md-banner--warning"> |
| <div class="md-banner__inner md-grid md-typeset"> |
| You're not viewing the latest stable version. |
| <a href="../../../.."> |
| <strong>Click here to go to the latest stable version.</strong> |
| </a> |
| |
| </div> |
| <script>var el=document.querySelector("[data-md-component=outdated]"),base=new URL("../../.."),outdated=__md_get("__outdated",sessionStorage,base);!0===outdated&&el&&(el.hidden=!1)</script> |
| </aside> |
| |
| </div> |
| |
| <div style="background: #CA463A; color: white; text-align: center; padding: 0.5rem;"> |
| <a href="../../../setup/release-notes/" title="Announcement">π Apache Sedona 1.9.1 is out now! πΊοΈ Geography SQL functions, Box2D & Box3D types, raster Python UDFs & more. Read the release notes β</a> |
| </div> |
| |
| <!-- |
| Copyright (c) 2016-2025 Martin Donath <martin.donath@squidfunk.com> |
| |
| Permission is hereby granted, free of charge, to any person obtaining a copy |
| of this software and associated documentation files (the "Software"), to |
| deal in the Software without restriction, including without limitation the |
| rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
| sell copies of the Software, and to permit persons to whom the Software is |
| furnished to do so, subject to the following conditions: |
| |
| The above copyright notice and this permission notice shall be included in |
| all copies or substantial portions of the Software. |
| |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 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. |
| --> |
| |
| <!-- Determine classes --> |
| |
| |
| |
| |
| |
| <!-- Header --> |
| <header class="md-header md-header--shadow md-header--lifted" data-md-component="header"> |
| <nav |
| class="md-header__inner md-grid container" |
| aria-label="Header" |
| > |
| <div class="left-part"> |
| |
| <!-- Button to open drawer --> |
| <label class="md-header__button md-icon" for="__drawer"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> |
| </label> |
| |
| <!-- Link to home --> |
| <a |
| href="../../.." |
| title="Apache Sedona" |
| class="header-logo" |
| aria-label="Apache Sedona" |
| data-md-component="logo" |
| > |
| |
| <img src="../../../image/logo.svg" alt="logo"> |
| |
| </a> |
| |
| <!-- Header title --> |
| <div class="md-header__title" data-md-component="header-title"> |
| <div class="md-header__ellipsis"> |
| <div class="md-header__topic"> |
| <span class="md-ellipsis"> |
| Apache Sedona |
| </span> |
| </div> |
| <div class="md-header__topic" data-md-component="header-topic"> |
| <span class="md-ellipsis"> |
| |
| Spatial SQL app (Flink) |
| |
| </span> |
| </div> |
| </div> |
| </div> |
| |
| <!-- Color palette toggle --> |
| |
| |
| |
| |
| <!-- User preference: color palette --> |
| |
| </div> |
| <div class="right-part"> |
| |
| <!-- Site language selector --> |
| |
| |
| <details class="sd-lang-switch"> |
| <summary class="sd-lang-switch__trigger" aria-label="Select language" title="Select language"> |
| <span class="sd-lang-switch__glyph" aria-hidden="true"><span class="sd-lang-switch__glyph-cn">ζ</span><span class="sd-lang-switch__glyph-en">A</span></span> |
| </summary> |
| <ul class="sd-lang-switch__menu"><li> |
| <a |
| href="./" |
| hreflang="en" |
| lang="en" |
| target="_self" |
| class="sd-lang-switch__link sd-lang-switch__link--active" |
| aria-current="true" |
| >English</a> |
| </li> |
| <li> |
| <a |
| href="../../../zh/tutorial/flink/sql/" |
| hreflang="zh" |
| lang="zh" |
| target="_self" |
| class="sd-lang-switch__link" |
| |
| >δΈζ</a> |
| </li> |
| |
| </ul> |
| </details> |
| |
| |
| |
| <!-- Button to open search modal --> |
| |
| |
| |
| <!-- Check if search is actually enabled - see https://t.ly/DT_0V --> |
| |
| <label class="md-header__button md-icon btn-search" for="__search"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> |
| </label> |
| |
| <!-- Search interface --> |
| <div class="md-search" data-md-component="search" role="dialog"> |
| <label class="md-search__overlay" for="__search"></label> |
| <div class="md-search__inner" role="search"> |
| <form class="md-search__form" name="search"> |
| <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> |
| <label class="md-search__icon md-icon" for="__search"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> |
| </label> |
| <nav class="md-search__options" aria-label="Search"> |
| |
| <a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg> |
| </a> |
| |
| <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> |
| </button> |
| </nav> |
| |
| <div class="md-search__suggest" data-md-component="search-suggest"></div> |
| |
| </form> |
| <div class="md-search__output"> |
| <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix> |
| <div class="md-search-result" data-md-component="search-result"> |
| <div class="md-search-result__meta"> |
| Initializing search |
| </div> |
| <ol class="md-search-result__list" role="presentation"></ol> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <!-- Repository information --> |
| |
| <div class="md-header__source"> |
| |
| <a href="https://github.com/apache/sedona" title="apache/sedona" class="md-source" target="_blank" rel="noopener"> |
| <div class="md-source__icon md-icon"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> |
| </div> |
| <div class="md-source__repository">apache/sedona</div> |
| </a> |
| |
| </div> |
| |
| </div> |
| </nav> |
| |
| <!-- Navigation tabs (sticky) --> |
| |
| |
| |
| <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> |
| <div class="md-grid"> |
| <ul class="md-tabs__list"> |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../.." class="md-tabs__link"> |
| |
| |
| |
| |
| |
| Home |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="https://sedona.apache.org/sedonadb/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| SedonaDB |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../../sedonaspark/" class="md-tabs__link"> |
| |
| |
| |
| SedonaSpark |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item md-tabs__item--active"> |
| <a href="../../../sedonaflink/" class="md-tabs__link"> |
| |
| |
| |
| SedonaFlink |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../../sedonasnow/" class="md-tabs__link"> |
| |
| |
| |
| SedonaSnow |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="https://sedona.apache.org/spatialbench/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| SpatialBench |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../../blog/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| Blog |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../../download/" class="md-tabs__link"> |
| |
| |
| |
| Community |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../../asf/asf/" class="md-tabs__link"> |
| |
| |
| |
| Apache Software Foundation |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </div> |
| </nav> |
| |
| |
| </header> |
| |
| |
| <div class="md-container" data-md-component="container"> |
| |
| |
| |
| |
| <main class="md-main" data-md-component="main"> |
| <div class="md-main__inner md-grid"> |
| |
| |
| |
| <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > |
| <div class="md-sidebar__scrollwrap"> |
| <div class="md-sidebar__inner"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> |
| |
| <label class="md-nav__title" for="__drawer"> |
| <a href="../../.." title="Apache Sedona" class="logo-link" aria-label="Apache Sedona" data-md-component="logo"> |
| <img src="../../../image/header/logo-mobile.svg" alt="" class="logo"> |
| </a> |
| </label> |
| |
| |
| <div class="md-nav__source"> |
| |
| <a href="https://github.com/apache/sedona" title="apache/sedona" class="md-source" target="_blank" rel="noopener"> |
| <div class="md-source__icon md-icon"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> |
| </div> |
| <div class="md-source__repository">apache/sedona</div> |
| </a> |
| |
| </div> |
| |
| |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../.." class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Home |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="https://sedona.apache.org/sedonadb/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| SedonaDB |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" > |
| |
| |
| <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| SedonaSpark |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| SedonaSpark |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../sedonaspark/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Home |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_2"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Install |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/overview/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Overview |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/modules/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Modules |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/platform/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Language wrappers |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/maven-coordinates/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Maven Central coordinate |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/docker/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Use Sedona in Docker |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_6" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_2_6" id="__nav_3_2_6_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install Sedona in your local Spark cluster |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_6_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_2_6"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Install Sedona in your local Spark cluster |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/install-scala/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install Sedona Scala/Java |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/install-python/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install Sedona Python |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/rdocs" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install Sedona R |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/zeppelin/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install Sedona-Zeppelin |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/cluster/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Set up Spark cluster manually |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_7" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_2_7" id="__nav_3_2_7_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Cloud platforms |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_7_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_2_7"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Cloud platforms |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/wherobots/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install on Wherobots |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/databricks/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install on Databricks |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/emr/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install on AWS EMR |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/glue/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install on AWS Glue |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/fabric/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install on Microsoft Fabric |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/azure-synapse-analytics/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install on Azure Synapse Analytics |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Programming Guide |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_3"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Programming Guide |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../sql/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Spatial DataFrame / SQL app |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../raster/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Raster DataFrame / SQL app |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../sql-pure-sql/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Pure SQL environment |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../geopandas-api/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| GeoPandas API on Sedona |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../rdd/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Spatial RDD app |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/rdocs" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Sedona R |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../geopandas-shapely/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Work with GeoPandas and Shapely |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_8" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_3_8" id="__nav_3_3_8_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Files |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_8_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_3_8"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Files |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../files/csv-geometry-sedona-spark/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| CSV |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../files/geopackage-sedona-spark/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| GeoPackage |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../files/geoparquet-sedona-spark/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| GeoParquet |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../files/geojson-sedona-spark/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| GeoJSON |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../files/shapefiles-sedona-spark/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Shapefiles |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../files/geotiffmetadata-sedona-spark/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| GeoTIFF metadata |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../files/netcdfmetadata-sedona-spark/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| NetCDF metadata |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../files/stac-sedona-spark/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| STAC catalog |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_9" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_3_9" id="__nav_3_3_9_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Concepts |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_9_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_3_9"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Concepts |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../concepts/spatial-joins/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Spatial Joins |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../concepts/clustering-algorithms/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Clustering Algorithms |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../concepts/distance-spark/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Distance |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_10" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_3_10" id="__nav_3_3_10_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Map visualization SQL app |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_10_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_3_10"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Map visualization SQL app |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../viz/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Scala/Java |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../zeppelin/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Use Apache Zeppelin |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../viz-gallery/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Gallery |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_11" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_3_11" id="__nav_3_3_11_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Performance tuning |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_11_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_3_11"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Performance tuning |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../benchmark/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Benchmark |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../Advanced-Tutorial-Tune-your-Application/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Tune RDD application |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../storing-blobs-in-parquet/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Storing large raster geometries in Parquet files |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_4" id="__nav_3_4_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| API |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_4_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_4"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| API |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_1" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_4_1" id="__nav_3_4_1_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| SQL |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_4_1_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_4_1"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| SQL |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/Overview/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Quick start |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_1_2" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_4_1_2" id="__nav_3_4_1_2_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Vector data |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_3_4_1_2_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_4_1_2"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Vector data |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/Geometry-Functions/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Geometry Functions |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/box2d/Box2D-Functions/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Box2D Functions |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/box3d/Box3D-Functions/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Box3D Functions |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/geography/Geography-Functions/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Geography Functions |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/DataFrameAPI/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| DataFrame Style functions |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/Optimizer/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Query optimization |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/CRS-Transformation/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| CRS Transformation |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/NearestNeighbourSearching/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Nearest-Neighbour searching |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/Spider/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Spider:Spatial Data Generator |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/Reading-legacy-parquet/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Reading Legacy Parquet Files |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_1_2_11" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_4_1_2_11" id="__nav_3_4_1_2_11_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Visualization |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="5" aria-labelledby="__nav_3_4_1_2_11_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_4_1_2_11"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Visualization |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/Visualization-SedonaPyDeck/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| SedonaPyDeck |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/Visualization-SedonaKepler/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| SedonaKepler |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_1_3" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_4_1_3" id="__nav_3_4_1_3_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Raster data |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_3_4_1_3_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_4_1_3"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Raster data |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/Raster-Functions/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Raster Functions |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/Raster-map-algebra/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Raster map algebra |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/Raster-UDF/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Raster UDFs |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/Raster-affine-transformation/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Raster affine transformation |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/sql/Parameter/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Parameter |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_2" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_4_2" id="__nav_3_4_2_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| RDD (core) |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_4_2_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_4_2"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| RDD (core) |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/java-api/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Scala/Java doc |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_3" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_4_3" id="__nav_3_4_3_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Stats |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_4_3_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_4_3"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Stats |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/stats/sql/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| DataFrame |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_4" > |
| |
| |
| <label class="md-nav__link" for="__nav_3_4_4" id="__nav_3_4_4_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Viz |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_4_4_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_3_4_4"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Viz |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/viz/sql/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| DataFrame/SQL |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/viz/java-api/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| RDD |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/rdocs" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Sedona R |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/pydocs" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Sedona Python |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/release-notes/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Release notes |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked> |
| |
| |
| <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex=""> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| SedonaFlink |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true"> |
| <label class="md-nav__title" for="__nav_4"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| SedonaFlink |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../sedonaflink/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Home |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2" > |
| |
| |
| <label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_2_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_4_2"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Install |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/flink/install-scala/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install Sedona Scala/Java |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/flink/install-python/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install Sedona Python |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/flink/modules/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Modules |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/flink/platform/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Language wrappers |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_3" checked> |
| |
| |
| <label class="md-nav__link" for="__nav_4_3" id="__nav_4_3_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Programming Guides |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_3_label" aria-expanded="true"> |
| <label class="md-nav__title" for="__nav_4_3"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Programming Guides |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_3_1" checked> |
| |
| |
| <label class="md-nav__link" for="__nav_4_3_1" id="__nav_4_3_1_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Sedona with Apache Flink |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_3_1_label" aria-expanded="true"> |
| <label class="md-nav__title" for="__nav_4_3_1"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Sedona with Apache Flink |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active"> |
| |
| <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> |
| |
| |
| |
| <label class="md-nav__link md-nav__link--active" for="__toc"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Spatial SQL app (Flink) |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <a href="./" class="md-nav__link md-nav__link--active"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Spatial SQL app (Flink) |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| |
| |
| |
| <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> |
| |
| |
| |
| |
| <label class="md-nav__title" for="__toc"> |
| <span class="md-nav__icon md-icon"></span> |
| Table of contents |
| </label> |
| <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
| |
| <li class="md-nav__item"> |
| <a href="#set-up-dependencies" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Set up dependencies |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#initiate-stream-environment" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Initiate Stream Environment |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#initiate-sedonacontext" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Initiate SedonaContext |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#create-a-geometry-type-column" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Create a Geometry type column |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#transform-the-coordinate-reference-system" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Transform the Coordinate Reference System |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#range-query" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Range query |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#knn-query" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| KNN query |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#join-query" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Join query |
| |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Join query"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#1-generate-s2-ids-for-both-tables" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| 1. Generate S2 ids for both tables |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#2-explode-id-array" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| 2. Explode id array |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#3-perform-equi-join" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| 3. Perform equi-join |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#4-optional-refine-the-result" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| 4. Optional: Refine the result |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#5-optional-de-duplicate" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| 5. Optional: De-duplicate |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#s2-for-distance-join" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| S2 for distance join |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#convert-spatial-table-to-spatial-datastream" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Convert Spatial Table to Spatial DataStream |
| |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Convert Spatial Table to Spatial DataStream"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#get-datastream" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Get DataStream |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#retrieve-geometries" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Retrieve Geometries |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#store-non-spatial-attributes-in-geometries" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Store non-spatial attributes in Geometries |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#convert-spatial-datastream-to-spatial-table" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Convert Spatial DataStream to Spatial Table |
| |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Convert Spatial DataStream to Spatial Table"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#create-geometries-using-sedona-formatutils" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Create Geometries using Sedona FormatUtils |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#create-row-objects" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Create Row objects |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#get-spatial-table" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Get Spatial Table |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../pyflink-sql/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Spatial SQL app (PyFlink) |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_3_2" > |
| |
| |
| <label class="md-nav__link" for="__nav_4_3_2" id="__nav_4_3_2_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Examples |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_3_2_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_4_3_2"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Examples |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../demo/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Scala/Java |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../jupyter-notebook/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Python |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_4" > |
| |
| |
| <label class="md-nav__link" for="__nav_4_4" id="__nav_4_4_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| API |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_4_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_4_4"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| API |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_4_1" > |
| |
| |
| <label class="md-nav__link" for="__nav_4_4_1" id="__nav_4_4_1_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| SQL |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_4_1_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_4_4_1"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| SQL |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/flink/Overview/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Overview (Flink) |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/flink/Geometry-Functions/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Geometry Functions |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/flink/Geography-Functions/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Geography Functions |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/release-notes/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Release notes |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" > |
| |
| |
| <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| SedonaSnow |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_5"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| SedonaSnow |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../sedonasnow/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Home |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" > |
| |
| |
| <label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_5_2"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Install |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/snowflake/install/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Install Sedona SQL |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../snowflake/sql/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Spatial SQL app (Snowflake) |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/snowflake/modules/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Modules |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_3" > |
| |
| |
| <label class="md-nav__link" for="__nav_5_3" id="__nav_5_3_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| API |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_3_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_5_3"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| API |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_3_1" > |
| |
| |
| <label class="md-nav__link" for="__nav_5_3_1" id="__nav_5_3_1_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| SQL |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_5_3_1_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_5_3_1"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| SQL |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/snowflake/vector-data/Overview/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Overview (Snowflake) |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../api/snowflake/vector-data/Geometry-Functions/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Geometry Functions |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/release-notes/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Release notes |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="https://sedona.apache.org/spatialbench/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| SpatialBench |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../blog/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Blog |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" > |
| |
| |
| <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Community |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Community |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../download/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Download |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/release-notes/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Release notes |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../setup/compile/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Compile the code |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../community/contact/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Community |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_5" > |
| |
| |
| <label class="md-nav__link" for="__nav_8_5" id="__nav_8_5_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Contributor Guide |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_5_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_5"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Contributor Guide |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../community/rule/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Rules |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../community/develop/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Develop |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../community/geopandas/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Contribute to Geopandas API on Sedona |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_6" > |
| |
| |
| <label class="md-nav__link" for="__nav_8_6" id="__nav_8_6_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Committer Guide |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_6_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_6"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Committer Guide |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../community/contributor/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Project Management Committee |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../community/release-manager/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Become a release manager |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../community/snapshot/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Publish a snapshot version |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../community/publish/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Make a release |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../community/vote/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Vote a release |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../community/publication/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Publications |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" > |
| |
| |
| <label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Apache Software Foundation |
| |
| |
| |
| </span> |
| |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_9"> |
| <span class="md-nav__icon md-icon"></span> |
| |
| |
| Apache Software Foundation |
| |
| |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../asf/asf/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Foundation |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="https://www.apache.org/licenses/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| License |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="https://www.apache.org/events/current-event" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Events |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="https://www.apache.org/foundation/sponsorship.html" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Sponsorship |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="https://www.apache.org/foundation/thanks.html" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Thanks |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="https://www.apache.org/security/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Security |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="https://privacy.apache.org/policies/privacy-policy-public.html" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Privacy |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../../asf/telemetry/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| |
| |
| Telemetry |
| |
| |
| |
| </span> |
| |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| <li class="btn-group"> |
| <a href="#" class="btn btn-red"> |
| Get started |
| </a> |
| </li> |
| |
| </ul> |
| </nav> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > |
| <div class="md-sidebar__scrollwrap"> |
| <div class="md-sidebar__inner"> |
| |
| |
| <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> |
| |
| |
| |
| |
| <label class="md-nav__title" for="__toc"> |
| <span class="md-nav__icon md-icon"></span> |
| Table of contents |
| </label> |
| <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
| |
| <li class="md-nav__item"> |
| <a href="#set-up-dependencies" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Set up dependencies |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#initiate-stream-environment" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Initiate Stream Environment |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#initiate-sedonacontext" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Initiate SedonaContext |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#create-a-geometry-type-column" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Create a Geometry type column |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#transform-the-coordinate-reference-system" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Transform the Coordinate Reference System |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#range-query" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Range query |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#knn-query" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| KNN query |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#join-query" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Join query |
| |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Join query"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#1-generate-s2-ids-for-both-tables" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| 1. Generate S2 ids for both tables |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#2-explode-id-array" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| 2. Explode id array |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#3-perform-equi-join" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| 3. Perform equi-join |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#4-optional-refine-the-result" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| 4. Optional: Refine the result |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#5-optional-de-duplicate" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| 5. Optional: De-duplicate |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#s2-for-distance-join" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| S2 for distance join |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#convert-spatial-table-to-spatial-datastream" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Convert Spatial Table to Spatial DataStream |
| |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Convert Spatial Table to Spatial DataStream"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#get-datastream" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Get DataStream |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#retrieve-geometries" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Retrieve Geometries |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#store-non-spatial-attributes-in-geometries" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Store non-spatial attributes in Geometries |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#convert-spatial-datastream-to-spatial-table" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Convert Spatial DataStream to Spatial Table |
| |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Convert Spatial DataStream to Spatial Table"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#create-geometries-using-sedona-formatutils" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Create Geometries using Sedona FormatUtils |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#create-row-objects" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Create Row objects |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#get-spatial-table" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| |
| Get Spatial Table |
| |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| |
| </nav> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| |
| |
| |
| <div class="md-content" data-md-component="content"> |
| |
| <article class="md-content__inner md-typeset"> |
| |
| |
| |
| |
| |
| <a href="https://github.com/apache/sedona/edit/master/docs/tutorial/flink/sql.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> |
| </a> |
| |
| |
| |
| |
| <h1>Spatial SQL app (Flink)</h1> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| <p>The page outlines the steps to manage spatial data using SedonaSQL. <mark>The example code is written in Java but also works for Scala</mark>.</p> |
| <p>SedonaSQL supports SQL/MM Part3 Spatial SQL Standard. It includes four kinds of SQL operators as follows. All these operators can be directly called through:</p> |
| <div class="highlight"><pre><span></span><code><span class="n">Table</span><span class="w"> </span><span class="n">myTable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tableEnv</span><span class="p">.</span><span class="na">sqlQuery</span><span class="p">(</span><span class="s">"YOUR_SQL"</span><span class="p">)</span> |
| </code></pre></div> |
| <p>Detailed SedonaSQL APIs are available here: <a href="../../../api/flink/Overview/">SedonaSQL API</a></p> |
| <h2 id="set-up-dependencies">Set up dependencies<a class="headerlink" href="#set-up-dependencies" title="Permanent link">¶</a></h2> |
| <ol> |
| <li>Read <a href="../../../setup/maven-coordinates/">Sedona Maven Central coordinates</a></li> |
| <li>Add Sedona dependencies in build.sbt or pom.xml.</li> |
| <li>Add <a href="https://nightlies.apache.org/flink/flink-docs-master/docs/dev/configuration/overview/">Flink dependencies</a> in build.sbt or pom.xml.</li> |
| <li>Please see <a href="../../demo/">SQL example project</a></li> |
| </ol> |
| <h2 id="initiate-stream-environment">Initiate Stream Environment<a class="headerlink" href="#initiate-stream-environment" title="Permanent link">¶</a></h2> |
| <p>Use the following code to initiate your <code>StreamExecutionEnvironment</code> at the beginning:</p> |
| <div class="highlight"><pre><span></span><code><span class="n">StreamExecutionEnvironment</span><span class="w"> </span><span class="n">env</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">StreamExecutionEnvironment</span><span class="p">.</span><span class="na">getExecutionEnvironment</span><span class="p">();</span> |
| <span class="n">EnvironmentSettings</span><span class="w"> </span><span class="n">settings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">EnvironmentSettings</span><span class="p">.</span><span class="na">newInstance</span><span class="p">().</span><span class="na">inStreamingMode</span><span class="p">().</span><span class="na">build</span><span class="p">();</span> |
| <span class="n">StreamTableEnvironment</span><span class="w"> </span><span class="n">tableEnv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">StreamTableEnvironment</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">env</span><span class="p">,</span><span class="w"> </span><span class="n">settings</span><span class="p">);</span> |
| </code></pre></div> |
| <h2 id="initiate-sedonacontext">Initiate SedonaContext<a class="headerlink" href="#initiate-sedonacontext" title="Permanent link">¶</a></h2> |
| <p>Add the following line after your <code>StreamExecutionEnvironment</code> and <code>StreamTableEnvironment</code> declaration</p> |
| <p><mark>Sedona >= 1.4.1</mark></p> |
| <div class="highlight"><pre><span></span><code><span class="n">StreamTableEnvironment</span><span class="w"> </span><span class="n">sedona</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SedonaContext</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">env</span><span class="p">,</span><span class="w"> </span><span class="n">tableEnv</span><span class="p">);</span> |
| </code></pre></div> |
| <p><mark>Sedona <1.4.1</mark></p> |
| <p>The following method has been deprecated since Sedona 1.4.1. Please use the method above to create your SedonaContext.</p> |
| <div class="highlight"><pre><span></span><code><span class="n">SedonaFlinkRegistrator</span><span class="p">.</span><span class="na">registerType</span><span class="p">(</span><span class="n">env</span><span class="p">);</span> |
| <span class="n">SedonaFlinkRegistrator</span><span class="p">.</span><span class="na">registerFunc</span><span class="p">(</span><span class="n">tableEnv</span><span class="p">);</span> |
| </code></pre></div> |
| <div class="admonition warning"> |
| <p class="admonition-title">Warning</p> |
| <p>Sedona has a suite of well-written geometry and index serializers. Forgetting to enable these serializers will lead to high memory consumption.</p> |
| </div> |
| <p>This function will register Sedona User Defined Type and User Defined Function</p> |
| <h2 id="create-a-geometry-type-column">Create a Geometry type column<a class="headerlink" href="#create-a-geometry-type-column" title="Permanent link">¶</a></h2> |
| <p>All geometrical operations in SedonaSQL are on Geometry type objects. Therefore, before any kind of queries, you need to create a Geometry type column on a DataFrame.</p> |
| <p>Assume you have a Flink Table <code>tbl</code> like this:</p> |
| <div class="highlight"><pre><span></span><code>+----+--------------------------------+--------------------------------+ |
| | op | geom_polygon | name_polygon | |
| +----+--------------------------------+--------------------------------+ |
| | +I | POLYGON ((-0.5 -0.5, -0.5 0... | polygon0 | |
| | +I | POLYGON ((0.5 0.5, 0.5 1.5,... | polygon1 | |
| | +I | POLYGON ((1.5 1.5, 1.5 2.5,... | polygon2 | |
| | +I | POLYGON ((2.5 2.5, 2.5 3.5,... | polygon3 | |
| | +I | POLYGON ((3.5 3.5, 3.5 4.5,... | polygon4 | |
| | +I | POLYGON ((4.5 4.5, 4.5 5.5,... | polygon5 | |
| | +I | POLYGON ((5.5 5.5, 5.5 6.5,... | polygon6 | |
| | +I | POLYGON ((6.5 6.5, 6.5 7.5,... | polygon7 | |
| | +I | POLYGON ((7.5 7.5, 7.5 8.5,... | polygon8 | |
| | +I | POLYGON ((8.5 8.5, 8.5 9.5,... | polygon9 | |
| +----+--------------------------------+--------------------------------+ |
| 10 rows in set |
| </code></pre></div> |
| <p>You can create a Table with a Geometry type column as follows:</p> |
| <div class="highlight"><pre><span></span><code><span class="n">sedona</span><span class="p">.</span><span class="na">createTemporaryView</span><span class="p">(</span><span class="s">"myTable"</span><span class="p">,</span><span class="w"> </span><span class="n">tbl</span><span class="p">)</span> |
| <span class="n">Table</span><span class="w"> </span><span class="n">geomTbl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sedona</span><span class="p">.</span><span class="na">sqlQuery</span><span class="p">(</span><span class="s">"SELECT ST_GeomFromWKT(geom_polygon) as geom_polygon, name_polygon FROM myTable"</span><span class="p">)</span> |
| <span class="n">geomTbl</span><span class="p">.</span><span class="na">execute</span><span class="p">().</span><span class="na">print</span><span class="p">()</span> |
| </code></pre></div> |
| <p>The output will be:</p> |
| <div class="highlight"><pre><span></span><code>+----+--------------------------------+--------------------------------+ |
| | op | geom_polygon | name_polygon | |
| +----+--------------------------------+--------------------------------+ |
| | +I | POLYGON ((-0.5 -0.5, -0.5 0... | polygon0 | |
| | +I | POLYGON ((0.5 0.5, 0.5 1.5,... | polygon1 | |
| | +I | POLYGON ((1.5 1.5, 1.5 2.5,... | polygon2 | |
| | +I | POLYGON ((2.5 2.5, 2.5 3.5,... | polygon3 | |
| | +I | POLYGON ((3.5 3.5, 3.5 4.5,... | polygon4 | |
| | +I | POLYGON ((4.5 4.5, 4.5 5.5,... | polygon5 | |
| | +I | POLYGON ((5.5 5.5, 5.5 6.5,... | polygon6 | |
| | +I | POLYGON ((6.5 6.5, 6.5 7.5,... | polygon7 | |
| | +I | POLYGON ((7.5 7.5, 7.5 8.5,... | polygon8 | |
| | +I | POLYGON ((8.5 8.5, 8.5 9.5,... | polygon9 | |
| +----+--------------------------------+--------------------------------+ |
| 10 rows in set |
| </code></pre></div> |
| <p>Although it looks same with the input, actually the type of column geom_polygon has been changed to <mark>Geometry</mark> type.</p> |
| <p>To verify this, use the following code to print the schema of the DataFrame:</p> |
| <div class="highlight"><pre><span></span><code><span class="n">geomTbl</span><span class="p">.</span><span class="na">printSchema</span><span class="p">()</span> |
| </code></pre></div> |
| <p>The output will be like this:</p> |
| <div class="highlight"><pre><span></span><code>( |
| `geom_polygon` RAW('org.locationtech.jts.geom.Geometry', '...'), |
| `name_polygon` STRING |
| ) |
| </code></pre></div> |
| <div class="admonition note"> |
| <p class="admonition-title">Note</p> |
| <p>SedonaSQL provides lots of functions to create a Geometry column, please read <a href="../../../api/flink/Geometry-Functions/">SedonaSQL constructor API</a>.</p> |
| </div> |
| <h2 id="transform-the-coordinate-reference-system">Transform the Coordinate Reference System<a class="headerlink" href="#transform-the-coordinate-reference-system" title="Permanent link">¶</a></h2> |
| <p>Sedona doesn't control the coordinate unit (degree-based or meter-based) of all geometries in a Geometry column. The unit of all related distances in SedonaSQL is same as the unit of all geometries in a Geometry column.</p> |
| <p>To convert Coordinate Reference System of the Geometry column created before, use the following code:</p> |
| <div class="highlight"><pre><span></span><code><span class="n">Table</span><span class="w"> </span><span class="n">geomTbl3857</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sedona</span><span class="p">.</span><span class="na">sqlQuery</span><span class="p">(</span><span class="s">"SELECT ST_Transform(countyshape, "</span><span class="n">epsg</span><span class="p">:</span><span class="mi">4326</span><span class="s">", "</span><span class="n">epsg</span><span class="p">:</span><span class="mi">3857</span><span class="s">") AS geom_polygon, name_polygon FROM myTable"</span><span class="p">)</span> |
| <span class="n">geomTbl3857</span><span class="p">.</span><span class="na">execute</span><span class="p">().</span><span class="na">print</span><span class="p">()</span> |
| </code></pre></div> |
| <p>The first EPSG code EPSG:4326 in <code>ST_Transform</code> is the source CRS of the geometries. It is WGS84, the most common degree-based CRS.</p> |
| <p>The second EPSG code EPSG:3857 in <code>ST_Transform</code> is the target CRS of the geometries. It is the most common meter-based CRS.</p> |
| <p>This <code>ST_Transform</code> transform the CRS of these geometries from EPSG:4326 to EPSG:3857. The details CRS information can be found on <a href="https://epsg.io/">EPSG.io</a></p> |
| <div class="admonition note"> |
| <p class="admonition-title">Note</p> |
| <p>Read <a href="../../../api/flink/Spatial-Reference-System/ST_Transform/">SedonaSQL ST_Transform API</a> to learn different spatial query predicates.</p> |
| </div> |
| <p>For example, a Table that has coordinates in the US will become like this.</p> |
| <p>Before the transformation:</p> |
| <div class="highlight"><pre><span></span><code>+----+--------------------------------+--------------------------------+ |
| | op | geom_point | name_point | |
| +----+--------------------------------+--------------------------------+ |
| | +I | POINT (32 -118) | point | |
| | +I | POINT (33 -117) | point | |
| | +I | POINT (34 -116) | point | |
| | +I | POINT (35 -115) | point | |
| | +I | POINT (36 -114) | point | |
| | +I | POINT (37 -113) | point | |
| | +I | POINT (38 -112) | point | |
| | +I | POINT (39 -111) | point | |
| | +I | POINT (40 -110) | point | |
| | +I | POINT (41 -109) | point | |
| +----+--------------------------------+--------------------------------+ |
| </code></pre></div> |
| <p>After the transformation:</p> |
| <div class="highlight"><pre><span></span><code>+----+--------------------------------+--------------------------------+ |
| | op | _c0 | name_point | |
| +----+--------------------------------+--------------------------------+ |
| | +I | POINT (-13135699.91360628 3... | point | |
| | +I | POINT (-13024380.422813008 ... | point | |
| | +I | POINT (-12913060.932019735 ... | point | |
| | +I | POINT (-12801741.44122646 4... | point | |
| | +I | POINT (-12690421.950433187 ... | point | |
| | +I | POINT (-12579102.459639912 ... | point | |
| | +I | POINT (-12467782.96884664 4... | point | |
| | +I | POINT (-12356463.478053367 ... | point | |
| | +I | POINT (-12245143.987260092 ... | point | |
| | +I | POINT (-12133824.496466817 ... | point | |
| +----+--------------------------------+--------------------------------+ |
| </code></pre></div> |
| <p>After creating a Geometry type column, you are able to run spatial queries.</p> |
| <h2 id="range-query">Range query<a class="headerlink" href="#range-query" title="Permanent link">¶</a></h2> |
| <p>Use <mark>ST_Contains</mark>, <mark>ST_Intersects</mark> and so on to run a range query over a single column.</p> |
| <p>The following example finds all counties that are within the given polygon:</p> |
| <div class="highlight"><pre><span></span><code><span class="n">geomTable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sedona</span><span class="p">.</span><span class="na">sqlQuery</span><span class="p">(</span> |
| <span class="w"> </span><span class="s">"</span> |
| <span class="s"> SELECT *</span> |
| <span class="s"> FROM spatialdf</span> |
| <span class="s"> WHERE ST_Contains (ST_PolygonFromEnvelope(1.0,100.0,1000.0,1100.0), newcountyshape)</span> |
| <span class="s"> "</span><span class="p">)</span> |
| <span class="n">geomTable</span><span class="p">.</span><span class="na">execute</span><span class="p">().</span><span class="na">print</span><span class="p">()</span> |
| </code></pre></div> |
| <div class="admonition note"> |
| <p class="admonition-title">Note</p> |
| <p>Read <a href="../../../api/flink/Geometry-Functions/#predicates">SedonaSQL Predicate API</a> to learn different spatial query predicates.</p> |
| </div> |
| <h2 id="knn-query">KNN query<a class="headerlink" href="#knn-query" title="Permanent link">¶</a></h2> |
| <p>Use <mark>ST_Distance</mark> to calculate the distance and rank the distance.</p> |
| <p>The following code returns the 5 nearest neighbor of the given polygon.</p> |
| <div class="highlight"><pre><span></span><code><span class="n">geomTable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sedona</span><span class="p">.</span><span class="na">sqlQuery</span><span class="p">(</span> |
| <span class="w"> </span><span class="s">"</span> |
| <span class="s"> SELECT countyname, ST_Distance(ST_PolygonFromEnvelope(1.0,100.0,1000.0,1100.0), newcountyshape) AS distance</span> |
| <span class="s"> FROM geomTable</span> |
| <span class="s"> ORDER BY distance DESC</span> |
| <span class="s"> LIMIT 5</span> |
| <span class="s"> "</span><span class="p">)</span> |
| <span class="n">geomTable</span><span class="p">.</span><span class="na">execute</span><span class="p">().</span><span class="na">print</span><span class="p">()</span> |
| </code></pre></div> |
| <h2 id="join-query">Join query<a class="headerlink" href="#join-query" title="Permanent link">¶</a></h2> |
| <p>This equi-join leverages Flink's internal equi-join algorithm. You can opt to skip the Sedona refinement step by sacrificing query accuracy. A running example is in <a href="../../demo/">SQL example project</a>.</p> |
| <p>Please use the following steps:</p> |
| <h3 id="1-generate-s2-ids-for-both-tables">1. Generate S2 ids for both tables<a class="headerlink" href="#1-generate-s2-ids-for-both-tables" title="Permanent link">¶</a></h3> |
| <p>Use <a href="../../../api/flink/Spatial-Indexing/ST_S2CellIDs/">ST_S2CellIds</a> to generate cell IDs. Each geometry may produce one or more IDs.</p> |
| <div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">geom</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">ST_S2CellIDs</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span><span class="w"> </span><span class="mi">15</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">idarray</span> |
| <span class="k">FROM</span><span class="w"> </span><span class="n">lefts</span> |
| </code></pre></div> |
| <div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">geom</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">ST_S2CellIDs</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span><span class="w"> </span><span class="mi">15</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">idarray</span> |
| <span class="k">FROM</span><span class="w"> </span><span class="n">rights</span> |
| </code></pre></div> |
| <h3 id="2-explode-id-array">2. Explode id array<a class="headerlink" href="#2-explode-id-array" title="Permanent link">¶</a></h3> |
| <p>The produced S2 ids are arrays of integers. We need to explode these Ids to multiple rows, so later we can join two tables by ids.</p> |
| <div class="highlight"><pre><span></span><code>SELECT id, geom, name, cellId |
| FROM lefts CROSS JOIN UNNEST(lefts.idarray) AS tmpTbl1(cellId) |
| </code></pre></div> |
| <div class="highlight"><pre><span></span><code>SELECT id, geom, name, cellId |
| FROM rights CROSS JOIN UNNEST(rights.idarray) AS tmpTbl2(cellId) |
| </code></pre></div> |
| <h3 id="3-perform-equi-join">3. Perform equi-join<a class="headerlink" href="#3-perform-equi-join" title="Permanent link">¶</a></h3> |
| <p>Join the two tables by their S2 cellId</p> |
| <div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">lcs</span><span class="p">.</span><span class="n">id</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">lcs_id</span><span class="p">,</span><span class="w"> </span><span class="n">lcs</span><span class="p">.</span><span class="n">geom</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">lcs_geom</span><span class="p">,</span><span class="w"> </span><span class="n">lcs</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">lcs_name</span><span class="p">,</span><span class="w"> </span><span class="n">rcs</span><span class="p">.</span><span class="n">id</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">rcs_id</span><span class="p">,</span><span class="w"> </span><span class="n">rcs</span><span class="p">.</span><span class="n">geom</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">rcs_geom</span><span class="p">,</span><span class="w"> </span><span class="n">rcs</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">rcs_name</span> |
| <span class="k">FROM</span><span class="w"> </span><span class="n">lcs</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">rcs</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">lcs</span><span class="p">.</span><span class="n">cellId</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rcs</span><span class="p">.</span><span class="n">cellId</span> |
| </code></pre></div> |
| <h3 id="4-optional-refine-the-result">4. Optional: Refine the result<a class="headerlink" href="#4-optional-refine-the-result" title="Permanent link">¶</a></h3> |
| <p>Due to the nature of S2 Cellid, the equi-join results might have a few false-positives depending on the S2 level you choose. A smaller level indicates bigger cells, less exploded rows, but more false positives.</p> |
| <p>To ensure the correctness, you can use one of the <a href="../../../api/sql/Geometry-Functions/#predicates">Spatial Predicates</a> to filter out them. Use this query as the query in Step 3.</p> |
| <div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">lcs</span><span class="p">.</span><span class="n">id</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">lcs_id</span><span class="p">,</span><span class="w"> </span><span class="n">lcs</span><span class="p">.</span><span class="n">geom</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">lcs_geom</span><span class="p">,</span><span class="w"> </span><span class="n">lcs</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">lcs_name</span><span class="p">,</span><span class="w"> </span><span class="n">rcs</span><span class="p">.</span><span class="n">id</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">rcs_id</span><span class="p">,</span><span class="w"> </span><span class="n">rcs</span><span class="p">.</span><span class="n">geom</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">rcs_geom</span><span class="p">,</span><span class="w"> </span><span class="n">rcs</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">rcs_name</span> |
| <span class="k">FROM</span><span class="w"> </span><span class="n">lcs</span><span class="p">,</span><span class="w"> </span><span class="n">rcs</span> |
| <span class="k">WHERE</span><span class="w"> </span><span class="n">lcs</span><span class="p">.</span><span class="n">cellId</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rcs</span><span class="p">.</span><span class="n">cellId</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">ST_Contains</span><span class="p">(</span><span class="n">lcs</span><span class="p">.</span><span class="n">geom</span><span class="p">,</span><span class="w"> </span><span class="n">rcs</span><span class="p">.</span><span class="n">geom</span><span class="p">)</span> |
| </code></pre></div> |
| <p>As you see, compared to the query in Step 2, we added one more filter, which is <code>ST_Contains</code>, to remove false positives. You can also use <code>ST_Intersects</code> and so on.</p> |
| <div class="admonition tip"> |
| <p class="admonition-title">Tip</p> |
| <p>You can skip this step if you don't need 100% accuracy and want faster query speed.</p> |
| </div> |
| <h3 id="5-optional-de-duplicate">5. Optional: De-duplicate<a class="headerlink" href="#5-optional-de-duplicate" title="Permanent link">¶</a></h3> |
| <p>Due to the explode function used when we generate S2 Cell Ids, the resulting DataFrame may have several duplicate <lcs_geom, rcs_geom> matches. You can remove them by performing a GroupBy query.</p> |
| <div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">lcs_id</span><span class="p">,</span><span class="w"> </span><span class="n">rcs_id</span><span class="p">,</span><span class="w"> </span><span class="n">FIRST_VALUE</span><span class="p">(</span><span class="n">lcs_geom</span><span class="p">),</span><span class="w"> </span><span class="n">FIRST_VALUE</span><span class="p">(</span><span class="n">lcs_name</span><span class="p">),</span><span class="w"> </span><span class="k">first</span><span class="p">(</span><span class="n">rcs_geom</span><span class="p">),</span><span class="w"> </span><span class="k">first</span><span class="p">(</span><span class="n">rcs_name</span><span class="p">)</span> |
| <span class="k">FROM</span><span class="w"> </span><span class="n">joinresult</span> |
| <span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="p">(</span><span class="n">lcs_id</span><span class="p">,</span><span class="w"> </span><span class="n">rcs_id</span><span class="p">)</span> |
| </code></pre></div> |
| <p>The <code>FIRST_VALUE</code> function is to take the first value from a number of duplicate values.</p> |
| <p>If you don't have a unique id for each geometry, you can also group by geometry itself. See below:</p> |
| <div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">lcs_geom</span><span class="p">,</span><span class="w"> </span><span class="n">rcs_geom</span><span class="p">,</span><span class="w"> </span><span class="k">first</span><span class="p">(</span><span class="n">lcs_name</span><span class="p">),</span><span class="w"> </span><span class="k">first</span><span class="p">(</span><span class="n">rcs_name</span><span class="p">)</span> |
| <span class="k">FROM</span><span class="w"> </span><span class="n">joinresult</span> |
| <span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="p">(</span><span class="n">lcs_geom</span><span class="p">,</span><span class="w"> </span><span class="n">rcs_geom</span><span class="p">)</span> |
| </code></pre></div> |
| <div class="admonition note"> |
| <p class="admonition-title">Note</p> |
| <p>If you are doing point-in-polygon join, this is not a problem, and you can safely discard this issue. This issue only happens when you do polygon-polygon, polygon-linestring, linestring-linestring join.</p> |
| </div> |
| <h3 id="s2-for-distance-join">S2 for distance join<a class="headerlink" href="#s2-for-distance-join" title="Permanent link">¶</a></h3> |
| <p>This also works for distance join. You first need to use <code>ST_Buffer(geometry, distance)</code> to wrap one of your original geometry column. If your original geometry column contains points, this <code>ST_Buffer</code> will make them become circles with a radius of <code>distance</code>.</p> |
| <p>For example. run this query first on the left table before Step 1.</p> |
| <div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">ST_Buffer</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span><span class="w"> </span><span class="n">DISTANCE</span><span class="p">),</span><span class="w"> </span><span class="n">name</span> |
| <span class="k">FROM</span><span class="w"> </span><span class="n">lefts</span> |
| </code></pre></div> |
| <p>Since the coordinates are in the longitude and latitude system, so the unit of <code>distance</code> should be degree instead of meter or mile. You will have to estimate the corresponding degrees based on your meter values. Please use <a href="https://lucidar.me/en/online-unit-converter-length-to-angle/convert-degrees-to-meters/#online-converter">this calculator</a>.</p> |
| <h2 id="convert-spatial-table-to-spatial-datastream">Convert Spatial Table to Spatial DataStream<a class="headerlink" href="#convert-spatial-table-to-spatial-datastream" title="Permanent link">¶</a></h2> |
| <h3 id="get-datastream">Get DataStream<a class="headerlink" href="#get-datastream" title="Permanent link">¶</a></h3> |
| <p>Use TableEnv's toDataStream function</p> |
| <div class="highlight"><pre><span></span><code><span class="n">DataStream</span><span class="o"><</span><span class="n">Row</span><span class="o">></span><span class="w"> </span><span class="n">geomStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sedona</span><span class="p">.</span><span class="na">toDataStream</span><span class="p">(</span><span class="n">geomTable</span><span class="p">)</span> |
| </code></pre></div> |
| <h3 id="retrieve-geometries">Retrieve Geometries<a class="headerlink" href="#retrieve-geometries" title="Permanent link">¶</a></h3> |
| <p>Then get the Geometry from each Row object using Map</p> |
| <div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">org.locationtech.jts.geom.Geometry</span><span class="p">;</span> |
| |
| <span class="n">DataStream</span><span class="o"><</span><span class="n">Geometry</span><span class="o">></span><span class="w"> </span><span class="n">geometries</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">geomStream</span><span class="p">.</span><span class="na">map</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">MapFunction</span><span class="o"><</span><span class="n">Row</span><span class="p">,</span><span class="w"> </span><span class="n">Geometry</span><span class="o">></span><span class="p">()</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="nd">@Override</span> |
| <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Geometry</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="n">Row</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">Geometry</span><span class="p">)</span><span class="w"> </span><span class="n">value</span><span class="p">.</span><span class="na">getField</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span> |
| <span class="w"> </span><span class="p">}</span> |
| <span class="w"> </span><span class="p">});</span> |
| <span class="n">geometries</span><span class="p">.</span><span class="na">print</span><span class="p">();</span> |
| </code></pre></div> |
| <p>The output will be</p> |
| <div class="highlight"><pre><span></span><code>14> POLYGON ((1.5 1.5, 1.5 2.5, 2.5 2.5, 2.5 1.5, 1.5 1.5)) |
| 2> POLYGON ((5.5 5.5, 5.5 6.5, 6.5 6.5, 6.5 5.5, 5.5 5.5)) |
| 5> POLYGON ((8.5 8.5, 8.5 9.5, 9.5 9.5, 9.5 8.5, 8.5 8.5)) |
| 16> POLYGON ((3.5 3.5, 3.5 4.5, 4.5 4.5, 4.5 3.5, 3.5 3.5)) |
| 12> POLYGON ((-0.5 -0.5, -0.5 0.5, 0.5 0.5, 0.5 -0.5, -0.5 -0.5)) |
| 13> POLYGON ((0.5 0.5, 0.5 1.5, 1.5 1.5, 1.5 0.5, 0.5 0.5)) |
| 15> POLYGON ((2.5 2.5, 2.5 3.5, 3.5 3.5, 3.5 2.5, 2.5 2.5)) |
| 3> POLYGON ((6.5 6.5, 6.5 7.5, 7.5 7.5, 7.5 6.5, 6.5 6.5)) |
| 1> POLYGON ((4.5 4.5, 4.5 5.5, 5.5 5.5, 5.5 4.5, 4.5 4.5)) |
| 4> POLYGON ((7.5 7.5, 7.5 8.5, 8.5 8.5, 8.5 7.5, 7.5 7.5)) |
| </code></pre></div> |
| <h3 id="store-non-spatial-attributes-in-geometries">Store non-spatial attributes in Geometries<a class="headerlink" href="#store-non-spatial-attributes-in-geometries" title="Permanent link">¶</a></h3> |
| <p>You can concatenate other non-spatial attributes and store them in Geometry's <code>userData</code> field, so you can recover them later on. <code>userData</code> field can be any object type.</p> |
| <div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">org.locationtech.jts.geom.Geometry</span><span class="p">;</span> |
| |
| <span class="n">DataStream</span><span class="o"><</span><span class="n">Geometry</span><span class="o">></span><span class="w"> </span><span class="n">geometries</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">geomStream</span><span class="p">.</span><span class="na">map</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">MapFunction</span><span class="o"><</span><span class="n">Row</span><span class="p">,</span><span class="w"> </span><span class="n">Geometry</span><span class="o">></span><span class="p">()</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="nd">@Override</span> |
| <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Geometry</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="n">Row</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="n">Geometry</span><span class="w"> </span><span class="n">geom</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">Geometry</span><span class="p">)</span><span class="w"> </span><span class="n">value</span><span class="p">.</span><span class="na">getField</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span> |
| <span class="w"> </span><span class="n">geom</span><span class="p">.</span><span class="na">setUserData</span><span class="p">(</span><span class="n">value</span><span class="p">.</span><span class="na">getField</span><span class="p">(</span><span class="mi">1</span><span class="p">));</span> |
| <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">geom</span><span class="p">;</span> |
| <span class="w"> </span><span class="p">}</span> |
| <span class="w"> </span><span class="p">});</span> |
| <span class="n">geometries</span><span class="p">.</span><span class="na">print</span><span class="p">();</span> |
| </code></pre></div> |
| <p>The <code>print</code> command will not print out <code>userData</code> field. But you can get it this way:</p> |
| <div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">org.locationtech.jts.geom.Geometry</span><span class="p">;</span> |
| |
| <span class="n">geometries</span><span class="p">.</span><span class="na">map</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">MapFunction</span><span class="o"><</span><span class="n">Geometry</span><span class="p">,</span><span class="w"> </span><span class="n">String</span><span class="o">></span><span class="p">()</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="nd">@Override</span> |
| <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="n">Geometry</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span> |
| <span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">String</span><span class="p">)</span><span class="w"> </span><span class="n">value</span><span class="p">.</span><span class="na">getUserData</span><span class="p">();</span> |
| <span class="w"> </span><span class="p">}</span> |
| <span class="w"> </span><span class="p">}).</span><span class="na">print</span><span class="p">();</span> |
| </code></pre></div> |
| <p>The output will be</p> |
| <div class="highlight"><pre><span></span><code>13> polygon9 |
| 6> polygon2 |
| 10> polygon6 |
| 11> polygon7 |
| 5> polygon1 |
| 12> polygon8 |
| 8> polygon4 |
| 4> polygon0 |
| 7> polygon3 |
| 9> polygon5 |
| </code></pre></div> |
| <h2 id="convert-spatial-datastream-to-spatial-table">Convert Spatial DataStream to Spatial Table<a class="headerlink" href="#convert-spatial-datastream-to-spatial-table" title="Permanent link">¶</a></h2> |
| <h3 id="create-geometries-using-sedona-formatutils">Create Geometries using Sedona FormatUtils<a class="headerlink" href="#create-geometries-using-sedona-formatutils" title="Permanent link">¶</a></h3> |
| <ul> |
| <li>Create a Geometry from a WKT string</li> |
| </ul> |
| <div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.sedona.common.utils.FormatUtils</span><span class="p">;</span> |
| <span class="kn">import</span><span class="w"> </span><span class="nn">org.locationtech.jts.geom.Geometry</span><span class="p">;</span> |
| |
| <span class="n">DataStream</span><span class="o"><</span><span class="n">Geometry</span><span class="o">></span><span class="w"> </span><span class="n">geometries</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">text</span><span class="p">.</span><span class="na">map</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">MapFunction</span><span class="o"><</span><span class="n">String</span><span class="p">,</span><span class="w"> </span><span class="n">Geometry</span><span class="o">></span><span class="p">()</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="nd">@Override</span> |
| <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Geometry</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span> |
| <span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="n">FormatUtils</span><span class="w"> </span><span class="n">formatUtils</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">FormatUtils</span><span class="p">(</span><span class="n">FileDataSplitter</span><span class="p">.</span><span class="na">WKT</span><span class="p">,</span><span class="w"> </span><span class="kc">false</span><span class="p">);</span> |
| <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">formatUtils</span><span class="p">.</span><span class="na">readGeometry</span><span class="p">(</span><span class="n">value</span><span class="p">);</span> |
| <span class="w"> </span><span class="p">}</span> |
| <span class="w"> </span><span class="p">})</span> |
| </code></pre></div> |
| <ul> |
| <li>Create a Point from a String <code>1.1, 2.2</code>. Use <code>,</code> as the delimiter.</li> |
| </ul> |
| <div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.sedona.common.utils.FormatUtils</span><span class="p">;</span> |
| <span class="kn">import</span><span class="w"> </span><span class="nn">org.locationtech.jts.geom.Geometry</span><span class="p">;</span> |
| |
| <span class="n">DataStream</span><span class="o"><</span><span class="n">Geometry</span><span class="o">></span><span class="w"> </span><span class="n">geometries</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">text</span><span class="p">.</span><span class="na">map</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">MapFunction</span><span class="o"><</span><span class="n">String</span><span class="p">,</span><span class="w"> </span><span class="n">Geometry</span><span class="o">></span><span class="p">()</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="nd">@Override</span> |
| <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Geometry</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span> |
| <span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="n">FormatUtils</span><span class="o"><</span><span class="n">Geometry</span><span class="o">></span><span class="w"> </span><span class="n">formatUtils</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">FormatUtils</span><span class="p">(</span><span class="s">","</span><span class="p">,</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="n">GeometryType</span><span class="p">.</span><span class="na">POINT</span><span class="p">);</span> |
| <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">formatUtils</span><span class="p">.</span><span class="na">readGeometry</span><span class="p">(</span><span class="n">value</span><span class="p">);</span> |
| <span class="w"> </span><span class="p">}</span> |
| <span class="w"> </span><span class="p">})</span> |
| </code></pre></div> |
| <ul> |
| <li>Create a Polygon from a String <code>1.1, 1.1, 10.1, 10.1</code>. This is a rectangle with (1.1, 1.1) and (10.1, 10.1) as their min/max corners.</li> |
| </ul> |
| <div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.sedona.common.utils.FormatUtils</span><span class="p">;</span> |
| <span class="kn">import</span><span class="w"> </span><span class="nn">org.locationtech.jts.geom.GeometryFactory</span><span class="p">;</span> |
| <span class="kn">import</span><span class="w"> </span><span class="nn">org.locationtech.jts.geom.Geometry</span><span class="p">;</span> |
| |
| <span class="n">DataStream</span><span class="o"><</span><span class="n">Geometry</span><span class="o">></span><span class="w"> </span><span class="n">geometries</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">text</span><span class="p">.</span><span class="na">map</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">MapFunction</span><span class="o"><</span><span class="n">String</span><span class="p">,</span><span class="w"> </span><span class="n">Geometry</span><span class="o">></span><span class="p">()</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="nd">@Override</span> |
| <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Geometry</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span> |
| <span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="c1">// Write some code to get four double type values: minX, minY, maxX, maxY</span> |
| <span class="w"> </span><span class="p">...</span> |
| <span class="w"> </span><span class="n">Coordinate</span><span class="o">[]</span><span class="w"> </span><span class="n">coordinates</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Coordinate</span><span class="o">[</span><span class="mi">5</span><span class="o">]</span><span class="p">;</span> |
| <span class="w"> </span><span class="n">coordinates</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Coordinate</span><span class="p">(</span><span class="n">minX</span><span class="p">,</span><span class="w"> </span><span class="n">minY</span><span class="p">);</span> |
| <span class="w"> </span><span class="n">coordinates</span><span class="o">[</span><span class="mi">1</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Coordinate</span><span class="p">(</span><span class="n">minX</span><span class="p">,</span><span class="w"> </span><span class="n">maxY</span><span class="p">);</span> |
| <span class="w"> </span><span class="n">coordinates</span><span class="o">[</span><span class="mi">2</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Coordinate</span><span class="p">(</span><span class="n">maxX</span><span class="p">,</span><span class="w"> </span><span class="n">maxY</span><span class="p">);</span> |
| <span class="w"> </span><span class="n">coordinates</span><span class="o">[</span><span class="mi">3</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Coordinate</span><span class="p">(</span><span class="n">maxX</span><span class="p">,</span><span class="w"> </span><span class="n">minY</span><span class="p">);</span> |
| <span class="w"> </span><span class="n">coordinates</span><span class="o">[</span><span class="mi">4</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">coordinates</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span><span class="p">;</span> |
| <span class="w"> </span><span class="n">GeometryFactory</span><span class="w"> </span><span class="n">geometryFactory</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">GeometryFactory</span><span class="p">();</span> |
| <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">geometryFactory</span><span class="p">.</span><span class="na">createPolygon</span><span class="p">(</span><span class="n">coordinates</span><span class="p">);</span> |
| <span class="w"> </span><span class="p">}</span> |
| <span class="w"> </span><span class="p">})</span> |
| </code></pre></div> |
| <h3 id="create-row-objects">Create Row objects<a class="headerlink" href="#create-row-objects" title="Permanent link">¶</a></h3> |
| <p>Put a geometry in a Flink Row to a <code>geomStream</code>. Note that you can put other attributes in Row as well. This example uses a constant value <code>myName</code> for all geometries.</p> |
| <div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.sedona.common.utils.FormatUtils</span><span class="p">;</span> |
| <span class="kn">import</span><span class="w"> </span><span class="nn">org.locationtech.jts.geom.Geometry</span><span class="p">;</span> |
| <span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.flink.types.Row</span><span class="p">;</span> |
| |
| <span class="n">DataStream</span><span class="o"><</span><span class="n">Row</span><span class="o">></span><span class="w"> </span><span class="n">geomStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">text</span><span class="p">.</span><span class="na">map</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">MapFunction</span><span class="o"><</span><span class="n">String</span><span class="p">,</span><span class="w"> </span><span class="n">Row</span><span class="o">></span><span class="p">()</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="nd">@Override</span> |
| <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Row</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span> |
| <span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="n">FormatUtils</span><span class="w"> </span><span class="n">formatUtils</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">FormatUtils</span><span class="p">(</span><span class="n">FileDataSplitter</span><span class="p">.</span><span class="na">WKT</span><span class="p">,</span><span class="w"> </span><span class="kc">false</span><span class="p">);</span> |
| <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Row</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="n">formatUtils</span><span class="p">.</span><span class="na">readGeometry</span><span class="p">(</span><span class="n">value</span><span class="p">),</span><span class="w"> </span><span class="s">"myName"</span><span class="p">);</span> |
| <span class="w"> </span><span class="p">}</span> |
| <span class="w"> </span><span class="p">})</span> |
| </code></pre></div> |
| <h3 id="get-spatial-table">Get Spatial Table<a class="headerlink" href="#get-spatial-table" title="Permanent link">¶</a></h3> |
| <p>Use TableEnv's fromDataStream function, with two column names <code>geom</code> and <code>geom_name</code>.</p> |
| <div class="highlight"><pre><span></span><code><span class="n">Table</span><span class="w"> </span><span class="n">geomTable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sedona</span><span class="p">.</span><span class="na">fromDataStream</span><span class="p">(</span><span class="n">geomStream</span><span class="p">,</span><span class="w"> </span><span class="s">"geom"</span><span class="p">,</span><span class="w"> </span><span class="s">"geom_name"</span><span class="p">)</span> |
| </code></pre></div> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <aside class="md-source-file"> |
| |
| |
| <span class="md-source-file__fact"> |
| <span class="md-icon" title="Last update"> |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> |
| </span> |
| <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime" title="February 27, 2026 06:37:29 UTC">February 27, 2026 06:37:29</span> |
| </span> |
| |
| |
| |
| |
| |
| </aside> |
| |
| |
| |
| |
| |
| |
| </article> |
| </div> |
| |
| |
| |
| |
| <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> |
| </div> |
| |
| <button type="button" class="md-top md-icon" data-md-component="top" hidden> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> |
| Back to top |
| </button> |
| |
| </main> |
| |
| <footer class="footer md-footer"> |
| <div class="container"> |
| |
| <div class="footer__top"> |
| |
| <div class="col-left"> |
| <img src="../../../image/footer/logo-footer.svg" alt="" class="footer-logo"> |
| </div> |
| |
| <div class="col-right"> |
| |
| |
| <div class="md-social"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://github.com/apache/sedona" target="_blank" rel="noopener" title="github.com" class="md-social__link"> |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> |
| </a> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://twitter.com/ApacheSedona" target="_blank" rel="noopener" title="twitter.com" class="md-social__link"> |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M459.4 151.7c.3 4.5.3 9.1.3 13.6 0 138.7-105.6 298.6-298.6 298.6-59.5 0-114.7-17.2-161.1-47.1 8.4 1 16.6 1.3 25.3 1.3 49.1 0 94.2-16.6 130.3-44.8-46.1-1-84.8-31.2-98.1-72.8 6.5 1 13 1.6 19.8 1.6 9.4 0 18.8-1.3 27.6-3.6-48.1-9.7-84.1-52-84.1-103v-1.3c14 7.8 30.2 12.7 47.4 13.3-28.3-18.8-46.8-51-46.8-87.4 0-19.5 5.2-37.4 14.3-53C87.4 130.8 165 172.4 252.1 176.9c-1.6-7.8-2.6-15.9-2.6-24C249.5 95.1 296.3 48 354.4 48c30.2 0 57.5 12.7 76.7 33.1 23.7-4.5 46.5-13.3 66.6-25.3-7.8 24.4-24.4 44.8-46.1 57.8 21.1-2.3 41.6-8.1 60.4-16.2-14.3 20.8-32.2 39.3-52.6 54.3"/></svg> |
| </a> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://discord.gg/9A3k5dEBsY" target="_blank" rel="noopener" title="discord.gg" class="md-social__link"> |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M492.5 69.8c-.2-.3-.4-.6-.8-.7-38.1-17.5-78.4-30-119.7-37.1-.4-.1-.8 0-1.1.1s-.6.4-.8.8c-5.5 9.9-10.5 20.2-14.9 30.6-44.6-6.8-89.9-6.8-134.4 0-4.5-10.5-9.5-20.7-15.1-30.6-.2-.3-.5-.6-.8-.8s-.7-.2-1.1-.2C162.5 39 122.2 51.5 84.1 69c-.3.1-.6.4-.8.7C7.1 183.5-13.8 294.6-3.6 404.2c0 .3.1.5.2.8s.3.4.5.6c44.4 32.9 94 58 146.8 74.2.4.1.8.1 1.1 0s.7-.4.9-.7c11.3-15.4 21.4-31.8 30-48.8.1-.2.2-.5.2-.8s0-.5-.1-.8-.2-.5-.4-.6-.4-.3-.7-.4c-15.8-6.1-31.2-13.4-45.9-21.9-.3-.2-.5-.4-.7-.6s-.3-.6-.3-.9 0-.6.2-.9.3-.5.6-.7c3.1-2.3 6.2-4.7 9.1-7.1.3-.2.6-.4.9-.4s.7 0 1 .1c96.2 43.9 200.4 43.9 295.5 0 .3-.1.7-.2 1-.2s.7.2.9.4c2.9 2.4 6 4.9 9.1 7.2.2.2.4.4.6.7s.2.6.2.9-.1.6-.3.9-.4.5-.6.6c-14.7 8.6-30 15.9-45.9 21.8-.2.1-.5.2-.7.4s-.3.4-.4.7-.1.5-.1.8.1.5.2.8c8.8 17 18.8 33.3 30 48.8.2.3.6.6.9.7s.8.1 1.1 0c52.9-16.2 102.6-41.3 147.1-74.2.2-.2.4-.4.5-.6s.2-.5.2-.8c12.3-126.8-20.5-236.9-86.9-334.5zm-302 267.7c-29 0-52.8-26.6-52.8-59.2s23.4-59.2 52.8-59.2c29.7 0 53.3 26.8 52.8 59.2 0 32.7-23.4 59.2-52.8 59.2m195.4 0c-29 0-52.8-26.6-52.8-59.2s23.4-59.2 52.8-59.2c29.7 0 53.3 26.8 52.8 59.2 0 32.7-23.2 59.2-52.8 59.2"/></svg> |
| </a> |
| |
| </div> |
| |
| </div> |
| </div> |
| |
| <hr class="footer-hr"></hr> |
| |
| <div class="footer__bot"> |
| <div class="md-copyright"> |
| |
| <div class="md-copyright__highlight">Copyright Β© 2026 The Apache Software Foundation. Apache Sedona, Sedona, Apache, the Apache feather logo, and the Apache Sedona project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners. Please visit <a href="https://www.apache.org/">Apache Software Foundation</a> for more details.<img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=f3e121f6-c909-4592-8be6-5bd345768cba" /><img referrerpolicy="no-referrer-when-downgrade" src="https://analytics.apache.org/matomo.php?idsite=74&rec=1" /></div> |
| |
| <div class="md-copyright__asf-links"> |
| <a href="https://www.apache.org/licenses/">License</a> | |
| <a href="https://www.apache.org/events/current-event">Events</a> | |
| <a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a> | |
| <a href="https://www.apache.org/foundation/thanks.html">Thanks</a> | |
| <a href="https://www.apache.org/security/">Security</a> | |
| <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a> | |
| <a href="https://www.apache.org/foundation/marks/">Trademarks</a> |
| </div> |
| |
| <div class="md-copyright__generator">Made with <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">Material for MkDocs</a> |
| </div> |
| |
| </div> |
| </div> |
| |
| </div> |
| </footer> |
| |
| </div> |
| <div class="md-dialog" data-md-component="dialog"> |
| <div class="md-dialog__inner md-typeset"></div> |
| </div> |
| |
| |
| |
| |
| |
| <script id="__config" type="application/json">{"annotate": null, "base": "../../..", "features": ["announce.dismiss", "content.code.copy", "content.action.edit", "search.highlight", "search.share", "search.suggest", "navigation.footer", "navigation.instant", "navigation.instant.prefetch", "navigation.tabs", "navigation.tabs.sticky", "navigation.top"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"default": ["latest"], "provider": "mike"}}</script> |
| |
| |
| <script src="../../../assets/javascripts/bundle.d7400e89.min.js"></script> |
| |
| <script src="../../../assets/javascripts/main.min.js"></script> |
| |
| |
| </body> |
| </html> |