Skip to content

Commit 5c04de5

Browse files
author
Quarto GHA Workflow Runner
committed
Built site for gh-pages
1 parent ab379b7 commit 5c04de5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+112287
-113440
lines changed

.nojekyll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0e83581a
1+
fdd5af5e

01-geodata.html

Lines changed: 151 additions & 165 deletions
Large diffs are not rendered by default.

02-geoviz.html

Lines changed: 54 additions & 54 deletions
Large diffs are not rendered by default.

02-geoviz_files/figure-html/cell-10-output-2.svg

Lines changed: 123 additions & 123 deletions
Loading

02-geoviz_files/figure-html/cell-12-output-2.svg

Lines changed: 123 additions & 123 deletions
Loading

02-geoviz_files/figure-html/cell-20-output-2.svg

Lines changed: 1318 additions & 1306 deletions
Loading

02-geoviz_files/figure-html/cell-22-output-2.svg

Lines changed: 3 additions & 3 deletions
Loading

02-geoviz_files/figure-html/cell-24-output-2.svg

Lines changed: 95 additions & 95 deletions
Loading

03-geoio.html

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ <h2 data-number="3.1" class="anchored" data-anchor-id="geoio.jl"><span class="he
375375
<section id="file-formats" class="level2" data-number="3.2">
376376
<h2 data-number="3.2" class="anchored" data-anchor-id="file-formats"><span class="header-section-number">3.2</span> File formats</h2>
377377
<p>Most GIS file formats do <strong>not</strong> preserve topological information. This means that neighborhood information is lost as soon as geometries are saved to disk. To illustrate this issue, we consider a geotable over a <code>CartesianGrid</code>:</p>
378-
<div id="09faf189" class="cell" data-execution_count="2">
378+
<div id="8e1ba8af" class="cell" data-execution_count="2">
379379
<div class="sourceCode cell-code" id="cb3"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>geotable <span class="op">=</span> <span class="fu">georef</span>((A<span class="op">=</span><span class="fu">rand</span>(<span class="fl">10</span>, <span class="fl">10</span>), B<span class="op">=</span><span class="fu">rand</span>(<span class="fl">10</span>, <span class="fl">10</span>)))</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
380380
<div class="cell-output cell-output-display" data-execution_count="3">
381381
<table class="caption-top table table-sm table-striped small" data-quarto-postprocess="true">
@@ -399,53 +399,53 @@ <h2 data-number="3.2" class="anchored" data-anchor-id="file-formats"><span class
399399
</thead>
400400
<tbody>
401401
<tr class="odd">
402-
<td style="text-align: center;">0.0382305</td>
403-
<td style="text-align: center;">0.60292</td>
402+
<td style="text-align: center;">0.979718</td>
403+
<td style="text-align: center;">0.383864</td>
404404
<td style="text-align: center;">Quadrangle((x: 0.0 m, y: 0.0 m), ..., (x: 0.0 m, y: 1.0 m))</td>
405405
</tr>
406406
<tr class="even">
407-
<td style="text-align: center;">0.106163</td>
408-
<td style="text-align: center;">0.989514</td>
407+
<td style="text-align: center;">0.892466</td>
408+
<td style="text-align: center;">0.488793</td>
409409
<td style="text-align: center;">Quadrangle((x: 1.0 m, y: 0.0 m), ..., (x: 1.0 m, y: 1.0 m))</td>
410410
</tr>
411411
<tr class="odd">
412-
<td style="text-align: center;">0.18793</td>
413-
<td style="text-align: center;">0.547123</td>
412+
<td style="text-align: center;">0.794076</td>
413+
<td style="text-align: center;">0.788655</td>
414414
<td style="text-align: center;">Quadrangle((x: 2.0 m, y: 0.0 m), ..., (x: 2.0 m, y: 1.0 m))</td>
415415
</tr>
416416
<tr class="even">
417-
<td style="text-align: center;">0.0315388</td>
418-
<td style="text-align: center;">0.272782</td>
417+
<td style="text-align: center;">0.674345</td>
418+
<td style="text-align: center;">0.443076</td>
419419
<td style="text-align: center;">Quadrangle((x: 3.0 m, y: 0.0 m), ..., (x: 3.0 m, y: 1.0 m))</td>
420420
</tr>
421421
<tr class="odd">
422-
<td style="text-align: center;">0.663114</td>
423-
<td style="text-align: center;">0.942687</td>
422+
<td style="text-align: center;">0.702333</td>
423+
<td style="text-align: center;">0.620565</td>
424424
<td style="text-align: center;">Quadrangle((x: 4.0 m, y: 0.0 m), ..., (x: 4.0 m, y: 1.0 m))</td>
425425
</tr>
426426
<tr class="even">
427-
<td style="text-align: center;">0.794098</td>
428-
<td style="text-align: center;">0.517486</td>
427+
<td style="text-align: center;">0.13348</td>
428+
<td style="text-align: center;">0.640933</td>
429429
<td style="text-align: center;">Quadrangle((x: 5.0 m, y: 0.0 m), ..., (x: 5.0 m, y: 1.0 m))</td>
430430
</tr>
431431
<tr class="odd">
432-
<td style="text-align: center;">0.472546</td>
433-
<td style="text-align: center;">0.999054</td>
432+
<td style="text-align: center;">0.0464712</td>
433+
<td style="text-align: center;">0.523528</td>
434434
<td style="text-align: center;">Quadrangle((x: 6.0 m, y: 0.0 m), ..., (x: 6.0 m, y: 1.0 m))</td>
435435
</tr>
436436
<tr class="even">
437-
<td style="text-align: center;">0.834748</td>
438-
<td style="text-align: center;">0.303973</td>
437+
<td style="text-align: center;">0.128001</td>
438+
<td style="text-align: center;">0.950535</td>
439439
<td style="text-align: center;">Quadrangle((x: 7.0 m, y: 0.0 m), ..., (x: 7.0 m, y: 1.0 m))</td>
440440
</tr>
441441
<tr class="odd">
442-
<td style="text-align: center;">0.684592</td>
443-
<td style="text-align: center;">0.245918</td>
442+
<td style="text-align: center;">0.18781</td>
443+
<td style="text-align: center;">0.686134</td>
444444
<td style="text-align: center;">Quadrangle((x: 8.0 m, y: 0.0 m), ..., (x: 8.0 m, y: 1.0 m))</td>
445445
</tr>
446446
<tr class="even">
447-
<td style="text-align: center;">0.882847</td>
448-
<td style="text-align: center;">0.712778</td>
447+
<td style="text-align: center;">0.324341</td>
448+
<td style="text-align: center;">0.46076</td>
449449
<td style="text-align: center;">Quadrangle((x: 9.0 m, y: 0.0 m), ..., (x: 9.0 m, y: 1.0 m))</td>
450450
</tr>
451451
<tr class="odd">
@@ -458,7 +458,7 @@ <h2 data-number="3.2" class="anchored" data-anchor-id="file-formats"><span class
458458
</div>
459459
</div>
460460
<p>If we save the geotable to a <code>.geojson</code> file on disk, and then load it back, we observe that the <code>CartesianGrid</code> gets replaced by a <code>GeometrySet</code>:</p>
461-
<div id="776eb71a" class="cell" data-execution_count="3">
461+
<div id="9c251765" class="cell" data-execution_count="3">
462462
<div class="sourceCode cell-code" id="cb4"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="im">using</span> <span class="bu">GeoIO</span></span>
463463
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a></span>
464464
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a>fname <span class="op">=</span> <span class="fu">tempname</span>() <span class="op">*</span> <span class="st">".geojson"</span></span>
@@ -488,53 +488,53 @@ <h2 data-number="3.2" class="anchored" data-anchor-id="file-formats"><span class
488488
</thead>
489489
<tbody>
490490
<tr class="odd">
491-
<td style="text-align: center;">0.0382305</td>
492-
<td style="text-align: center;">0.60292</td>
491+
<td style="text-align: center;">0.979718</td>
492+
<td style="text-align: center;">0.383864</td>
493493
<td style="text-align: center;">PolyArea((x: 0.0 m, y: 0.0 m), ..., (x: 0.0 m, y: 1.0 m))</td>
494494
</tr>
495495
<tr class="even">
496-
<td style="text-align: center;">0.106163</td>
497-
<td style="text-align: center;">0.989514</td>
496+
<td style="text-align: center;">0.892466</td>
497+
<td style="text-align: center;">0.488793</td>
498498
<td style="text-align: center;">PolyArea((x: 1.0 m, y: 0.0 m), ..., (x: 1.0 m, y: 1.0 m))</td>
499499
</tr>
500500
<tr class="odd">
501-
<td style="text-align: center;">0.18793</td>
502-
<td style="text-align: center;">0.547123</td>
501+
<td style="text-align: center;">0.794076</td>
502+
<td style="text-align: center;">0.788655</td>
503503
<td style="text-align: center;">PolyArea((x: 2.0 m, y: 0.0 m), ..., (x: 2.0 m, y: 1.0 m))</td>
504504
</tr>
505505
<tr class="even">
506-
<td style="text-align: center;">0.0315388</td>
507-
<td style="text-align: center;">0.272782</td>
506+
<td style="text-align: center;">0.674345</td>
507+
<td style="text-align: center;">0.443076</td>
508508
<td style="text-align: center;">PolyArea((x: 3.0 m, y: 0.0 m), ..., (x: 3.0 m, y: 1.0 m))</td>
509509
</tr>
510510
<tr class="odd">
511-
<td style="text-align: center;">0.663114</td>
512-
<td style="text-align: center;">0.942687</td>
511+
<td style="text-align: center;">0.702333</td>
512+
<td style="text-align: center;">0.620565</td>
513513
<td style="text-align: center;">PolyArea((x: 4.0 m, y: 0.0 m), ..., (x: 4.0 m, y: 1.0 m))</td>
514514
</tr>
515515
<tr class="even">
516-
<td style="text-align: center;">0.794098</td>
517-
<td style="text-align: center;">0.517486</td>
516+
<td style="text-align: center;">0.13348</td>
517+
<td style="text-align: center;">0.640933</td>
518518
<td style="text-align: center;">PolyArea((x: 5.0 m, y: 0.0 m), ..., (x: 5.0 m, y: 1.0 m))</td>
519519
</tr>
520520
<tr class="odd">
521-
<td style="text-align: center;">0.472546</td>
522-
<td style="text-align: center;">0.999054</td>
521+
<td style="text-align: center;">0.0464712</td>
522+
<td style="text-align: center;">0.523528</td>
523523
<td style="text-align: center;">PolyArea((x: 6.0 m, y: 0.0 m), ..., (x: 6.0 m, y: 1.0 m))</td>
524524
</tr>
525525
<tr class="even">
526-
<td style="text-align: center;">0.834748</td>
527-
<td style="text-align: center;">0.303973</td>
526+
<td style="text-align: center;">0.128001</td>
527+
<td style="text-align: center;">0.950535</td>
528528
<td style="text-align: center;">PolyArea((x: 7.0 m, y: 0.0 m), ..., (x: 7.0 m, y: 1.0 m))</td>
529529
</tr>
530530
<tr class="odd">
531-
<td style="text-align: center;">0.684592</td>
532-
<td style="text-align: center;">0.245918</td>
531+
<td style="text-align: center;">0.18781</td>
532+
<td style="text-align: center;">0.686134</td>
533533
<td style="text-align: center;">PolyArea((x: 8.0 m, y: 0.0 m), ..., (x: 8.0 m, y: 1.0 m))</td>
534534
</tr>
535535
<tr class="even">
536-
<td style="text-align: center;">0.882847</td>
537-
<td style="text-align: center;">0.712778</td>
536+
<td style="text-align: center;">0.324341</td>
537+
<td style="text-align: center;">0.46076</td>
538538
<td style="text-align: center;">PolyArea((x: 9.0 m, y: 0.0 m), ..., (x: 9.0 m, y: 1.0 m))</td>
539539
</tr>
540540
<tr class="odd">
@@ -547,7 +547,7 @@ <h2 data-number="3.2" class="anchored" data-anchor-id="file-formats"><span class
547547
</div>
548548
</div>
549549
<p>Other file formats such as <code>.ply</code> and <code>.msh</code> are widely used in <a href="https://en.wikipedia.org/wiki/Computer_graphics">computer graphics</a> to save geospatial data over meshes, and preserve topological information:</p>
550-
<div id="9be45a3c" class="cell" data-execution_count="4">
550+
<div id="153cbe9e" class="cell" data-execution_count="4">
551551
<div class="sourceCode cell-code" id="cb5"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>beethoven <span class="op">=</span> GeoIO.<span class="fu">load</span>(<span class="st">"data/beethoven.ply"</span>)</span>
552552
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a></span>
553553
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="fu">viz</span>(beethoven.geometry)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
@@ -571,7 +571,7 @@ <h2 data-number="3.3" class="anchored" data-anchor-id="rationale"><span class="h
571571
<p>Do we gain anything by not adhering to <strong>programming interfaces</strong>?</p>
572572
</blockquote>
573573
<p>The answer is an emphatic <strong>YES</strong>! It means that we have total freedom to innovate and improve the representation of various geometries and geospatial domains with Julia’s amazing type system. To give a simple example, let’s take a look at the <code>Triangle</code> geometry:</p>
574-
<div id="4111e9cd" class="cell" data-execution_count="5">
574+
<div id="20442d9f" class="cell" data-execution_count="5">
575575
<div class="sourceCode cell-code" id="cb7"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>t <span class="op">=</span> <span class="fu">Triangle</span>((<span class="fl">0</span>, <span class="fl">0</span>), (<span class="fl">1</span>, <span class="fl">0</span>), (<span class="fl">1</span>, <span class="fl">1</span>))</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
576576
<div class="cell-output cell-output-display" data-execution_count="6">
577577
<pre><code>Triangle
@@ -581,11 +581,11 @@ <h2 data-number="3.3" class="anchored" data-anchor-id="rationale"><span class="h
581581
</div>
582582
</div>
583583
<p>If we treated this geometry as a generic polygon represented by a vector of vertices in memory, like it is done in <a href="https://github.com/JuliaGeo/GeoInterface.jl">GeoInterface.jl</a> for example, we wouldn’t be able to dispatch optimized code that is only valid for a triangle:</p>
584-
<div id="387ab5c6" class="cell" data-execution_count="6">
584+
<div id="de3af218" class="cell" data-execution_count="6">
585585
<div class="sourceCode cell-code" id="cb9"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="pp">@code_llvm</span> <span class="fu">isconvex</span>(t)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
586586
<div class="cell-output cell-output-stdout">
587587
<pre><code>; @ /home/runner/.julia/packages/Meshes/sft4J/src/predicates/isconvex.jl:57 within `isconvex`
588-
define i8 @julia_isconvex_4015([1 x [3 x [1 x [1 x [2 x [1 x double]]]]]]* nocapture readonly %0) #0 {
588+
define i8 @julia_isconvex_4023([1 x [3 x [1 x [1 x [2 x [1 x double]]]]]]* nocapture readonly %0) #0 {
589589
top:
590590
ret i8 1
591591
}</code></pre>

0 commit comments

Comments
 (0)