You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sedona.apache.org by gi...@apache.org on 2025/09/19 07:30:11 UTC

(sedona-db) branch asf-site updated: Deployed ab9fcbb to 0.1.0 with MkDocs 1.6.1 and mike 2.1.3

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/sedona-db.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 17cc398  Deployed ab9fcbb to 0.1.0 with MkDocs 1.6.1 and mike 2.1.3
17cc398 is described below

commit 17cc3982429b0cd716aad0b146c03913f8bbc74c
Author: GitHub Actions <ac...@github.com>
AuthorDate: Fri Sep 19 07:30:07 2025 +0000

    Deployed ab9fcbb to 0.1.0 with MkDocs 1.6.1 and mike 2.1.3
---
 0.1.0/.gitignore                                   |    1 -
 0.1.0/404.html                                     |  218 ++-
 .../{development => contributors-guide}/index.html |  488 +++++-
 0.1.0/geopandas-interop.ipynb                      |  288 ++++
 0.1.0/geopandas-interop/index.html                 | 1222 +++++----------
 0.1.0/index.html                                   |  306 ++--
 0.1.0/objects.inv                                  |  Bin 410 -> 756 bytes
 0.1.0/overture-examples.ipynb                      |  472 ++++++
 0.1.0/overture-examples/index.html                 | 1570 +++++--------------
 0.1.0/programming-guide.ipynb                      |  400 +++++
 0.1.0/programming-guide/index.html                 | 1331 ++++-------------
 0.1.0/quickstart-python.ipynb                      |  414 +++++
 0.1.0/quickstart-python/index.html                 | 1458 ++++--------------
 0.1.0/reference/python/index.html                  | 1575 +++++++++++++++++---
 0.1.0/reference/read-parquet-files/index.html      | 1168 ---------------
 0.1.0/reference/sql-joins/index.html               |  204 ++-
 0.1.0/reference/sql/index.html                     |  186 ++-
 0.1.0/requirements.txt                             |   21 +-
 0.1.0/search/search_index.json                     |    2 +-
 0.1.0/sitemap.xml                                  |   44 +
 0.1.0/sitemap.xml.gz                               |  Bin 127 -> 314 bytes
 0.1.0/stylesheets/extra.css                        |   55 +-
 0.1.0/tags/index.html                              |  186 ++-
 0.1.0/working-with-parquet-files.ipynb             |  166 +++
 .../index.html                                     |  433 +++---
 25 files changed, 5960 insertions(+), 6248 deletions(-)

diff --git a/0.1.0/.gitignore b/0.1.0/.gitignore
deleted file mode 100644
index f59ec20..0000000
--- a/0.1.0/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
\ No newline at end of file
diff --git a/0.1.0/404.html b/0.1.0/404.html
index d06edfe..f72bc7c 100644
--- a/0.1.0/404.html
+++ b/0.1.0/404.html
@@ -13,7 +13,7 @@
       
       
       
-      <link rel="icon" href="/image/sedona_logo_symbol.png">
+      <link rel="icon" href="/sedonadb/latest/image/sedona_logo_symbol.png">
       <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.20">
     
     
@@ -22,10 +22,10 @@
       
     
     
-      <link rel="stylesheet" href="/assets/stylesheets/main.e53b48f4.min.css">
+      <link rel="stylesheet" href="/sedonadb/latest/assets/stylesheets/main.e53b48f4.min.css">
       
         
-        <link rel="stylesheet" href="/assets/stylesheets/palette.06af60db.min.css">
+        <link rel="stylesheet" href="/sedonadb/latest/assets/stylesheets/palette.06af60db.min.css">
       
       
 
@@ -44,11 +44,11 @@
       
     
     
-      <link rel="stylesheet" href="/assets/_mkdocstrings.css">
+      <link rel="stylesheet" href="/sedonadb/latest/assets/_mkdocstrings.css">
     
-      <link rel="stylesheet" href="/stylesheets/extra.css">
+      <link rel="stylesheet" href="/sedonadb/latest/stylesheets/extra.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>
+    <script>__md_scope=new URL("/sedonadb/latest",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>
     
       
 
@@ -87,9 +87,9 @@
 
 <header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
   <nav class="md-header__inner md-grid" aria-label="Header">
-    <a href="/." title="SedonaDB" class="md-header__button md-logo" aria-label="SedonaDB" data-md-component="logo">
+    <a href="/sedonadb/latest/." title="SedonaDB" class="md-header__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="/image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="/sedonadb/latest/image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     <label class="md-header__button md-icon" for="__drawer">
@@ -192,13 +192,32 @@
   
   
     <li class="md-tabs__item">
-      <a href="/." class="md-tabs__link">
+      <a href="/sedonadb/latest/." class="md-tabs__link">
         
   
   
     
   
-  Home
+  SedonaDB
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
+    <li class="md-tabs__item">
+      <a href="/sedonadb/latest/quickstart-python/" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Python Quickstart
 
       </a>
     </li>
@@ -213,7 +232,7 @@
     
     
       <li class="md-tabs__item">
-        <a href="/programming-guide/" class="md-tabs__link">
+        <a href="/sedonadb/latest/programming-guide/" class="md-tabs__link">
           
   
   
@@ -240,7 +259,7 @@
     
     
       <li class="md-tabs__item">
-        <a href="/reference/python/" class="md-tabs__link">
+        <a href="/sedonadb/latest/reference/python/" class="md-tabs__link">
           
   
   
@@ -279,6 +298,25 @@
   
   
   
+    <li class="md-tabs__item">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Community
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
     <li class="md-tabs__item">
       <a href="https://sedona.apache.org/latest/asf/asf/" class="md-tabs__link">
         
@@ -305,7 +343,7 @@
   
     
   
-  Return to Sedona Homepage
+  Sedona Homepage
 
       </a>
     </li>
@@ -340,9 +378,9 @@
 
 <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="SedonaDB" class="md-nav__button md-logo" aria-label="SedonaDB" data-md-component="logo">
+    <a href="/sedonadb/latest/." title="SedonaDB" class="md-nav__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="/image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="/sedonadb/latest/image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     SedonaDB
@@ -369,12 +407,34 @@
   
   
     <li class="md-nav__item">
-      <a href="/." class="md-nav__link">
+      <a href="/sedonadb/latest/." class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Home
+    SedonaDB
+    
+  </span>
+  
+
+      </a>
+    </li>
+  
+
+    
+      
+      
+  
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="/sedonadb/latest/quickstart-python/" class="md-nav__link">
+        
+  
+  
+  <span class="md-ellipsis">
+    Python Quickstart
     
   </span>
   
@@ -404,10 +464,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
         
           
-          <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
             
   
   
@@ -420,8 +480,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
-          <label class="md-nav__title" for="__nav_2">
+        <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>
             SedonaDB Guides
           </label>
@@ -434,12 +494,12 @@
   
   
     <li class="md-nav__item">
-      <a href="/programming-guide/" class="md-nav__link">
+      <a href="/sedonadb/latest/programming-guide/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    SedonaDB Guide
+    Working with Vector Data
     
   </span>
   
@@ -457,12 +517,12 @@
   
   
     <li class="md-nav__item">
-      <a href="/quickstart-cli/" class="md-nav__link">
+      <a href="/sedonadb/latest/geopandas-interop/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    CLI Quickstart
+    Working with GeoPandas
     
   </span>
   
@@ -480,12 +540,12 @@
   
   
     <li class="md-nav__item">
-      <a href="/quickstart-python/" class="md-nav__link">
+      <a href="/sedonadb/latest/overture-examples/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Python Quickstart
+    Working with Overture
     
   </span>
   
@@ -503,12 +563,35 @@
   
   
     <li class="md-nav__item">
-      <a href="/development/" class="md-nav__link">
+      <a href="/sedonadb/latest/working-with-parquet-files/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Development
+    Working with Parquet Files
+    
+  </span>
+  
+
+      </a>
+    </li>
+  
+
+              
+            
+              
+                
+  
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="/sedonadb/latest/contributors-guide/" class="md-nav__link">
+        
+  
+  
+  <span class="md-ellipsis">
+    Contributors Guide
     
   </span>
   
@@ -546,10 +629,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
         
           
-          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
             
   
   
@@ -562,8 +645,8 @@
             <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">
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4">
             <span class="md-nav__icon md-icon"></span>
             SedonaDB Reference
           </label>
@@ -589,10 +672,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1" >
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_1" >
         
           
-          <label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_1" id="__nav_4_1_label" tabindex="0">
             
   
   
@@ -605,8 +688,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
-          <label class="md-nav__title" for="__nav_3_1">
+        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_1_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4_1">
             <span class="md-nav__icon md-icon"></span>
             Python
           </label>
@@ -619,7 +702,7 @@
   
   
     <li class="md-nav__item">
-      <a href="/reference/python/" class="md-nav__link">
+      <a href="/sedonadb/latest/reference/python/" class="md-nav__link">
         
   
   
@@ -663,10 +746,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" >
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2" >
         
           
-          <label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0">
             
   
   
@@ -679,8 +762,8 @@
             <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">
+        <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>
             SQL
           </label>
@@ -693,7 +776,7 @@
   
   
     <li class="md-nav__item">
-      <a href="/reference/sql/" class="md-nav__link">
+      <a href="/sedonadb/latest/reference/sql/" class="md-nav__link">
         
   
   
@@ -716,7 +799,7 @@
   
   
     <li class="md-nav__item">
-      <a href="/reference/sql-joins/" class="md-nav__link">
+      <a href="/sedonadb/latest/reference/sql-joins/" class="md-nav__link">
         
   
   
@@ -732,19 +815,34 @@
 
               
             
+          </ul>
+        </nav>
+      
+    </li>
+  
+
               
-                
+            
+          </ul>
+        </nav>
+      
+    </li>
+  
+
+    
+      
+      
   
   
   
   
     <li class="md-nav__item">
-      <a href="/reference/read-parquet-files/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Read Parquet Files
+    Blog
     
   </span>
   
@@ -753,22 +851,6 @@
     </li>
   
 
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
     
       
       
@@ -777,12 +859,12 @@
   
   
     <li class="md-nav__item">
-      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Blog
+    Community
     
   </span>
   
@@ -826,7 +908,7 @@
   
   
   <span class="md-ellipsis">
-    Return to Sedona Homepage
+    Sedona Homepage
     
   </span>
   
@@ -913,10 +995,10 @@
     
     
       
-      <script id="__config" type="application/json">{"base": "/", "features": ["content.code.copy", "content.action.edit", "search.highlight", "search.share", "search.suggest", "navigation.footer", "navigation.instant", "navigation.top", "navigation.sections", "navigation.tabs", "navigation.tabs.sticky"], "search": "/assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search. [...]
+      <script id="__config" type="application/json">{"base": "/sedonadb/latest", "features": ["content.code.copy", "content.action.edit", "search.highlight", "search.share", "search.suggest", "navigation.footer", "navigation.instant", "navigation.top", "navigation.sections", "navigation.tabs", "navigation.tabs.sticky"], "search": "/sedonadb/latest/assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy" [...]
     
     
-      <script src="/assets/javascripts/bundle.f55a23d4.min.js"></script>
+      <script src="/sedonadb/latest/assets/javascripts/bundle.f55a23d4.min.js"></script>
       
     
   </body>
diff --git a/0.1.0/development/index.html b/0.1.0/contributors-guide/index.html
similarity index 73%
rename from 0.1.0/development/index.html
rename to 0.1.0/contributors-guide/index.html
index 59e8f45..2e15373 100644
--- a/0.1.0/development/index.html
+++ b/0.1.0/contributors-guide/index.html
@@ -7,8 +7,10 @@
       
       
       
+        <link rel="canonical" href="https://sedona.apache.org/sedonadb/latest/contributors-guide/">
       
-        <link rel="prev" href="../quickstart-python/">
+      
+        <link rel="prev" href="../working-with-parquet-files/">
       
       
         <link rel="next" href="../reference/python/">
@@ -19,7 +21,7 @@
     
     
       
-        <title>Development - SedonaDB</title>
+        <title>Contributors Guide - SedonaDB</title>
       
     
     
@@ -84,7 +86,7 @@
     <div data-md-component="skip">
       
         
-        <a href="#development" class="md-skip">
+        <a href="#contributors-guide" class="md-skip">
           Skip to content
         </a>
       
@@ -106,7 +108,7 @@
   <nav class="md-header__inner md-grid" aria-label="Header">
     <a href=".." title="SedonaDB" class="md-header__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="../image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="../image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     <label class="md-header__button md-icon" for="__drawer">
@@ -123,7 +125,7 @@
         <div class="md-header__topic" data-md-component="header-topic">
           <span class="md-ellipsis">
             
-              Development
+              Contributors Guide
             
           </span>
         </div>
@@ -215,7 +217,26 @@
   
     
   
-  Home
+  SedonaDB
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
+    <li class="md-tabs__item">
+      <a href="../quickstart-python/" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Python Quickstart
 
       </a>
     </li>
@@ -298,6 +319,25 @@
   
   
   
+    <li class="md-tabs__item">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Community
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
     <li class="md-tabs__item">
       <a href="https://sedona.apache.org/latest/asf/asf/" class="md-tabs__link">
         
@@ -324,7 +364,7 @@
   
     
   
-  Return to Sedona Homepage
+  Sedona Homepage
 
       </a>
     </li>
@@ -361,7 +401,7 @@
   <label class="md-nav__title" for="__drawer">
     <a href=".." title="SedonaDB" class="md-nav__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="../image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="../image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     SedonaDB
@@ -393,7 +433,29 @@
   
   
   <span class="md-ellipsis">
-    Home
+    SedonaDB
+    
+  </span>
+  
+
+      </a>
+    </li>
+  
+
+    
+      
+      
+  
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../quickstart-python/" class="md-nav__link">
+        
+  
+  
+  <span class="md-ellipsis">
+    Python Quickstart
     
   </span>
   
@@ -428,10 +490,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
         
           
-          <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="">
+          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
             
   
   
@@ -444,8 +506,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
-          <label class="md-nav__title" for="__nav_2">
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
+          <label class="md-nav__title" for="__nav_3">
             <span class="md-nav__icon md-icon"></span>
             SedonaDB Guides
           </label>
@@ -463,7 +525,7 @@
   
   
   <span class="md-ellipsis">
-    SedonaDB Guide
+    Working with Vector Data
     
   </span>
   
@@ -481,12 +543,12 @@
   
   
     <li class="md-nav__item">
-      <a href="../quickstart-cli/" class="md-nav__link">
+      <a href="../geopandas-interop/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    CLI Quickstart
+    Working with GeoPandas
     
   </span>
   
@@ -504,12 +566,35 @@
   
   
     <li class="md-nav__item">
-      <a href="../quickstart-python/" class="md-nav__link">
+      <a href="../overture-examples/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Python Quickstart
+    Working with Overture
+    
+  </span>
+  
+
+      </a>
+    </li>
+  
+
+              
+            
+              
+                
+  
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../working-with-parquet-files/" class="md-nav__link">
+        
+  
+  
+  <span class="md-ellipsis">
+    Working with Parquet Files
     
   </span>
   
@@ -541,7 +626,7 @@
   
   
   <span class="md-ellipsis">
-    Development
+    Contributors Guide
     
   </span>
   
@@ -554,7 +639,7 @@
   
   
   <span class="md-ellipsis">
-    Development
+    Contributors Guide
     
   </span>
   
@@ -576,6 +661,15 @@
     </label>
     <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
       
+        <li class="md-nav__item">
+  <a href="#fork-and-clone-the-repository" class="md-nav__link">
+    <span class="md-ellipsis">
+      Fork and clone the repository
+    </span>
+  </a>
+  
+</li>
+      
         <li class="md-nav__item">
   <a href="#rust" class="md-nav__link">
     <span class="md-ellipsis">
@@ -583,6 +677,30 @@
     </span>
   </a>
   
+    <nav class="md-nav" aria-label="Rust">
+      <ul class="md-nav__list">
+        
+          <li class="md-nav__item">
+  <a href="#test-data-setup" class="md-nav__link">
+    <span class="md-ellipsis">
+      Test data setup
+    </span>
+  </a>
+  
+</li>
+        
+          <li class="md-nav__item">
+  <a href="#system-dependencies" class="md-nav__link">
+    <span class="md-ellipsis">
+      System dependencies
+    </span>
+  </a>
+  
+</li>
+        
+      </ul>
+    </nav>
+  
 </li>
       
         <li class="md-nav__item">
@@ -601,6 +719,30 @@
     </span>
   </a>
   
+    <nav class="md-nav" aria-label="Debugging">
+      <ul class="md-nav__list">
+        
+          <li class="md-nav__item">
+  <a href="#rust_1" class="md-nav__link">
+    <span class="md-ellipsis">
+      Rust
+    </span>
+  </a>
+  
+</li>
+        
+          <li class="md-nav__item">
+  <a href="#python-c-and-c" class="md-nav__link">
+    <span class="md-ellipsis">
+      Python, C, and C++
+    </span>
+  </a>
+  
+</li>
+        
+      </ul>
+    </nav>
+  
 </li>
       
         <li class="md-nav__item">
@@ -610,6 +752,30 @@
     </span>
   </a>
   
+    <nav class="md-nav" aria-label="Low-level benchmarking">
+      <ul class="md-nav__list">
+        
+          <li class="md-nav__item">
+  <a href="#running-benchmarks" class="md-nav__link">
+    <span class="md-ellipsis">
+      Running benchmarks
+    </span>
+  </a>
+  
+</li>
+        
+          <li class="md-nav__item">
+  <a href="#managing-results" class="md-nav__link">
+    <span class="md-ellipsis">
+      Managing results
+    </span>
+  </a>
+  
+</li>
+        
+      </ul>
+    </nav>
+  
 </li>
       
         <li class="md-nav__item">
@@ -657,10 +823,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4">
         
           
-          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
             
   
   
@@ -673,8 +839,8 @@
             <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">
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4">
             <span class="md-nav__icon md-icon"></span>
             SedonaDB Reference
           </label>
@@ -700,10 +866,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_1">
         
           
-          <label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_1" id="__nav_4_1_label" tabindex="0">
             
   
   
@@ -716,8 +882,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
-          <label class="md-nav__title" for="__nav_3_1">
+        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_1_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4_1">
             <span class="md-nav__icon md-icon"></span>
             Python
           </label>
@@ -774,10 +940,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2">
         
           
-          <label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0">
             
   
   
@@ -790,8 +956,8 @@
             <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">
+        <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>
             SQL
           </label>
@@ -843,19 +1009,34 @@
 
               
             
+          </ul>
+        </nav>
+      
+    </li>
+  
+
               
-                
+            
+          </ul>
+        </nav>
+      
+    </li>
+  
+
+    
+      
+      
   
   
   
   
     <li class="md-nav__item">
-      <a href="../reference/read-parquet-files/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Read Parquet Files
+    Blog
     
   </span>
   
@@ -864,22 +1045,6 @@
     </li>
   
 
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
     
       
       
@@ -888,12 +1053,12 @@
   
   
     <li class="md-nav__item">
-      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Blog
+    Community
     
   </span>
   
@@ -937,7 +1102,7 @@
   
   
   <span class="md-ellipsis">
-    Return to Sedona Homepage
+    Sedona Homepage
     
   </span>
   
@@ -973,6 +1138,15 @@
     </label>
     <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
       
+        <li class="md-nav__item">
+  <a href="#fork-and-clone-the-repository" class="md-nav__link">
+    <span class="md-ellipsis">
+      Fork and clone the repository
+    </span>
+  </a>
+  
+</li>
+      
         <li class="md-nav__item">
   <a href="#rust" class="md-nav__link">
     <span class="md-ellipsis">
@@ -980,6 +1154,30 @@
     </span>
   </a>
   
+    <nav class="md-nav" aria-label="Rust">
+      <ul class="md-nav__list">
+        
+          <li class="md-nav__item">
+  <a href="#test-data-setup" class="md-nav__link">
+    <span class="md-ellipsis">
+      Test data setup
+    </span>
+  </a>
+  
+</li>
+        
+          <li class="md-nav__item">
+  <a href="#system-dependencies" class="md-nav__link">
+    <span class="md-ellipsis">
+      System dependencies
+    </span>
+  </a>
+  
+</li>
+        
+      </ul>
+    </nav>
+  
 </li>
       
         <li class="md-nav__item">
@@ -998,6 +1196,30 @@
     </span>
   </a>
   
+    <nav class="md-nav" aria-label="Debugging">
+      <ul class="md-nav__list">
+        
+          <li class="md-nav__item">
+  <a href="#rust_1" class="md-nav__link">
+    <span class="md-ellipsis">
+      Rust
+    </span>
+  </a>
+  
+</li>
+        
+          <li class="md-nav__item">
+  <a href="#python-c-and-c" class="md-nav__link">
+    <span class="md-ellipsis">
+      Python, C, and C++
+    </span>
+  </a>
+  
+</li>
+        
+      </ul>
+    </nav>
+  
 </li>
       
         <li class="md-nav__item">
@@ -1007,6 +1229,30 @@
     </span>
   </a>
   
+    <nav class="md-nav" aria-label="Low-level benchmarking">
+      <ul class="md-nav__list">
+        
+          <li class="md-nav__item">
+  <a href="#running-benchmarks" class="md-nav__link">
+    <span class="md-ellipsis">
+      Running benchmarks
+    </span>
+  </a>
+  
+</li>
+        
+          <li class="md-nav__item">
+  <a href="#managing-results" class="md-nav__link">
+    <span class="md-ellipsis">
+      Managing results
+    </span>
+  </a>
+  
+</li>
+        
+      </ul>
+    </nav>
+  
 </li>
       
         <li class="md-nav__item">
@@ -1034,7 +1280,7 @@
 
 
   
-    <a href="https://github.com/apache/sedona-db/edit/master/docs/development.md" title="Edit this page" class="md-content__button md-icon" rel="edit">
+    <a href="https://github.com/apache/sedona-db/blob/main/docs/contributors-guide.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"></path></svg>
     </a>
@@ -1059,12 +1305,67 @@
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
---><h1 id="development">Development<a class="headerlink" href="#development" title="Permanent link">¶</a></h1>
+--><h1 id="contributors-guide">Contributors Guide<a class="headerlink" href="#contributors-guide" title="Permanent link">¶</a></h1>
+<p>This guide details how to set up your development environment as a SedonaDB Contributor.</p>
+<h2 id="fork-and-clone-the-repository">Fork and clone the repository<a class="headerlink" href="#fork-and-clone-the-repository" title="Permanent link">¶</a></h2>
+<p>Your first step is to create a personal copy of the repository and connect it to the main project.</p>
+<ol>
+<li>
+<p>Fork the repository</p>
+<ul>
+<li>Navigate to the official <a href="https://github.com/apache/sedona-db">Apache SedonaDB GitHub repository</a>.</li>
+<li>Click the <strong>Fork</strong> button in the top-right corner. This creates a complete copy of the project in your own GitHub account.</li>
+</ul>
+</li>
+<li>
+<p>Clone your fork</p>
+<ul>
+<li>Next, clone your newly created fork to your local machine. This command downloads the repository into a new folder named <code>sedona-db</code>.</li>
+<li>
+<p>Replace <code>YourUsername</code> with your actual GitHub username.</p>
+<div class="highlight"><pre><span></span><code>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/YourUsername/sedona-db.git
+<span class="nb">cd</span><span class="w"> </span>sedona-db
+</code></pre></div>
+</li>
+</ul>
+</li>
+<li>
+<p>Configure the remotes</p>
+<ul>
+<li>Your local repository needs to know where the original project is so you can pull in updates. You'll add a remote link, traditionally named <strong><code>upstream</code></strong>, to the main Apache SedonaDB repository.</li>
+<li>
+<p>Your fork is automatically configured as the <strong><code>origin</code></strong> remote.</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># Add the main repository as the "upstream" remote</span>
+git<span class="w"> </span>remote<span class="w"> </span>add<span class="w"> </span>upstream<span class="w"> </span>https://github.com/apache/sedona-db.git
+</code></pre></div>
+</li>
+</ul>
+</li>
+<li>
+<p>Verify the configuration</p>
+<ul>
+<li>
+<p>Run the following command to verify that you have two remotes configured correctly: <code>origin</code> (your fork) and <code>upstream</code> (the main repository).</p>
+<div class="highlight"><pre><span></span><code>git<span class="w"> </span>remote<span class="w"> </span>-v
+</code></pre></div>
+</li>
+<li>
+<p>The output should look like this:</p>
+<div class="highlight"><pre><span></span><code>origin<span class="w">    </span>https://github.com/YourUsername/sedona-db.git<span class="w"> </span><span class="o">(</span>fetch<span class="o">)</span>
+origin<span class="w">    </span>https://github.com/YourUsername/sedona-db.git<span class="w"> </span><span class="o">(</span>push<span class="o">)</span>
+upstream<span class="w">  </span>https://github.com/apache/sedona-db.git<span class="w"> </span><span class="o">(</span>fetch<span class="o">)</span>
+upstream<span class="w">  </span>https://github.com/apache/sedona-db.git<span class="w"> </span><span class="o">(</span>push<span class="o">)</span>
+</code></pre></div>
+</li>
+</ul>
+</li>
+</ol>
 <h2 id="rust">Rust<a class="headerlink" href="#rust" title="Permanent link">¶</a></h2>
-<p>SedonaDB is written and Rust and is a standard <code>cargo</code> workspace. You can
-install a recent version of the Rust compiler and cargo from
-<a href="https://rustup.rs/">rustup.rs</a> and run tests using <code>cargo test</code>. A local
-development version of the CLI can be run with <code>cargo run --bin sedona-cli</code>.</p>
+<p>SedonaDB is written in Rust and is a standard <code>cargo</code> workspace.</p>
+<p>You can install a recent version of the Rust compiler and cargo from
+<a href="https://rustup.rs/">rustup.rs</a> and run tests using <code>cargo test</code>.</p>
+<p>A local development version of the CLI can be run with <code>cargo run --bin sedona-cli</code>.</p>
+<h3 id="test-data-setup">Test data setup<a class="headerlink" href="#test-data-setup" title="Permanent link">¶</a></h3>
 <p>Some tests require submodules that contain test data or pinned versions of
 external dependencies. These submodules can be initialized with:</p>
 <div class="highlight"><pre><span></span><code>git<span class="w"> </span>submodule<span class="w"> </span>init
@@ -1073,19 +1374,27 @@ git<span class="w"> </span>submodule<span class="w"> </span>update<span class="w
 <p>Additionally, some of the data required in the tests can be downloaded by running the following script.</p>
 <div class="highlight"><pre><span></span><code>python<span class="w"> </span>submodules/download-assets.py
 </code></pre></div>
+<h3 id="system-dependencies">System dependencies<a class="headerlink" href="#system-dependencies" title="Permanent link">¶</a></h3>
 <p>Some crates wrap external native libraries and require system dependencies
-to build. At this time the only crate that requires this is the sedona-s2geography
+to build.</p>
+<div class="admonition note">
+<p class="admonition-title"><code>sedona-s2geography</code></p>
+<p>At this time, the only crate that requires this is the <code>sedona-s2geography</code>
 crate, which requires <a href="https://cmake.org">CMake</a>,
-<a href="https://github.com/abseil/abseil-cpp">Abseil</a> and OpenSSL. These can be installed
-on MacOS with <a href="https://brew.sh">Homebrew</a>:</p>
+<a href="https://github.com/abseil/abseil-cpp">Abseil</a> and OpenSSL.</p>
+</div>
+<h4 id="macos">macOS<a class="headerlink" href="#macos" title="Permanent link">¶</a></h4>
+<p>These can be installed on macOS with <a href="https://brew.sh">Homebrew</a>:</p>
 <div class="highlight"><pre><span></span><code>brew<span class="w"> </span>install<span class="w"> </span>abseil<span class="w"> </span>openssl<span class="w"> </span>cmake<span class="w"> </span>geos
 </code></pre></div>
+<h4 id="linux-and-windows">Linux and Windows<a class="headerlink" href="#linux-and-windows" title="Permanent link">¶</a></h4>
 <p>On Linux and Windows, it is recommended to use <a href="https://github.com/microsoft/vcpkg">vcpkg</a>
 to provide external dependencies. This can be done by setting the <code>CMAKE_TOOLCHAIN_FILE</code>
 environment variable:</p>
 <div class="highlight"><pre><span></span><code><span class="nb">export</span><span class="w"> </span><span class="nv">CMAKE_TOOLCHAIN_FILE</span><span class="o">=</span>/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake
 </code></pre></div>
-<p>When using VSCode, it may be necessary to set this environment variable in settings.json
+<h4 id="visual-studio-code-vscode-configuration">Visual Studio Code (VSCode) Configuration<a class="headerlink" href="#visual-studio-code-vscode-configuration" title="Permanent link">¶</a></h4>
+<p>When using VSCode, it may be necessary to set this environment variable in <code>settings.json</code>
 such that it can be found by rust-analyzer when running build/run tasks:</p>
 <div class="highlight"><pre><span></span><code><span class="p">{</span>
 <span class="w">    </span><span class="nt">"rust-analyzer.runnables.extraEnv"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
@@ -1098,8 +1407,8 @@ such that it can be found by rust-analyzer when running build/run tasks:</p>
 </code></pre></div>
 <h2 id="python">Python<a class="headerlink" href="#python" title="Permanent link">¶</a></h2>
 <p>Python bindings to SedonaDB are built with the <a href="https://www.maturin.rs">Maturin</a> build
-backend. Installing a development version of the main Python bindings the first time
-can be done with:</p>
+backend.</p>
+<p>To install a development version of the main Python bindings for the first time, run the following commands:</p>
 <div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>python/sedonadb
 pip<span class="w"> </span>install<span class="w"> </span>-e<span class="w"> </span><span class="s2">".[test]"</span>
 </code></pre></div>
@@ -1108,12 +1417,14 @@ native component with:</p>
 <div class="highlight"><pre><span></span><code>maturin<span class="w"> </span>develop
 </code></pre></div>
 <h2 id="debugging">Debugging<a class="headerlink" href="#debugging" title="Permanent link">¶</a></h2>
+<h3 id="rust_1">Rust<a class="headerlink" href="#rust_1" title="Permanent link">¶</a></h3>
 <p>Debugging Rust code is most easily done by writing or finding a test that triggers
 the desired behavior and running it using the <em>Debug</em> selection in
 <a href="https://code.visualstudio.com/">VSCode</a> with the
 <a href="https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer">rust-analyzer</a>
-extension. Rust code can also debugged using the CLI by finding the <code>main()</code> function in
-sedona-cli and choosing the <em>Debug</em> run option.</p>
+extension. Rust code can also be debugged using the CLI by finding the <code>main()</code> function in
+<code>sedona-cli</code> and choosing the <em>Debug</em> run option.</p>
+<h3 id="python-c-and-c">Python, C, and C++<a class="headerlink" href="#python-c-and-c" title="Permanent link">¶</a></h3>
 <p>Installation of Python bindings with <code>maturin develop</code> ensures a debug-friendly build for
 debugging Rust, Python, or C/C++ code. Python code can be debugged using breakpoints in
 any IDE that supports debugging an editable Python package installation (e.g., VSCode);
@@ -1126,7 +1437,8 @@ In general, there is at least one benchmark for every implementation of a functi
 (some functions have more than one implementation provided by different libraries),
 and a few other benchmarks for low-level iteration where work was done to optimize
 specific cases.</p>
-<p>Briefly, benchmarks for a specific crate can be run with <code>cargo bench</code>:</p>
+<h3 id="running-benchmarks">Running benchmarks<a class="headerlink" href="#running-benchmarks" title="Permanent link">¶</a></h3>
+<p>Benchmarks for a specific crate can be run with <code>cargo bench</code>:</p>
 <div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>rust/sedona-geo
 cargo<span class="w"> </span>bench
 </code></pre></div>
@@ -1135,24 +1447,42 @@ from the workspace or a specific crate (although the output is usually easier
 to read for a specific crate).</p>
 <div class="highlight"><pre><span></span><code>cargo<span class="w"> </span>bench<span class="w"> </span>--<span class="w"> </span>st_area
 </code></pre></div>
+<h3 id="managing-results">Managing results<a class="headerlink" href="#managing-results" title="Permanent link">¶</a></h3>
 <p>By default, criterion saves the last run and will report the difference between the
 current benchmark and the last time it was run (although there are options to
-save and load various baselines). A report containing the last run for any
-benchmark that was ever run can be opened with:</p>
-<div class="highlight"><pre><span></span><code><span class="c1"># MacOS</span>
-open<span class="w"> </span>target/criterion/report/index.html
-<span class="c1"># Ubuntu</span>
-xdg-open<span class="w"> </span>target/criterion/report/index.html
+save and load various baselines).</p>
+<p>A report of the latest results for all benchmarks can be opened with the following command:</p>
+<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio"><input id="__tabbed_1_2" name="__tabbed_1" type="radio"><div class="tabbed-labels"><label for="__tabbed_1_1">macOS</label><label for="__tabbed_1_2">Ubuntu</label></div>
+<div class="tabbed-content">
+<div class="tabbed-block">
+<div class="highlight"><pre><span></span><code>open<span class="w"> </span>target/criterion/report/index.html
 </code></pre></div>
+</div>
+<div class="tabbed-block">
+<div class="highlight"><pre><span></span><code>xdg-open<span class="w"> </span>target/criterion/report/index.html
+</code></pre></div>
+</div>
+</div>
+</div>
 <p>All previous saved benchmark runs can be cleared with:</p>
 <div class="highlight"><pre><span></span><code>rm<span class="w"> </span>-rf<span class="w"> </span>target/criterion
 </code></pre></div>
 <h2 id="documentation">Documentation<a class="headerlink" href="#documentation" title="Permanent link">¶</a></h2>
-<ul>
+<p>To contribute to the SedonaDB documentation:</p>
+<ol>
+<li>Clone the repository and create a fork.</li>
+<li>Install the Documentation dependencies:
+    <div class="highlight"><pre><span></span><code>pip<span class="w"> </span>install<span class="w"> </span>-r<span class="w"> </span>docs/requirements.txt
+</code></pre></div></li>
+<li>Make your changes to the documentation files.</li>
+<li>Preview your changes locally using these commands:<ul>
 <li><code>mkdocs serve</code> - Start the live-reloading docs server.</li>
 <li><code>mkdocs build</code> - Build the documentation site.</li>
 <li><code>mkdocs -h</code> - Print help message and exit.</li>
 </ul>
+</li>
+<li>Push your changes and open a pull request.</li>
+</ol>
 
 
 
@@ -1173,7 +1503,7 @@ xdg-open<span class="w"> </span>target/criterion/report/index.html
     <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"></path></svg>
     </span>
-    <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime" title="September 11, 2025 01:49:37 UTC">September 11, 2025 01:49:37</span>
+    <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime" title="September 19, 2025 07:13:30 UTC">September 19, 2025 07:13:30</span>
   </span>
 
     
@@ -1209,7 +1539,7 @@ xdg-open<span class="w"> </span>target/criterion/report/index.html
       <nav class="md-footer__inner md-grid" aria-label="Footer">
         
           
-          <a href="../quickstart-python/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Python Quickstart">
+          <a href="../working-with-parquet-files/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Working with Parquet Files">
             <div class="md-footer__button md-icon">
               
               <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"></path></svg>
@@ -1219,7 +1549,7 @@ xdg-open<span class="w"> </span>target/criterion/report/index.html
                 Previous
               </span>
               <div class="md-ellipsis">
-                Python Quickstart
+                Working with Parquet Files
               </div>
             </div>
           </a>
diff --git a/0.1.0/geopandas-interop.ipynb b/0.1.0/geopandas-interop.ipynb
new file mode 100644
index 0000000..0559c35
--- /dev/null
+++ b/0.1.0/geopandas-interop.ipynb
@@ -0,0 +1,288 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "caa5f2d5-28bb-4ce9-8a11-92646b3a9f6c",
+   "metadata": {},
+   "source": [
+    "<!---\n",
+    "  Licensed to the Apache Software Foundation (ASF) under one\n",
+    "  or more contributor license agreements.  See the NOTICE file\n",
+    "  distributed with this work for additional information\n",
+    "  regarding copyright ownership.  The ASF licenses this file\n",
+    "  to you under the Apache License, Version 2.0 (the\n",
+    "  \"License\"); you may not use this file except in compliance\n",
+    "  with the License.  You may obtain a copy of the License at\n",
+    "\n",
+    "    http://www.apache.org/licenses/LICENSE-2.0\n",
+    "\n",
+    "  Unless required by applicable law or agreed to in writing,\n",
+    "  software distributed under the License is distributed on an\n",
+    "  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n",
+    "  KIND, either express or implied.  See the License for the\n",
+    "  specific language governing permissions and limitations\n",
+    "  under the License.\n",
+    "-->\n",
+    "\n",
+    "# GeoPandas interoperability\n",
+    "\n",
+    "This example shows how to read a GeoJSON file with GeoPandas and then convert the GeoPandas DataFrame to a SedonaDB DataFrame.\n",
+    "\n",
+    "Any file type that can be read by GeoPandas can also be read into a SedonaDB DataFrame!"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "0434bead-2628-4844-a3f6-2f9c15a21899",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import sedona.db\n",
+    "import geopandas as gpd\n",
+    "\n",
+    "sd = sedona.db.connect()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "618b5d1d-ac2b-4786-ae5b-0d10efd6a8d4",
+   "metadata": {},
+   "source": [
+    "### Read a GeoJSON file with GeoPandas"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "2691bd24-9b2d-4cf9-958d-4ef01d967cb3",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "gdf = gpd.read_file(\"some_data.json\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "id": "cd367a73-acd3-41cf-b892-7d863c370d5f",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>prop0</th>\n",
+       "      <th>prop1</th>\n",
+       "      <th>geometry</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>value0</td>\n",
+       "      <td>None</td>\n",
+       "      <td>POINT (102 0.5)</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>value1</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>LINESTRING (102 0, 103 1, 104 0, 105 1)</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>value2</td>\n",
+       "      <td>{ \"this\": \"that\" }</td>\n",
+       "      <td>POLYGON ((100 0, 101 0, 101 1, 100 1, 100 0))</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "    prop0               prop1                                       geometry\n",
+       "0  value0                None                                POINT (102 0.5)\n",
+       "1  value1                 0.0        LINESTRING (102 0, 103 1, 104 0, 105 1)\n",
+       "2  value2  { \"this\": \"that\" }  POLYGON ((100 0, 101 0, 101 1, 100 1, 100 0))"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "gdf"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "id": "454e08a3-de65-4151-9d29-5d5ee8cf31d3",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "<class 'geopandas.geodataframe.GeoDataFrame'>\n",
+      "RangeIndex: 3 entries, 0 to 2\n",
+      "Data columns (total 3 columns):\n",
+      " #   Column    Non-Null Count  Dtype   \n",
+      "---  ------    --------------  -----   \n",
+      " 0   prop0     3 non-null      object  \n",
+      " 1   prop1     2 non-null      object  \n",
+      " 2   geometry  3 non-null      geometry\n",
+      "dtypes: geometry(1), object(2)\n",
+      "memory usage: 204.0+ bytes\n"
+     ]
+    }
+   ],
+   "source": [
+    "gdf.info()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "a5837268-1620-4b2b-bf37-cb6e282daedf",
+   "metadata": {},
+   "source": [
+    "### Convert the GeoPandas DataFrame to a SedonaDB DataFrame"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "id": "385f6333-411d-4d1f-a09b-8816cccceabc",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df = sd.create_data_frame(gdf)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "id": "186059ae-4cf8-48ec-878a-71e7a39ac07e",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌────────┬────────────────────┬──────────────────────────────────────────┐\n",
+      "│  prop0 ┆        prop1       ┆                 geometry                 │\n",
+      "│  utf8  ┆        utf8        ┆                 geometry                 │\n",
+      "╞════════╪════════════════════╪══════════════════════════════════════════╡\n",
+      "│ value0 ┆                    ┆ POINT(102 0.5)                           │\n",
+      "├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ value1 ┆ 0.0                ┆ LINESTRING(102 0,103 1,104 0,105 1)      │\n",
+      "├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ value2 ┆ { \"this\": \"that\" } ┆ POLYGON((100 0,101 0,101 1,100 1,100 0)) │\n",
+      "└────────┴────────────────────┴──────────────────────────────────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "df.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "2f09cbbe-86b5-4eb4-b920-1b12f018d1a6",
+   "metadata": {},
+   "source": [
+    "## Read a FlatGeobuf file\n",
+    "\n",
+    "This code demonstrates how to read a FlatGeobuf file with GeoPandas and then convert it to a SedonaDB DataFrame."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "965ae9f3-293b-4e8e-92bf-1359a482bca3",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "path = \"https://raw.githubusercontent.com/geoarrow/geoarrow-data/v0.2.0/natural-earth/files/natural-earth_cities.fgb\"\n",
+    "gdf = gpd.read_file(path)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "372c937f-da36-4e4b-98da-347890318a80",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df = sd.create_data_frame(gdf)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "d99f4474-da3a-4834-9675-184a667b2a90",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌──────────────┬──────────────────────────────┐\n",
+      "│     name     ┆           geometry           │\n",
+      "│     utf8     ┆           geometry           │\n",
+      "╞══════════════╪══════════════════════════════╡\n",
+      "│ Vatican City ┆ POINT(12.4533865 41.9032822) │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ San Marino   ┆ POINT(12.4417702 43.9360958) │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Vaduz        ┆ POINT(9.5166695 47.1337238)  │\n",
+      "└──────────────┴──────────────────────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "df.show(3)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.12.4"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/0.1.0/geopandas-interop/index.html b/0.1.0/geopandas-interop/index.html
index 6f68667..8f68325 100644
--- a/0.1.0/geopandas-interop/index.html
+++ b/0.1.0/geopandas-interop/index.html
@@ -7,15 +7,21 @@
       
       
       
+        <link rel="canonical" href="https://sedona.apache.org/sedonadb/latest/geopandas-interop/">
       
       
+        <link rel="prev" href="../programming-guide/">
+      
+      
+        <link rel="next" href="../overture-examples/">
+      
       
       <link rel="icon" href="../image/sedona_logo_symbol.png">
       <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.20">
     
     
       
-        <title>GeoPandas interoperability - SedonaDB</title>
+        <title>Working with GeoPandas - SedonaDB</title>
       
     
     
@@ -102,7 +108,7 @@
   <nav class="md-header__inner md-grid" aria-label="Header">
     <a href=".." title="SedonaDB" class="md-header__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="../image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="../image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     <label class="md-header__button md-icon" for="__drawer">
@@ -119,7 +125,7 @@
         <div class="md-header__topic" data-md-component="header-topic">
           <span class="md-ellipsis">
             
-              GeoPandas interoperability
+              Working with GeoPandas
             
           </span>
         </div>
@@ -211,7 +217,26 @@
   
     
   
-  Home
+  SedonaDB
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
+    <li class="md-tabs__item">
+      <a href="../quickstart-python/" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Python Quickstart
 
       </a>
     </li>
@@ -222,10 +247,12 @@
   
   
   
+    
+  
   
     
     
-      <li class="md-tabs__item">
+      <li class="md-tabs__item md-tabs__item--active">
         <a href="../programming-guide/" class="md-tabs__link">
           
   
@@ -292,6 +319,25 @@
   
   
   
+    <li class="md-tabs__item">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Community
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
     <li class="md-tabs__item">
       <a href="https://sedona.apache.org/latest/asf/asf/" class="md-tabs__link">
         
@@ -318,7 +364,7 @@
   
     
   
-  Return to Sedona Homepage
+  Sedona Homepage
 
       </a>
     </li>
@@ -355,7 +401,7 @@
   <label class="md-nav__title" for="__drawer">
     <a href=".." title="SedonaDB" class="md-nav__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="../image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="../image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     SedonaDB
@@ -387,7 +433,29 @@
   
   
   <span class="md-ellipsis">
-    Home
+    SedonaDB
+    
+  </span>
+  
+
+      </a>
+    </li>
+  
+
+    
+      
+      
+  
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../quickstart-python/" class="md-nav__link">
+        
+  
+  
+  <span class="md-ellipsis">
+    Python Quickstart
     
   </span>
   
@@ -401,6 +469,8 @@
       
   
   
+    
+  
   
   
     
@@ -408,19 +478,22 @@
     
     
       
+        
+        
+      
       
         
       
     
     
-    <li class="md-nav__item md-nav__item--nested">
+    <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_2">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
         
           
-          <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
             
   
   
@@ -433,8 +506,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
-          <label class="md-nav__title" for="__nav_2">
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
+          <label class="md-nav__title" for="__nav_3">
             <span class="md-nav__icon md-icon"></span>
             SedonaDB Guides
           </label>
@@ -452,12 +525,104 @@
   
   
   <span class="md-ellipsis">
-    SedonaDB Guide
+    Working with Vector Data
+    
+  </span>
+  
+
+      </a>
+    </li>
+  
+
+              
+            
+              
+                
+  
+  
+    
+  
+  
+  
+    <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">
+    Working with GeoPandas
+    
+  </span>
+  
+
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <a href="./" class="md-nav__link md-nav__link--active">
+        
+  
+  
+  <span class="md-ellipsis">
+    Working with GeoPandas
     
   </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="#read-a-geojson-file-with-geopandas" class="md-nav__link">
+    <span class="md-ellipsis">
+      Read a GeoJSON file with GeoPandas
+    </span>
+  </a>
+  
+</li>
+      
+        <li class="md-nav__item">
+  <a href="#convert-the-geopandas-dataframe-to-a-sedonadb-dataframe" class="md-nav__link">
+    <span class="md-ellipsis">
+      Convert the GeoPandas DataFrame to a SedonaDB DataFrame
+    </span>
+  </a>
+  
+</li>
+      
+        <li class="md-nav__item">
+  <a href="#read-a-flatgeobuf-file" class="md-nav__link">
+    <span class="md-ellipsis">
+      Read a FlatGeobuf file
+    </span>
+  </a>
+  
+</li>
+      
+    </ul>
+  
+</nav>
+      
     </li>
   
 
@@ -470,12 +635,12 @@
   
   
     <li class="md-nav__item">
-      <a href="../quickstart-cli/" class="md-nav__link">
+      <a href="../overture-examples/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    CLI Quickstart
+    Working with Overture
     
   </span>
   
@@ -493,12 +658,12 @@
   
   
     <li class="md-nav__item">
-      <a href="../quickstart-python/" class="md-nav__link">
+      <a href="../working-with-parquet-files/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Python Quickstart
+    Working with Parquet Files
     
   </span>
   
@@ -516,12 +681,12 @@
   
   
     <li class="md-nav__item">
-      <a href="../development/" class="md-nav__link">
+      <a href="../contributors-guide/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Development
+    Contributors Guide
     
   </span>
   
@@ -559,10 +724,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4">
         
           
-          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
             
   
   
@@ -575,8 +740,8 @@
             <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">
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4">
             <span class="md-nav__icon md-icon"></span>
             SedonaDB Reference
           </label>
@@ -602,10 +767,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_1">
         
           
-          <label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_1" id="__nav_4_1_label" tabindex="0">
             
   
   
@@ -618,8 +783,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
-          <label class="md-nav__title" for="__nav_3_1">
+        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_1_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4_1">
             <span class="md-nav__icon md-icon"></span>
             Python
           </label>
@@ -676,10 +841,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2">
         
           
-          <label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0">
             
   
   
@@ -692,8 +857,8 @@
             <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">
+        <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>
             SQL
           </label>
@@ -745,19 +910,34 @@
 
               
             
+          </ul>
+        </nav>
+      
+    </li>
+  
+
               
-                
+            
+          </ul>
+        </nav>
+      
+    </li>
+  
+
+    
+      
+      
   
   
   
   
     <li class="md-nav__item">
-      <a href="../reference/read-parquet-files/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Read Parquet Files
+    Blog
     
   </span>
   
@@ -766,22 +946,6 @@
     </li>
   
 
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
     
       
       
@@ -790,12 +954,12 @@
   
   
     <li class="md-nav__item">
-      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Blog
+    Community
     
   </span>
   
@@ -839,7 +1003,7 @@
   
   
   <span class="md-ellipsis">
-    Return to Sedona Homepage
+    Sedona Homepage
     
   </span>
   
@@ -918,7 +1082,7 @@
 
 
   
-    <a href="https://github.com/apache/sedona-db/edit/master/docs/geopandas-interop.ipynb" title="Edit this page" class="md-content__button md-icon" rel="edit">
+    <a href="https://github.com/apache/sedona-db/blob/main/docs/geopandas-interop.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"></path></svg>
     </a>
@@ -926,559 +1090,38 @@
   
 
 
-<script>
-(function (global, factory) {
-    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-    typeof define === 'function' && define.amd ? define(factory) :
-    (global = global || self, global.ClipboardCopyElement = factory());
-  }(this, function () { 'use strict';
-
-    function createNode(text) {
-      const node = document.createElement('pre');
-      node.style.width = '1px';
-      node.style.height = '1px';
-      node.style.position = 'fixed';
-      node.style.top = '5px';
-      node.textContent = text;
-      return node;
-    }
-
-    function copyNode(node) {
-      if ('clipboard' in navigator) {
-        // eslint-disable-next-line flowtype/no-flow-fix-me-comments
-        // $FlowFixMe Clipboard is not defined in Flow yet.
-        return navigator.clipboard.writeText(node.textContent);
-      }
-
-      const selection = getSelection();
-
-      if (selection == null) {
-        return Promise.reject(new Error());
-      }
-
-      selection.removeAllRanges();
-      const range = document.createRange();
-      range.selectNodeContents(node);
-      selection.addRange(range);
-      document.execCommand('copy');
-      selection.removeAllRanges();
-      return Promise.resolve();
-    }
-    function copyText(text) {
-      if ('clipboard' in navigator) {
-        // eslint-disable-next-line flowtype/no-flow-fix-me-comments
-        // $FlowFixMe Clipboard is not defined in Flow yet.
-        return navigator.clipboard.writeText(text);
-      }
-
-      const body = document.body;
-
-      if (!body) {
-        return Promise.reject(new Error());
-      }
-
-      const node = createNode(text);
-      body.appendChild(node);
-      copyNode(node);
-      body.removeChild(node);
-      return Promise.resolve();
-    }
-
-    function copy(button) {
-      const id = button.getAttribute('for');
-      const text = button.getAttribute('value');
-
-      function trigger() {
-        button.dispatchEvent(new CustomEvent('clipboard-copy', {
-          bubbles: true
-        }));
-      }
-
-      if (text) {
-        copyText(text).then(trigger);
-      } else if (id) {
-        const root = 'getRootNode' in Element.prototype ? button.getRootNode() : button.ownerDocument;
-        if (!(root instanceof Document || 'ShadowRoot' in window && root instanceof ShadowRoot)) return;
-        const node = root.getElementById(id);
-        if (node) copyTarget(node).then(trigger);
-      }
-    }
-
-    function copyTarget(content) {
-      if (content instanceof HTMLInputElement || content instanceof HTMLTextAreaElement) {
-        return copyText(content.value);
-      } else if (content instanceof HTMLAnchorElement && content.hasAttribute('href')) {
-        return copyText(content.href);
-      } else {
-        return copyNode(content);
-      }
-    }
-
-    function clicked(event) {
-      const button = event.currentTarget;
-
-      if (button instanceof HTMLElement) {
-        copy(button);
-      }
-    }
-
-    function keydown(event) {
-      if (event.key === ' ' || event.key === 'Enter') {
-        const button = event.currentTarget;
-
-        if (button instanceof HTMLElement) {
-          event.preventDefault();
-          copy(button);
-        }
-      }
-    }
-
-    function focused(event) {
-      event.currentTarget.addEventListener('keydown', keydown);
-    }
-
-    function blurred(event) {
-      event.currentTarget.removeEventListener('keydown', keydown);
-    }
-
-    class ClipboardCopyElement extends HTMLElement {
-      constructor() {
-        super();
-        this.addEventListener('click', clicked);
-        this.addEventListener('focus', focused);
-        this.addEventListener('blur', blurred);
-      }
-
-      connectedCallback() {
-        if (!this.hasAttribute('tabindex')) {
-          this.setAttribute('tabindex', '0');
-        }
+<!---
+  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
 
-        if (!this.hasAttribute('role')) {
-          this.setAttribute('role', 'button');
-        }
-      }
+    http://www.apache.org/licenses/LICENSE-2.0
 
-      get value() {
-        return this.getAttribute('value') || '';
-      }
-
-      set value(text) {
-        this.setAttribute('value', text);
-      }
-
-    }
-
-    if (!window.customElements.get('clipboard-copy')) {
-      window.ClipboardCopyElement = ClipboardCopyElement;
-      window.customElements.define('clipboard-copy', ClipboardCopyElement);
-    }
-
-    return ClipboardCopyElement;
-
-  }));
-</script>
-<script>
-      document.addEventListener('clipboard-copy', function(event) {
-        const notice = event.target.querySelector('.notice')
-        notice.hidden = false
-        setTimeout(function() {
-          notice.hidden = true
-        }, 1000)
-      })
-</script>
-<style type="text/css">
-    pre { line-height: 125%; }
-td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-.highlight-ipynb .hll { background-color: var(--jp-cell-editor-active-background) }
-.highlight-ipynb { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
-.highlight-ipynb .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
-.highlight-ipynb .err { color: var(--jp-mirror-editor-error-color) } /* Error */
-.highlight-ipynb .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
-.highlight-ipynb .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
-.highlight-ipynb .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
-.highlight-ipynb .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
-.highlight-ipynb .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
-.highlight-ipynb .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
-.highlight-ipynb .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
-.highlight-ipynb .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
-.highlight-ipynb .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
-.highlight-ipynb .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
-.highlight-ipynb .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
-.highlight-ipynb .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
-.highlight-ipynb .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
-.highlight-ipynb .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
-.highlight-ipynb .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
-.highlight-ipynb .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
-.highlight-ipynb .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
-.highlight-ipynb .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
-.highlight-ipynb .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
-.highlight-ipynb .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
-.highlight-ipynb .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
-.highlight-ipynb .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
-.highlight-ipynb .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
-.highlight-ipynb .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
-.highlight-ipynb .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
-.highlight-ipynb .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
-.highlight-ipynb .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
-.highlight-ipynb .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
-.highlight-ipynb .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
-.highlight-ipynb .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
-.highlight-ipynb .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
-.highlight-ipynb .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
-.highlight-ipynb .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
-.highlight-ipynb .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
-.highlight-ipynb .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
-.highlight-ipynb .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
-.highlight-ipynb .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
-.highlight-ipynb .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
-.highlight-ipynb .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
-  </style>
-<style type="text/css">
-@charset "UTF-8";.jupyter-wrapper{--md-red-50: #ffebee;--md-red-100: #ffcdd2;--md-red-200: #ef9a9a;--md-red-300: #e57373;--md-red-400: #ef5350;--md-red-500: #f44336;--md-red-600: #e53935;--md-red-700: #d32f2f;--md-red-800: #c62828;--md-red-900: #b71c1c;--md-red-A100: #ff8a80;--md-red-A200: #ff5252;--md-red-A400: #ff1744;--md-red-A700: #d50000;--md-pink-50: #fce4ec;--md-pink-100: #f8bbd0;--md-pink-200: #f48fb1;--md-pink-300: #f06292;--md-pink-400: #ec407a;--md-pink-500: #e91e63;--md-pink- [...]
-</style>
-<style type="text/css">
-.jupyter-wrapper{--jp-shadow-base-lightness: 0;--jp-shadow-umbra-color: rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), .2 );--jp-shadow-penumbra-color: rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), .14 );--jp-shadow-ambient-color: rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), .12 );--jp-elevation-z0: none;--jp-elev [...]
-</style>
-<!-- Load mathjax -->
-<script src=""> </script>
-<!-- MathJax configuration -->
-<script type="text/x-mathjax-config">
-    init_mathjax = function() {
-        if (window.MathJax) {
-        // MathJax loaded
-            MathJax.Hub.Config({
-                TeX: {
-                    equationNumbers: {
-                    autoNumber: "AMS",
-                    useLabelIds: true
-                    }
-                },
-                tex2jax: {
-                    inlineMath: [ ['$','$'], ["\\(","\\)"] ],
-                    displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
-                    processEscapes: true,
-                    processEnvironments: true
-                },
-                displayAlign: 'center',
-                messageStyle: 'none',
-                CommonHTML: {
-                    linebreaks: {
-                    automatic: true
-                    }
-                }
-            });
-
-            MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
-        }
-    }
-    init_mathjax();
-    </script>
-<!-- End of mathjax configuration --><script type="module">
-  document.addEventListener("DOMContentLoaded", async () => {
-    const diagrams = document.querySelectorAll(".jp-Mermaid > pre.mermaid");
-    // do not load mermaidjs if not needed
-    if (!diagrams.length) {
-      return;
-    }
-    const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.7.0/mermaid.esm.min.mjs")).default;
-    const parser = new DOMParser();
-
-    mermaid.initialize({
-      maxTextSize: 100000,
-      maxEdges: 100000,
-      startOnLoad: false,
-      fontFamily: window
-        .getComputedStyle(document.body)
-        .getPropertyValue("--jp-ui-font-family"),
-      theme: document.querySelector("body[data-jp-theme-light='true']")
-        ? "default"
-        : "dark",
-    });
-
-    let _nextMermaidId = 0;
-
-    function makeMermaidImage(svg) {
-      const img = document.createElement("img");
-      const doc = parser.parseFromString(svg, "image/svg+xml");
-      const svgEl = doc.querySelector("svg");
-      const { maxWidth } = svgEl?.style || {};
-      const firstTitle = doc.querySelector("title");
-      const firstDesc = doc.querySelector("desc");
-
-      img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
-      if (maxWidth) {
-        img.width = parseInt(maxWidth);
-      }
-      if (firstTitle) {
-        img.setAttribute("alt", firstTitle.textContent);
-      }
-      if (firstDesc) {
-        const caption = document.createElement("figcaption");
-        caption.className = "sr-only";
-        caption.textContent = firstDesc.textContent;
-        return [img, caption];
-      }
-      return [img];
-    }
-
-    async function makeMermaidError(text) {
-      let errorMessage = "";
-      try {
-        await mermaid.parse(text);
-      } catch (err) {
-        errorMessage = `${err}`;
-      }
-
-      const result = document.createElement("details");
-      result.className = 'jp-RenderedMermaid-Details';
-      const summary = document.createElement("summary");
-      summary.className = 'jp-RenderedMermaid-Summary';
-      const pre = document.createElement("pre");
-      const code = document.createElement("code");
-      code.innerText = text;
-      pre.appendChild(code);
-      summary.appendChild(pre);
-      result.appendChild(summary);
-
-      const warning = document.createElement("pre");
-      warning.innerText = errorMessage;
-      result.appendChild(warning);
-      return [result];
-    }
-
-    async function renderOneMarmaid(src) {
-      const id = `jp-mermaid-${_nextMermaidId++}`;
-      const parent = src.parentNode;
-      let raw = src.textContent.trim();
-      const el = document.createElement("div");
-      el.style.visibility = "hidden";
-      document.body.appendChild(el);
-      let results = null;
-      let output = null;
-      try {
-        let { svg } = await mermaid.render(id, raw, el);
-        svg = cleanMermaidSvg(svg);
-        results = makeMermaidImage(svg);
-        output = document.createElement("figure");
-        results.map(output.appendChild, output);
-      } catch (err) {
-        parent.classList.add("jp-mod-warning");
-        results = await makeMermaidError(raw);
-        output = results[0];
-      } finally {
-        el.remove();
-      }
-      parent.classList.add("jp-RenderedMermaid");
-      parent.appendChild(output);
-    }
-
-
-    /**
-     * Post-process to ensure mermaid diagrams contain only valid SVG and XHTML.
-     */
-    function cleanMermaidSvg(svg) {
-      return svg.replace(RE_VOID_ELEMENT, replaceVoidElement);
-    }
-
-
-    /**
-     * A regular expression for all void elements, which may include attributes and
-     * a slash.
-     *
-     * @see https://developer.mozilla.org/en-US/docs/Glossary/Void_element
-     *
-     * Of these, only `<br>` is generated by Mermaid in place of `\n`,
-     * but _any_ "malformed" tag will break the SVG rendering entirely.
-     */
-    const RE_VOID_ELEMENT =
-      /<\s*(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\s*([^>]*?)\s*>/gi;
-
-    /**
-     * Ensure a void element is closed with a slash, preserving any attributes.
-     */
-    function replaceVoidElement(match, tag, rest) {
-      rest = rest.trim();
-      if (!rest.endsWith('/')) {
-        rest = `${rest} /`;
-      }
-      return `<${tag} ${rest}>`;
-    }
-
-    void Promise.all([...diagrams].map(renderOneMarmaid));
-  });
-</script>
-<style>
-  .jp-Mermaid:not(.jp-RenderedMermaid) {
-    display: none;
-  }
-
-  .jp-RenderedMermaid {
-    overflow: auto;
-    display: flex;
-  }
-
-  .jp-RenderedMermaid.jp-mod-warning {
-    width: auto;
-    padding: 0.5em;
-    margin-top: 0.5em;
-    border: var(--jp-border-width) solid var(--jp-warn-color2);
-    border-radius: var(--jp-border-radius);
-    color: var(--jp-ui-font-color1);
-    font-size: var(--jp-ui-font-size1);
-    white-space: pre-wrap;
-    word-wrap: break-word;
-  }
-
-  .jp-RenderedMermaid figure {
-    margin: 0;
-    overflow: auto;
-    max-width: 100%;
-  }
-
-  .jp-RenderedMermaid img {
-    max-width: 100%;
-  }
-
-  .jp-RenderedMermaid-Details > pre {
-    margin-top: 1em;
-  }
-
-  .jp-RenderedMermaid-Summary {
-    color: var(--jp-warn-color2);
-  }
-
-  .jp-RenderedMermaid:not(.jp-mod-warning) pre {
-    display: none;
-  }
-
-  .jp-RenderedMermaid-Summary > pre {
-    display: inline-block;
-    white-space: normal;
-  }
-</style>
-<!-- End of mermaid configuration --><div class="jupyter-wrapper">
-<div class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=caa5f2d5-28bb-4ce9-8a11-92646b3a9f6c">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<h1 id="geopandas-interoperability">GeoPandas interoperability<a class="anchor-link" href="#geopandas-interoperability">¶</a></h1><p>This example shows how to read a GeoJSON file with GeoPandas and then convert the GeoPandas DataFrame to a SedonaDB DataFrame.</p>
+  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.
+--><h1 id="geopandas-interoperability">GeoPandas interoperability<a class="headerlink" href="#geopandas-interoperability" title="Permanent link">¶</a></h1>
+<p>This example shows how to read a GeoJSON file with GeoPandas and then convert the GeoPandas DataFrame to a SedonaDB DataFrame.</p>
 <p>Any file type that can be read by GeoPandas can also be read into a SedonaDB DataFrame!</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=0434bead-2628-4844-a3f6-2f9c15a21899">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[2]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-1">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sedonadb</span>
+<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">sedona.db</span>
 <span class="kn">import</span><span class="w"> </span><span class="nn">geopandas</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">gpd</span>
 
-<span class="n">sd</span> <span class="o">=</span> <span class="n">sedonadb</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-1">import sedonadb
-import geopandas as gpd
-
-sd = sedonadb.connect()</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=618b5d1d-ac2b-4786-ae5b-0d10efd6a8d4">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<h3 id="read-a-geojson-file-with-geopandas">Read a GeoJSON file with GeoPandas<a class="anchor-link" href="#read-a-geojson-file-with-geopandas">¶</a></h3>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=2691bd24-9b2d-4cf9-958d-4ef01d967cb3">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[9]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-2">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">gdf</span> <span class="o">=</span> <span class="n">gpd</span><span class="o">.</span><span class="n">read_file</span><span class="p">(</span><span class="s2">"some_data.json"</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-2">gdf = gpd.read_file("some_data.json")</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=cd367a73-acd3-41cf-b892-7d863c370d5f">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[10]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-3">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">gdf</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-3">gdf</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child jp-OutputArea-executeResult">
-<div class="jp-OutputPrompt jp-OutputArea-prompt">Out[10]:</div>
-<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/html" tabindex="0">
+<span class="n">sd</span> <span class="o">=</span> <span class="n">sedona</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
+</code></pre></div>
+<h3 id="read-a-geojson-file-with-geopandas">Read a GeoJSON file with GeoPandas<a class="headerlink" href="#read-a-geojson-file-with-geopandas" title="Permanent link">¶</a></h3>
+<div class="highlight"><pre><span></span><code><span class="n">gdf</span> <span class="o">=</span> <span class="n">gpd</span><span class="o">.</span><span class="n">read_file</span><span class="p">(</span><span class="s2">"some_data.json"</span><span class="p">)</span>
+</code></pre></div>
+<div class="highlight"><pre><span></span><code><span class="n">gdf</span>
+</code></pre></div>
 <div>
-<style scoped="">
+<style scoped>
     .dataframe tbody tr th:only-of-type {
         vertical-align: middle;
     }
@@ -1492,162 +1135,57 @@ sd = sedonadb.connect()</div>
     }
 </style>
 <table border="1" class="dataframe">
-<thead>
-<tr style="text-align: right;">
-<th></th>
-<th>prop0</th>
-<th>prop1</th>
-<th>geometry</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<th>0</th>
-<td>value0</td>
-<td>None</td>
-<td>POINT (102 0.5)</td>
-</tr>
-<tr>
-<th>1</th>
-<td>value1</td>
-<td>0.0</td>
-<td>LINESTRING (102 0, 103 1, 104 0, 105 1)</td>
-</tr>
-<tr>
-<th>2</th>
-<td>value2</td>
-<td>{ "this": "that" }</td>
-<td>POLYGON ((100 0, 101 0, 101 1, 100 1, 100 0))</td>
-</tr>
-</tbody>
+  <thead>
+    <tr style="text-align: right;">
+      <th></th>
+      <th>prop0</th>
+      <th>prop1</th>
+      <th>geometry</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th>0</th>
+      <td>value0</td>
+      <td>None</td>
+      <td>POINT (102 0.5)</td>
+    </tr>
+    <tr>
+      <th>1</th>
+      <td>value1</td>
+      <td>0.0</td>
+      <td>LINESTRING (102 0, 103 1, 104 0, 105 1)</td>
+    </tr>
+    <tr>
+      <th>2</th>
+      <td>value2</td>
+      <td>{ "this": "that" }</td>
+      <td>POLYGON ((100 0, 101 0, 101 1, 100 1, 100 0))</td>
+    </tr>
+  </tbody>
 </table>
 </div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=454e08a3-de65-4151-9d29-5d5ee8cf31d3">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[11]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-4">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">gdf</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-4">gdf.info()</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>&lt;class 'geopandas.geodataframe.GeoDataFrame'&gt;
-RangeIndex: 3 entries, 0 to 2
-Data columns (total 3 columns):
- #   Column    Non-Null Count  Dtype   
----  ------    --------------  -----   
- 0   prop0     3 non-null      object  
- 1   prop1     2 non-null      object  
- 2   geometry  3 non-null      geometry
-dtypes: geometry(1), object(2)
-memory usage: 204.0+ bytes
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=a5837268-1620-4b2b-bf37-cb6e282daedf">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<h3 id="convert-the-geopandas-dataframe-to-a-sedonadb-dataframe">Convert the GeoPandas DataFrame to a SedonaDB DataFrame<a class="anchor-link" href="#convert-the-geopandas-dataframe-to-a-sedonadb-dataframe">¶</a></h3>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=385f6333-411d-4d1f-a09b-8816cccceabc">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[13]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-5">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">create_data_frame</span><span class="p">(</span><span class="n">gdf</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-5">df = sd.create_data_frame(gdf)</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=186059ae-4cf8-48ec-878a-71e7a39ac07e">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[14]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-6">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-6">df.show()</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌────────┬────────────────────┬──────────────────────────────────────────┐
+
+<div class="highlight"><pre><span></span><code><span class="n">gdf</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code><span class="p">&lt;</span><span class="kd">class</span><span class="w"> </span><span class="err">'</span><span class="nx">geopandas</span><span class="p">.</span><span class="nx">geodataframe</span><span class="p">.</span><span class="nx">GeoDataFrame</span><span class="err">'</span><span class="p">&gt;</span>
+<span class="nx">RangeIndex</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="nx">entries</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="nx">to</span><span class="w"> </span><span class="mi">2</span>
+<span class="nx">Data</span><span class="w"> </span><span class="nx">columns</span><span class="w"> </span><span class="p">(</span><span class="nx">total</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="nx">columns</span><span class="p">):</span>
+<span class="w"> </span><span class="err">#</span><span class="w">   </span><span class="nx">Column</span><span class="w">    </span><span class="nx">Non</span><span class="o">-</span><span class="nx">Null</span><span class="w"> </span><span class="nx">Count</span><span class="w">  </span><span class="nx">Dtype</span><span class="w">   </span>
+<span class="o">---</span><span class="w">  </span><span class="o">------</span><span class="w">    </span><span class="o">--------------</span><span class="w">  </span><span class="o">-----</span><span class="w">   </span>
+<span class="w"> </span><span class="mi">0</span><span class="w">   </span><span class="nx">prop0</span><span class="w">     </span><span class="mi">3</span><span class="w"> </span><span class="nx">non</span><span class="o">-</span><span class="nx">null</span><span class="w">      </span><span class="nx">object</span><span class="w">  </span>
+<span class="w"> </span><span class="mi">1</span><span class="w">   </span><span class="nx">prop1</span><span class="w">     </span><span class="mi">2</span><span class="w"> </span><span class="nx">non</span><span class="o">-</span><span class="nx">null</span><span class="w">      </span><span class="nx">object</span><span class="w">  </span>
+<span class="w"> </span><span class="mi">2</span><span class="w">   </span><span class="nx">geometry</span><span class="w">  </span><span class="mi">3</span><span class="w"> </span><span class="nx">non</span><span class="o">-</span><span class="nx">null</span><span class="w">      </span><span class="nx">geometry</span>
+<span class="nx">dtypes</span><span class="p">:</span><span class="w"> </span><span class="nx">geometry</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="nx">object</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
+<span class="nx">memory</span><span class="w"> </span><span class="nx">usage</span><span class="p">:</span><span class="w"> </span><span class="m m-Double">204.0</span><span class="o">+</span><span class="w"> </span><span class="nx">bytes</span>
+</code></pre></div>
+
+<h3 id="convert-the-geopandas-dataframe-to-a-sedonadb-dataframe">Convert the GeoPandas DataFrame to a SedonaDB DataFrame<a class="headerlink" href="#convert-the-geopandas-dataframe-to-a-sedonadb-dataframe" title="Permanent link">¶</a></h3>
+<div class="highlight"><pre><span></span><code><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">create_data_frame</span><span class="p">(</span><span class="n">gdf</span><span class="p">)</span>
+</code></pre></div>
+<div class="highlight"><pre><span></span><code><span class="n">df</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code>┌────────┬────────────────────┬──────────────────────────────────────────┐
 │  prop0 ┆        prop1       ┆                 geometry                 │
 │  utf8  ┆        utf8        ┆                 geometry                 │
 ╞════════╪════════════════════╪══════════════════════════════════════════╡
@@ -1657,113 +1195,18 @@ memory usage: 204.0+ bytes
 ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
 │ value2 ┆ { "this": "that" } ┆ POLYGON((100 0,101 0,101 1,100 1,100 0)) │
 └────────┴────────────────────┴──────────────────────────────────────────┘
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=2f09cbbe-86b5-4eb4-b920-1b12f018d1a6">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<h2 id="read-a-flatgeobuf-file">Read a FlatGeobuf file<a class="anchor-link" href="#read-a-flatgeobuf-file">¶</a></h2><p>This code demonstrates how to read a FlatGeobuf file with GeoPandas and then convert it to a SedonaDB DataFrame.</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=965ae9f3-293b-4e8e-92bf-1359a482bca3">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[3]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-7">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s2">"https://raw.githubusercontent.com/geoarrow/geoarrow-data/v0.2.0/natural-earth/files/natural-earth_cities.fgb"</span>
+</code></pre></div>
+
+<h2 id="read-a-flatgeobuf-file">Read a FlatGeobuf file<a class="headerlink" href="#read-a-flatgeobuf-file" title="Permanent link">¶</a></h2>
+<p>This code demonstrates how to read a FlatGeobuf file with GeoPandas and then convert it to a SedonaDB DataFrame.</p>
+<div class="highlight"><pre><span></span><code><span class="n">path</span> <span class="o">=</span> <span class="s2">"https://raw.githubusercontent.com/geoarrow/geoarrow-data/v0.2.0/natural-earth/files/natural-earth_cities.fgb"</span>
 <span class="n">gdf</span> <span class="o">=</span> <span class="n">gpd</span><span class="o">.</span><span class="n">read_file</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-7">path = "https://raw.githubusercontent.com/geoarrow/geoarrow-data/v0.2.0/natural-earth/files/natural-earth_cities.fgb"
-gdf = gpd.read_file(path)</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=372c937f-da36-4e4b-98da-347890318a80">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[4]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-8">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">create_data_frame</span><span class="p">(</span><span class="n">gdf</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-8">df = sd.create_data_frame(gdf)</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=d99f4474-da3a-4834-9675-184a667b2a90">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[6]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-9">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">show</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-9">df.show(3)</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌──────────────┬──────────────────────────────┐
+</code></pre></div>
+<div class="highlight"><pre><span></span><code><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">create_data_frame</span><span class="p">(</span><span class="n">gdf</span><span class="p">)</span>
+</code></pre></div>
+<div class="highlight"><pre><span></span><code><span class="n">df</span><span class="o">.</span><span class="n">show</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code>┌──────────────┬──────────────────────────────┐
 │     name     ┆           geometry           │
 │     utf8     ┆           geometry           │
 ╞══════════════╪══════════════════════════════╡
@@ -1773,20 +1216,7 @@ gdf = gpd.read_file(path)</div>
 ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
 │ Vaduz        ┆ POINT(9.5166695 47.1337238)  │
 └──────────────┴──────────────────────────────┘
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div> <!-- jp-Notebook -->
-</div> <!-- jupyter-wrapper -->
-
-        <style>
-        ['pre { line-height: 125%; }\ntd.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\nspan.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\ntd.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\nspan.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\n.highlight-ipynb .hll { b [...]
-        </style>
-        
+</code></pre></div>
 
 
 
@@ -1807,7 +1237,7 @@ gdf = gpd.read_file(path)</div>
     <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"></path></svg>
     </span>
-    <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime" title="September 10, 2025 19:11:22 UTC">September 10, 2025 19:11:22</span>
+    <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime" title="September 18, 2025 00:36:42 UTC">September 18, 2025 00:36:42</span>
   </span>
 
     
@@ -1839,6 +1269,44 @@ gdf = gpd.read_file(path)</div>
         <footer class="md-footer">
   
     
+      
+      <nav class="md-footer__inner md-grid" aria-label="Footer">
+        
+          
+          <a href="../programming-guide/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Working with Vector Data">
+            <div class="md-footer__button md-icon">
+              
+              <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"></path></svg>
+            </div>
+            <div class="md-footer__title">
+              <span class="md-footer__direction">
+                Previous
+              </span>
+              <div class="md-ellipsis">
+                Working with Vector Data
+              </div>
+            </div>
+          </a>
+        
+        
+          
+          <a href="../overture-examples/" class="md-footer__link md-footer__link--next" aria-label="Next: Working with Overture">
+            <div class="md-footer__title">
+              <span class="md-footer__direction">
+                Next
+              </span>
+              <div class="md-ellipsis">
+                Working with Overture
+              </div>
+            </div>
+            <div class="md-footer__button md-icon">
+              
+              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"></path></svg>
+            </div>
+          </a>
+        
+      </nav>
+    
   
   <div class="md-footer-meta md-typeset">
     <div class="md-footer-meta__inner md-grid">
diff --git a/0.1.0/index.html b/0.1.0/index.html
index 9f29041..0cefa2f 100644
--- a/0.1.0/index.html
+++ b/0.1.0/index.html
@@ -7,9 +7,11 @@
       
       
       
+        <link rel="canonical" href="https://sedona.apache.org/sedonadb/latest/">
       
       
-        <link rel="next" href="programming-guide/">
+      
+        <link rel="next" href="quickstart-python/">
       
       
       <link rel="icon" href="image/sedona_logo_symbol.png">
@@ -17,7 +19,7 @@
     
     
       
-        <title>SedonaDB</title>
+        <title>Introducing SedonaDB - SedonaDB</title>
       
     
     
@@ -82,7 +84,7 @@
     <div data-md-component="skip">
       
         
-        <a href="#sedonadb" class="md-skip">
+        <a href="#key-features" class="md-skip">
           Skip to content
         </a>
       
@@ -104,7 +106,7 @@
   <nav class="md-header__inner md-grid" aria-label="Header">
     <a href="." title="SedonaDB" class="md-header__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     <label class="md-header__button md-icon" for="__drawer">
@@ -121,7 +123,7 @@
         <div class="md-header__topic" data-md-component="header-topic">
           <span class="md-ellipsis">
             
-              Home
+              Introducing SedonaDB
             
           </span>
         </div>
@@ -215,7 +217,26 @@
   
     
   
-  Home
+  SedonaDB
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
+    <li class="md-tabs__item">
+      <a href="quickstart-python/" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Python Quickstart
 
       </a>
     </li>
@@ -296,6 +317,25 @@
   
   
   
+    <li class="md-tabs__item">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Community
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
     <li class="md-tabs__item">
       <a href="https://sedona.apache.org/latest/asf/asf/" class="md-tabs__link">
         
@@ -322,7 +362,7 @@
   
     
   
-  Return to Sedona Homepage
+  Sedona Homepage
 
       </a>
     </li>
@@ -346,9 +386,7 @@
           
             
               
-                
-              
-              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" hidden>
+              <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">
                     
@@ -361,7 +399,7 @@
   <label class="md-nav__title" for="__drawer">
     <a href="." title="SedonaDB" class="md-nav__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     SedonaDB
@@ -394,15 +432,13 @@
       <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">
-    Home
+    SedonaDB
     
   </span>
   
@@ -415,7 +451,7 @@
   
   
   <span class="md-ellipsis">
-    Home
+    SedonaDB
     
   </span>
   
@@ -428,8 +464,6 @@
   
   
   
-    
-  
   
     <label class="md-nav__title" for="__toc">
       <span class="md-nav__icon md-icon"></span>
@@ -447,18 +481,18 @@
 </li>
       
         <li class="md-nav__item">
-  <a href="#installation" class="md-nav__link">
+  <a href="#install-sedonadb" class="md-nav__link">
     <span class="md-ellipsis">
-      Installation
+      Install SedonaDB
     </span>
   </a>
   
 </li>
       
         <li class="md-nav__item">
-  <a href="#sedonadb-example-with-vector-data" class="md-nav__link">
+  <a href="#run-a-query-in-sql-python-rust-or-r" class="md-nav__link">
     <span class="md-ellipsis">
-      SedonaDB example with vector data
+      Run a query in SQL, Python, Rust, or R
     </span>
   </a>
   
@@ -487,6 +521,28 @@
   
   
   
+    <li class="md-nav__item">
+      <a href="quickstart-python/" class="md-nav__link">
+        
+  
+  
+  <span class="md-ellipsis">
+    Python Quickstart
+    
+  </span>
+  
+
+      </a>
+    </li>
+  
+
+    
+      
+      
+  
+  
+  
+  
     
     
     
@@ -501,10 +557,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3">
         
           
-          <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
             
   
   
@@ -517,8 +573,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
-          <label class="md-nav__title" for="__nav_2">
+        <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>
             SedonaDB Guides
           </label>
@@ -536,7 +592,7 @@
   
   
   <span class="md-ellipsis">
-    SedonaDB Guide
+    Working with Vector Data
     
   </span>
   
@@ -554,12 +610,12 @@
   
   
     <li class="md-nav__item">
-      <a href="quickstart-cli/" class="md-nav__link">
+      <a href="geopandas-interop/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    CLI Quickstart
+    Working with GeoPandas
     
   </span>
   
@@ -577,12 +633,35 @@
   
   
     <li class="md-nav__item">
-      <a href="quickstart-python/" class="md-nav__link">
+      <a href="overture-examples/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Python Quickstart
+    Working with Overture
+    
+  </span>
+  
+
+      </a>
+    </li>
+  
+
+              
+            
+              
+                
+  
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="working-with-parquet-files/" class="md-nav__link">
+        
+  
+  
+  <span class="md-ellipsis">
+    Working with Parquet Files
     
   </span>
   
@@ -600,12 +679,12 @@
   
   
     <li class="md-nav__item">
-      <a href="development/" class="md-nav__link">
+      <a href="contributors-guide/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Development
+    Contributors Guide
     
   </span>
   
@@ -643,10 +722,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4">
         
           
-          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
             
   
   
@@ -659,8 +738,8 @@
             <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">
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4">
             <span class="md-nav__icon md-icon"></span>
             SedonaDB Reference
           </label>
@@ -686,10 +765,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_1">
         
           
-          <label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_1" id="__nav_4_1_label" tabindex="0">
             
   
   
@@ -702,8 +781,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
-          <label class="md-nav__title" for="__nav_3_1">
+        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_1_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4_1">
             <span class="md-nav__icon md-icon"></span>
             Python
           </label>
@@ -760,10 +839,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2">
         
           
-          <label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0">
             
   
   
@@ -776,8 +855,8 @@
             <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">
+        <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>
             SQL
           </label>
@@ -829,19 +908,34 @@
 
               
             
+          </ul>
+        </nav>
+      
+    </li>
+  
+
               
-                
+            
+          </ul>
+        </nav>
+      
+    </li>
+  
+
+    
+      
+      
   
   
   
   
     <li class="md-nav__item">
-      <a href="reference/read-parquet-files/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Read Parquet Files
+    Blog
     
   </span>
   
@@ -850,22 +944,6 @@
     </li>
   
 
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
     
       
       
@@ -874,12 +952,12 @@
   
   
     <li class="md-nav__item">
-      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Blog
+    Community
     
   </span>
   
@@ -923,7 +1001,7 @@
   
   
   <span class="md-ellipsis">
-    Return to Sedona Homepage
+    Sedona Homepage
     
   </span>
   
@@ -941,8 +1019,6 @@
             
             
               
-                
-              
               <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">
@@ -952,8 +1028,6 @@
   
   
   
-    
-  
   
     <label class="md-nav__title" for="__toc">
       <span class="md-nav__icon md-icon"></span>
@@ -971,18 +1045,18 @@
 </li>
       
         <li class="md-nav__item">
-  <a href="#installation" class="md-nav__link">
+  <a href="#install-sedonadb" class="md-nav__link">
     <span class="md-ellipsis">
-      Installation
+      Install SedonaDB
     </span>
   </a>
   
 </li>
       
         <li class="md-nav__item">
-  <a href="#sedonadb-example-with-vector-data" class="md-nav__link">
+  <a href="#run-a-query-in-sql-python-rust-or-r" class="md-nav__link">
     <span class="md-ellipsis">
-      SedonaDB example with vector data
+      Run a query in SQL, Python, Rust, or R
     </span>
   </a>
   
@@ -1010,12 +1084,10 @@
               <article class="md-content__inner md-typeset">
                 
                   
-  
-
 
 
   
-    <a href="https://github.com/apache/sedona-db/edit/master/docs/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit">
+    <a href="https://github.com/apache/sedona-db/blob/main/docs/index.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"></path></svg>
     </a>
@@ -1023,6 +1095,8 @@
   
 
 
+  <h1>SedonaDB</h1>
+
 <!---
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
@@ -1040,18 +1114,45 @@
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
---><h1 id="sedonadb">SedonaDB<a class="headerlink" href="#sedonadb" title="Permanent link">¶</a></h1>
-<p>SedonaDB is a high-performance, dependency-free geospatial compute engine.</p>
-<p>You can easily run SedonaDB locally or in the cloud.  The first release supports a core set of vector operations, but the full-suite of common vector and raster computations will be supported soon.</p>
-<p>SedonaDB only runs on a single machine, so it’s perfect for processing smaller datasets.  You can use SedonaSpark, SedonaFlink, or SedonaSnow for operations on larger datasets.</p>
-<div class="tabbed-set tabbed-alternate" data-tabs="1:4"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio"><input id="__tabbed_1_2" name="__tabbed_1" type="radio"><input id="__tabbed_1_3" name="__tabbed_1" type="radio"><input id="__tabbed_1_4" name="__tabbed_1" type="radio"><div class="tabbed-labels"><label for="__tabbed_1_1">SQL</label><label for="__tabbed_1_2">Python</label><label for="__tabbed_1_3">Rust</label><label for="__tabbed_1_4">R</label></div>
+--><p>SedonaDB is a single-node analytical database engine with geospatial as the first-class citizen.</p>
+<p>Fast and dependency-free, SedonaDB is ideal for working with smaller datasets located on local machines or cloud instances.</p>
+<p>The initial <code>0.1</code> release supports a core set of vector operations, with comprehensive vector and raster computation capabilities planned for the near future.</p>
+<p>For distributed workloads, you can still leverage the power of SedonaSpark, SedonaFlink, or SedonaSnow.</p>
+<h2 id="key-features">Key features<a class="headerlink" href="#key-features" title="Permanent link">¶</a></h2>
+<p>SedonaDB has several advantages:</p>
+<ul>
+<li><strong>Exceptional Performance:</strong> Built in Rust to process massive geospatial datasets with exceptional speed.</li>
+<li><strong>Unified Geospatial Toolkit:</strong> Access a comprehensive suite of functions for both vector and raster data in a single, powerful library.</li>
+<li><strong>Extensive Ecosystem Integration:</strong> Built on Apache Arrow for smooth interoperability with popular data science libraries like GeoPandas, DuckDB, and Polars.</li>
+<li><strong>Flexible APIs:</strong> Effortlessly switch between Python and SQL interfaces to match your preferred workflow and skill set.</li>
+<li><strong>Guaranteed CRS Propagation:</strong> Automatically manages coordinate reference systems (CRS) to ensure spatial accuracy and prevent common errors.</li>
+<li><strong>Broad File Format Support:</strong> Work with a wide range of both modern and legacy geospatial file formats like geoparquet.</li>
+<li><strong>Highly Extensible:</strong> Easily customize and extend the library's functionality to meet your project's unique requirements.</li>
+</ul>
+<h2 id="install-sedonadb">Install SedonaDB<a class="headerlink" href="#install-sedonadb" title="Permanent link">¶</a></h2>
+<p>Here's how to install SedonaDB with various build tools:</p>
+<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio"><input id="__tabbed_1_2" name="__tabbed_1" type="radio"><div class="tabbed-labels"><label for="__tabbed_1_1">pip</label><label for="__tabbed_1_2">R</label></div>
+<div class="tabbed-content">
+<div class="tabbed-block">
+<div class="highlight"><pre><span></span><code>pip<span class="w"> </span>install<span class="w"> </span><span class="s2">"apache-sedona[db]"</span>
+</code></pre></div>
+</div>
+<div class="tabbed-block">
+<div class="highlight"><pre><span></span><code>install.packages<span class="o">(</span><span class="s2">"sedonadb"</span>,<span class="w"> </span><span class="nv">repos</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"https://community.r-multiverse.org"</span><span class="o">)</span>
+</code></pre></div>
+</div>
+</div>
+</div>
+<h2 id="run-a-query-in-sql-python-rust-or-r">Run a query in SQL, Python, Rust, or R<a class="headerlink" href="#run-a-query-in-sql-python-rust-or-r" title="Permanent link">¶</a></h2>
+<p>SedonaDB offers a flexible query interface.</p>
+<div class="tabbed-set tabbed-alternate" data-tabs="2:4"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio"><input id="__tabbed_2_2" name="__tabbed_2" type="radio"><input id="__tabbed_2_3" name="__tabbed_2" type="radio"><input id="__tabbed_2_4" name="__tabbed_2" type="radio"><div class="tabbed-labels"><label for="__tabbed_2_1">SQL</label><label for="__tabbed_2_2">Python</label><label for="__tabbed_2_3">Rust</label><label for="__tabbed_2_4">R</label></div>
 <div class="tabbed-content">
 <div class="tabbed-block">
 <div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">ST_Point</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">geom</span>
 </code></pre></div>
 </div>
 <div class="tabbed-block">
-<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">seonda.db</span>
+<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">sedona.db</span>
 
 <span class="n">sd</span> <span class="o">=</span> <span class="n">sedona</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
 <span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"SELECT ST_Point(0, 1) as geom"</span><span class="p">)</span>
@@ -1077,35 +1178,8 @@
 </div>
 </div>
 </div>
-<h2 id="key-features">Key features<a class="headerlink" href="#key-features" title="Permanent link">¶</a></h2>
-<p>SedonaDB has several advantages:</p>
-<ul>
-<li><strong>Blazing-Fast Performance:</strong> Built in Rust to process massive geospatial datasets with exceptional speed.</li>
-<li><strong>Unified Geospatial Toolkit:</strong> Access a comprehensive suite of functions for both vector and raster data in a single, powerful library.</li>
-<li><strong>Seamless Ecosystem Integration:</strong> Built on Apache Arrow for smooth interoperability with popular data science libraries like GeoPandas, DuckDB, and Polars.</li>
-<li><strong>Flexible APIs:</strong> Effortlessly switch between Python and SQL interfaces to match your preferred workflow and skillset.</li>
-<li><strong>Guaranteed CRS Propagation:</strong> Automatically manages coordinate reference systems (CRS) to ensure spatial accuracy and prevent common errors.</li>
-<li><strong>Broad File Format Support:</strong> Work with a wide range of both modern and legacy geospatial file formats like geoparquet.</li>
-<li><strong>Highly Extensible:</strong> Easily customize and extend the library's functionality to meet your project's unique requirements.</li>
-</ul>
-<h2 id="installation">Installation<a class="headerlink" href="#installation" title="Permanent link">¶</a></h2>
-<p>Here’s how to install SedonaDB with various build tools:</p>
-<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio"><input id="__tabbed_2_2" name="__tabbed_2" type="radio"><div class="tabbed-labels"><label for="__tabbed_2_1">pip</label><label for="__tabbed_2_2">R</label></div>
-<div class="tabbed-content">
-<div class="tabbed-block">
-<div class="highlight"><pre><span></span><code>pip<span class="w"> </span>install<span class="w"> </span><span class="s2">"apache-sedona[db]"</span>
-</code></pre></div>
-</div>
-<div class="tabbed-block">
-<div class="highlight"><pre><span></span><code>install.packages<span class="o">(</span><span class="s2">"sedonadb"</span>,<span class="w"> </span><span class="nv">repos</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"https://community.r-multiverse.org"</span><span class="o">)</span>
-</code></pre></div>
-</div>
-</div>
-</div>
-<h2 id="sedonadb-example-with-vector-data">SedonaDB example with vector data<a class="headerlink" href="#sedonadb-example-with-vector-data" title="Permanent link">¶</a></h2>
-<p>TODO</p>
 <h2 id="have-questions">Have questions?<a class="headerlink" href="#have-questions" title="Permanent link">¶</a></h2>
-<p>Feel free to start a GitHub Discussion or join the Discord community to ask the developers any questions you may have.</p>
+<p>Start a <a href="https://github.com/apache/sedona-db/issues">GitHub Discussion</a> or join the <a href="https://discord.com/invite/9A3k5dEBsY">Discord community</a> and ask the developers any questions you may have.</p>
 <p>We look forward to collaborating with you!</p>
 
 
@@ -1127,7 +1201,7 @@
     <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"></path></svg>
     </span>
-    <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime" title="September 9, 2025 20:06:34 UTC">September 9, 2025 20:06:34</span>
+    <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime" title="September 19, 2025 07:13:30 UTC">September 19, 2025 07:13:30</span>
   </span>
 
     
@@ -1138,8 +1212,6 @@
 
 
 
-  
-
 
 
                 
@@ -1162,19 +1234,17 @@
   
     
       
-        
-      
       <nav class="md-footer__inner md-grid" aria-label="Footer">
         
         
           
-          <a href="programming-guide/" class="md-footer__link md-footer__link--next" aria-label="Next: SedonaDB Guide">
+          <a href="quickstart-python/" class="md-footer__link md-footer__link--next" aria-label="Next: Python Quickstart">
             <div class="md-footer__title">
               <span class="md-footer__direction">
                 Next
               </span>
               <div class="md-ellipsis">
-                SedonaDB Guide
+                Python Quickstart
               </div>
             </div>
             <div class="md-footer__button md-icon">
diff --git a/0.1.0/objects.inv b/0.1.0/objects.inv
index 9b8f63c..fea617b 100644
Binary files a/0.1.0/objects.inv and b/0.1.0/objects.inv differ
diff --git a/0.1.0/overture-examples.ipynb b/0.1.0/overture-examples.ipynb
new file mode 100644
index 0000000..115147d
--- /dev/null
+++ b/0.1.0/overture-examples.ipynb
@@ -0,0 +1,472 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "8239e8eb-724c-44df-b651-c2dd02f1d96c",
+   "metadata": {},
+   "source": [
+    "<!---\n",
+    "  Licensed to the Apache Software Foundation (ASF) under one\n",
+    "  or more contributor license agreements.  See the NOTICE file\n",
+    "  distributed with this work for additional information\n",
+    "  regarding copyright ownership.  The ASF licenses this file\n",
+    "  to you under the Apache License, Version 2.0 (the\n",
+    "  \"License\"); you may not use this file except in compliance\n",
+    "  with the License.  You may obtain a copy of the License at\n",
+    "\n",
+    "    http://www.apache.org/licenses/LICENSE-2.0\n",
+    "\n",
+    "  Unless required by applicable law or agreed to in writing,\n",
+    "  software distributed under the License is distributed on an\n",
+    "  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n",
+    "  KIND, either express or implied.  See the License for the\n",
+    "  specific language governing permissions and limitations\n",
+    "  under the License.\n",
+    "-->\n",
+    "\n",
+    "# SedonaDB Overture Examples\n",
+    "\n",
+    "This notebook shows how to query the Overture data with SedonaDB!"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "6d6fa0ab-b4ed-4e60-b099-a1af0998b486",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import sedona.db\n",
+    "import os\n",
+    "\n",
+    "os.environ[\"AWS_SKIP_SIGNATURE\"] = \"true\"\n",
+    "os.environ[\"AWS_DEFAULT_REGION\"] = \"us-west-2\"\n",
+    "\n",
+    "sd = sedona.db.connect()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "4f44adfb-2973-4a65-b4f2-d24b28700b79",
+   "metadata": {},
+   "source": [
+    "## Overture buildings table"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "52855769-4872-472a-9c42-afced3d85ca8",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df = sd.read_parquet(\n",
+    "    \"s3://overturemaps-us-west-2/release/2025-08-20.0/theme=buildings/type=building/\"\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "id": "b45b5e5c-64ed-49ba-a8aa-9f2292f617c6",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌──────────────────────────────────────┬─────────────────────────────────────────┬───┬─────────────┐\n",
+      "│                  id                  ┆                 geometry                ┆ … ┆ roof_height │\n",
+      "│               utf8view               ┆           wkb_view <ogc:crs84>          ┆   ┆   float64   │\n",
+      "╞══════════════════════════════════════╪═════════════════════════════════════════╪═══╪═════════════╡\n",
+      "│ 06533301-f2ec-42e0-8138-732ac25a7497 ┆ POLYGON((-58.4757066 -34.7389169,-58.4… ┆ … ┆             │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ cc0c048c-088d-4cb3-9982-3961edfdf416 ┆ POLYGON((-58.4755777 -34.7389131,-58.4… ┆ … ┆             │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ e52a0dbc-fb93-40e2-b1df-03626855299c ┆ POLYGON((-58.4754112 -34.7394253,-58.4… ┆ … ┆             │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ 28526977-9920-4cec-9840-5dd409a7cded ┆ POLYGON((-58.4752088 -34.7394754,-58.4… ┆ … ┆             │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ 0bc4c042-52ea-4ae7-9200-56221805fa2f ┆ POLYGON((-58.475273 -34.7394421,-58.47… ┆ … ┆             │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ c21dfee1-f5d9-4e0a-91cf-796f117518d4 ┆ POLYGON((-58.4750977 -34.7394357,-58.4… ┆ … ┆             │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ 3fe5efdd-1739-4088-8c8e-6f7f1b7cfcfe ┆ POLYGON((-58.4751684 -34.7394288,-58.4… ┆ … ┆             │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ c144becc-fc8a-4bbc-aeef-359ac56a925a ┆ POLYGON((-58.4751787 -34.739396,-58.47… ┆ … ┆             │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ 79d6c10a-2ff2-429d-a0e7-6eefc8939d14 ┆ POLYGON((-58.4753719 -34.7393189,-58.4… ┆ … ┆             │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ c1664c2d-2c0f-44c4-af08-58176e360613 ┆ POLYGON((-58.4753269 -34.7391919,-58.4… ┆ … ┆             │\n",
+      "└──────────────────────────────────────┴─────────────────────────────────────────┴───┴─────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "df.limit(10).show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "e37a023e-0e80-403a-a65b-b5a190004f72",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df.to_view(\"buildings\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "id": "ebfe4776-e08f-4f38-97fc-fca8ec6fc364",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌────────────┐\n",
+      "│  count(*)  │\n",
+      "│    int64   │\n",
+      "╞════════════╡\n",
+      "│ 2539170484 │\n",
+      "└────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "# the buildings table is large and contains millions of rows\n",
+    "sd.sql(\"\"\"\n",
+    "SELECT\n",
+    "    COUNT(*)\n",
+    "FROM\n",
+    "    buildings\n",
+    "\"\"\").show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "id": "b73f670d-0d10-4a7a-bfc7-e2abe5d9edd2",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "SedonaSchema with 24 fields:\n",
+       "  id: Utf8View\n",
+       "  geometry: wkb_view <ogc:crs84>\n",
+       "  bbox: Struct(xmin Float32, xmax Float32, ymin Float32, ymax Float32)\n",
+       "  version: Int32\n",
+       "  sources: List(Field { name: \"element\", data_type: Struct([Field { name: \"property\", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: \"dataset\", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: \"record_id\", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: \"update_time\", data_type: Utf8, nullable: true, dict_id: 0, dict_is [...]
+       "  level: Int32\n",
+       "  subtype: Utf8View\n",
+       "  class: Utf8View\n",
+       "  height: Float64\n",
+       "  names: Struct(primary Utf8, common Map(Field { name: \"key_value\", data_type: Struct([Field { name: \"key\", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: \"value\", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, false), rules List(Field { name: \"element\", data_type: Struct([Field { name: \"variant\", data_type: Ut [...]
+       "  has_parts: Boolean\n",
+       "  is_underground: Boolean\n",
+       "  num_floors: Int32\n",
+       "  num_floors_underground: Int32\n",
+       "  min_height: Float64\n",
+       "  min_floor: Int32\n",
+       "  facade_color: Utf8View\n",
+       "  facade_material: Utf8View\n",
+       "  roof_material: Utf8View\n",
+       "  roof_shape: Utf8View\n",
+       "  roof_direction: Float64\n",
+       "  roof_orientation: Utf8View\n",
+       "  roof_color: Utf8View\n",
+       "  roof_height: Float64"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# check out the schema of the buildings table to see what it contains\n",
+    "df.schema"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "id": "68d1b68c-dd26-45c2-944f-61138b212943",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌─────────────────────────┬────────────────────┬────────────┬────────────┬─────────────────────────┐\n",
+      "│            id           ┆       height       ┆ num_floors ┆ roof_shape ┆         centroid        │\n",
+      "│         utf8view        ┆       float64      ┆    int32   ┆  utf8view  ┆     wkb <ogc:crs84>     │\n",
+      "╞═════════════════════════╪════════════════════╪════════════╪════════════╪═════════════════════════╡\n",
+      "│ 1b9040c2-2e79-4f56-aba… ┆               22.4 ┆            ┆            ┆ POINT(-74.230407502993… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ 1b5e1cd2-d697-489e-892… ┆               21.5 ┆            ┆            ┆ POINT(-74.231451103592… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ c1afdf78-bf84-4b8f-ae1… ┆               20.9 ┆            ┆            ┆ POINT(-74.232593032240… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ 88f36399-b09f-491b-bb6… ┆               24.5 ┆            ┆            ┆ POINT(-74.231878209597… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ df37a283-f5bd-4822-a05… ┆ 24.154542922973633 ┆            ┆            ┆ POINT(-74.241910239840… │\n",
+      "└─────────────────────────┴────────────────────┴────────────┴────────────┴─────────────────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "# find all the buildings in New York city that are taller than 20 meters\n",
+    "nyc_bbox_wkt = \"POLYGON((-74.2591 40.4774, -74.2591 40.9176, -73.7004 40.9176, -73.7004 40.4774, -74.2591 40.4774))\"\n",
+    "sd.sql(f\"\"\"\n",
+    "SELECT\n",
+    "    id,\n",
+    "    height,\n",
+    "    num_floors,\n",
+    "    roof_shape,\n",
+    "    ST_Centroid(geometry) as centroid\n",
+    "FROM\n",
+    "    buildings\n",
+    "WHERE\n",
+    "    is_underground = FALSE\n",
+    "    AND height IS NOT NULL\n",
+    "    AND height > 20\n",
+    "    AND ST_Intersects(geometry, ST_SetSRID(ST_GeomFromText('{nyc_bbox_wkt}'), 4326))\n",
+    "LIMIT 5;\n",
+    "\"\"\").show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "e07fcdc1-962b-4dce-90cb-bf715432e299",
+   "metadata": {},
+   "source": [
+    "## Overture divisions table"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "id": "d9f122d3-4d90-46b0-ab9a-259a71cc423b",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df = sd.read_parquet(\n",
+    "    \"s3://overturemaps-us-west-2/release/2025-08-20.0/theme=divisions/type=division_area/\"\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "id": "19a75b19-0b56-4167-b3f1-73a171ecc480",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌────────────────┬────────────────┬────────────────┬───┬────────────────┬──────────┬───────────────┐\n",
+      "│       id       ┆    geometry    ┆      bbox      ┆ … ┆ is_territorial ┆  region  ┆  division_id  │\n",
+      "│    utf8view    ┆ wkb_view <ogc… ┆ struct(xmin f… ┆   ┆     boolean    ┆ utf8view ┆    utf8view   │\n",
+      "╞════════════════╪════════════════╪════════════════╪═══╪════════════════╪══════════╪═══════════════╡\n",
+      "│ 61912ffd-060b… ┆ POLYGON((23.3… ┆ {xmin: 22.735… ┆ … ┆ true           ┆ ZA-EC    ┆ 2711d6ca-ac1… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ 7647b992-e0d6… ┆ POLYGON((26.5… ┆ {xmin: 26.521… ┆ … ┆ true           ┆ ZA-EC    ┆ 0e8a08eb-6f2… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ 4058785b-82c9… ┆ MULTIPOLYGON(… ┆ {xmin: 22.735… ┆ … ┆ false          ┆ ZA-EC    ┆ 2711d6ca-ac1… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ cd9389b7-3451… ┆ POLYGON((26.5… ┆ {xmin: 26.373… ┆ … ┆ true           ┆ ZA-EC    ┆ 9d59ea5e-408… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ a60ae908-e6fa… ┆ POLYGON((26.6… ┆ {xmin: 26.541… ┆ … ┆ true           ┆ ZA-EC    ┆ f49ef082-3c2… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ fd070cbb-4aaa… ┆ POLYGON((26.1… ┆ {xmin: 26.084… ┆ … ┆ true           ┆ ZA-EC    ┆ 513b5a9c-c29… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ 70479601-dc12… ┆ POLYGON((26.4… ┆ {xmin: 26.222… ┆ … ┆ true           ┆ ZA-EC    ┆ 2ade34e5-955… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ 3a294b23-f674… ┆ POLYGON((24.5… ┆ {xmin: 24.503… ┆ … ┆ true           ┆ ZA-EC    ┆ 4f63d19f-2ca… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ 48b3e344-10a4… ┆ POLYGON((26.6… ┆ {xmin: 26.557… ┆ … ┆ true           ┆ ZA-EC    ┆ 20d890bb-1a4… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ 92e71cf6-fa94… ┆ POLYGON((25.8… ┆ {xmin: 25.799… ┆ … ┆ true           ┆ ZA-EC    ┆ 4202ec06-188… │\n",
+      "└────────────────┴────────────────┴────────────────┴───┴────────────────┴──────────┴───────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "# take a look at a few rows of data\n",
+    "df.show(10)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "id": "03b951de-3397-4fcf-9baf-50e139a38dd4",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df.to_view(\"division_area\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "9c6bd69d-9407-432a-bdc8-d60976237a3a",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌──────────┐\n",
+      "│ count(*) │\n",
+      "│   int64  │\n",
+      "╞══════════╡\n",
+      "│  1035749 │\n",
+      "└──────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "sd.sql(\"\"\"\n",
+    "SELECT\n",
+    "    COUNT(*)\n",
+    "FROM division_area\n",
+    "\"\"\").show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "id": "75a6d0ed-9767-4d36-a77a-4afb7952fbe4",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "SedonaSchema with 13 fields:\n",
+       "  id: Utf8View\n",
+       "  geometry: wkb_view <ogc:crs84>\n",
+       "  bbox: Struct(xmin Float32, xmax Float32, ymin Float32, ymax Float32)\n",
+       "  country: Utf8View\n",
+       "  version: Int32\n",
+       "  sources: List(Field { name: \"element\", data_type: Struct([Field { name: \"property\", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: \"dataset\", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: \"record_id\", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: \"update_time\", data_type: Utf8, nullable: true, dict_id: 0, dict_is [...]
+       "  subtype: Utf8View\n",
+       "  class: Utf8View\n",
+       "  names: Struct(primary Utf8, common Map(Field { name: \"key_value\", data_type: Struct([Field { name: \"key\", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: \"value\", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, false), rules List(Field { name: \"element\", data_type: Struct([Field { name: \"variant\", data_type: Ut [...]
+       "  is_land: Boolean\n",
+       "  is_territorial: Boolean\n",
+       "  region: Utf8View\n",
+       "  division_id: Utf8View"
+      ]
+     },
+     "execution_count": 17,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "df.schema"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "f1f7158c-ef2b-4377-9bee-180309ddd553",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# get all the divisions in Nova Scotia and save them in memory with to_memtable()\n",
+    "nova_scotia_bbox_wkt = (\n",
+    "    \"POLYGON((-66.5 43.4, -66.5 47.1, -59.8 47.1, -59.8 43.4, -66.5 43.4))\"\n",
+    ")\n",
+    "ns = sd.sql(f\"\"\"\n",
+    "SELECT\n",
+    "    country, region, names, geometry\n",
+    "FROM division_area\n",
+    "WHERE\n",
+    "    ST_Intersects(geometry, ST_SetSRID(ST_GeomFromText('{nova_scotia_bbox_wkt}'), 4326))\n",
+    "\"\"\").to_memtable()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "id": "27e6909d-06fa-438b-88e0-d300fd2fb1ec",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "ns.to_view(\"ns_divisions\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "id": "2dec92d8-a374-4021-990a-e50f5769516e",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df = sd.sql(\"\"\"\n",
+    "SELECT UNNEST(names), geometry\n",
+    "FROM ns_divisions\n",
+    "WHERE region = 'CA-NS'\n",
+    "\"\"\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "id": "7f39a283-0eee-4f72-a30a-8dd9fa1aaa69",
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌────────────────────────┬────────────────────────┬────────────────────────┬───────────────────────┐\n",
+      "│ __unnest_placeholder(n ┆ __unnest_placeholder(n ┆ __unnest_placeholder(n ┆        geometry       │\n",
+      "│ s_divisions.names).pr… ┆ s_divisions.names).co… ┆ s_divisions.names).ru… ┆  wkb_view <ogc:crs84> │\n",
+      "╞════════════════════════╪════════════════════════╪════════════════════════╪═══════════════════════╡\n",
+      "│ Seal Island            ┆                        ┆                        ┆ POLYGON((-66.0528452… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Mud Island             ┆                        ┆                        ┆ POLYGON((-66.0222822… │\n",
+      "└────────────────────────┴────────────────────────┴────────────────────────┴───────────────────────┘\n",
+      "CPU times: user 8.75 ms, sys: 2.41 ms, total: 11.2 ms\n",
+      "Wall time: 8.47 ms\n"
+     ]
+    }
+   ],
+   "source": [
+    "%%time\n",
+    "# this executes quickly because the Nova Scotia data was persisted in memory with to_memtable()\n",
+    "df.show(2)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.12.8"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/0.1.0/overture-examples/index.html b/0.1.0/overture-examples/index.html
index c92de65..6dcc7be 100644
--- a/0.1.0/overture-examples/index.html
+++ b/0.1.0/overture-examples/index.html
@@ -7,15 +7,21 @@
       
       
       
+        <link rel="canonical" href="https://sedona.apache.org/sedonadb/latest/overture-examples/">
       
       
+        <link rel="prev" href="../geopandas-interop/">
+      
+      
+        <link rel="next" href="../working-with-parquet-files/">
+      
       
       <link rel="icon" href="../image/sedona_logo_symbol.png">
       <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.20">
     
     
       
-        <title>SedonaDB Overture Examples - SedonaDB</title>
+        <title>Working with Overture - SedonaDB</title>
       
     
     
@@ -102,7 +108,7 @@
   <nav class="md-header__inner md-grid" aria-label="Header">
     <a href=".." title="SedonaDB" class="md-header__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="../image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="../image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     <label class="md-header__button md-icon" for="__drawer">
@@ -119,7 +125,7 @@
         <div class="md-header__topic" data-md-component="header-topic">
           <span class="md-ellipsis">
             
-              SedonaDB Overture Examples
+              Working with Overture
             
           </span>
         </div>
@@ -211,7 +217,7 @@
   
     
   
-  Home
+  SedonaDB
 
       </a>
     </li>
@@ -223,9 +229,30 @@
   
   
   
+    <li class="md-tabs__item">
+      <a href="../quickstart-python/" class="md-tabs__link">
+        
+  
+  
     
+  
+  Python Quickstart
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
     
-      <li class="md-tabs__item">
+  
+  
+    
+    
+      <li class="md-tabs__item md-tabs__item--active">
         <a href="../programming-guide/" class="md-tabs__link">
           
   
@@ -292,6 +319,25 @@
   
   
   
+    <li class="md-tabs__item">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Community
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
     <li class="md-tabs__item">
       <a href="https://sedona.apache.org/latest/asf/asf/" class="md-tabs__link">
         
@@ -318,7 +364,7 @@
   
     
   
-  Return to Sedona Homepage
+  Sedona Homepage
 
       </a>
     </li>
@@ -355,7 +401,7 @@
   <label class="md-nav__title" for="__drawer">
     <a href=".." title="SedonaDB" class="md-nav__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="../image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="../image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     SedonaDB
@@ -387,7 +433,29 @@
   
   
   <span class="md-ellipsis">
-    Home
+    SedonaDB
+    
+  </span>
+  
+
+      </a>
+    </li>
+  
+
+    
+      
+      
+  
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../quickstart-python/" class="md-nav__link">
+        
+  
+  
+  <span class="md-ellipsis">
+    Python Quickstart
     
   </span>
   
@@ -401,6 +469,8 @@
       
   
   
+    
+  
   
   
     
@@ -408,19 +478,22 @@
     
     
       
+        
+        
+      
       
         
       
     
     
-    <li class="md-nav__item md-nav__item--nested">
+    <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_2">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
         
           
-          <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
             
   
   
@@ -433,8 +506,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
-          <label class="md-nav__title" for="__nav_2">
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
+          <label class="md-nav__title" for="__nav_3">
             <span class="md-nav__icon md-icon"></span>
             SedonaDB Guides
           </label>
@@ -452,7 +525,7 @@
   
   
   <span class="md-ellipsis">
-    SedonaDB Guide
+    Working with Vector Data
     
   </span>
   
@@ -470,12 +543,12 @@
   
   
     <li class="md-nav__item">
-      <a href="../quickstart-cli/" class="md-nav__link">
+      <a href="../geopandas-interop/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    CLI Quickstart
+    Working with GeoPandas
     
   </span>
   
@@ -490,15 +563,98 @@
                 
   
   
+    
+  
+  
+  
+    <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">
+    Working with Overture
+    
+  </span>
+  
+
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <a href="./" class="md-nav__link md-nav__link--active">
+        
+  
+  
+  <span class="md-ellipsis">
+    Working with Overture
+    
+  </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="#overture-buildings-table" class="md-nav__link">
+    <span class="md-ellipsis">
+      Overture buildings table
+    </span>
+  </a>
+  
+</li>
+      
+        <li class="md-nav__item">
+  <a href="#overture-divisions-table" class="md-nav__link">
+    <span class="md-ellipsis">
+      Overture divisions table
+    </span>
+  </a>
+  
+</li>
+      
+    </ul>
+  
+</nav>
+      
+    </li>
+  
+
+              
+            
+              
+                
+  
+  
   
   
     <li class="md-nav__item">
-      <a href="../quickstart-python/" class="md-nav__link">
+      <a href="../working-with-parquet-files/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Python Quickstart
+    Working with Parquet Files
     
   </span>
   
@@ -516,12 +672,12 @@
   
   
     <li class="md-nav__item">
-      <a href="../development/" class="md-nav__link">
+      <a href="../contributors-guide/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Development
+    Contributors Guide
     
   </span>
   
@@ -559,10 +715,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4">
         
           
-          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
             
   
   
@@ -575,8 +731,8 @@
             <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">
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4">
             <span class="md-nav__icon md-icon"></span>
             SedonaDB Reference
           </label>
@@ -602,10 +758,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_1">
         
           
-          <label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_1" id="__nav_4_1_label" tabindex="0">
             
   
   
@@ -618,8 +774,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
-          <label class="md-nav__title" for="__nav_3_1">
+        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_1_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4_1">
             <span class="md-nav__icon md-icon"></span>
             Python
           </label>
@@ -676,10 +832,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2">
         
           
-          <label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0">
             
   
   
@@ -692,8 +848,8 @@
             <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">
+        <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>
             SQL
           </label>
@@ -745,19 +901,34 @@
 
               
             
+          </ul>
+        </nav>
+      
+    </li>
+  
+
               
-                
+            
+          </ul>
+        </nav>
+      
+    </li>
+  
+
+    
+      
+      
   
   
   
   
     <li class="md-nav__item">
-      <a href="../reference/read-parquet-files/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Read Parquet Files
+    Blog
     
   </span>
   
@@ -766,22 +937,6 @@
     </li>
   
 
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
     
       
       
@@ -790,12 +945,12 @@
   
   
     <li class="md-nav__item">
-      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Blog
+    Community
     
   </span>
   
@@ -839,7 +994,7 @@
   
   
   <span class="md-ellipsis">
-    Return to Sedona Homepage
+    Sedona Homepage
     
   </span>
   
@@ -909,7 +1064,7 @@
 
 
   
-    <a href="https://github.com/apache/sedona-db/edit/master/docs/overture-examples.ipynb" title="Edit this page" class="md-content__button md-icon" rel="edit">
+    <a href="https://github.com/apache/sedona-db/blob/main/docs/overture-examples.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"></path></svg>
     </a>
@@ -917,567 +1072,41 @@
   
 
 
-<script>
-(function (global, factory) {
-    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-    typeof define === 'function' && define.amd ? define(factory) :
-    (global = global || self, global.ClipboardCopyElement = factory());
-  }(this, function () { 'use strict';
-
-    function createNode(text) {
-      const node = document.createElement('pre');
-      node.style.width = '1px';
-      node.style.height = '1px';
-      node.style.position = 'fixed';
-      node.style.top = '5px';
-      node.textContent = text;
-      return node;
-    }
-
-    function copyNode(node) {
-      if ('clipboard' in navigator) {
-        // eslint-disable-next-line flowtype/no-flow-fix-me-comments
-        // $FlowFixMe Clipboard is not defined in Flow yet.
-        return navigator.clipboard.writeText(node.textContent);
-      }
-
-      const selection = getSelection();
-
-      if (selection == null) {
-        return Promise.reject(new Error());
-      }
-
-      selection.removeAllRanges();
-      const range = document.createRange();
-      range.selectNodeContents(node);
-      selection.addRange(range);
-      document.execCommand('copy');
-      selection.removeAllRanges();
-      return Promise.resolve();
-    }
-    function copyText(text) {
-      if ('clipboard' in navigator) {
-        // eslint-disable-next-line flowtype/no-flow-fix-me-comments
-        // $FlowFixMe Clipboard is not defined in Flow yet.
-        return navigator.clipboard.writeText(text);
-      }
-
-      const body = document.body;
-
-      if (!body) {
-        return Promise.reject(new Error());
-      }
-
-      const node = createNode(text);
-      body.appendChild(node);
-      copyNode(node);
-      body.removeChild(node);
-      return Promise.resolve();
-    }
-
-    function copy(button) {
-      const id = button.getAttribute('for');
-      const text = button.getAttribute('value');
-
-      function trigger() {
-        button.dispatchEvent(new CustomEvent('clipboard-copy', {
-          bubbles: true
-        }));
-      }
-
-      if (text) {
-        copyText(text).then(trigger);
-      } else if (id) {
-        const root = 'getRootNode' in Element.prototype ? button.getRootNode() : button.ownerDocument;
-        if (!(root instanceof Document || 'ShadowRoot' in window && root instanceof ShadowRoot)) return;
-        const node = root.getElementById(id);
-        if (node) copyTarget(node).then(trigger);
-      }
-    }
-
-    function copyTarget(content) {
-      if (content instanceof HTMLInputElement || content instanceof HTMLTextAreaElement) {
-        return copyText(content.value);
-      } else if (content instanceof HTMLAnchorElement && content.hasAttribute('href')) {
-        return copyText(content.href);
-      } else {
-        return copyNode(content);
-      }
-    }
-
-    function clicked(event) {
-      const button = event.currentTarget;
-
-      if (button instanceof HTMLElement) {
-        copy(button);
-      }
-    }
-
-    function keydown(event) {
-      if (event.key === ' ' || event.key === 'Enter') {
-        const button = event.currentTarget;
-
-        if (button instanceof HTMLElement) {
-          event.preventDefault();
-          copy(button);
-        }
-      }
-    }
-
-    function focused(event) {
-      event.currentTarget.addEventListener('keydown', keydown);
-    }
-
-    function blurred(event) {
-      event.currentTarget.removeEventListener('keydown', keydown);
-    }
-
-    class ClipboardCopyElement extends HTMLElement {
-      constructor() {
-        super();
-        this.addEventListener('click', clicked);
-        this.addEventListener('focus', focused);
-        this.addEventListener('blur', blurred);
-      }
-
-      connectedCallback() {
-        if (!this.hasAttribute('tabindex')) {
-          this.setAttribute('tabindex', '0');
-        }
-
-        if (!this.hasAttribute('role')) {
-          this.setAttribute('role', 'button');
-        }
-      }
-
-      get value() {
-        return this.getAttribute('value') || '';
-      }
-
-      set value(text) {
-        this.setAttribute('value', text);
-      }
-
-    }
-
-    if (!window.customElements.get('clipboard-copy')) {
-      window.ClipboardCopyElement = ClipboardCopyElement;
-      window.customElements.define('clipboard-copy', ClipboardCopyElement);
-    }
-
-    return ClipboardCopyElement;
-
-  }));
-</script>
-<script>
-      document.addEventListener('clipboard-copy', function(event) {
-        const notice = event.target.querySelector('.notice')
-        notice.hidden = false
-        setTimeout(function() {
-          notice.hidden = true
-        }, 1000)
-      })
-</script>
-<style type="text/css">
-    pre { line-height: 125%; }
-td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-.highlight-ipynb .hll { background-color: var(--jp-cell-editor-active-background) }
-.highlight-ipynb { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
-.highlight-ipynb .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
-.highlight-ipynb .err { color: var(--jp-mirror-editor-error-color) } /* Error */
-.highlight-ipynb .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
-.highlight-ipynb .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
-.highlight-ipynb .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
-.highlight-ipynb .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
-.highlight-ipynb .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
-.highlight-ipynb .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
-.highlight-ipynb .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
-.highlight-ipynb .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
-.highlight-ipynb .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
-.highlight-ipynb .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
-.highlight-ipynb .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
-.highlight-ipynb .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
-.highlight-ipynb .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
-.highlight-ipynb .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
-.highlight-ipynb .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
-.highlight-ipynb .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
-.highlight-ipynb .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
-.highlight-ipynb .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
-.highlight-ipynb .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
-.highlight-ipynb .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
-.highlight-ipynb .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
-.highlight-ipynb .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
-.highlight-ipynb .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
-.highlight-ipynb .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
-.highlight-ipynb .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
-.highlight-ipynb .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
-.highlight-ipynb .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
-.highlight-ipynb .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
-.highlight-ipynb .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
-.highlight-ipynb .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
-.highlight-ipynb .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
-.highlight-ipynb .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
-.highlight-ipynb .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
-.highlight-ipynb .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
-.highlight-ipynb .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
-.highlight-ipynb .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
-.highlight-ipynb .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
-.highlight-ipynb .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
-.highlight-ipynb .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
-  </style>
-<style type="text/css">
-@charset "UTF-8";.jupyter-wrapper{--md-red-50: #ffebee;--md-red-100: #ffcdd2;--md-red-200: #ef9a9a;--md-red-300: #e57373;--md-red-400: #ef5350;--md-red-500: #f44336;--md-red-600: #e53935;--md-red-700: #d32f2f;--md-red-800: #c62828;--md-red-900: #b71c1c;--md-red-A100: #ff8a80;--md-red-A200: #ff5252;--md-red-A400: #ff1744;--md-red-A700: #d50000;--md-pink-50: #fce4ec;--md-pink-100: #f8bbd0;--md-pink-200: #f48fb1;--md-pink-300: #f06292;--md-pink-400: #ec407a;--md-pink-500: #e91e63;--md-pink- [...]
-</style>
-<style type="text/css">
-.jupyter-wrapper{--jp-shadow-base-lightness: 0;--jp-shadow-umbra-color: rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), .2 );--jp-shadow-penumbra-color: rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), .14 );--jp-shadow-ambient-color: rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), .12 );--jp-elevation-z0: none;--jp-elev [...]
-</style>
-<!-- Load mathjax -->
-<script src=""> </script>
-<!-- MathJax configuration -->
-<script type="text/x-mathjax-config">
-    init_mathjax = function() {
-        if (window.MathJax) {
-        // MathJax loaded
-            MathJax.Hub.Config({
-                TeX: {
-                    equationNumbers: {
-                    autoNumber: "AMS",
-                    useLabelIds: true
-                    }
-                },
-                tex2jax: {
-                    inlineMath: [ ['$','$'], ["\\(","\\)"] ],
-                    displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
-                    processEscapes: true,
-                    processEnvironments: true
-                },
-                displayAlign: 'center',
-                messageStyle: 'none',
-                CommonHTML: {
-                    linebreaks: {
-                    automatic: true
-                    }
-                }
-            });
-
-            MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
-        }
-    }
-    init_mathjax();
-    </script>
-<!-- End of mathjax configuration --><script type="module">
-  document.addEventListener("DOMContentLoaded", async () => {
-    const diagrams = document.querySelectorAll(".jp-Mermaid > pre.mermaid");
-    // do not load mermaidjs if not needed
-    if (!diagrams.length) {
-      return;
-    }
-    const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.7.0/mermaid.esm.min.mjs")).default;
-    const parser = new DOMParser();
-
-    mermaid.initialize({
-      maxTextSize: 100000,
-      maxEdges: 100000,
-      startOnLoad: false,
-      fontFamily: window
-        .getComputedStyle(document.body)
-        .getPropertyValue("--jp-ui-font-family"),
-      theme: document.querySelector("body[data-jp-theme-light='true']")
-        ? "default"
-        : "dark",
-    });
-
-    let _nextMermaidId = 0;
-
-    function makeMermaidImage(svg) {
-      const img = document.createElement("img");
-      const doc = parser.parseFromString(svg, "image/svg+xml");
-      const svgEl = doc.querySelector("svg");
-      const { maxWidth } = svgEl?.style || {};
-      const firstTitle = doc.querySelector("title");
-      const firstDesc = doc.querySelector("desc");
-
-      img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
-      if (maxWidth) {
-        img.width = parseInt(maxWidth);
-      }
-      if (firstTitle) {
-        img.setAttribute("alt", firstTitle.textContent);
-      }
-      if (firstDesc) {
-        const caption = document.createElement("figcaption");
-        caption.className = "sr-only";
-        caption.textContent = firstDesc.textContent;
-        return [img, caption];
-      }
-      return [img];
-    }
-
-    async function makeMermaidError(text) {
-      let errorMessage = "";
-      try {
-        await mermaid.parse(text);
-      } catch (err) {
-        errorMessage = `${err}`;
-      }
-
-      const result = document.createElement("details");
-      result.className = 'jp-RenderedMermaid-Details';
-      const summary = document.createElement("summary");
-      summary.className = 'jp-RenderedMermaid-Summary';
-      const pre = document.createElement("pre");
-      const code = document.createElement("code");
-      code.innerText = text;
-      pre.appendChild(code);
-      summary.appendChild(pre);
-      result.appendChild(summary);
-
-      const warning = document.createElement("pre");
-      warning.innerText = errorMessage;
-      result.appendChild(warning);
-      return [result];
-    }
-
-    async function renderOneMarmaid(src) {
-      const id = `jp-mermaid-${_nextMermaidId++}`;
-      const parent = src.parentNode;
-      let raw = src.textContent.trim();
-      const el = document.createElement("div");
-      el.style.visibility = "hidden";
-      document.body.appendChild(el);
-      let results = null;
-      let output = null;
-      try {
-        let { svg } = await mermaid.render(id, raw, el);
-        svg = cleanMermaidSvg(svg);
-        results = makeMermaidImage(svg);
-        output = document.createElement("figure");
-        results.map(output.appendChild, output);
-      } catch (err) {
-        parent.classList.add("jp-mod-warning");
-        results = await makeMermaidError(raw);
-        output = results[0];
-      } finally {
-        el.remove();
-      }
-      parent.classList.add("jp-RenderedMermaid");
-      parent.appendChild(output);
-    }
-
-
-    /**
-     * Post-process to ensure mermaid diagrams contain only valid SVG and XHTML.
-     */
-    function cleanMermaidSvg(svg) {
-      return svg.replace(RE_VOID_ELEMENT, replaceVoidElement);
-    }
-
-
-    /**
-     * A regular expression for all void elements, which may include attributes and
-     * a slash.
-     *
-     * @see https://developer.mozilla.org/en-US/docs/Glossary/Void_element
-     *
-     * Of these, only `<br>` is generated by Mermaid in place of `\n`,
-     * but _any_ "malformed" tag will break the SVG rendering entirely.
-     */
-    const RE_VOID_ELEMENT =
-      /<\s*(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\s*([^>]*?)\s*>/gi;
-
-    /**
-     * Ensure a void element is closed with a slash, preserving any attributes.
-     */
-    function replaceVoidElement(match, tag, rest) {
-      rest = rest.trim();
-      if (!rest.endsWith('/')) {
-        rest = `${rest} /`;
-      }
-      return `<${tag} ${rest}>`;
-    }
-
-    void Promise.all([...diagrams].map(renderOneMarmaid));
-  });
-</script>
-<style>
-  .jp-Mermaid:not(.jp-RenderedMermaid) {
-    display: none;
-  }
-
-  .jp-RenderedMermaid {
-    overflow: auto;
-    display: flex;
-  }
-
-  .jp-RenderedMermaid.jp-mod-warning {
-    width: auto;
-    padding: 0.5em;
-    margin-top: 0.5em;
-    border: var(--jp-border-width) solid var(--jp-warn-color2);
-    border-radius: var(--jp-border-radius);
-    color: var(--jp-ui-font-color1);
-    font-size: var(--jp-ui-font-size1);
-    white-space: pre-wrap;
-    word-wrap: break-word;
-  }
-
-  .jp-RenderedMermaid figure {
-    margin: 0;
-    overflow: auto;
-    max-width: 100%;
-  }
-
-  .jp-RenderedMermaid img {
-    max-width: 100%;
-  }
-
-  .jp-RenderedMermaid-Details > pre {
-    margin-top: 1em;
-  }
-
-  .jp-RenderedMermaid-Summary {
-    color: var(--jp-warn-color2);
-  }
-
-  .jp-RenderedMermaid:not(.jp-mod-warning) pre {
-    display: none;
-  }
-
-  .jp-RenderedMermaid-Summary > pre {
-    display: inline-block;
-    white-space: normal;
-  }
-</style>
-<!-- End of mermaid configuration --><div class="jupyter-wrapper">
-<div class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=8239e8eb-724c-44df-b651-c2dd02f1d96c">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<h1 id="sedonadb-overture-examples">SedonaDB Overture Examples<a class="anchor-link" href="#sedonadb-overture-examples">¶</a></h1><p>This notebook shows how to query the Overture data with SedonaDB!</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=6d6fa0ab-b4ed-4e60-b099-a1af0998b486">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[&nbsp;]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-1">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sedona.db</span>
+<!---
+  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.
+--><h1 id="sedonadb-overture-examples">SedonaDB Overture Examples<a class="headerlink" href="#sedonadb-overture-examples" title="Permanent link">¶</a></h1>
+<p>This notebook shows how to query the Overture data with SedonaDB!</p>
+<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">sedona.db</span>
 <span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
 
 <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"AWS_SKIP_SIGNATURE"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"true"</span>
 <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"AWS_DEFAULT_REGION"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"us-west-2"</span>
 
 <span class="n">sd</span> <span class="o">=</span> <span class="n">sedona</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-1">import sedona.db
-import os
-
-os.environ["AWS_SKIP_SIGNATURE"] = "true"
-os.environ["AWS_DEFAULT_REGION"] = "us-west-2"
-
-sd = sedona.db.connect()</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=4f44adfb-2973-4a65-b4f2-d24b28700b79">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<h2 id="overture-buildings-table">Overture buildings table<a class="anchor-link" href="#overture-buildings-table">¶</a></h2>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=52855769-4872-472a-9c42-afced3d85ca8">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[7]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-2">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">read_parquet</span><span class="p">(</span>
+</code></pre></div>
+<h2 id="overture-buildings-table">Overture buildings table<a class="headerlink" href="#overture-buildings-table" title="Permanent link">¶</a></h2>
+<div class="highlight"><pre><span></span><code><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">read_parquet</span><span class="p">(</span>
     <span class="s2">"s3://overturemaps-us-west-2/release/2025-08-20.0/theme=buildings/type=building/"</span>
 <span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-2">df = sd.read_parquet(
-    "s3://overturemaps-us-west-2/release/2025-08-20.0/theme=buildings/type=building/"
-)</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=b45b5e5c-64ed-49ba-a8aa-9f2292f617c6">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[8]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-3">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">limit</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-3">df.limit(10).show()</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌──────────────────────────────────────┬─────────────────────────────────────────┬───┬─────────────┐
+</code></pre></div>
+<div class="highlight"><pre><span></span><code><span class="n">df</span><span class="o">.</span><span class="n">limit</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code>┌──────────────────────────────────────┬─────────────────────────────────────────┬───┬─────────────┐
 │                  id                  ┆                 geometry                ┆ … ┆ roof_height │
 │               utf8view               ┆           wkb_view &lt;ogc:crs84&gt;          ┆   ┆   float64   │
 ╞══════════════════════════════════════╪═════════════════════════════════════════╪═══╪═════════════╡
@@ -1501,181 +1130,57 @@ sd = sedona.db.connect()</div>
 ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
 │ c1664c2d-2c0f-44c4-af08-58176e360613 ┆ POLYGON((-58.4753269 -34.7391919,-58.4… ┆ … ┆             │
 └──────────────────────────────────────┴─────────────────────────────────────────┴───┴─────────────┘
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=e37a023e-0e80-403a-a65b-b5a190004f72">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[9]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-4">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">to_view</span><span class="p">(</span><span class="s2">"buildings"</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-4">df.to_view("buildings")</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=ebfe4776-e08f-4f38-97fc-fca8ec6fc364">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[10]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-5">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="c1"># the buildings table is large and contains millions of rows</span>
+</code></pre></div>
+
+<div class="highlight"><pre><span></span><code><span class="n">df</span><span class="o">.</span><span class="n">to_view</span><span class="p">(</span><span class="s2">"buildings"</span><span class="p">)</span>
+</code></pre></div>
+<div class="highlight"><pre><span></span><code><span class="c1"># the buildings table is large and contains millions of rows</span>
 <span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"""</span>
 <span class="s2">SELECT</span>
 <span class="s2">    COUNT(*)</span>
 <span class="s2">FROM</span>
 <span class="s2">    buildings</span>
 <span class="s2">"""</span><span class="p">)</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-5"># the buildings table is large and contains millions of rows
-sd.sql("""
-SELECT
-    COUNT(*)
-FROM
-    buildings
-""").show()</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌────────────┐
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code>┌────────────┐
 │  count(*)  │
 │    int64   │
 ╞════════════╡
 │ 2539170484 │
 └────────────┘
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=b73f670d-0d10-4a7a-bfc7-e2abe5d9edd2">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[11]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-6">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="c1"># check out the schema of the buildings table to see what it contains</span>
+</code></pre></div>
+
+<div class="highlight"><pre><span></span><code><span class="c1"># check out the schema of the buildings table to see what it contains</span>
 <span class="n">df</span><span class="o">.</span><span class="n">schema</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-6"># check out the schema of the buildings table to see what it contains
-df.schema</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child jp-OutputArea-executeResult">
-<div class="jp-OutputPrompt jp-OutputArea-prompt">Out[11]:</div>
-<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain" tabindex="0">
-<pre>SedonaSchema with 24 fields:
-  id: Utf8View
-  geometry: wkb_view &lt;ogc:crs84&gt;
-  bbox: Struct(xmin Float32, xmax Float32, ymin Float32, ymax Float32)
-  version: Int32
-  sources: List(Field { name: "element", data_type: Struct([Field { name: "property", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "dataset", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "record_id", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "update_time", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, m [...]
-  level: Int32
-  subtype: Utf8View
-  class: Utf8View
-  height: Float64
-  names: Struct(primary Utf8, common Map(Field { name: "key_value", data_type: Struct([Field { name: "key", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "value", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, false), rules List(Field { name: "element", data_type: Struct([Field { name: "variant", data_type: Utf8, nullable: true [...]
-  has_parts: Boolean
-  is_underground: Boolean
-  num_floors: Int32
-  num_floors_underground: Int32
-  min_height: Float64
-  min_floor: Int32
-  facade_color: Utf8View
-  facade_material: Utf8View
-  roof_material: Utf8View
-  roof_shape: Utf8View
-  roof_direction: Float64
-  roof_orientation: Utf8View
-  roof_color: Utf8View
-  roof_height: Float64</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=68d1b68c-dd26-45c2-944f-61138b212943">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[12]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-7">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="c1"># find all the buildings in New York city that are taller than 20 meters</span>
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code><span class="n">SedonaSchema</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="mi">24</span><span class="w"> </span><span class="n">fields</span><span class="p">:</span>
+<span class="w">  </span><span class="n">id</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="n">geometry</span><span class="p">:</span><span class="w"> </span><span class="n">wkb_view</span><span class="w"> </span><span class="o">&lt;</span><span class="n">ogc</span><span class="p">:</span><span class="n">crs84</span><span class="o">&gt;</span>
+<span class="w">  </span><span class="n">bbox</span><span class="p">:</span><span class="w"> </span><span class="n">Struct</span><span class="p">(</span><span class="n">xmin</span><span class="w"> </span><span class="n">Float32</span><span class="p">,</span><span class="w"> </span><span class="n">xmax</span><span class="w"> </span><span class="n">Float32</span><span class="p">,</span><span class="w"> </span><span class="n">ymin</span><span class="w"> </span><span class="n">Float32</span> [...]
+<span class="w">  </span><span class="n">version</span><span class="p">:</span><span class="w"> </span><span class="n">Int32</span>
+<span class="w">  </span><span class="n">sources</span><span class="p">:</span><span class="w"> </span><span class="n">List</span><span class="p">(</span><span class="n">Field</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"element"</span><span class="p">,</span><span class="w"> </span><span class="n">data_type</span><span class="p">:</span><span class="w"> </span><s [...]
+<span class="w">  </span><span class="n">level</span><span class="p">:</span><span class="w"> </span><span class="n">Int32</span>
+<span class="w">  </span><span class="n">subtype</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="k">class</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="n">height</span><span class="p">:</span><span class="w"> </span><span class="n">Float64</span>
+<span class="w">  </span><span class="n">names</span><span class="p">:</span><span class="w"> </span><span class="n">Struct</span><span class="p">(</span><span class="n">primary</span><span class="w"> </span><span class="n">Utf8</span><span class="p">,</span><span class="w"> </span><span class="n">common</span><span class="w"> </span><span class="n">Map</span><span class="p">(</span><span class="n">Field</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span  [...]
+<span class="w">  </span><span class="n">has_parts</span><span class="p">:</span><span class="w"> </span><span class="n">Boolean</span>
+<span class="w">  </span><span class="n">is_underground</span><span class="p">:</span><span class="w"> </span><span class="n">Boolean</span>
+<span class="w">  </span><span class="n">num_floors</span><span class="p">:</span><span class="w"> </span><span class="n">Int32</span>
+<span class="w">  </span><span class="n">num_floors_underground</span><span class="p">:</span><span class="w"> </span><span class="n">Int32</span>
+<span class="w">  </span><span class="n">min_height</span><span class="p">:</span><span class="w"> </span><span class="n">Float64</span>
+<span class="w">  </span><span class="n">min_floor</span><span class="p">:</span><span class="w"> </span><span class="n">Int32</span>
+<span class="w">  </span><span class="n">facade_color</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="n">facade_material</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="n">roof_material</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="n">roof_shape</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="n">roof_direction</span><span class="p">:</span><span class="w"> </span><span class="n">Float64</span>
+<span class="w">  </span><span class="n">roof_orientation</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="n">roof_color</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="n">roof_height</span><span class="p">:</span><span class="w"> </span><span class="n">Float64</span>
+</code></pre></div>
+
+<div class="highlight"><pre><span></span><code><span class="c1"># find all the buildings in New York city that are taller than 20 meters</span>
 <span class="n">nyc_bbox_wkt</span> <span class="o">=</span> <span class="s2">"POLYGON((-74.2591 40.4774, -74.2591 40.9176, -73.7004 40.9176, -73.7004 40.4774, -74.2591 40.4774))"</span>
 <span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="sa">f</span><span class="s2">"""</span>
 <span class="s2">SELECT</span>
@@ -1693,37 +1198,8 @@ df.schema</div>
 <span class="s2">    AND ST_Intersects(geometry, ST_SetSRID(ST_GeomFromText('</span><span class="si">{</span><span class="n">nyc_bbox_wkt</span><span class="si">}</span><span class="s2">'), 4326))</span>
 <span class="s2">LIMIT 5;</span>
 <span class="s2">"""</span><span class="p">)</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-7"># find all the buildings in New York city that are taller than 20 meters
-nyc_bbox_wkt = "POLYGON((-74.2591 40.4774, -74.2591 40.9176, -73.7004 40.9176, -73.7004 40.4774, -74.2591 40.4774))"
-sd.sql(f"""
-SELECT
-    id,
-    height,
-    num_floors,
-    roof_shape,
-    ST_Centroid(geometry) as centroid
-FROM
-    buildings
-WHERE
-    is_underground = FALSE
-    AND height IS NOT NULL
-    AND height &gt; 20
-    AND ST_Intersects(geometry, ST_SetSRID(ST_GeomFromText('{nyc_bbox_wkt}'), 4326))
-LIMIT 5;
-""").show()</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌─────────────────────────┬────────────────────┬────────────┬────────────┬─────────────────────────┐
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code>┌─────────────────────────┬────────────────────┬────────────┬────────────┬─────────────────────────┐
 │            id           ┆       height       ┆ num_floors ┆ roof_shape ┆         centroid        │
 │         utf8view        ┆       float64      ┆    int32   ┆  utf8view  ┆     wkb &lt;ogc:crs84&gt;     │
 ╞═════════════════════════╪════════════════════╪════════════╪════════════╪═════════════════════════╡
@@ -1737,271 +1213,77 @@ LIMIT 5;
 ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
 │ df37a283-f5bd-4822-a05… ┆ 24.154542922973633 ┆            ┆            ┆ POINT(-74.241910239840… │
 └─────────────────────────┴────────────────────┴────────────┴────────────┴─────────────────────────┘
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=e07fcdc1-962b-4dce-90cb-bf715432e299">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<h2 id="overture-divisions-table">Overture divisions table<a class="anchor-link" href="#overture-divisions-table">¶</a></h2>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=d9f122d3-4d90-46b0-ab9a-259a71cc423b">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[13]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-8">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">read_parquet</span><span class="p">(</span>
+</code></pre></div>
+
+<h2 id="overture-divisions-table">Overture divisions table<a class="headerlink" href="#overture-divisions-table" title="Permanent link">¶</a></h2>
+<div class="highlight"><pre><span></span><code><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">read_parquet</span><span class="p">(</span>
     <span class="s2">"s3://overturemaps-us-west-2/release/2025-08-20.0/theme=divisions/type=division_area/"</span>
 <span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-8">df = sd.read_parquet(
-    "s3://overturemaps-us-west-2/release/2025-08-20.0/theme=divisions/type=division_area/"
-)</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=19a75b19-0b56-4167-b3f1-73a171ecc480">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[14]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-9">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="c1"># take a look at a few rows of data</span>
+</code></pre></div>
+<div class="highlight"><pre><span></span><code><span class="c1"># take a look at a few rows of data</span>
 <span class="n">df</span><span class="o">.</span><span class="n">show</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-9"># take a look at a few rows of data
-df.show(10)</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌────────────────┬────────────────┬────────────────┬───┬────────────────┬──────────┬───────────────┐
-│       id       ┆    geometry    ┆      bbox      ┆ … ┆ is_territorial ┆  region  ┆  division_id  │
-│    utf8view    ┆ wkb_view &lt;ogc… ┆ struct(xmin f… ┆   ┆     boolean    ┆ utf8view ┆    utf8view   │
-╞════════════════╪════════════════╪════════════════╪═══╪════════════════╪══════════╪═══════════════╡
-│ 61912ffd-060b… ┆ POLYGON((23.3… ┆ {xmin: 22.735… ┆ … ┆ true           ┆ ZA-EC    ┆ 2711d6ca-ac1… │
-├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
-│ 7647b992-e0d6… ┆ POLYGON((26.5… ┆ {xmin: 26.521… ┆ … ┆ true           ┆ ZA-EC    ┆ 0e8a08eb-6f2… │
-├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
-│ 4058785b-82c9… ┆ MULTIPOLYGON(… ┆ {xmin: 22.735… ┆ … ┆ false          ┆ ZA-EC    ┆ 2711d6ca-ac1… │
-├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
-│ cd9389b7-3451… ┆ POLYGON((26.5… ┆ {xmin: 26.373… ┆ … ┆ true           ┆ ZA-EC    ┆ 9d59ea5e-408… │
-├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
-│ a60ae908-e6fa… ┆ POLYGON((26.6… ┆ {xmin: 26.541… ┆ … ┆ true           ┆ ZA-EC    ┆ f49ef082-3c2… │
-├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
-│ fd070cbb-4aaa… ┆ POLYGON((26.1… ┆ {xmin: 26.084… ┆ … ┆ true           ┆ ZA-EC    ┆ 513b5a9c-c29… │
-├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
-│ 70479601-dc12… ┆ POLYGON((26.4… ┆ {xmin: 26.222… ┆ … ┆ true           ┆ ZA-EC    ┆ 2ade34e5-955… │
-├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
-│ 3a294b23-f674… ┆ POLYGON((24.5… ┆ {xmin: 24.503… ┆ … ┆ true           ┆ ZA-EC    ┆ 4f63d19f-2ca… │
-├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
-│ 48b3e344-10a4… ┆ POLYGON((26.6… ┆ {xmin: 26.557… ┆ … ┆ true           ┆ ZA-EC    ┆ 20d890bb-1a4… │
-├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
-│ 92e71cf6-fa94… ┆ POLYGON((25.8… ┆ {xmin: 25.799… ┆ … ┆ true           ┆ ZA-EC    ┆ 4202ec06-188… │
-└────────────────┴────────────────┴────────────────┴───┴────────────────┴──────────┴───────────────┘
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=03b951de-3397-4fcf-9baf-50e139a38dd4">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[15]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-10">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">to_view</span><span class="p">(</span><span class="s2">"division_area"</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-10">df.to_view("division_area")</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=9c6bd69d-9407-432a-bdc8-d60976237a3a">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[&nbsp;]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-11">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"""</span>
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code><span class="err">┌────────────────┬────────────────┬────────────────┬───┬────────────────┬──────────┬───────────────┐</span>
+<span class="err">│</span><span class="w">       </span><span class="n">id</span><span class="w">       </span><span class="err">┆</span><span class="w">    </span><span class="n">geometry</span><span class="w">    </span><span class="err">┆</span><span class="w">      </span><span class="n">bbox</span><span class="w">      </span><span class="err">┆</span><span class="w"> </span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span cla [...]
+<span class="err">│</span><span class="w">    </span><span class="n">utf8view</span><span class="w">    </span><span class="err">┆</span><span class="w"> </span><span class="n">wkb_view</span><span class="w"> </span><span class="o">&lt;</span><span class="n">ogc</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="k">struct</span><span class="p">(</span><span class="n">xmin</span><span class="w"> </span><span class="n">f</ [...]
+<span class="err">╞════════════════╪════════════════╪════════════════╪═══╪════════════════╪══════════╪═══════════════╡</span>
+<span class="err">│</span><span class="w"> </span><span class="mf">61912ff</span><span class="n">d</span><span class="o">-</span><span class="mh">060</span><span class="n">b</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="n">POLYGON</span><span class="p">((</span><span class="mf">23.3</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="p">{</span><span [...]
+<span class="err">├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤</span>
+<span class="err">│</span><span class="w"> </span><span class="mh">7647</span><span class="n">b992</span><span class="o">-</span><span class="n">e0d6</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="n">POLYGON</span><span class="p">((</span><span class="mf">26.5</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="p">{</span><span class="nl">xmin:</span> [...]
+<span class="err">├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤</span>
+<span class="err">│</span><span class="w"> </span><span class="mh">4058785</span><span class="n">b</span><span class="o">-</span><span class="mh">82</span><span class="n">c9</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="n">MULTIPOLYGON</span><span class="p">(</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="p">{</span><span class="nl">xmin:</span> [...]
+<span class="err">├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤</span>
+<span class="err">│</span><span class="w"> </span><span class="n">cd9389b7</span><span class="o">-</span><span class="mh">3451</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="n">POLYGON</span><span class="p">((</span><span class="mf">26.5</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="p">{</span><span class="nl">xmin:</span><span class="w"> </span [...]
+<span class="err">├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤</span>
+<span class="err">│</span><span class="w"> </span><span class="n">a60ae908</span><span class="o">-</span><span class="n">e6fa</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="n">POLYGON</span><span class="p">((</span><span class="mf">26.6</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="p">{</span><span class="nl">xmin:</span><span class="w"> </span> [...]
+<span class="err">├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤</span>
+<span class="err">│</span><span class="w"> </span><span class="n">fd070cbb</span><span class="o">-</span><span class="mh">4</span><span class="n">aaa</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="n">POLYGON</span><span class="p">((</span><span class="mf">26.1</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="p">{</span><span class="nl">xmin:</span> [...]
+<span class="err">├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤</span>
+<span class="err">│</span><span class="w"> </span><span class="mh">70479601</span><span class="o">-</span><span class="n">dc12</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="n">POLYGON</span><span class="p">((</span><span class="mf">26.4</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="p">{</span><span class="nl">xmin:</span><span class="w"> </span [...]
+<span class="err">├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤</span>
+<span class="err">│</span><span class="w"> </span><span class="mh">3</span><span class="n">a294b23</span><span class="o">-</span><span class="n">f674</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="n">POLYGON</span><span class="p">((</span><span class="mf">24.5</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="p">{</span><span class="nl">xmin:</span> [...]
+<span class="err">├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤</span>
+<span class="err">│</span><span class="w"> </span><span class="mh">48</span><span class="n">b3e344</span><span class="o">-</span><span class="mh">10</span><span class="n">a4</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="n">POLYGON</span><span class="p">((</span><span class="mf">26.6</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="p">{</span><span [...]
+<span class="err">├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤</span>
+<span class="err">│</span><span class="w"> </span><span class="mf">92e71</span><span class="n">cf6</span><span class="o">-</span><span class="n">fa94</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="n">POLYGON</span><span class="p">((</span><span class="mf">25.8</span><span class="err">…</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="p">{</span><span class="nl">xmin:</span> [...]
+<span class="err">└────────────────┴────────────────┴────────────────┴───┴────────────────┴──────────┴───────────────┘</span>
+</code></pre></div>
+
+<div class="highlight"><pre><span></span><code><span class="n">df</span><span class="o">.</span><span class="n">to_view</span><span class="p">(</span><span class="s2">"division_area"</span><span class="p">)</span>
+</code></pre></div>
+<div class="highlight"><pre><span></span><code><span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"""</span>
 <span class="s2">SELECT</span>
 <span class="s2">    COUNT(*)</span>
 <span class="s2">FROM division_area</span>
 <span class="s2">"""</span><span class="p">)</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-11">sd.sql("""
-SELECT
-    COUNT(*)
-FROM division_area
-""").show()</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌──────────┐
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code>┌──────────┐
 │ count(*) │
 │   int64  │
 ╞══════════╡
 │  1035749 │
 └──────────┘
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=75a6d0ed-9767-4d36-a77a-4afb7952fbe4">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[17]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-12">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">schema</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-12">df.schema</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child jp-OutputArea-executeResult">
-<div class="jp-OutputPrompt jp-OutputArea-prompt">Out[17]:</div>
-<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain" tabindex="0">
-<pre>SedonaSchema with 13 fields:
-  id: Utf8View
-  geometry: wkb_view &lt;ogc:crs84&gt;
-  bbox: Struct(xmin Float32, xmax Float32, ymin Float32, ymax Float32)
-  country: Utf8View
-  version: Int32
-  sources: List(Field { name: "element", data_type: Struct([Field { name: "property", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "dataset", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "record_id", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "update_time", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, m [...]
-  subtype: Utf8View
-  class: Utf8View
-  names: Struct(primary Utf8, common Map(Field { name: "key_value", data_type: Struct([Field { name: "key", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "value", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, false), rules List(Field { name: "element", data_type: Struct([Field { name: "variant", data_type: Utf8, nullable: true [...]
-  is_land: Boolean
-  is_territorial: Boolean
-  region: Utf8View
-  division_id: Utf8View</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=f1f7158c-ef2b-4377-9bee-180309ddd553">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[&nbsp;]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-13">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="c1"># get all the divisions in Nova Scotia and save them in memory with collect()</span>
+</code></pre></div>
+
+<div class="highlight"><pre><span></span><code><span class="n">df</span><span class="o">.</span><span class="n">schema</span>
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code><span class="n">SedonaSchema</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="mi">13</span><span class="w"> </span><span class="n">fields</span><span class="p">:</span>
+<span class="w">  </span><span class="n">id</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="n">geometry</span><span class="p">:</span><span class="w"> </span><span class="n">wkb_view</span><span class="w"> </span><span class="o">&lt;</span><span class="n">ogc</span><span class="p">:</span><span class="n">crs84</span><span class="o">&gt;</span>
+<span class="w">  </span><span class="n">bbox</span><span class="p">:</span><span class="w"> </span><span class="n">Struct</span><span class="p">(</span><span class="n">xmin</span><span class="w"> </span><span class="n">Float32</span><span class="p">,</span><span class="w"> </span><span class="n">xmax</span><span class="w"> </span><span class="n">Float32</span><span class="p">,</span><span class="w"> </span><span class="n">ymin</span><span class="w"> </span><span class="n">Float32</span> [...]
+<span class="w">  </span><span class="n">country</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="n">version</span><span class="p">:</span><span class="w"> </span><span class="n">Int32</span>
+<span class="w">  </span><span class="n">sources</span><span class="p">:</span><span class="w"> </span><span class="n">List</span><span class="p">(</span><span class="n">Field</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"element"</span><span class="p">,</span><span class="w"> </span><span class="n">data_type</span><span class="p">:</span><span class="w"> </span><s [...]
+<span class="w">  </span><span class="n">subtype</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="k">class</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="n">names</span><span class="p">:</span><span class="w"> </span><span class="n">Struct</span><span class="p">(</span><span class="n">primary</span><span class="w"> </span><span class="n">Utf8</span><span class="p">,</span><span class="w"> </span><span class="n">common</span><span class="w"> </span><span class="n">Map</span><span class="p">(</span><span class="n">Field</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span  [...]
+<span class="w">  </span><span class="n">is_land</span><span class="p">:</span><span class="w"> </span><span class="n">Boolean</span>
+<span class="w">  </span><span class="n">is_territorial</span><span class="p">:</span><span class="w"> </span><span class="n">Boolean</span>
+<span class="w">  </span><span class="n">region</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+<span class="w">  </span><span class="n">division_id</span><span class="p">:</span><span class="w"> </span><span class="n">Utf8View</span>
+</code></pre></div>
+
+<div class="highlight"><pre><span></span><code><span class="c1"># get all the divisions in Nova Scotia and save them in memory with to_memtable()</span>
 <span class="n">nova_scotia_bbox_wkt</span> <span class="o">=</span> <span class="p">(</span>
     <span class="s2">"POLYGON((-66.5 43.4, -66.5 47.1, -59.8 47.1, -59.8 43.4, -66.5 43.4))"</span>
 <span class="p">)</span>
@@ -2011,124 +1293,21 @@ FROM division_area
 <span class="s2">FROM division_area</span>
 <span class="s2">WHERE</span>
 <span class="s2">    ST_Intersects(geometry, ST_SetSRID(ST_GeomFromText('</span><span class="si">{</span><span class="n">nova_scotia_bbox_wkt</span><span class="si">}</span><span class="s2">'), 4326))</span>
-<span class="s2">"""</span><span class="p">)</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-13"># get all the divisions in Nova Scotia and save them in memory with collect()
-nova_scotia_bbox_wkt = (
-    "POLYGON((-66.5 43.4, -66.5 47.1, -59.8 47.1, -59.8 43.4, -66.5 43.4))"
-)
-ns = sd.sql(f"""
-SELECT
-    country, region, names, geometry
-FROM division_area
-WHERE
-    ST_Intersects(geometry, ST_SetSRID(ST_GeomFromText('{nova_scotia_bbox_wkt}'), 4326))
-""").collect()</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=27e6909d-06fa-438b-88e0-d300fd2fb1ec">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[19]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-14">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">ns</span><span class="o">.</span><span class="n">to_view</span><span class="p">(</span><span class="s2">"ns_divisions"</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-14">ns.to_view("ns_divisions")</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=2dec92d8-a374-4021-990a-e50f5769516e">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[20]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-15">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"""</span>
+<span class="s2">"""</span><span class="p">)</span><span class="o">.</span><span class="n">to_memtable</span><span class="p">()</span>
+</code></pre></div>
+<div class="highlight"><pre><span></span><code><span class="n">ns</span><span class="o">.</span><span class="n">to_view</span><span class="p">(</span><span class="s2">"ns_divisions"</span><span class="p">)</span>
+</code></pre></div>
+<div class="highlight"><pre><span></span><code><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"""</span>
 <span class="s2">SELECT UNNEST(names), geometry</span>
 <span class="s2">FROM ns_divisions</span>
 <span class="s2">WHERE region = 'CA-NS'</span>
 <span class="s2">"""</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-15">df = sd.sql("""
-SELECT UNNEST(names), geometry
-FROM ns_divisions
-WHERE region = 'CA-NS'
-""")</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=7f39a283-0eee-4f72-a30a-8dd9fa1aaa69">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[24]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-16">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="o">%%</span><span class="n">time</span>
-<span class="c1"># this executes quickly because the Nova Scotia data was persisted in memory with collect()</span>
+</code></pre></div>
+<div class="highlight"><pre><span></span><code><span class="o">%%</span><span class="n">time</span>
+<span class="c1"># this executes quickly because the Nova Scotia data was persisted in memory with to_memtable()</span>
 <span class="n">df</span><span class="o">.</span><span class="n">show</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-16">%%time
-# this executes quickly because the Nova Scotia data was persisted in memory with collect()
-df.show(2)</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌────────────────────────┬────────────────────────┬────────────────────────┬───────────────────────┐
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code>┌────────────────────────┬────────────────────────┬────────────────────────┬───────────────────────┐
 │ __unnest_placeholder(n ┆ __unnest_placeholder(n ┆ __unnest_placeholder(n ┆        geometry       │
 │ s_divisions.names).pr… ┆ s_divisions.names).co… ┆ s_divisions.names).ru… ┆  wkb_view &lt;ogc:crs84&gt; │
 ╞════════════════════════╪════════════════════════╪════════════════════════╪═══════════════════════╡
@@ -2138,20 +1317,7 @@ df.show(2)</div>
 └────────────────────────┴────────────────────────┴────────────────────────┴───────────────────────┘
 CPU times: user 8.75 ms, sys: 2.41 ms, total: 11.2 ms
 Wall time: 8.47 ms
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div> <!-- jp-Notebook -->
-</div> <!-- jupyter-wrapper -->
-
-        <style>
-        ['pre { line-height: 125%; }\ntd.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\nspan.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\ntd.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\nspan.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\n.highlight-ipynb .hll { b [...]
-        </style>
-        
+</code></pre></div>
 
 
 
@@ -2172,7 +1338,7 @@ Wall time: 8.47 ms
     <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"></path></svg>
     </span>
-    <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime" title="September 11, 2025 04:25:06 UTC">September 11, 2025 04:25:06</span>
+    <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime" title="September 18, 2025 00:36:42 UTC">September 18, 2025 00:36:42</span>
   </span>
 
     
@@ -2204,6 +1370,44 @@ Wall time: 8.47 ms
         <footer class="md-footer">
   
     
+      
+      <nav class="md-footer__inner md-grid" aria-label="Footer">
+        
+          
+          <a href="../geopandas-interop/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Working with GeoPandas">
+            <div class="md-footer__button md-icon">
+              
+              <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"></path></svg>
+            </div>
+            <div class="md-footer__title">
+              <span class="md-footer__direction">
+                Previous
+              </span>
+              <div class="md-ellipsis">
+                Working with GeoPandas
+              </div>
+            </div>
+          </a>
+        
+        
+          
+          <a href="../working-with-parquet-files/" class="md-footer__link md-footer__link--next" aria-label="Next: Working with Parquet Files">
+            <div class="md-footer__title">
+              <span class="md-footer__direction">
+                Next
+              </span>
+              <div class="md-ellipsis">
+                Working with Parquet Files
+              </div>
+            </div>
+            <div class="md-footer__button md-icon">
+              
+              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"></path></svg>
+            </div>
+          </a>
+        
+      </nav>
+    
   
   <div class="md-footer-meta md-typeset">
     <div class="md-footer-meta__inner md-grid">
diff --git a/0.1.0/programming-guide.ipynb b/0.1.0/programming-guide.ipynb
new file mode 100644
index 0000000..13e36d1
--- /dev/null
+++ b/0.1.0/programming-guide.ipynb
@@ -0,0 +1,400 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "1932983e-1cd2-41d0-a5eb-0537b3ac3feb",
+   "metadata": {},
+   "source": [
+    "<!---\n",
+    "  Licensed to the Apache Software Foundation (ASF) under one\n",
+    "  or more contributor license agreements.  See the NOTICE file\n",
+    "  distributed with this work for additional information\n",
+    "  regarding copyright ownership.  The ASF licenses this file\n",
+    "  to you under the Apache License, Version 2.0 (the\n",
+    "  \"License\"); you may not use this file except in compliance\n",
+    "  with the License.  You may obtain a copy of the License at\n",
+    "\n",
+    "    http://www.apache.org/licenses/LICENSE-2.0\n",
+    "\n",
+    "  Unless required by applicable law or agreed to in writing,\n",
+    "  software distributed under the License is distributed on an\n",
+    "  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n",
+    "  KIND, either express or implied.  See the License for the\n",
+    "  specific language governing permissions and limitations\n",
+    "  under the License.\n",
+    "-->\n",
+    "\n",
+    "# Working with Vector Data\n",
+    "\n",
+    "Process vector data using SedonaDB. You will learn to create DataFrames, run spatial queries, and manage file I/O. Let's begin by connecting to SedonaDB.\n",
+    "\n",
+    "Let's start by establishing a SedonaDB connection."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "119fcbae",
+   "metadata": {},
+   "source": [
+    "## Establish SedonaDB connection\n",
+    "\n",
+    "Here's how to create the SedonaDB connection:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "53c3b7a8-c42a-407a-a454-6ee1e943fbcc",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import sedona.db\n",
+    "\n",
+    "sd = sedona.db.connect()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "7aeaa60f-2325-418c-8e72-4344bd4a75fe",
+   "metadata": {},
+   "source": [
+    "Now, let's see how to create SedonaDB dataframes.\n",
+    "\n",
+    "## Create SedonaDB DataFrame\n",
+    "\n",
+    "**Manually creating SedonaDB DataFrame**\n",
+    "\n",
+    "Here's how to manually create a SedonaDB DataFrame:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "b3377767-d747-407c-92c0-8786c1998131",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df = sd.sql(\"\"\"\n",
+    "SELECT * FROM (VALUES\n",
+    "    ('one', ST_GeomFromWkt('POINT(1 2)')),\n",
+    "    ('two', ST_GeomFromWkt('POLYGON((-74.0 40.7, -74.0 40.8, -73.9 40.8, -73.9 40.7, -74.0 40.7))')),\n",
+    "    ('three', ST_GeomFromWkt('LINESTRING(-74.0060 40.7128, -73.9352 40.7306, -73.8561 40.8484)')))\n",
+    "AS t(val, point)\"\"\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "0f9e1319-2e7a-4d98-9df0-47a9a73cfff3",
+   "metadata": {},
+   "source": [
+    "Check the type of the DataFrame."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "e8be30ab-4818-4db8-bae2-83e973ad1b77",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "sedonadb.dataframe.DataFrame"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "type(df)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "8225ed1f-45a4-4915-a582-8ae191ec53ed",
+   "metadata": {},
+   "source": [
+    "**Create SedonaDB DataFrame from files in S3**\n",
+    "\n",
+    "For most production applications, you will create SedonaDB DataFrames by reading data from a file.  Let's see how to read GeoParquet files in AWS S3 into a SedonaDB DataFrame."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "151df287-4b2d-433e-9769-c3378df03b1b",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "sd.read_parquet(\n",
+    "    \"s3://overturemaps-us-west-2/release/2025-08-20.0/theme=divisions/type=division_area/\",\n",
+    "    options={\"aws.skip_signature\": True, \"aws.region\": \"us-west-2\"},\n",
+    ").to_view(\"division_area\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "858fcc66-816d-4c71-8875-82b74169eccd",
+   "metadata": {},
+   "source": [
+    "Now, let's run some spatial queries.\n",
+    "\n",
+    "### Read from GeoPandas DataFrame\n",
+    "\n",
+    "This section shows how to convert a GeoPandas DataFrame into a SedonaDB DataFrame.\n",
+    "\n",
+    "Start by reading a FlatGeoBuf file into a GeoPandas DataFrame:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "b81549f2-0f58-49e4-9011-8de6578c2b0e",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import geopandas as gpd\n",
+    "\n",
+    "path = \"https://raw.githubusercontent.com/geoarrow/geoarrow-data/v0.2.0/natural-earth/files/natural-earth_cities.fgb\"\n",
+    "gdf = gpd.read_file(path)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "2265f94b-ccb3-4634-8c52-a8799c68c76a",
+   "metadata": {},
+   "source": [
+    "Now convert the GeoPandas DataFrame to a SedonaDB DataFrame and view three rows of content:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "0e4819db-bf58-42d7-8b5b-f272d0f19266",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌──────────────┬──────────────────────────────┐\n",
+      "│     name     ┆           geometry           │\n",
+      "│     utf8     ┆           geometry           │\n",
+      "╞══════════════╪══════════════════════════════╡\n",
+      "│ Vatican City ┆ POINT(12.4533865 41.9032822) │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ San Marino   ┆ POINT(12.4417702 43.9360958) │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Vaduz        ┆ POINT(9.5166695 47.1337238)  │\n",
+      "└──────────────┴──────────────────────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "df = sd.create_data_frame(gdf)\n",
+    "df.show(3)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "6890bcc3-f3bd-4c47-bf86-2607bed5e480",
+   "metadata": {},
+   "source": [
+    "## Spatial queries\n",
+    "\n",
+    "Let's see how to run spatial operations like filtering, joins, and clustering algorithms.\n",
+    "\n",
+    "### Spatial filtering\n",
+    "\n",
+    "Let's run a spatial filtering operation to fetch all the objects in the following polygon:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "id": "8c8a4b48-8c4e-412e-900f-8c0f6f4ccc1d",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌──────────┬──────────┬────────────────────────────────────────────────────────────────────────────┐\n",
+      "│  country ┆  region  ┆                                  geometry                                  │\n",
+      "│ utf8view ┆ utf8view ┆                                  geometry                                  │\n",
+      "╞══════════╪══════════╪════════════════════════════════════════════════════════════════════════════╡\n",
+      "│ CA       ┆ CA-NS    ┆ POLYGON((-66.0528452 43.4531336,-66.0883401 43.3978188,-65.9647654 43.361… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ CA       ┆ CA-NS    ┆ POLYGON((-66.0222822 43.5166842,-66.0252286 43.5100071,-66.0528452 43.453… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ CA       ┆ CA-NS    ┆ POLYGON((-65.7451389 43.5336263,-65.7450818 43.5347004,-65.7449545 43.535… │\n",
+      "└──────────┴──────────┴────────────────────────────────────────────────────────────────────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "nova_scotia_bbox_wkt = (\n",
+    "    \"POLYGON((-66.5 43.4, -66.5 47.1, -59.8 47.1, -59.8 43.4, -66.5 43.4))\"\n",
+    ")\n",
+    "\n",
+    "ns = sd.sql(f\"\"\"\n",
+    "SELECT country, region, geometry\n",
+    "FROM division_area\n",
+    "WHERE ST_Intersects(geometry, ST_SetSRID(ST_GeomFromText('{nova_scotia_bbox_wkt}'), 4326))\n",
+    "\"\"\")\n",
+    "\n",
+    "ns.show(3)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "32076e01-d807-40ed-8457-9d8c4244e89f",
+   "metadata": {},
+   "source": [
+    "You can see it only includes the divisions in the Nova Scotia area.\n",
+    "\n",
+    "### K-nearest neighbors (KNN) joins\n",
+    "\n",
+    "Create `restaurants` and `customers` views so we can demonstrate the KNN join functionality."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "deaa36db-2fee-4ba2-ab79-1dc756cb1655",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df = sd.sql(\"\"\"\n",
+    "SELECT name, ST_Point(lng, lat) AS location\n",
+    "FROM (VALUES\n",
+    "    (101, -74.0, 40.7, 'Pizza Palace'),\n",
+    "    (102, -73.99, 40.69, 'Burger Barn'),\n",
+    "    (103, -74.02, 40.72, 'Taco Town'),\n",
+    "    (104, -73.98, 40.75, 'Sushi Spot'),\n",
+    "    (105, -74.05, 40.68, 'Deli Direct')\n",
+    ") AS t(id, lng, lat, name)\n",
+    "\"\"\")\n",
+    "sd.sql(\"drop view if exists restaurants\")\n",
+    "df.to_view(\"restaurants\")\n",
+    "\n",
+    "df = sd.sql(\"\"\"\n",
+    "SELECT name, ST_Point(lng, lat) AS location\n",
+    "FROM (VALUES\n",
+    "    (1, -74.0, 40.7, 'Alice'),\n",
+    "    (2, -73.9, 40.8, 'Bob'),\n",
+    "    (3, -74.1, 40.6, 'Carol')\n",
+    ") AS t(id, lng, lat, name)\n",
+    "\"\"\")\n",
+    "sd.sql(\"drop view if exists customers\")\n",
+    "df.to_view(\"customers\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "id": "e3bc4976-4245-432f-b265-7f6aa13f35b9",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌───────┬───────────────────┐\n",
+      "│  name ┆      location     │\n",
+      "│  utf8 ┆      geometry     │\n",
+      "╞═══════╪═══════════════════╡\n",
+      "│ Alice ┆ POINT(-74 40.7)   │\n",
+      "├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Bob   ┆ POINT(-73.9 40.8) │\n",
+      "├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Carol ┆ POINT(-74.1 40.6) │\n",
+      "└───────┴───────────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "df.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "9df227d6-0972-457a-87e3-5a89802c460f",
+   "metadata": {},
+   "source": [
+    "Perform a KNN join to identify the two restaurants that are nearest to each customer:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "id": "05565e15-ee18-431c-8fd2-673291d8d0ee",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌──────────┬──────────────┐\n",
+      "│ customer ┆  restaurant  │\n",
+      "│   utf8   ┆     utf8     │\n",
+      "╞══════════╪══════════════╡\n",
+      "│ Alice    ┆ Burger Barn  │\n",
+      "├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Alice    ┆ Pizza Palace │\n",
+      "├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Bob      ┆ Pizza Palace │\n",
+      "├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Bob      ┆ Sushi Spot   │\n",
+      "├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Carol    ┆ Deli Direct  │\n",
+      "├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Carol    ┆ Pizza Palace │\n",
+      "└──────────┴──────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "sd.sql(\"\"\"\n",
+    "SELECT\n",
+    "    c.name AS customer,\n",
+    "    r.name AS restaurant\n",
+    "FROM customers c, restaurants r\n",
+    "WHERE ST_KNN(c.location, r.location, 2, false)\n",
+    "ORDER BY c.name, r.name;\n",
+    "\"\"\").show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "2e93fe6a-b0a7-4ec0-952c-dde9edcacdc4",
+   "metadata": {},
+   "source": [
+    "Notice how each customer has two rows - one for each of the two closest restaurants."
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.12.4"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/0.1.0/programming-guide/index.html b/0.1.0/programming-guide/index.html
index dbcf9a4..9205296 100644
--- a/0.1.0/programming-guide/index.html
+++ b/0.1.0/programming-guide/index.html
@@ -7,11 +7,13 @@
       
       
       
+        <link rel="canonical" href="https://sedona.apache.org/sedonadb/latest/programming-guide/">
       
-        <link rel="prev" href="..">
       
+        <link rel="prev" href="../quickstart-python/">
       
-        <link rel="next" href="../quickstart-cli/">
+      
+        <link rel="next" href="../geopandas-interop/">
       
       
       <link rel="icon" href="../image/sedona_logo_symbol.png">
@@ -19,7 +21,7 @@
     
     
       
-        <title>SedonaDB Guide - SedonaDB</title>
+        <title>Working with Vector Data - SedonaDB</title>
       
     
     
@@ -84,7 +86,7 @@
     <div data-md-component="skip">
       
         
-        <a href="#sedonadb-guide" class="md-skip">
+        <a href="#working-with-vector-data" class="md-skip">
           Skip to content
         </a>
       
@@ -106,7 +108,7 @@
   <nav class="md-header__inner md-grid" aria-label="Header">
     <a href=".." title="SedonaDB" class="md-header__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="../image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="../image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     <label class="md-header__button md-icon" for="__drawer">
@@ -123,7 +125,7 @@
         <div class="md-header__topic" data-md-component="header-topic">
           <span class="md-ellipsis">
             
-              SedonaDB Guide
+              Working with Vector Data
             
           </span>
         </div>
@@ -215,7 +217,26 @@
   
     
   
-  Home
+  SedonaDB
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
+    <li class="md-tabs__item">
+      <a href="../quickstart-python/" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Python Quickstart
 
       </a>
     </li>
@@ -298,6 +319,25 @@
   
   
   
+    <li class="md-tabs__item">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Community
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
     <li class="md-tabs__item">
       <a href="https://sedona.apache.org/latest/asf/asf/" class="md-tabs__link">
         
@@ -324,7 +364,7 @@
   
     
   
-  Return to Sedona Homepage
+  Sedona Homepage
 
       </a>
     </li>
@@ -361,7 +401,7 @@
   <label class="md-nav__title" for="__drawer">
     <a href=".." title="SedonaDB" class="md-nav__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="../image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="../image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     SedonaDB
@@ -393,7 +433,29 @@
   
   
   <span class="md-ellipsis">
-    Home
+    SedonaDB
+    
+  </span>
+  
+
+      </a>
+    </li>
+  
+
+    
+      
+      
+  
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../quickstart-python/" class="md-nav__link">
+        
+  
+  
+  <span class="md-ellipsis">
+    Python Quickstart
     
   </span>
   
@@ -428,10 +490,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
         
           
-          <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="">
+          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
             
   
   
@@ -444,8 +506,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
-          <label class="md-nav__title" for="__nav_2">
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
+          <label class="md-nav__title" for="__nav_3">
             <span class="md-nav__icon md-icon"></span>
             SedonaDB Guides
           </label>
@@ -472,7 +534,7 @@
   
   
   <span class="md-ellipsis">
-    SedonaDB Guide
+    Working with Vector Data
     
   </span>
   
@@ -485,7 +547,7 @@
   
   
   <span class="md-ellipsis">
-    SedonaDB Guide
+    Working with Vector Data
     
   </span>
   
@@ -523,6 +585,21 @@
     </span>
   </a>
   
+    <nav class="md-nav" aria-label="Create SedonaDB DataFrame">
+      <ul class="md-nav__list">
+        
+          <li class="md-nav__item">
+  <a href="#read-from-geopandas-dataframe" class="md-nav__link">
+    <span class="md-ellipsis">
+      Read from GeoPandas DataFrame
+    </span>
+  </a>
+  
+</li>
+        
+      </ul>
+    </nav>
+  
 </li>
       
         <li class="md-nav__item">
@@ -532,15 +609,30 @@
     </span>
   </a>
   
+    <nav class="md-nav" aria-label="Spatial queries">
+      <ul class="md-nav__list">
+        
+          <li class="md-nav__item">
+  <a href="#spatial-filtering" class="md-nav__link">
+    <span class="md-ellipsis">
+      Spatial filtering
+    </span>
+  </a>
+  
 </li>
-      
-        <li class="md-nav__item">
-  <a href="#files" class="md-nav__link">
+        
+          <li class="md-nav__item">
+  <a href="#k-nearest-neighbors-knn-joins" class="md-nav__link">
     <span class="md-ellipsis">
-      Files
+      K-nearest neighbors (KNN) joins
     </span>
   </a>
   
+</li>
+        
+      </ul>
+    </nav>
+  
 </li>
       
     </ul>
@@ -559,12 +651,12 @@
   
   
     <li class="md-nav__item">
-      <a href="../quickstart-cli/" class="md-nav__link">
+      <a href="../geopandas-interop/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    CLI Quickstart
+    Working with GeoPandas
     
   </span>
   
@@ -582,12 +674,12 @@
   
   
     <li class="md-nav__item">
-      <a href="../quickstart-python/" class="md-nav__link">
+      <a href="../overture-examples/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Python Quickstart
+    Working with Overture
     
   </span>
   
@@ -605,12 +697,35 @@
   
   
     <li class="md-nav__item">
-      <a href="../development/" class="md-nav__link">
+      <a href="../working-with-parquet-files/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Development
+    Working with Parquet Files
+    
+  </span>
+  
+
+      </a>
+    </li>
+  
+
+              
+            
+              
+                
+  
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../contributors-guide/" class="md-nav__link">
+        
+  
+  
+  <span class="md-ellipsis">
+    Contributors Guide
     
   </span>
   
@@ -648,10 +763,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4">
         
           
-          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
             
   
   
@@ -664,8 +779,8 @@
             <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">
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4">
             <span class="md-nav__icon md-icon"></span>
             SedonaDB Reference
           </label>
@@ -691,10 +806,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_1">
         
           
-          <label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_1" id="__nav_4_1_label" tabindex="0">
             
   
   
@@ -707,8 +822,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
-          <label class="md-nav__title" for="__nav_3_1">
+        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_1_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4_1">
             <span class="md-nav__icon md-icon"></span>
             Python
           </label>
@@ -765,10 +880,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2">
         
           
-          <label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0">
             
   
   
@@ -781,8 +896,8 @@
             <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">
+        <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>
             SQL
           </label>
@@ -834,19 +949,34 @@
 
               
             
+          </ul>
+        </nav>
+      
+    </li>
+  
+
               
-                
+            
+          </ul>
+        </nav>
+      
+    </li>
+  
+
+    
+      
+      
   
   
   
   
     <li class="md-nav__item">
-      <a href="../reference/read-parquet-files/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Read Parquet Files
+    Blog
     
   </span>
   
@@ -855,22 +985,6 @@
     </li>
   
 
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
     
       
       
@@ -879,12 +993,12 @@
   
   
     <li class="md-nav__item">
-      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Blog
+    Community
     
   </span>
   
@@ -928,7 +1042,7 @@
   
   
   <span class="md-ellipsis">
-    Return to Sedona Homepage
+    Sedona Homepage
     
   </span>
   
@@ -980,6 +1094,21 @@
     </span>
   </a>
   
+    <nav class="md-nav" aria-label="Create SedonaDB DataFrame">
+      <ul class="md-nav__list">
+        
+          <li class="md-nav__item">
+  <a href="#read-from-geopandas-dataframe" class="md-nav__link">
+    <span class="md-ellipsis">
+      Read from GeoPandas DataFrame
+    </span>
+  </a>
+  
+</li>
+        
+      </ul>
+    </nav>
+  
 </li>
       
         <li class="md-nav__item">
@@ -989,15 +1118,30 @@
     </span>
   </a>
   
+    <nav class="md-nav" aria-label="Spatial queries">
+      <ul class="md-nav__list">
+        
+          <li class="md-nav__item">
+  <a href="#spatial-filtering" class="md-nav__link">
+    <span class="md-ellipsis">
+      Spatial filtering
+    </span>
+  </a>
+  
 </li>
-      
-        <li class="md-nav__item">
-  <a href="#files" class="md-nav__link">
+        
+          <li class="md-nav__item">
+  <a href="#k-nearest-neighbors-knn-joins" class="md-nav__link">
     <span class="md-ellipsis">
-      Files
+      K-nearest neighbors (KNN) joins
     </span>
   </a>
   
+</li>
+        
+      </ul>
+    </nav>
+  
 </li>
       
     </ul>
@@ -1016,7 +1160,7 @@
 
 
   
-    <a href="https://github.com/apache/sedona-db/edit/master/docs/programming-guide.ipynb" title="Edit this page" class="md-content__button md-icon" rel="edit">
+    <a href="https://github.com/apache/sedona-db/blob/main/docs/programming-guide.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"></path></svg>
     </a>
@@ -1024,725 +1168,70 @@
   
 
 
-<script>
-(function (global, factory) {
-    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-    typeof define === 'function' && define.amd ? define(factory) :
-    (global = global || self, global.ClipboardCopyElement = factory());
-  }(this, function () { 'use strict';
-
-    function createNode(text) {
-      const node = document.createElement('pre');
-      node.style.width = '1px';
-      node.style.height = '1px';
-      node.style.position = 'fixed';
-      node.style.top = '5px';
-      node.textContent = text;
-      return node;
-    }
-
-    function copyNode(node) {
-      if ('clipboard' in navigator) {
-        // eslint-disable-next-line flowtype/no-flow-fix-me-comments
-        // $FlowFixMe Clipboard is not defined in Flow yet.
-        return navigator.clipboard.writeText(node.textContent);
-      }
-
-      const selection = getSelection();
-
-      if (selection == null) {
-        return Promise.reject(new Error());
-      }
-
-      selection.removeAllRanges();
-      const range = document.createRange();
-      range.selectNodeContents(node);
-      selection.addRange(range);
-      document.execCommand('copy');
-      selection.removeAllRanges();
-      return Promise.resolve();
-    }
-    function copyText(text) {
-      if ('clipboard' in navigator) {
-        // eslint-disable-next-line flowtype/no-flow-fix-me-comments
-        // $FlowFixMe Clipboard is not defined in Flow yet.
-        return navigator.clipboard.writeText(text);
-      }
-
-      const body = document.body;
-
-      if (!body) {
-        return Promise.reject(new Error());
-      }
-
-      const node = createNode(text);
-      body.appendChild(node);
-      copyNode(node);
-      body.removeChild(node);
-      return Promise.resolve();
-    }
-
-    function copy(button) {
-      const id = button.getAttribute('for');
-      const text = button.getAttribute('value');
-
-      function trigger() {
-        button.dispatchEvent(new CustomEvent('clipboard-copy', {
-          bubbles: true
-        }));
-      }
-
-      if (text) {
-        copyText(text).then(trigger);
-      } else if (id) {
-        const root = 'getRootNode' in Element.prototype ? button.getRootNode() : button.ownerDocument;
-        if (!(root instanceof Document || 'ShadowRoot' in window && root instanceof ShadowRoot)) return;
-        const node = root.getElementById(id);
-        if (node) copyTarget(node).then(trigger);
-      }
-    }
-
-    function copyTarget(content) {
-      if (content instanceof HTMLInputElement || content instanceof HTMLTextAreaElement) {
-        return copyText(content.value);
-      } else if (content instanceof HTMLAnchorElement && content.hasAttribute('href')) {
-        return copyText(content.href);
-      } else {
-        return copyNode(content);
-      }
-    }
-
-    function clicked(event) {
-      const button = event.currentTarget;
-
-      if (button instanceof HTMLElement) {
-        copy(button);
-      }
-    }
-
-    function keydown(event) {
-      if (event.key === ' ' || event.key === 'Enter') {
-        const button = event.currentTarget;
-
-        if (button instanceof HTMLElement) {
-          event.preventDefault();
-          copy(button);
-        }
-      }
-    }
-
-    function focused(event) {
-      event.currentTarget.addEventListener('keydown', keydown);
-    }
-
-    function blurred(event) {
-      event.currentTarget.removeEventListener('keydown', keydown);
-    }
-
-    class ClipboardCopyElement extends HTMLElement {
-      constructor() {
-        super();
-        this.addEventListener('click', clicked);
-        this.addEventListener('focus', focused);
-        this.addEventListener('blur', blurred);
-      }
-
-      connectedCallback() {
-        if (!this.hasAttribute('tabindex')) {
-          this.setAttribute('tabindex', '0');
-        }
-
-        if (!this.hasAttribute('role')) {
-          this.setAttribute('role', 'button');
-        }
-      }
-
-      get value() {
-        return this.getAttribute('value') || '';
-      }
-
-      set value(text) {
-        this.setAttribute('value', text);
-      }
-
-    }
-
-    if (!window.customElements.get('clipboard-copy')) {
-      window.ClipboardCopyElement = ClipboardCopyElement;
-      window.customElements.define('clipboard-copy', ClipboardCopyElement);
-    }
-
-    return ClipboardCopyElement;
-
-  }));
-</script>
-<script>
-      document.addEventListener('clipboard-copy', function(event) {
-        const notice = event.target.querySelector('.notice')
-        notice.hidden = false
-        setTimeout(function() {
-          notice.hidden = true
-        }, 1000)
-      })
-</script>
-<style type="text/css">
-    pre { line-height: 125%; }
-td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-.highlight-ipynb .hll { background-color: var(--jp-cell-editor-active-background) }
-.highlight-ipynb { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
-.highlight-ipynb .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
-.highlight-ipynb .err { color: var(--jp-mirror-editor-error-color) } /* Error */
-.highlight-ipynb .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
-.highlight-ipynb .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
-.highlight-ipynb .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
-.highlight-ipynb .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
-.highlight-ipynb .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
-.highlight-ipynb .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
-.highlight-ipynb .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
-.highlight-ipynb .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
-.highlight-ipynb .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
-.highlight-ipynb .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
-.highlight-ipynb .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
-.highlight-ipynb .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
-.highlight-ipynb .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
-.highlight-ipynb .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
-.highlight-ipynb .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
-.highlight-ipynb .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
-.highlight-ipynb .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
-.highlight-ipynb .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
-.highlight-ipynb .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
-.highlight-ipynb .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
-.highlight-ipynb .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
-.highlight-ipynb .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
-.highlight-ipynb .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
-.highlight-ipynb .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
-.highlight-ipynb .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
-.highlight-ipynb .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
-.highlight-ipynb .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
-.highlight-ipynb .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
-.highlight-ipynb .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
-.highlight-ipynb .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
-.highlight-ipynb .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
-.highlight-ipynb .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
-.highlight-ipynb .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
-.highlight-ipynb .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
-.highlight-ipynb .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
-.highlight-ipynb .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
-.highlight-ipynb .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
-.highlight-ipynb .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
-.highlight-ipynb .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
-  </style>
-<style type="text/css">
-@charset "UTF-8";.jupyter-wrapper{--md-red-50: #ffebee;--md-red-100: #ffcdd2;--md-red-200: #ef9a9a;--md-red-300: #e57373;--md-red-400: #ef5350;--md-red-500: #f44336;--md-red-600: #e53935;--md-red-700: #d32f2f;--md-red-800: #c62828;--md-red-900: #b71c1c;--md-red-A100: #ff8a80;--md-red-A200: #ff5252;--md-red-A400: #ff1744;--md-red-A700: #d50000;--md-pink-50: #fce4ec;--md-pink-100: #f8bbd0;--md-pink-200: #f48fb1;--md-pink-300: #f06292;--md-pink-400: #ec407a;--md-pink-500: #e91e63;--md-pink- [...]
-</style>
-<style type="text/css">
-.jupyter-wrapper{--jp-shadow-base-lightness: 0;--jp-shadow-umbra-color: rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), .2 );--jp-shadow-penumbra-color: rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), .14 );--jp-shadow-ambient-color: rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), .12 );--jp-elevation-z0: none;--jp-elev [...]
-</style>
-<!-- Load mathjax -->
-<script src=""> </script>
-<!-- MathJax configuration -->
-<script type="text/x-mathjax-config">
-    init_mathjax = function() {
-        if (window.MathJax) {
-        // MathJax loaded
-            MathJax.Hub.Config({
-                TeX: {
-                    equationNumbers: {
-                    autoNumber: "AMS",
-                    useLabelIds: true
-                    }
-                },
-                tex2jax: {
-                    inlineMath: [ ['$','$'], ["\\(","\\)"] ],
-                    displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
-                    processEscapes: true,
-                    processEnvironments: true
-                },
-                displayAlign: 'center',
-                messageStyle: 'none',
-                CommonHTML: {
-                    linebreaks: {
-                    automatic: true
-                    }
-                }
-            });
-
-            MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
-        }
-    }
-    init_mathjax();
-    </script>
-<!-- End of mathjax configuration --><script type="module">
-  document.addEventListener("DOMContentLoaded", async () => {
-    const diagrams = document.querySelectorAll(".jp-Mermaid > pre.mermaid");
-    // do not load mermaidjs if not needed
-    if (!diagrams.length) {
-      return;
-    }
-    const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.7.0/mermaid.esm.min.mjs")).default;
-    const parser = new DOMParser();
-
-    mermaid.initialize({
-      maxTextSize: 100000,
-      maxEdges: 100000,
-      startOnLoad: false,
-      fontFamily: window
-        .getComputedStyle(document.body)
-        .getPropertyValue("--jp-ui-font-family"),
-      theme: document.querySelector("body[data-jp-theme-light='true']")
-        ? "default"
-        : "dark",
-    });
-
-    let _nextMermaidId = 0;
-
-    function makeMermaidImage(svg) {
-      const img = document.createElement("img");
-      const doc = parser.parseFromString(svg, "image/svg+xml");
-      const svgEl = doc.querySelector("svg");
-      const { maxWidth } = svgEl?.style || {};
-      const firstTitle = doc.querySelector("title");
-      const firstDesc = doc.querySelector("desc");
-
-      img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
-      if (maxWidth) {
-        img.width = parseInt(maxWidth);
-      }
-      if (firstTitle) {
-        img.setAttribute("alt", firstTitle.textContent);
-      }
-      if (firstDesc) {
-        const caption = document.createElement("figcaption");
-        caption.className = "sr-only";
-        caption.textContent = firstDesc.textContent;
-        return [img, caption];
-      }
-      return [img];
-    }
-
-    async function makeMermaidError(text) {
-      let errorMessage = "";
-      try {
-        await mermaid.parse(text);
-      } catch (err) {
-        errorMessage = `${err}`;
-      }
-
-      const result = document.createElement("details");
-      result.className = 'jp-RenderedMermaid-Details';
-      const summary = document.createElement("summary");
-      summary.className = 'jp-RenderedMermaid-Summary';
-      const pre = document.createElement("pre");
-      const code = document.createElement("code");
-      code.innerText = text;
-      pre.appendChild(code);
-      summary.appendChild(pre);
-      result.appendChild(summary);
-
-      const warning = document.createElement("pre");
-      warning.innerText = errorMessage;
-      result.appendChild(warning);
-      return [result];
-    }
-
-    async function renderOneMarmaid(src) {
-      const id = `jp-mermaid-${_nextMermaidId++}`;
-      const parent = src.parentNode;
-      let raw = src.textContent.trim();
-      const el = document.createElement("div");
-      el.style.visibility = "hidden";
-      document.body.appendChild(el);
-      let results = null;
-      let output = null;
-      try {
-        let { svg } = await mermaid.render(id, raw, el);
-        svg = cleanMermaidSvg(svg);
-        results = makeMermaidImage(svg);
-        output = document.createElement("figure");
-        results.map(output.appendChild, output);
-      } catch (err) {
-        parent.classList.add("jp-mod-warning");
-        results = await makeMermaidError(raw);
-        output = results[0];
-      } finally {
-        el.remove();
-      }
-      parent.classList.add("jp-RenderedMermaid");
-      parent.appendChild(output);
-    }
-
-
-    /**
-     * Post-process to ensure mermaid diagrams contain only valid SVG and XHTML.
-     */
-    function cleanMermaidSvg(svg) {
-      return svg.replace(RE_VOID_ELEMENT, replaceVoidElement);
-    }
-
-
-    /**
-     * A regular expression for all void elements, which may include attributes and
-     * a slash.
-     *
-     * @see https://developer.mozilla.org/en-US/docs/Glossary/Void_element
-     *
-     * Of these, only `<br>` is generated by Mermaid in place of `\n`,
-     * but _any_ "malformed" tag will break the SVG rendering entirely.
-     */
-    const RE_VOID_ELEMENT =
-      /<\s*(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\s*([^>]*?)\s*>/gi;
-
-    /**
-     * Ensure a void element is closed with a slash, preserving any attributes.
-     */
-    function replaceVoidElement(match, tag, rest) {
-      rest = rest.trim();
-      if (!rest.endsWith('/')) {
-        rest = `${rest} /`;
-      }
-      return `<${tag} ${rest}>`;
-    }
-
-    void Promise.all([...diagrams].map(renderOneMarmaid));
-  });
-</script>
-<style>
-  .jp-Mermaid:not(.jp-RenderedMermaid) {
-    display: none;
-  }
-
-  .jp-RenderedMermaid {
-    overflow: auto;
-    display: flex;
-  }
-
-  .jp-RenderedMermaid.jp-mod-warning {
-    width: auto;
-    padding: 0.5em;
-    margin-top: 0.5em;
-    border: var(--jp-border-width) solid var(--jp-warn-color2);
-    border-radius: var(--jp-border-radius);
-    color: var(--jp-ui-font-color1);
-    font-size: var(--jp-ui-font-size1);
-    white-space: pre-wrap;
-    word-wrap: break-word;
-  }
-
-  .jp-RenderedMermaid figure {
-    margin: 0;
-    overflow: auto;
-    max-width: 100%;
-  }
-
-  .jp-RenderedMermaid img {
-    max-width: 100%;
-  }
-
-  .jp-RenderedMermaid-Details > pre {
-    margin-top: 1em;
-  }
-
-  .jp-RenderedMermaid-Summary {
-    color: var(--jp-warn-color2);
-  }
-
-  .jp-RenderedMermaid:not(.jp-mod-warning) pre {
-    display: none;
-  }
-
-  .jp-RenderedMermaid-Summary > pre {
-    display: inline-block;
-    white-space: normal;
-  }
-</style>
-<!-- End of mermaid configuration --><div class="jupyter-wrapper">
-<div class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=1932983e-1cd2-41d0-a5eb-0537b3ac3feb">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<h1 id="sedonadb-guide">SedonaDB Guide<a class="anchor-link" href="#sedonadb-guide">¶</a></h1><p>This page explains how to process vector data with SedonaDB.</p>
-<p>You will learn how to create SedonaDB DataFrames, run spatial queries, and perform I/O operations with various types of files.</p>
-<p>Let’s start by establishing a SedonaDB connection.</p>
-<h2 id="establish-sedonadb-connection">Establish SedonaDB connection<a class="anchor-link" href="#establish-sedonadb-connection">¶</a></h2><p>Here’s how to create the SedonaDB connection:</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=53c3b7a8-c42a-407a-a454-6ee1e943fbcc">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[2]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-1">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sedonadb</span>
-
-<span class="n">sd</span> <span class="o">=</span> <span class="n">sedonadb</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-1">import sedonadb
-
-sd = sedonadb.connect()</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=7aeaa60f-2325-418c-8e72-4344bd4a75fe">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<p>Now let’s see how to create SedonaDB DataFrames.</p>
-<h2 id="create-sedonadb-dataframe">Create SedonaDB DataFrame<a class="anchor-link" href="#create-sedonadb-dataframe">¶</a></h2><p><strong>Manually creating SedonaDB DataFrame</strong></p>
-<p>Here’s how to manually create a SedonaDB DataFrame:</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=b3377767-d747-407c-92c0-8786c1998131">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[3]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-2">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"""</span>
+<!---
+  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.
+--><h1 id="working-with-vector-data">Working with Vector Data<a class="headerlink" href="#working-with-vector-data" title="Permanent link">¶</a></h1>
+<p>Process vector data using SedonaDB. You will learn to create DataFrames, run spatial queries, and manage file I/O. Let's begin by connecting to SedonaDB.</p>
+<p>Let's start by establishing a SedonaDB connection.</p>
+<h2 id="establish-sedonadb-connection">Establish SedonaDB connection<a class="headerlink" href="#establish-sedonadb-connection" title="Permanent link">¶</a></h2>
+<p>Here's how to create the SedonaDB connection:</p>
+<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">sedona.db</span>
+
+<span class="n">sd</span> <span class="o">=</span> <span class="n">sedona</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
+</code></pre></div>
+<p>Now, let's see how to create SedonaDB dataframes.</p>
+<h2 id="create-sedonadb-dataframe">Create SedonaDB DataFrame<a class="headerlink" href="#create-sedonadb-dataframe" title="Permanent link">¶</a></h2>
+<p><strong>Manually creating SedonaDB DataFrame</strong></p>
+<p>Here's how to manually create a SedonaDB DataFrame:</p>
+<div class="highlight"><pre><span></span><code><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"""</span>
 <span class="s2">SELECT * FROM (VALUES</span>
 <span class="s2">    ('one', ST_GeomFromWkt('POINT(1 2)')),</span>
 <span class="s2">    ('two', ST_GeomFromWkt('POLYGON((-74.0 40.7, -74.0 40.8, -73.9 40.8, -73.9 40.7, -74.0 40.7))')),</span>
 <span class="s2">    ('three', ST_GeomFromWkt('LINESTRING(-74.0060 40.7128, -73.9352 40.7306, -73.8561 40.8484)')))</span>
 <span class="s2">AS t(val, point)"""</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-2">df = sd.sql("""
-SELECT * FROM (VALUES
-    ('one', ST_GeomFromWkt('POINT(1 2)')),
-    ('two', ST_GeomFromWkt('POLYGON((-74.0 40.7, -74.0 40.8, -73.9 40.8, -73.9 40.7, -74.0 40.7))')),
-    ('three', ST_GeomFromWkt('LINESTRING(-74.0060 40.7128, -73.9352 40.7306, -73.8561 40.8484)')))
-AS t(val, point)""")</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0f9e1319-2e7a-4d98-9df0-47a9a73cfff3">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+</code></pre></div>
 <p>Check the type of the DataFrame.</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=e8be30ab-4818-4db8-bae2-83e973ad1b77">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[4]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-3">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="nb">type</span><span class="p">(</span><span class="n">df</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-3">type(df)</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child jp-OutputArea-executeResult">
-<div class="jp-OutputPrompt jp-OutputArea-prompt">Out[4]:</div>
-<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain" tabindex="0">
-<pre>sedonadb.dataframe.DataFrame</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=8225ed1f-45a4-4915-a582-8ae191ec53ed">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<div class="highlight"><pre><span></span><code><span class="nb">type</span><span class="p">(</span><span class="n">df</span><span class="p">)</span>
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code>sedonadb.dataframe.DataFrame
+</code></pre></div>
+
 <p><strong>Create SedonaDB DataFrame from files in S3</strong></p>
-<p>For most production applications, you will create SedonaDB DataFrames by reading data from a file.  Let’s see how to read GeoParquet files in AWS S3 into a SedonaDB DataFrame.</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=151df287-4b2d-433e-9769-c3378df03b1b">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[5]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-4">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">sd</span><span class="o">.</span><span class="n">read_parquet</span><span class="p">(</span>
+<p>For most production applications, you will create SedonaDB DataFrames by reading data from a file.  Let's see how to read GeoParquet files in AWS S3 into a SedonaDB DataFrame.</p>
+<div class="highlight"><pre><span></span><code><span class="n">sd</span><span class="o">.</span><span class="n">read_parquet</span><span class="p">(</span>
     <span class="s2">"s3://overturemaps-us-west-2/release/2025-08-20.0/theme=divisions/type=division_area/"</span><span class="p">,</span>
     <span class="n">options</span><span class="o">=</span><span class="p">{</span><span class="s2">"aws.skip_signature"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"aws.region"</span><span class="p">:</span> <span class="s2">"us-west-2"</span><span class="p">},</span>
 <span class="p">)</span><span class="o">.</span><span class="n">to_view</span><span class="p">(</span><span class="s2">"division_area"</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-4">sd.read_parquet(
-    "s3://overturemaps-us-west-2/release/2025-08-20.0/theme=divisions/type=division_area/",
-    options={"aws.skip_signature": True, "aws.region": "us-west-2"},
-).to_view("division_area")</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=858fcc66-816d-4c71-8875-82b74169eccd">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<p>Let’s now run some spatial queries.</p>
-<p><strong>Read from GeoPandas DataFrame</strong></p>
+</code></pre></div>
+<p>Now, let's run some spatial queries.</p>
+<h3 id="read-from-geopandas-dataframe">Read from GeoPandas DataFrame<a class="headerlink" href="#read-from-geopandas-dataframe" title="Permanent link">¶</a></h3>
 <p>This section shows how to convert a GeoPandas DataFrame into a SedonaDB DataFrame.</p>
 <p>Start by reading a FlatGeoBuf file into a GeoPandas DataFrame:</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=b81549f2-0f58-49e4-9011-8de6578c2b0e">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[12]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-5">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">geopandas</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">gpd</span>
+<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">geopandas</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">gpd</span>
 
 <span class="n">path</span> <span class="o">=</span> <span class="s2">"https://raw.githubusercontent.com/geoarrow/geoarrow-data/v0.2.0/natural-earth/files/natural-earth_cities.fgb"</span>
 <span class="n">gdf</span> <span class="o">=</span> <span class="n">gpd</span><span class="o">.</span><span class="n">read_file</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-5">import geopandas as gpd
-
-path = "https://raw.githubusercontent.com/geoarrow/geoarrow-data/v0.2.0/natural-earth/files/natural-earth_cities.fgb"
-gdf = gpd.read_file(path)</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=2265f94b-ccb3-4634-8c52-a8799c68c76a">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+</code></pre></div>
 <p>Now convert the GeoPandas DataFrame to a SedonaDB DataFrame and view three rows of content:</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=0e4819db-bf58-42d7-8b5b-f272d0f19266">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[7]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-6">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">create_data_frame</span><span class="p">(</span><span class="n">gdf</span><span class="p">)</span>
+<div class="highlight"><pre><span></span><code><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">create_data_frame</span><span class="p">(</span><span class="n">gdf</span><span class="p">)</span>
 <span class="n">df</span><span class="o">.</span><span class="n">show</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-6">df = sd.create_data_frame(gdf)
-df.show(3)</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌──────────────┬──────────────────────────────┐
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code>┌──────────────┬──────────────────────────────┐
 │     name     ┆           geometry           │
 │     utf8     ┆           geometry           │
 ╞══════════════╪══════════════════════════════╡
@@ -1752,45 +1241,13 @@ df.show(3)</div>
 ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
 │ Vaduz        ┆ POINT(9.5166695 47.1337238)  │
 └──────────────┴──────────────────────────────┘
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=6890bcc3-f3bd-4c47-bf86-2607bed5e480">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<h2 id="spatial-queries">Spatial queries<a class="anchor-link" href="#spatial-queries">¶</a></h2><p>Let’s see how to run spatial operations like filtering, joins, and clustering algorithms.</p>
-<p><em><strong>Spatial filtering</strong></em></p>
-<p>Let’s run a spatial filtering operation to fetch all the objects in the following polygon:</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=8c8a4b48-8c4e-412e-900f-8c0f6f4ccc1d">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[8]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-7">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">nova_scotia_bbox_wkt</span> <span class="o">=</span> <span class="p">(</span>
+</code></pre></div>
+
+<h2 id="spatial-queries">Spatial queries<a class="headerlink" href="#spatial-queries" title="Permanent link">¶</a></h2>
+<p>Let's see how to run spatial operations like filtering, joins, and clustering algorithms.</p>
+<h3 id="spatial-filtering">Spatial filtering<a class="headerlink" href="#spatial-filtering" title="Permanent link">¶</a></h3>
+<p>Let's run a spatial filtering operation to fetch all the objects in the following polygon:</p>
+<div class="highlight"><pre><span></span><code><span class="n">nova_scotia_bbox_wkt</span> <span class="o">=</span> <span class="p">(</span>
     <span class="s2">"POLYGON((-66.5 43.4, -66.5 47.1, -59.8 47.1, -59.8 43.4, -66.5 43.4))"</span>
 <span class="p">)</span>
 
@@ -1801,80 +1258,25 @@ df.show(3)</div>
 <span class="s2">"""</span><span class="p">)</span>
 
 <span class="n">ns</span><span class="o">.</span><span class="n">show</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-7">nova_scotia_bbox_wkt = (
-    "POLYGON((-66.5 43.4, -66.5 47.1, -59.8 47.1, -59.8 43.4, -66.5 43.4))"
-)
-
-ns = sd.sql(f"""
-SELECT country, region, geometry
-FROM division_area
-WHERE ST_Intersects(geometry, ST_SetSRID(ST_GeomFromText('{nova_scotia_bbox_wkt}'), 4326))
-""")
-
-ns.show(3)</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌──────────┬──────────┬────────────────────────────────────────────────────────────────────────────┐
-│  country ┆  region  ┆                                  geometry                                  │
-│ utf8view ┆ utf8view ┆                                  geometry                                  │
-╞══════════╪══════════╪════════════════════════════════════════════════════════════════════════════╡
-│ CA       ┆ CA-NS    ┆ POLYGON((-66.0528452 43.4531336,-66.0883401 43.3978188,-65.9647654 43.361… │
-├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
-│ CA       ┆ CA-NS    ┆ POLYGON((-66.0222822 43.5166842,-66.0252286 43.5100071,-66.0528452 43.453… │
-├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
-│ CA       ┆ CA-NS    ┆ POLYGON((-65.7451389 43.5336263,-65.7450818 43.5347004,-65.7449545 43.535… │
-└──────────┴──────────┴────────────────────────────────────────────────────────────────────────────┘
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=32076e01-d807-40ed-8457-9d8c4244e89f">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<p>You can see it only includes the divisions in the Nova Scotia area.  Skip to the visualization section to see how this data can be graphed on a map.</p>
-<p><em><strong>K-nearest neighbors (KNN) joins</strong></em></p>
-<p>Create <code>restaurants</code> and <code>customers</code> tables so we can demonstrate the KNN join functionality.</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=deaa36db-2fee-4ba2-ab79-1dc756cb1655">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[9]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-8">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"""</span>
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code><span class="err">┌──────────┬──────────┬────────────────────────────────────────────────────────────────────────────┐</span>
+<span class="err">│</span><span class="w">  </span><span class="n">country</span><span class="w"> </span><span class="err">┆</span><span class="w">  </span><span class="n">region</span><span class="w">  </span><span class="err">┆</span><span class="w">                                  </span><span class="n">geometry</span><span class="w">                                  </span><span class="err">│</span>
+<span class="err">│</span><span class="w"> </span><span class="n">utf8view</span><span class="w"> </span><span class="err">┆</span><span class="w"> </span><span class="n">utf8view</span><span class="w"> </span><span class="err">┆</span><span class="w">                                  </span><span class="n">geometry</span><span class="w">                                  </span><span class="err">│</span>
+<span class="err">╞══════════╪══════════╪════════════════════════════════════════════════════════════════════════════╡</span>
+<span class="err">│</span><span class="w"> </span><span class="n">CA</span><span class="w">       </span><span class="err">┆</span><span class="w"> </span><span class="n">CA</span><span class="o">-</span><span class="n">NS</span><span class="w">    </span><span class="err">┆</span><span class="w"> </span><span class="n">POLYGON</span><span class="p">((</span><span class="o">-</span><span class="mf">66.0528452</span><span class="w"> </span><span class="mf">43.4531336</span><span class="p" [...]
+<span class="err">├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤</span>
+<span class="err">│</span><span class="w"> </span><span class="n">CA</span><span class="w">       </span><span class="err">┆</span><span class="w"> </span><span class="n">CA</span><span class="o">-</span><span class="n">NS</span><span class="w">    </span><span class="err">┆</span><span class="w"> </span><span class="n">POLYGON</span><span class="p">((</span><span class="o">-</span><span class="mf">66.0222822</span><span class="w"> </span><span class="mf">43.5166842</span><span class="p" [...]
+<span class="err">├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤</span>
+<span class="err">│</span><span class="w"> </span><span class="n">CA</span><span class="w">       </span><span class="err">┆</span><span class="w"> </span><span class="n">CA</span><span class="o">-</span><span class="n">NS</span><span class="w">    </span><span class="err">┆</span><span class="w"> </span><span class="n">POLYGON</span><span class="p">((</span><span class="o">-</span><span class="mf">65.7451389</span><span class="w"> </span><span class="mf">43.5336263</span><span class="p" [...]
+<span class="err">└──────────┴──────────┴────────────────────────────────────────────────────────────────────────────┘</span>
+</code></pre></div>
+
+<p>You can see it only includes the divisions in the Nova Scotia area.</p>
+<h3 id="k-nearest-neighbors-knn-joins">K-nearest neighbors (KNN) joins<a class="headerlink" href="#k-nearest-neighbors-knn-joins" title="Permanent link">¶</a></h3>
+<p>Create <code>restaurants</code> and <code>customers</code> views so we can demonstrate the KNN join functionality.</p>
+<div class="highlight"><pre><span></span><code><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"""</span>
 <span class="s2">SELECT name, ST_Point(lng, lat) AS location</span>
-<span class="s2">FROM (VALUES </span>
+<span class="s2">FROM (VALUES</span>
 <span class="s2">    (101, -74.0, 40.7, 'Pizza Palace'),</span>
 <span class="s2">    (102, -73.99, 40.69, 'Burger Barn'),</span>
 <span class="s2">    (103, -74.02, 40.72, 'Taco Town'),</span>
@@ -1887,7 +1289,7 @@ ns.show(3)</div>
 
 <span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"""</span>
 <span class="s2">SELECT name, ST_Point(lng, lat) AS location</span>
-<span class="s2">FROM (VALUES </span>
+<span class="s2">FROM (VALUES</span>
 <span class="s2">    (1, -74.0, 40.7, 'Alice'),</span>
 <span class="s2">    (2, -73.9, 40.8, 'Bob'),</span>
 <span class="s2">    (3, -74.1, 40.6, 'Carol')</span>
@@ -1895,69 +1297,10 @@ ns.show(3)</div>
 <span class="s2">"""</span><span class="p">)</span>
 <span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"drop view if exists customers"</span><span class="p">)</span>
 <span class="n">df</span><span class="o">.</span><span class="n">to_view</span><span class="p">(</span><span class="s2">"customers"</span><span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-8">df = sd.sql("""
-SELECT name, ST_Point(lng, lat) AS location
-FROM (VALUES 
-    (101, -74.0, 40.7, 'Pizza Palace'),
-    (102, -73.99, 40.69, 'Burger Barn'),
-    (103, -74.02, 40.72, 'Taco Town'),
-    (104, -73.98, 40.75, 'Sushi Spot'),
-    (105, -74.05, 40.68, 'Deli Direct')
-) AS t(id, lng, lat, name)
-""")
-sd.sql("drop view if exists restaurants")
-df.to_view("restaurants")
-
-df = sd.sql("""
-SELECT name, ST_Point(lng, lat) AS location
-FROM (VALUES 
-    (1, -74.0, 40.7, 'Alice'),
-    (2, -73.9, 40.8, 'Bob'),
-    (3, -74.1, 40.6, 'Carol')
-) AS t(id, lng, lat, name)
-""")
-sd.sql("drop view if exists customers")
-df.to_view("customers")</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=e3bc4976-4245-432f-b265-7f6aa13f35b9">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[10]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-9">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-9">df.show()</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌───────┬───────────────────┐
+</code></pre></div>
+<div class="highlight"><pre><span></span><code><span class="n">df</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code>┌───────┬───────────────────┐
 │  name ┆      location     │
 │  utf8 ┆      geometry     │
 ╞═══════╪═══════════════════╡
@@ -1967,43 +1310,10 @@ df.to_view("customers")</div>
 ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
 │ Carol ┆ POINT(-74.1 40.6) │
 └───────┴───────────────────┘
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=9df227d6-0972-457a-87e3-5a89802c460f">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+</code></pre></div>
+
 <p>Perform a KNN join to identify the two restaurants that are nearest to each customer:</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=05565e15-ee18-431c-8fd2-673291d8d0ee">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[11]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-10">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"""</span>
+<div class="highlight"><pre><span></span><code><span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"""</span>
 <span class="s2">SELECT</span>
 <span class="s2">    c.name AS customer,</span>
 <span class="s2">    r.name AS restaurant</span>
@@ -2011,27 +1321,8 @@ df.to_view("customers")</div>
 <span class="s2">WHERE ST_KNN(c.location, r.location, 2, false)</span>
 <span class="s2">ORDER BY c.name, r.name;</span>
 <span class="s2">"""</span><span class="p">)</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-10">sd.sql("""
-SELECT
-    c.name AS customer,
-    r.name AS restaurant
-FROM customers c, restaurants r
-WHERE ST_KNN(c.location, r.location, 2, false)
-ORDER BY c.name, r.name;
-""").show()</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌──────────┬──────────────┐
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code>┌──────────┬──────────────┐
 │ customer ┆  restaurant  │
 │   utf8   ┆     utf8     │
 ╞══════════╪══════════════╡
@@ -2047,35 +1338,9 @@ ORDER BY c.name, r.name;
 ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
 │ Carol    ┆ Pizza Palace │
 └──────────┴──────────────┘
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=2e93fe6a-b0a7-4ec0-952c-dde9edcacdc4">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<p>Notice how each customer has two rows - one for each of the two closest restaurants.</p>
-<h2 id="files">Files<a class="anchor-link" href="#files">¶</a></h2><p>You can read GeoParquet files with SedonaDB, see the following example:</p>
-<div class="highlight"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">read_parquet</span><span class="p">(</span><span class="s2">"some_file.parquet"</span><span class="p">)</span>
-</pre></div>
-<p>Once you read the file, you can easily expose it as a view and query it with spatial SQL, as we demonstrated in the example above.</p>
-</div>
-</div>
-</div>
-</div>
-</div> <!-- jp-Notebook -->
-</div> <!-- jupyter-wrapper -->
+</code></pre></div>
 
-        <style>
-        ['pre { line-height: 125%; }\ntd.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\nspan.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\ntd.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\nspan.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\n.highlight-ipynb .hll { b [...]
-        </style>
-        
+<p>Notice how each customer has two rows - one for each of the two closest restaurants.</p>
 
 
 
@@ -2096,7 +1361,7 @@ ORDER BY c.name, r.name;
     <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"></path></svg>
     </span>
-    <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime" title="September 12, 2025 18:17:17 UTC">September 12, 2025 18:17:17</span>
+    <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime" title="September 19, 2025 07:13:30 UTC">September 19, 2025 07:13:30</span>
   </span>
 
     
@@ -2132,7 +1397,7 @@ ORDER BY c.name, r.name;
       <nav class="md-footer__inner md-grid" aria-label="Footer">
         
           
-          <a href=".." class="md-footer__link md-footer__link--prev" aria-label="Previous: Home">
+          <a href="../quickstart-python/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Python Quickstart">
             <div class="md-footer__button md-icon">
               
               <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"></path></svg>
@@ -2142,20 +1407,20 @@ ORDER BY c.name, r.name;
                 Previous
               </span>
               <div class="md-ellipsis">
-                Home
+                Python Quickstart
               </div>
             </div>
           </a>
         
         
           
-          <a href="../quickstart-cli/" class="md-footer__link md-footer__link--next" aria-label="Next: CLI Quickstart">
+          <a href="../geopandas-interop/" class="md-footer__link md-footer__link--next" aria-label="Next: Working with GeoPandas">
             <div class="md-footer__title">
               <span class="md-footer__direction">
                 Next
               </span>
               <div class="md-ellipsis">
-                CLI Quickstart
+                Working with GeoPandas
               </div>
             </div>
             <div class="md-footer__button md-icon">
diff --git a/0.1.0/quickstart-python.ipynb b/0.1.0/quickstart-python.ipynb
new file mode 100644
index 0000000..3558e22
--- /dev/null
+++ b/0.1.0/quickstart-python.ipynb
@@ -0,0 +1,414 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "6a8168a4",
+   "metadata": {},
+   "source": [
+    "<!---\n",
+    "  Licensed to the Apache Software Foundation (ASF) under one\n",
+    "  or more contributor license agreements.  See the NOTICE file\n",
+    "  distributed with this work for additional information\n",
+    "  regarding copyright ownership.  The ASF licenses this file\n",
+    "  to you under the Apache License, Version 2.0 (the\n",
+    "  \"License\"); you may not use this file except in compliance\n",
+    "  with the License.  You may obtain a copy of the License at\n",
+    "\n",
+    "    http://www.apache.org/licenses/LICENSE-2.0\n",
+    "\n",
+    "  Unless required by applicable law or agreed to in writing,\n",
+    "  software distributed under the License is distributed on an\n",
+    "  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n",
+    "  KIND, either express or implied.  See the License for the\n",
+    "  specific language governing permissions and limitations\n",
+    "  under the License.\n",
+    "-->\n",
+    "\n",
+    "# Python Quickstart\n",
+    "\n",
+    "SedonaDB for Python can be installed from [PyPI](https://pypi.org):\n",
+    "\n",
+    "```shell\n",
+    "pip install \"apache-sedona[db]\"\n",
+    "```\n",
+    "\n",
+    "If you can import the module and connect to a new session, you're good to go!"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "a06df76b",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌────────────┐\n",
+      "│    geom    │\n",
+      "│  geometry  │\n",
+      "╞════════════╡\n",
+      "│ POINT(0 1) │\n",
+      "└────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "import sedona.db\n",
+    "\n",
+    "sd = sedona.db.connect()\n",
+    "sd.sql(\"SELECT ST_Point(0, 1) as geom\").show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "c0d775bd-4cd8-454e-8cb6-9983c5a7ded3",
+   "metadata": {},
+   "source": [
+    "## Point in polygon join"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "a6e1df61-c77f-4829-ab79-3d1b692408e5",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "cities = sd.read_parquet(\n",
+    "    \"https://raw.githubusercontent.com/geoarrow/geoarrow-data/v0.2.0/natural-earth/files/natural-earth_cities_geo.parquet\"\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "ff571cec-5a35-46c1-b0d6-a40fad33a87b",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌──────────────┬───────────────────────────────┐\n",
+      "│     name     ┆            geometry           │\n",
+      "│   utf8view   ┆            geometry           │\n",
+      "╞══════════════╪═══════════════════════════════╡\n",
+      "│ Vatican City ┆ POINT(12.4533865 41.9032822)  │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ San Marino   ┆ POINT(12.4417702 43.9360958)  │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Vaduz        ┆ POINT(9.5166695 47.1337238)   │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Lobamba      ┆ POINT(31.1999971 -26.4666675) │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Luxembourg   ┆ POINT(6.1300028 49.6116604)   │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Palikir      ┆ POINT(158.1499743 6.9166437)  │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Majuro       ┆ POINT(171.3800002 7.1030043)  │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Funafuti     ┆ POINT(179.2166471 -8.516652)  │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Melekeok     ┆ POINT(134.6265485 7.4873962)  │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Bir Lehlou   ┆ POINT(-9.6525222 26.1191667)  │\n",
+      "└──────────────┴───────────────────────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "cities.show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "d4741ac1-44aa-4ae0-b2b6-b68e985b5c44",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "countries = sd.read_parquet(\n",
+    "    \"https://raw.githubusercontent.com/geoarrow/geoarrow-data/v0.2.0/natural-earth/files/natural-earth_countries_geo.parquet\"\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "aa7597b5-fb0b-42f2-be96-10a82b5dd76b",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌─────────────────────────────┬───────────────┬────────────────────────────────────────────────────┐\n",
+      "│             name            ┆   continent   ┆                      geometry                      │\n",
+      "│           utf8view          ┆    utf8view   ┆                      geometry                      │\n",
+      "╞═════════════════════════════╪═══════════════╪════════════════════════════════════════════════════╡\n",
+      "│ Fiji                        ┆ Oceania       ┆ MULTIPOLYGON(((180 -16.067132663642447,180 -16.55… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ United Republic of Tanzania ┆ Africa        ┆ POLYGON((33.90371119710453 -0.9500000000000001,34… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Western Sahara              ┆ Africa        ┆ POLYGON((-8.665589565454809 27.656425889592356,-8… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Canada                      ┆ North America ┆ MULTIPOLYGON(((-122.84000000000003 49.00000000000… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ United States of America    ┆ North America ┆ MULTIPOLYGON(((-122.84000000000003 49.00000000000… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Kazakhstan                  ┆ Asia          ┆ POLYGON((87.35997033076265 49.21498078062912,86.5… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Uzbekistan                  ┆ Asia          ┆ POLYGON((55.96819135928291 41.30864166926936,55.9… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Papua New Guinea            ┆ Oceania       ┆ MULTIPOLYGON(((141.00021040259185 -2.600151055515… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Indonesia                   ┆ Asia          ┆ MULTIPOLYGON(((141.00021040259185 -2.600151055515… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Argentina                   ┆ South America ┆ MULTIPOLYGON(((-68.63401022758323 -52.63637045887… │\n",
+      "└─────────────────────────────┴───────────────┴────────────────────────────────────────────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "countries.show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "c18af1fa-3847-4a43-ba1b-2ce99e8505d3",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "cities.to_view(\"cities\")\n",
+    "countries.to_view(\"countries\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "2cf5941c-ff25-4288-bf0c-983f1cd8125b",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌───────────────┬──────────────────────┬─────────────────────┬───────────────┬─────────────────────┐\n",
+      "│      name     ┆       geometry       ┆         name        ┆   continent   ┆       geometry      │\n",
+      "│    utf8view   ┆       geometry       ┆       utf8view      ┆    utf8view   ┆       geometry      │\n",
+      "╞═══════════════╪══════════════════════╪═════════════════════╪═══════════════╪═════════════════════╡\n",
+      "│ Suva          ┆ POINT(178.4417073 -… ┆ Fiji                ┆ Oceania       ┆ MULTIPOLYGON(((180… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Dodoma        ┆ POINT(35.7500036 -6… ┆ United Republic of… ┆ Africa        ┆ POLYGON((33.903711… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Dar es Salaam ┆ POINT(39.266396 -6.… ┆ United Republic of… ┆ Africa        ┆ POLYGON((33.903711… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Bir Lehlou    ┆ POINT(-9.6525222 26… ┆ Western Sahara      ┆ Africa        ┆ POLYGON((-8.665589… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Ottawa        ┆ POINT(-75.7019612 4… ┆ Canada              ┆ North America ┆ MULTIPOLYGON(((-12… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Vancouver     ┆ POINT(-123.1235901 … ┆ Canada              ┆ North America ┆ MULTIPOLYGON(((-12… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Toronto       ┆ POINT(-79.389458554… ┆ Canada              ┆ North America ┆ MULTIPOLYGON(((-12… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ San Francisco ┆ POINT(-122.39959956… ┆ United States of A… ┆ North America ┆ MULTIPOLYGON(((-12… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Denver        ┆ POINT(-104.9859618 … ┆ United States of A… ┆ North America ┆ MULTIPOLYGON(((-12… │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ Houston       ┆ POINT(-95.348436256… ┆ United States of A… ┆ North America ┆ MULTIPOLYGON(((-12… │\n",
+      "└───────────────┴──────────────────────┴─────────────────────┴───────────────┴─────────────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "# join the cities and countries tables\n",
+    "sd.sql(\"\"\"\n",
+    "select * from cities\n",
+    "join countries\n",
+    "where ST_Intersects(cities.geometry, countries.geometry)\n",
+    "\"\"\").show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "6d4fcb29-35dd-4ff6-933d-e480f1698662",
+   "metadata": {},
+   "source": [
+    "## Manually create SedonaDB DataFrames"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "8fd8cae5-0b77-4a09-8b85-33bcc6abb813",
+   "metadata": {},
+   "source": [
+    "Let's create a DataFrame with one string column and one geometry column to show some of the functionality of the SedonaDB Python interface."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "6dd816c7-fd3f-4358-b628-ef5e6940c95c",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df = sd.sql(\"\"\"\n",
+    "SELECT * FROM (VALUES\n",
+    "    ('one', ST_GeomFromWkt('POINT(1 2)')),\n",
+    "    ('two', ST_GeomFromWkt('POLYGON((-74.0 40.7, -74.0 40.8, -73.9 40.8, -73.9 40.7, -74.0 40.7))')),\n",
+    "    ('three', ST_GeomFromWkt('LINESTRING(-74.0060 40.7128, -73.9352 40.7306, -73.8561 40.8484)')))\n",
+    "AS t(val, point)\"\"\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "fb566114-0f2c-45c7-bc94-2396542c2458",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌───────┬──────────────────────────────────────────────────────────────────────────────────────────┐\n",
+      "│  val  ┆                                           point                                          │\n",
+      "│  utf8 ┆                                          binary                                          │\n",
+      "╞═══════╪══════════════════════════════════════════════════════════════════════════════════════════╡\n",
+      "│ one   ┆ 0101000000000000000000f03f0000000000000040                                               │\n",
+      "├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ two   ┆ 0103000000010000000500000000000000008052c09a9999999959444000000000008052c06666666666664… │\n",
+      "├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ three ┆ 010200000003000000aaf1d24d628052c05e4bc8073d5b444007ce1951da7b52c0933a014d845d4440c286a… │\n",
+      "└───────┴──────────────────────────────────────────────────────────────────────────────────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "df.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "b051dbf5-2fdc-4cf7-9cfc-73d3ca5a5d94",
+   "metadata": {},
+   "source": [
+    "Verify that this object is a SedonaDB DataFrame."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "id": "44574ca0-1a39-4018-9729-ae56c232013c",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "sedonadb.dataframe.DataFrame"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "type(df)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "d6e7e7b0-bac3-4ce4-8839-a7fa3dd0b4c6",
+   "metadata": {},
+   "source": [
+    "Expose the DataFrame as a view and run a SQL operation on the geometry data."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "id": "aac2295a-68fe-44c4-911a-e049f789ad35",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df.to_view(\"fun_table\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "id": "de296b34",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌─────────────┬───────────┬─────────────┐\n",
+      "│ column_name ┆ data_type ┆ is_nullable │\n",
+      "│     utf8    ┆    utf8   ┆     utf8    │\n",
+      "╞═════════════╪═══════════╪═════════════╡\n",
+      "│ val         ┆ Utf8      ┆ YES         │\n",
+      "├╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ point       ┆ Binary    ┆ YES         │\n",
+      "└─────────────┴───────────┴─────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "sd.sql(\"DESCRIBE fun_table\").show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "id": "09eefd76-b325-4d58-8284-92c2340514b8",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "┌───────┬─────────────────────────────────────────────┬────────────────────────────────────────────┐\n",
+      "│  val  ┆                    point                    ┆                  centroid                  │\n",
+      "│  utf8 ┆                    binary                   ┆                  geometry                  │\n",
+      "╞═══════╪═════════════════════════════════════════════╪════════════════════════════════════════════╡\n",
+      "│ one   ┆ 0101000000000000000000f03f0000000000000040  ┆ POINT(1 2)                                 │\n",
+      "├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ two   ┆ 0103000000010000000500000000000000008052c0… ┆ POINT(-73.95 40.75)                        │\n",
+      "├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤\n",
+      "│ three ┆ 010200000003000000aaf1d24d628052c05e4bc807… ┆ POINT(-73.92111155675562 40.7664673976246… │\n",
+      "└───────┴─────────────────────────────────────────────┴────────────────────────────────────────────┘\n"
+     ]
+    }
+   ],
+   "source": [
+    "sd.sql(\"SELECT *, ST_Centroid(ST_GeomFromWKB(point)) as centroid from fun_table\").show()"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": ".venv (3.13.3)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.13.3"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/0.1.0/quickstart-python/index.html b/0.1.0/quickstart-python/index.html
index 7155019..c8b731a 100644
--- a/0.1.0/quickstart-python/index.html
+++ b/0.1.0/quickstart-python/index.html
@@ -7,11 +7,13 @@
       
       
       
+        <link rel="canonical" href="https://sedona.apache.org/sedonadb/latest/quickstart-python/">
       
-        <link rel="prev" href="../quickstart-cli/">
       
+        <link rel="prev" href="..">
       
-        <link rel="next" href="../development/">
+      
+        <link rel="next" href="../programming-guide/">
       
       
       <link rel="icon" href="../image/sedona_logo_symbol.png">
@@ -106,7 +108,7 @@
   <nav class="md-header__inner md-grid" aria-label="Header">
     <a href=".." title="SedonaDB" class="md-header__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="../image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="../image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     <label class="md-header__button md-icon" for="__drawer">
@@ -215,7 +217,7 @@
   
     
   
-  Home
+  SedonaDB
 
       </a>
     </li>
@@ -229,9 +231,28 @@
     
   
   
+    <li class="md-tabs__item md-tabs__item--active">
+      <a href="./" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Python Quickstart
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
     
     
-      <li class="md-tabs__item md-tabs__item--active">
+      <li class="md-tabs__item">
         <a href="../programming-guide/" class="md-tabs__link">
           
   
@@ -298,6 +319,25 @@
   
   
   
+    <li class="md-tabs__item">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-tabs__link">
+        
+  
+  
+    
+  
+  Community
+
+      </a>
+    </li>
+  
+
+      
+        
+  
+  
+  
+  
     <li class="md-tabs__item">
       <a href="https://sedona.apache.org/latest/asf/asf/" class="md-tabs__link">
         
@@ -324,7 +364,7 @@
   
     
   
-  Return to Sedona Homepage
+  Sedona Homepage
 
       </a>
     </li>
@@ -361,7 +401,7 @@
   <label class="md-nav__title" for="__drawer">
     <a href=".." title="SedonaDB" class="md-nav__button md-logo" aria-label="SedonaDB" data-md-component="logo">
       
-  <img src="../image/sedona_logo_symbol_white.svg" alt="logo">
+  <img src="../image/sedona_logo_symbol.png" alt="logo">
 
     </a>
     SedonaDB
@@ -393,7 +433,7 @@
   
   
   <span class="md-ellipsis">
-    Home
+    SedonaDB
     
   </span>
   
@@ -411,27 +451,104 @@
   
   
   
+    <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">
+    Python Quickstart
     
+  </span>
+  
+
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <a href="./" class="md-nav__link md-nav__link--active">
+        
+  
+  
+  <span class="md-ellipsis">
+    Python Quickstart
     
+  </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="#point-in-polygon-join" class="md-nav__link">
+    <span class="md-ellipsis">
+      Point in polygon join
+    </span>
+  </a>
+  
+</li>
+      
+        <li class="md-nav__item">
+  <a href="#manually-create-sedonadb-dataframes" class="md-nav__link">
+    <span class="md-ellipsis">
+      Manually create SedonaDB DataFrames
+    </span>
+  </a>
+  
+</li>
+      
+    </ul>
+  
+</nav>
+      
+    </li>
+  
+
     
       
-        
-        
+      
+  
+  
+  
+  
+    
+    
+    
+    
       
       
         
       
     
     
-    <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
+    <li class="md-nav__item md-nav__item--nested">
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3">
         
           
-          <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="">
+          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
             
   
   
@@ -444,8 +561,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
-          <label class="md-nav__title" for="__nav_2">
+        <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>
             SedonaDB Guides
           </label>
@@ -463,7 +580,7 @@
   
   
   <span class="md-ellipsis">
-    SedonaDB Guide
+    Working with Vector Data
     
   </span>
   
@@ -481,12 +598,12 @@
   
   
     <li class="md-nav__item">
-      <a href="../quickstart-cli/" class="md-nav__link">
+      <a href="../geopandas-interop/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    CLI Quickstart
+    Working with GeoPandas
     
   </span>
   
@@ -501,89 +618,43 @@
                 
   
   
-    
-  
-  
   
-    <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">
-    Python Quickstart
-    
-  </span>
   
-
-          <span class="md-nav__icon md-icon"></span>
-        </label>
-      
-      <a href="./" class="md-nav__link md-nav__link--active">
+    <li class="md-nav__item">
+      <a href="../overture-examples/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Python Quickstart
+    Working with Overture
     
   </span>
   
 
       </a>
-      
-        
-
-<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
+    </li>
   
+
+              
+            
+              
+                
   
   
-    
   
   
-    <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="#point-in-polygon-join" class="md-nav__link">
-    <span class="md-ellipsis">
-      Point in polygon join
-    </span>
-  </a>
-  
-</li>
-      
-        <li class="md-nav__item">
-  <a href="#manually-create-sedonadb-dataframes" class="md-nav__link">
-    <span class="md-ellipsis">
-      Manually create SedonaDB DataFrames
-    </span>
-  </a>
+    <li class="md-nav__item">
+      <a href="../working-with-parquet-files/" class="md-nav__link">
+        
   
-</li>
-      
-        <li class="md-nav__item">
-  <a href="#interactive-mode" class="md-nav__link">
-    <span class="md-ellipsis">
-      Interactive mode
-    </span>
-  </a>
   
-</li>
-      
-    </ul>
+  <span class="md-ellipsis">
+    Working with Parquet Files
+    
+  </span>
   
-</nav>
-      
+
+      </a>
     </li>
   
 
@@ -596,12 +667,12 @@
   
   
     <li class="md-nav__item">
-      <a href="../development/" class="md-nav__link">
+      <a href="../contributors-guide/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Development
+    Contributors Guide
     
   </span>
   
@@ -639,10 +710,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4">
         
           
-          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
             
   
   
@@ -655,8 +726,8 @@
             <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">
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4">
             <span class="md-nav__icon md-icon"></span>
             SedonaDB Reference
           </label>
@@ -682,10 +753,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_1">
         
           
-          <label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_1" id="__nav_4_1_label" tabindex="0">
             
   
   
@@ -698,8 +769,8 @@
             <span class="md-nav__icon md-icon"></span>
           </label>
         
-        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
-          <label class="md-nav__title" for="__nav_3_1">
+        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_1_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4_1">
             <span class="md-nav__icon md-icon"></span>
             Python
           </label>
@@ -756,10 +827,10 @@
       
         
         
-        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2">
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2">
         
           
-          <label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
+          <label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0">
             
   
   
@@ -772,8 +843,8 @@
             <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">
+        <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>
             SQL
           </label>
@@ -825,19 +896,34 @@
 
               
             
+          </ul>
+        </nav>
+      
+    </li>
+  
+
               
-                
+            
+          </ul>
+        </nav>
+      
+    </li>
+  
+
+    
+      
+      
   
   
   
   
     <li class="md-nav__item">
-      <a href="../reference/read-parquet-files/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Read Parquet Files
+    Blog
     
   </span>
   
@@ -846,22 +932,6 @@
     </li>
   
 
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
-              
-            
-          </ul>
-        </nav>
-      
-    </li>
-  
-
     
       
       
@@ -870,12 +940,12 @@
   
   
     <li class="md-nav__item">
-      <a href="https://sedona.apache.org/latest/blog/" class="md-nav__link">
+      <a href="https://sedona.apache.org/latest/community/contact/" class="md-nav__link">
         
   
   
   <span class="md-ellipsis">
-    Blog
+    Community
     
   </span>
   
@@ -919,7 +989,7 @@
   
   
   <span class="md-ellipsis">
-    Return to Sedona Homepage
+    Sedona Homepage
     
   </span>
   
@@ -971,15 +1041,6 @@
     </span>
   </a>
   
-</li>
-      
-        <li class="md-nav__item">
-  <a href="#interactive-mode" class="md-nav__link">
-    <span class="md-ellipsis">
-      Interactive mode
-    </span>
-  </a>
-  
 </li>
       
     </ul>
@@ -998,7 +1059,7 @@
 
 
   
-    <a href="https://github.com/apache/sedona-db/edit/master/docs/quickstart-python.ipynb" title="Edit this page" class="md-content__button md-icon" rel="edit">
+    <a href="https://github.com/apache/sedona-db/blob/main/docs/quickstart-python.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"></path></svg>
     </a>
@@ -1006,584 +1067,51 @@
   
 
 
-<script>
-(function (global, factory) {
-    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-    typeof define === 'function' && define.amd ? define(factory) :
-    (global = global || self, global.ClipboardCopyElement = factory());
-  }(this, function () { 'use strict';
-
-    function createNode(text) {
-      const node = document.createElement('pre');
-      node.style.width = '1px';
-      node.style.height = '1px';
-      node.style.position = 'fixed';
-      node.style.top = '5px';
-      node.textContent = text;
-      return node;
-    }
-
-    function copyNode(node) {
-      if ('clipboard' in navigator) {
-        // eslint-disable-next-line flowtype/no-flow-fix-me-comments
-        // $FlowFixMe Clipboard is not defined in Flow yet.
-        return navigator.clipboard.writeText(node.textContent);
-      }
-
-      const selection = getSelection();
-
-      if (selection == null) {
-        return Promise.reject(new Error());
-      }
-
-      selection.removeAllRanges();
-      const range = document.createRange();
-      range.selectNodeContents(node);
-      selection.addRange(range);
-      document.execCommand('copy');
-      selection.removeAllRanges();
-      return Promise.resolve();
-    }
-    function copyText(text) {
-      if ('clipboard' in navigator) {
-        // eslint-disable-next-line flowtype/no-flow-fix-me-comments
-        // $FlowFixMe Clipboard is not defined in Flow yet.
-        return navigator.clipboard.writeText(text);
-      }
-
-      const body = document.body;
-
-      if (!body) {
-        return Promise.reject(new Error());
-      }
-
-      const node = createNode(text);
-      body.appendChild(node);
-      copyNode(node);
-      body.removeChild(node);
-      return Promise.resolve();
-    }
-
-    function copy(button) {
-      const id = button.getAttribute('for');
-      const text = button.getAttribute('value');
-
-      function trigger() {
-        button.dispatchEvent(new CustomEvent('clipboard-copy', {
-          bubbles: true
-        }));
-      }
-
-      if (text) {
-        copyText(text).then(trigger);
-      } else if (id) {
-        const root = 'getRootNode' in Element.prototype ? button.getRootNode() : button.ownerDocument;
-        if (!(root instanceof Document || 'ShadowRoot' in window && root instanceof ShadowRoot)) return;
-        const node = root.getElementById(id);
-        if (node) copyTarget(node).then(trigger);
-      }
-    }
-
-    function copyTarget(content) {
-      if (content instanceof HTMLInputElement || content instanceof HTMLTextAreaElement) {
-        return copyText(content.value);
-      } else if (content instanceof HTMLAnchorElement && content.hasAttribute('href')) {
-        return copyText(content.href);
-      } else {
-        return copyNode(content);
-      }
-    }
-
-    function clicked(event) {
-      const button = event.currentTarget;
-
-      if (button instanceof HTMLElement) {
-        copy(button);
-      }
-    }
-
-    function keydown(event) {
-      if (event.key === ' ' || event.key === 'Enter') {
-        const button = event.currentTarget;
-
-        if (button instanceof HTMLElement) {
-          event.preventDefault();
-          copy(button);
-        }
-      }
-    }
-
-    function focused(event) {
-      event.currentTarget.addEventListener('keydown', keydown);
-    }
-
-    function blurred(event) {
-      event.currentTarget.removeEventListener('keydown', keydown);
-    }
-
-    class ClipboardCopyElement extends HTMLElement {
-      constructor() {
-        super();
-        this.addEventListener('click', clicked);
-        this.addEventListener('focus', focused);
-        this.addEventListener('blur', blurred);
-      }
-
-      connectedCallback() {
-        if (!this.hasAttribute('tabindex')) {
-          this.setAttribute('tabindex', '0');
-        }
-
-        if (!this.hasAttribute('role')) {
-          this.setAttribute('role', 'button');
-        }
-      }
-
-      get value() {
-        return this.getAttribute('value') || '';
-      }
-
-      set value(text) {
-        this.setAttribute('value', text);
-      }
-
-    }
-
-    if (!window.customElements.get('clipboard-copy')) {
-      window.ClipboardCopyElement = ClipboardCopyElement;
-      window.customElements.define('clipboard-copy', ClipboardCopyElement);
-    }
-
-    return ClipboardCopyElement;
-
-  }));
-</script>
-<script>
-      document.addEventListener('clipboard-copy', function(event) {
-        const notice = event.target.querySelector('.notice')
-        notice.hidden = false
-        setTimeout(function() {
-          notice.hidden = true
-        }, 1000)
-      })
-</script>
-<style type="text/css">
-    pre { line-height: 125%; }
-td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-.highlight-ipynb .hll { background-color: var(--jp-cell-editor-active-background) }
-.highlight-ipynb { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
-.highlight-ipynb .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
-.highlight-ipynb .err { color: var(--jp-mirror-editor-error-color) } /* Error */
-.highlight-ipynb .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
-.highlight-ipynb .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
-.highlight-ipynb .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
-.highlight-ipynb .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
-.highlight-ipynb .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
-.highlight-ipynb .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
-.highlight-ipynb .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
-.highlight-ipynb .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
-.highlight-ipynb .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
-.highlight-ipynb .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
-.highlight-ipynb .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
-.highlight-ipynb .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
-.highlight-ipynb .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
-.highlight-ipynb .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
-.highlight-ipynb .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
-.highlight-ipynb .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
-.highlight-ipynb .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
-.highlight-ipynb .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
-.highlight-ipynb .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
-.highlight-ipynb .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
-.highlight-ipynb .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
-.highlight-ipynb .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
-.highlight-ipynb .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
-.highlight-ipynb .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
-.highlight-ipynb .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
-.highlight-ipynb .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
-.highlight-ipynb .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
-.highlight-ipynb .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
-.highlight-ipynb .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
-.highlight-ipynb .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
-.highlight-ipynb .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
-.highlight-ipynb .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
-.highlight-ipynb .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
-.highlight-ipynb .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
-.highlight-ipynb .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
-.highlight-ipynb .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
-.highlight-ipynb .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
-.highlight-ipynb .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
-.highlight-ipynb .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
-  </style>
-<style type="text/css">
-@charset "UTF-8";.jupyter-wrapper{--md-red-50: #ffebee;--md-red-100: #ffcdd2;--md-red-200: #ef9a9a;--md-red-300: #e57373;--md-red-400: #ef5350;--md-red-500: #f44336;--md-red-600: #e53935;--md-red-700: #d32f2f;--md-red-800: #c62828;--md-red-900: #b71c1c;--md-red-A100: #ff8a80;--md-red-A200: #ff5252;--md-red-A400: #ff1744;--md-red-A700: #d50000;--md-pink-50: #fce4ec;--md-pink-100: #f8bbd0;--md-pink-200: #f48fb1;--md-pink-300: #f06292;--md-pink-400: #ec407a;--md-pink-500: #e91e63;--md-pink- [...]
-</style>
-<style type="text/css">
-.jupyter-wrapper{--jp-shadow-base-lightness: 0;--jp-shadow-umbra-color: rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), .2 );--jp-shadow-penumbra-color: rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), .14 );--jp-shadow-ambient-color: rgba( var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), .12 );--jp-elevation-z0: none;--jp-elev [...]
-</style>
-<!-- Load mathjax -->
-<script src=""> </script>
-<!-- MathJax configuration -->
-<script type="text/x-mathjax-config">
-    init_mathjax = function() {
-        if (window.MathJax) {
-        // MathJax loaded
-            MathJax.Hub.Config({
-                TeX: {
-                    equationNumbers: {
-                    autoNumber: "AMS",
-                    useLabelIds: true
-                    }
-                },
-                tex2jax: {
-                    inlineMath: [ ['$','$'], ["\\(","\\)"] ],
-                    displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
-                    processEscapes: true,
-                    processEnvironments: true
-                },
-                displayAlign: 'center',
-                messageStyle: 'none',
-                CommonHTML: {
-                    linebreaks: {
-                    automatic: true
-                    }
-                }
-            });
-
-            MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
-        }
-    }
-    init_mathjax();
-    </script>
-<!-- End of mathjax configuration --><script type="module">
-  document.addEventListener("DOMContentLoaded", async () => {
-    const diagrams = document.querySelectorAll(".jp-Mermaid > pre.mermaid");
-    // do not load mermaidjs if not needed
-    if (!diagrams.length) {
-      return;
-    }
-    const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.7.0/mermaid.esm.min.mjs")).default;
-    const parser = new DOMParser();
-
-    mermaid.initialize({
-      maxTextSize: 100000,
-      maxEdges: 100000,
-      startOnLoad: false,
-      fontFamily: window
-        .getComputedStyle(document.body)
-        .getPropertyValue("--jp-ui-font-family"),
-      theme: document.querySelector("body[data-jp-theme-light='true']")
-        ? "default"
-        : "dark",
-    });
-
-    let _nextMermaidId = 0;
-
-    function makeMermaidImage(svg) {
-      const img = document.createElement("img");
-      const doc = parser.parseFromString(svg, "image/svg+xml");
-      const svgEl = doc.querySelector("svg");
-      const { maxWidth } = svgEl?.style || {};
-      const firstTitle = doc.querySelector("title");
-      const firstDesc = doc.querySelector("desc");
-
-      img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
-      if (maxWidth) {
-        img.width = parseInt(maxWidth);
-      }
-      if (firstTitle) {
-        img.setAttribute("alt", firstTitle.textContent);
-      }
-      if (firstDesc) {
-        const caption = document.createElement("figcaption");
-        caption.className = "sr-only";
-        caption.textContent = firstDesc.textContent;
-        return [img, caption];
-      }
-      return [img];
-    }
-
-    async function makeMermaidError(text) {
-      let errorMessage = "";
-      try {
-        await mermaid.parse(text);
-      } catch (err) {
-        errorMessage = `${err}`;
-      }
-
-      const result = document.createElement("details");
-      result.className = 'jp-RenderedMermaid-Details';
-      const summary = document.createElement("summary");
-      summary.className = 'jp-RenderedMermaid-Summary';
-      const pre = document.createElement("pre");
-      const code = document.createElement("code");
-      code.innerText = text;
-      pre.appendChild(code);
-      summary.appendChild(pre);
-      result.appendChild(summary);
-
-      const warning = document.createElement("pre");
-      warning.innerText = errorMessage;
-      result.appendChild(warning);
-      return [result];
-    }
-
-    async function renderOneMarmaid(src) {
-      const id = `jp-mermaid-${_nextMermaidId++}`;
-      const parent = src.parentNode;
-      let raw = src.textContent.trim();
-      const el = document.createElement("div");
-      el.style.visibility = "hidden";
-      document.body.appendChild(el);
-      let results = null;
-      let output = null;
-      try {
-        let { svg } = await mermaid.render(id, raw, el);
-        svg = cleanMermaidSvg(svg);
-        results = makeMermaidImage(svg);
-        output = document.createElement("figure");
-        results.map(output.appendChild, output);
-      } catch (err) {
-        parent.classList.add("jp-mod-warning");
-        results = await makeMermaidError(raw);
-        output = results[0];
-      } finally {
-        el.remove();
-      }
-      parent.classList.add("jp-RenderedMermaid");
-      parent.appendChild(output);
-    }
-
-
-    /**
-     * Post-process to ensure mermaid diagrams contain only valid SVG and XHTML.
-     */
-    function cleanMermaidSvg(svg) {
-      return svg.replace(RE_VOID_ELEMENT, replaceVoidElement);
-    }
-
-
-    /**
-     * A regular expression for all void elements, which may include attributes and
-     * a slash.
-     *
-     * @see https://developer.mozilla.org/en-US/docs/Glossary/Void_element
-     *
-     * Of these, only `<br>` is generated by Mermaid in place of `\n`,
-     * but _any_ "malformed" tag will break the SVG rendering entirely.
-     */
-    const RE_VOID_ELEMENT =
-      /<\s*(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\s*([^>]*?)\s*>/gi;
-
-    /**
-     * Ensure a void element is closed with a slash, preserving any attributes.
-     */
-    function replaceVoidElement(match, tag, rest) {
-      rest = rest.trim();
-      if (!rest.endsWith('/')) {
-        rest = `${rest} /`;
-      }
-      return `<${tag} ${rest}>`;
-    }
-
-    void Promise.all([...diagrams].map(renderOneMarmaid));
-  });
-</script>
-<style>
-  .jp-Mermaid:not(.jp-RenderedMermaid) {
-    display: none;
-  }
-
-  .jp-RenderedMermaid {
-    overflow: auto;
-    display: flex;
-  }
-
-  .jp-RenderedMermaid.jp-mod-warning {
-    width: auto;
-    padding: 0.5em;
-    margin-top: 0.5em;
-    border: var(--jp-border-width) solid var(--jp-warn-color2);
-    border-radius: var(--jp-border-radius);
-    color: var(--jp-ui-font-color1);
-    font-size: var(--jp-ui-font-size1);
-    white-space: pre-wrap;
-    word-wrap: break-word;
-  }
-
-  .jp-RenderedMermaid figure {
-    margin: 0;
-    overflow: auto;
-    max-width: 100%;
-  }
-
-  .jp-RenderedMermaid img {
-    max-width: 100%;
-  }
-
-  .jp-RenderedMermaid-Details > pre {
-    margin-top: 1em;
-  }
-
-  .jp-RenderedMermaid-Summary {
-    color: var(--jp-warn-color2);
-  }
-
-  .jp-RenderedMermaid:not(.jp-mod-warning) pre {
-    display: none;
-  }
-
-  .jp-RenderedMermaid-Summary > pre {
-    display: inline-block;
-    white-space: normal;
-  }
-</style>
-<!-- End of mermaid configuration --><div class="jupyter-wrapper">
-<div class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=6a8168a4">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<h1 id="python-quickstart">Python Quickstart<a class="anchor-link" href="#python-quickstart">¶</a></h1><p>SedonaDB for Python can be installed from <a href="https://pypi.org">PyPI</a>:</p>
-<div class="highlight"><pre><span></span>pip<span class="w"> </span>install<span class="w"> </span>apache-sedona<span class="o">[</span>db<span class="o">]</span>
-</pre></div>
+<!---
+  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.
+--><h1 id="python-quickstart">Python Quickstart<a class="headerlink" href="#python-quickstart" title="Permanent link">¶</a></h1>
+<p>SedonaDB for Python can be installed from <a href="https://pypi.org">PyPI</a>:</p>
+<div class="highlight"><pre><span></span><code>pip<span class="w"> </span>install<span class="w"> </span><span class="s2">"apache-sedona[db]"</span>
+</code></pre></div>
 <p>If you can import the module and connect to a new session, you're good to go!</p>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=a06df76b">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[1]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-1">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sedonadb</span>
+<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">sedona.db</span>
 
-<span class="n">sd</span> <span class="o">=</span> <span class="n">sedonadb</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
+<span class="n">sd</span> <span class="o">=</span> <span class="n">sedona</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
 <span class="n">sd</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"SELECT ST_Point(0, 1) as geom"</span><span class="p">)</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-1">import sedonadb
-
-sd = sedonadb.connect()
-sd.sql("SELECT ST_Point(0, 1) as geom").show()</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell-outputWrapper">
-<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
-</div>
-<div class="jp-OutputArea jp-Cell-outputArea">
-<div class="jp-OutputArea-child">
-<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
-<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
-<pre>┌────────────┐
+</code></pre></div>
+<div class="codehilite"><pre><span></span><code>┌────────────┐
 │    geom    │
-│     wkb    │
+│  geometry  │
 ╞════════════╡
 │ POINT(0 1) │
 └────────────┘
-</pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=c0d775bd-4cd8-454e-8cb6-9983c5a7ded3">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
-</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
-<h2 id="point-in-polygon-join">Point in polygon join<a class="anchor-link" href="#point-in-polygon-join">¶</a></h2>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=a6e1df61-c77f-4829-ab79-3d1b692408e5">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[2]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-2">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">cities</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">read_parquet</span><span class="p">(</span>
+</code></pre></div>
+
+<h2 id="point-in-polygon-join">Point in polygon join<a class="headerlink" href="#point-in-polygon-join" title="Permanent link">¶</a></h2>
+<div class="highlight"><pre><span></span><code><span class="n">cities</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">read_parquet</span><span class="p">(</span>
     <span class="s2">"https://raw.githubusercontent.com/geoarrow/geoarrow-data/v0.2.0/natural-earth/files/natural-earth_cities_geo.parquet"</span>
 <span class="p">)</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-2">cities = sd.read_parquet(
-    "https://raw.githubusercontent.com/geoarrow/geoarrow-data/v0.2.0/natural-earth/files/natural-earth_cities_geo.parquet"
-)</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
-<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=ff571cec-5a35-46c1-b0d6-a40fad33a87b">
-<div class="jp-Cell-inputWrapper" tabindex="0">
-<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
-</div>
-<div class="jp-InputArea jp-Cell-inputArea">
-<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[3]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
-<div class="CodeMirror cm-s-jupyter">
-<div class="zeroclipboard-container">
-<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-3">
-<div>
-<span class="notice" hidden="">Copied!</span>
-<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewBox="0 0 16 16" width="20">
-<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
-</svg>
-</div>
-</clipboard-copy>
-</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">cities</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
-</pre></div>
-<div class="clipboard-copy-txt" id="cell-3">cities.show()</div>
-</div>
-</div>
... 6031 lines suppressed ...