From 7d3223f55226483ad269533b667638577a8d7d4b Mon Sep 17 00:00:00 2001 From: Martin Fleischmann Date: Tue, 15 Nov 2022 21:18:21 +0100 Subject: [PATCH 1/3] ENH: support arrays in strtree query --- doc/source/quickstart.ipynb | 1497 +++++++++++++++++++++++++---------- xvec/strtree.py | 10 +- 2 files changed, 1098 insertions(+), 409 deletions(-) diff --git a/doc/source/quickstart.ipynb b/doc/source/quickstart.ipynb index d1b2068..36e281a 100644 --- a/doc/source/quickstart.ipynb +++ b/doc/source/quickstart.ipynb @@ -465,93 +465,93 @@ " fill: currentColor;\n", "}\n", "
<xarray.DataArray (mode: 3, day: 100, time: 24, origin: 100, destination: 100)>\n",
-       "array([[[[[96, 29, 64, ..., 47, 80, 71],\n",
-       "          [79, 79, 96, ..., 92, 12, 90],\n",
-       "          [19, 85, 60, ..., 43, 28, 53],\n",
+       "array([[[[[51, 98, 65, ..., 46, 28, 49],\n",
+       "          [ 6, 79, 35, ..., 95, 95, 59],\n",
+       "          [15,  6, 98, ..., 42,  5, 38],\n",
        "          ...,\n",
-       "          [96,  8, 35, ..., 39,  7, 62],\n",
-       "          [82, 87, 18, ...,  1, 77, 38],\n",
-       "          [99, 94, 20, ..., 92, 16, 42]],\n",
+       "          [87, 29, 78, ..., 31, 60, 90],\n",
+       "          [25, 27, 29, ..., 86, 77, 13],\n",
+       "          [61, 15, 75, ..., 32, 55, 70]],\n",
        "\n",
-       "         [[79, 53, 28, ..., 30, 56, 14],\n",
-       "          [21, 88, 91, ..., 92, 73, 14],\n",
-       "          [74, 49, 88, ..., 30, 23, 28],\n",
+       "         [[48, 35, 26, ..., 66, 96, 57],\n",
+       "          [10, 83, 72, ..., 27, 31, 24],\n",
+       "          [ 9, 69, 78, ..., 45, 53, 80],\n",
        "          ...,\n",
-       "          [56, 76, 91, ..., 36, 94, 16],\n",
-       "          [80, 83,  4, ..., 91, 38,  3],\n",
-       "          [69, 61, 10, ..., 79, 15, 94]],\n",
+       "          [ 6, 55, 85, ..., 88, 58, 18],\n",
+       "          [48,  4, 57, ...,  1, 39, 57],\n",
+       "          [52,  6, 82, ..., 91,  4, 69]],\n",
        "\n",
-       "         [[91, 22, 13, ..., 45, 31, 17],\n",
-       "          [86, 48, 23, ..., 88, 55, 94],\n",
-       "          [56,  8, 55, ..., 68, 15, 48],\n",
+       "         [[42, 80, 85, ...,  7, 37, 88],\n",
+       "          [91,  5, 19, ..., 22, 90, 22],\n",
+       "          [44, 46, 42, ..., 15, 38, 90],\n",
        "          ...,\n",
        "...\n",
        "          ...,\n",
-       "          [27,  8, 29, ..., 96, 80, 60],\n",
-       "          [ 1, 98, 63, ...,  1, 73, 98],\n",
-       "          [77, 22, 88, ...,  6, 60,  7]],\n",
+       "          [69, 65, 57, ..., 89, 67, 46],\n",
+       "          [74, 86, 86, ..., 55, 66,  9],\n",
+       "          [83, 13, 80, ..., 84, 13, 15]],\n",
        "\n",
-       "         [[22, 40, 31, ..., 84, 62, 61],\n",
-       "          [27, 83, 95, ..., 81, 15, 54],\n",
-       "          [43, 45, 67, ..., 52,  2, 28],\n",
+       "         [[18, 84, 85, ..., 47, 59, 68],\n",
+       "          [55, 94, 34, ..., 47, 16, 74],\n",
+       "          [83, 82, 14, ...,  9, 85, 67],\n",
        "          ...,\n",
-       "          [91, 75, 49, ...,  1, 76, 65],\n",
-       "          [ 4, 78, 43, ..., 82, 20, 95],\n",
-       "          [16, 65, 36, ..., 27, 92, 43]],\n",
+       "          [26, 72, 17, ..., 96, 25, 13],\n",
+       "          [ 2, 91, 45, ..., 69, 13, 17],\n",
+       "          [37, 63, 83, ..., 55, 15, 36]],\n",
        "\n",
-       "         [[11, 54, 89, ..., 64, 56, 78],\n",
-       "          [ 1, 29, 49, ..., 46, 22, 95],\n",
-       "          [99,  4, 33, ..., 89, 48, 60],\n",
+       "         [[29,  3, 72, ..., 15,  8, 98],\n",
+       "          [45, 60, 76, ...,  9, 23, 59],\n",
+       "          [72, 59, 51, ..., 30, 87, 92],\n",
        "          ...,\n",
-       "          [18, 62, 84, ..., 12, 87, 52],\n",
-       "          [42, 79, 90, ...,  5, 24, 57],\n",
-       "          [51, 35, 71, ..., 55, 29, 11]]]]])\n",
+       "          [34, 66, 67, ..., 59, 43,  9],\n",
+       "          [40, 37,  7, ..., 85, 45, 86],\n",
+       "          [97, 10, 57, ..., 84, 44, 61]]]]])\n",
        "Coordinates:\n",
        "  * mode         (mode) <U4 'car' 'bike' 'foot'\n",
        "  * day          (day) datetime64[ns] 2015-01-01 2015-01-02 ... 2015-04-10\n",
        "  * time         (time) int64 0 1 2 3 4 5 6 7 8 9 ... 15 16 17 18 19 20 21 22 23\n",
        "  * origin       (origin) object MULTIPOLYGON (((-81.4727554321289 36.2343559...\n",
-       "  * destination  (destination) object MULTIPOLYGON (((-81.4727554321289 36.23...
  • " ], "text/plain": [ "\n", - "array([[[[[96, 29, 64, ..., 47, 80, 71],\n", - " [79, 79, 96, ..., 92, 12, 90],\n", - " [19, 85, 60, ..., 43, 28, 53],\n", + "array([[[[[51, 98, 65, ..., 46, 28, 49],\n", + " [ 6, 79, 35, ..., 95, 95, 59],\n", + " [15, 6, 98, ..., 42, 5, 38],\n", " ...,\n", - " [96, 8, 35, ..., 39, 7, 62],\n", - " [82, 87, 18, ..., 1, 77, 38],\n", - " [99, 94, 20, ..., 92, 16, 42]],\n", + " [87, 29, 78, ..., 31, 60, 90],\n", + " [25, 27, 29, ..., 86, 77, 13],\n", + " [61, 15, 75, ..., 32, 55, 70]],\n", "\n", - " [[79, 53, 28, ..., 30, 56, 14],\n", - " [21, 88, 91, ..., 92, 73, 14],\n", - " [74, 49, 88, ..., 30, 23, 28],\n", + " [[48, 35, 26, ..., 66, 96, 57],\n", + " [10, 83, 72, ..., 27, 31, 24],\n", + " [ 9, 69, 78, ..., 45, 53, 80],\n", " ...,\n", - " [56, 76, 91, ..., 36, 94, 16],\n", - " [80, 83, 4, ..., 91, 38, 3],\n", - " [69, 61, 10, ..., 79, 15, 94]],\n", + " [ 6, 55, 85, ..., 88, 58, 18],\n", + " [48, 4, 57, ..., 1, 39, 57],\n", + " [52, 6, 82, ..., 91, 4, 69]],\n", "\n", - " [[91, 22, 13, ..., 45, 31, 17],\n", - " [86, 48, 23, ..., 88, 55, 94],\n", - " [56, 8, 55, ..., 68, 15, 48],\n", + " [[42, 80, 85, ..., 7, 37, 88],\n", + " [91, 5, 19, ..., 22, 90, 22],\n", + " [44, 46, 42, ..., 15, 38, 90],\n", " ...,\n", "...\n", " ...,\n", - " [27, 8, 29, ..., 96, 80, 60],\n", - " [ 1, 98, 63, ..., 1, 73, 98],\n", - " [77, 22, 88, ..., 6, 60, 7]],\n", + " [69, 65, 57, ..., 89, 67, 46],\n", + " [74, 86, 86, ..., 55, 66, 9],\n", + " [83, 13, 80, ..., 84, 13, 15]],\n", "\n", - " [[22, 40, 31, ..., 84, 62, 61],\n", - " [27, 83, 95, ..., 81, 15, 54],\n", - " [43, 45, 67, ..., 52, 2, 28],\n", + " [[18, 84, 85, ..., 47, 59, 68],\n", + " [55, 94, 34, ..., 47, 16, 74],\n", + " [83, 82, 14, ..., 9, 85, 67],\n", " ...,\n", - " [91, 75, 49, ..., 1, 76, 65],\n", - " [ 4, 78, 43, ..., 82, 20, 95],\n", - " [16, 65, 36, ..., 27, 92, 43]],\n", + " [26, 72, 17, ..., 96, 25, 13],\n", + " [ 2, 91, 45, ..., 69, 13, 17],\n", + " [37, 63, 83, ..., 55, 15, 36]],\n", "\n", - " [[11, 54, 89, ..., 64, 56, 78],\n", - " [ 1, 29, 49, ..., 46, 22, 95],\n", - " [99, 4, 33, ..., 89, 48, 60],\n", + " [[29, 3, 72, ..., 15, 8, 98],\n", + " [45, 60, 76, ..., 9, 23, 59],\n", + " [72, 59, 51, ..., 30, 87, 92],\n", " ...,\n", - " [18, 62, 84, ..., 12, 87, 52],\n", - " [42, 79, 90, ..., 5, 24, 57],\n", - " [51, 35, 71, ..., 55, 29, 11]]]]])\n", + " [34, 66, 67, ..., 59, 43, 9],\n", + " [40, 37, 7, ..., 85, 45, 86],\n", + " [97, 10, 57, ..., 84, 44, 61]]]]])\n", "Coordinates:\n", " * mode (mode)
    <xarray.DataArray (mode: 3, day: 100, time: 24, origin: 100, destination: 100)>\n",
    -       "array([[[[[96, 29, 64, ..., 47, 80, 71],\n",
    -       "          [79, 79, 96, ..., 92, 12, 90],\n",
    -       "          [19, 85, 60, ..., 43, 28, 53],\n",
    +       "array([[[[[51, 98, 65, ..., 46, 28, 49],\n",
    +       "          [ 6, 79, 35, ..., 95, 95, 59],\n",
    +       "          [15,  6, 98, ..., 42,  5, 38],\n",
            "          ...,\n",
    -       "          [96,  8, 35, ..., 39,  7, 62],\n",
    -       "          [82, 87, 18, ...,  1, 77, 38],\n",
    -       "          [99, 94, 20, ..., 92, 16, 42]],\n",
    +       "          [87, 29, 78, ..., 31, 60, 90],\n",
    +       "          [25, 27, 29, ..., 86, 77, 13],\n",
    +       "          [61, 15, 75, ..., 32, 55, 70]],\n",
            "\n",
    -       "         [[79, 53, 28, ..., 30, 56, 14],\n",
    -       "          [21, 88, 91, ..., 92, 73, 14],\n",
    -       "          [74, 49, 88, ..., 30, 23, 28],\n",
    +       "         [[48, 35, 26, ..., 66, 96, 57],\n",
    +       "          [10, 83, 72, ..., 27, 31, 24],\n",
    +       "          [ 9, 69, 78, ..., 45, 53, 80],\n",
            "          ...,\n",
    -       "          [56, 76, 91, ..., 36, 94, 16],\n",
    -       "          [80, 83,  4, ..., 91, 38,  3],\n",
    -       "          [69, 61, 10, ..., 79, 15, 94]],\n",
    +       "          [ 6, 55, 85, ..., 88, 58, 18],\n",
    +       "          [48,  4, 57, ...,  1, 39, 57],\n",
    +       "          [52,  6, 82, ..., 91,  4, 69]],\n",
            "\n",
    -       "         [[91, 22, 13, ..., 45, 31, 17],\n",
    -       "          [86, 48, 23, ..., 88, 55, 94],\n",
    -       "          [56,  8, 55, ..., 68, 15, 48],\n",
    +       "         [[42, 80, 85, ...,  7, 37, 88],\n",
    +       "          [91,  5, 19, ..., 22, 90, 22],\n",
    +       "          [44, 46, 42, ..., 15, 38, 90],\n",
            "          ...,\n",
            "...\n",
            "          ...,\n",
    -       "          [27,  8, 29, ..., 96, 80, 60],\n",
    -       "          [ 1, 98, 63, ...,  1, 73, 98],\n",
    -       "          [77, 22, 88, ...,  6, 60,  7]],\n",
    +       "          [69, 65, 57, ..., 89, 67, 46],\n",
    +       "          [74, 86, 86, ..., 55, 66,  9],\n",
    +       "          [83, 13, 80, ..., 84, 13, 15]],\n",
            "\n",
    -       "         [[22, 40, 31, ..., 84, 62, 61],\n",
    -       "          [27, 83, 95, ..., 81, 15, 54],\n",
    -       "          [43, 45, 67, ..., 52,  2, 28],\n",
    +       "         [[18, 84, 85, ..., 47, 59, 68],\n",
    +       "          [55, 94, 34, ..., 47, 16, 74],\n",
    +       "          [83, 82, 14, ...,  9, 85, 67],\n",
            "          ...,\n",
    -       "          [91, 75, 49, ...,  1, 76, 65],\n",
    -       "          [ 4, 78, 43, ..., 82, 20, 95],\n",
    -       "          [16, 65, 36, ..., 27, 92, 43]],\n",
    +       "          [26, 72, 17, ..., 96, 25, 13],\n",
    +       "          [ 2, 91, 45, ..., 69, 13, 17],\n",
    +       "          [37, 63, 83, ..., 55, 15, 36]],\n",
            "\n",
    -       "         [[11, 54, 89, ..., 64, 56, 78],\n",
    -       "          [ 1, 29, 49, ..., 46, 22, 95],\n",
    -       "          [99,  4, 33, ..., 89, 48, 60],\n",
    +       "         [[29,  3, 72, ..., 15,  8, 98],\n",
    +       "          [45, 60, 76, ...,  9, 23, 59],\n",
    +       "          [72, 59, 51, ..., 30, 87, 92],\n",
            "          ...,\n",
    -       "          [18, 62, 84, ..., 12, 87, 52],\n",
    -       "          [42, 79, 90, ...,  5, 24, 57],\n",
    -       "          [51, 35, 71, ..., 55, 29, 11]]]]])\n",
    +       "          [34, 66, 67, ..., 59, 43,  9],\n",
    +       "          [40, 37,  7, ..., 85, 45, 86],\n",
    +       "          [97, 10, 57, ..., 84, 44, 61]]]]])\n",
            "Coordinates:\n",
            "  * mode         (mode) <U4 'car' 'bike' 'foot'\n",
            "  * day          (day) datetime64[ns] 2015-01-01 2015-01-02 ... 2015-04-10\n",
    @@ -1520,47 +1520,47 @@
            "  * destination  (destination) object MULTIPOLYGON (((-81.4727554321289 36.23...\n",
            "Indexes:\n",
            "    origin       ShapelySTRTreeIndex\n",
    -       "    destination  ShapelySTRTreeIndex
  • " ], "text/plain": [ "\n", - "array([[[[[96, 29, 64, ..., 47, 80, 71],\n", - " [79, 79, 96, ..., 92, 12, 90],\n", - " [19, 85, 60, ..., 43, 28, 53],\n", + "array([[[[[51, 98, 65, ..., 46, 28, 49],\n", + " [ 6, 79, 35, ..., 95, 95, 59],\n", + " [15, 6, 98, ..., 42, 5, 38],\n", " ...,\n", - " [96, 8, 35, ..., 39, 7, 62],\n", - " [82, 87, 18, ..., 1, 77, 38],\n", - " [99, 94, 20, ..., 92, 16, 42]],\n", + " [87, 29, 78, ..., 31, 60, 90],\n", + " [25, 27, 29, ..., 86, 77, 13],\n", + " [61, 15, 75, ..., 32, 55, 70]],\n", "\n", - " [[79, 53, 28, ..., 30, 56, 14],\n", - " [21, 88, 91, ..., 92, 73, 14],\n", - " [74, 49, 88, ..., 30, 23, 28],\n", + " [[48, 35, 26, ..., 66, 96, 57],\n", + " [10, 83, 72, ..., 27, 31, 24],\n", + " [ 9, 69, 78, ..., 45, 53, 80],\n", " ...,\n", - " [56, 76, 91, ..., 36, 94, 16],\n", - " [80, 83, 4, ..., 91, 38, 3],\n", - " [69, 61, 10, ..., 79, 15, 94]],\n", + " [ 6, 55, 85, ..., 88, 58, 18],\n", + " [48, 4, 57, ..., 1, 39, 57],\n", + " [52, 6, 82, ..., 91, 4, 69]],\n", "\n", - " [[91, 22, 13, ..., 45, 31, 17],\n", - " [86, 48, 23, ..., 88, 55, 94],\n", - " [56, 8, 55, ..., 68, 15, 48],\n", + " [[42, 80, 85, ..., 7, 37, 88],\n", + " [91, 5, 19, ..., 22, 90, 22],\n", + " [44, 46, 42, ..., 15, 38, 90],\n", " ...,\n", "...\n", " ...,\n", - " [27, 8, 29, ..., 96, 80, 60],\n", - " [ 1, 98, 63, ..., 1, 73, 98],\n", - " [77, 22, 88, ..., 6, 60, 7]],\n", + " [69, 65, 57, ..., 89, 67, 46],\n", + " [74, 86, 86, ..., 55, 66, 9],\n", + " [83, 13, 80, ..., 84, 13, 15]],\n", "\n", - " [[22, 40, 31, ..., 84, 62, 61],\n", - " [27, 83, 95, ..., 81, 15, 54],\n", - " [43, 45, 67, ..., 52, 2, 28],\n", + " [[18, 84, 85, ..., 47, 59, 68],\n", + " [55, 94, 34, ..., 47, 16, 74],\n", + " [83, 82, 14, ..., 9, 85, 67],\n", " ...,\n", - " [91, 75, 49, ..., 1, 76, 65],\n", - " [ 4, 78, 43, ..., 82, 20, 95],\n", - " [16, 65, 36, ..., 27, 92, 43]],\n", + " [26, 72, 17, ..., 96, 25, 13],\n", + " [ 2, 91, 45, ..., 69, 13, 17],\n", + " [37, 63, 83, ..., 55, 15, 36]],\n", "\n", - " [[11, 54, 89, ..., 64, 56, 78],\n", - " [ 1, 29, 49, ..., 46, 22, 95],\n", - " [99, 4, 33, ..., 89, 48, 60],\n", + " [[29, 3, 72, ..., 15, 8, 98],\n", + " [45, 60, 76, ..., 9, 23, 59],\n", + " [72, 59, 51, ..., 30, 87, 92],\n", " ...,\n", - " [18, 62, 84, ..., 12, 87, 52],\n", - " [42, 79, 90, ..., 5, 24, 57],\n", - " [51, 35, 71, ..., 55, 29, 11]]]]])\n", + " [34, 66, 67, ..., 59, 43, 9],\n", + " [40, 37, 7, ..., 85, 45, 86],\n", + " [97, 10, 57, ..., 84, 44, 61]]]]])\n", "Coordinates:\n", " * mode (mode)
    <xarray.DataArray (mode: 3, origin: 2, destination: 2)>\n",
    -       "array([[[14, 88],\n",
    -       "        [ 9, 22]],\n",
    +       "array([[[29, 31],\n",
    +       "        [54, 67]],\n",
            "\n",
    -       "       [[99, 46],\n",
    -       "        [25, 62]],\n",
    +       "       [[ 3, 96],\n",
    +       "        [43, 47]],\n",
            "\n",
    -       "       [[20, 54],\n",
    -       "        [44, 17]]])\n",
    +       "       [[43, 81],\n",
    +       "        [75, 90]]])\n",
            "Coordinates:\n",
            "  * mode         (mode) <U4 'car' 'bike' 'foot'\n",
            "    day          datetime64[ns] 2015-01-01\n",
            "    time         int64 0\n",
            "    origin       (origin) object MULTIPOLYGON (((-79.91995239257812 34.807918...\n",
    -       "    destination  (destination) object MULTIPOLYGON (((-80.72651672363281 35.5...
    • mode
      PandasIndex
      PandasIndex(Index(['car', 'bike', 'foot'], dtype='object', name='mode'))
  • " ], "text/plain": [ "\n", - "array([[[14, 88],\n", - " [ 9, 22]],\n", + "array([[[29, 31],\n", + " [54, 67]],\n", "\n", - " [[99, 46],\n", - " [25, 62]],\n", + " [[ 3, 96],\n", + " [43, 47]],\n", "\n", - " [[20, 54],\n", - " [44, 17]]])\n", + " [[43, 81],\n", + " [75, 90]]])\n", "Coordinates:\n", " * mode (mode)
    <xarray.DataArray (mode: 3, day: 100, time: 24, origin: 41, destination: 100)>\n",
    -       "array([[[[[41, 61, 90, ..., 86, 69, 39],\n",
    -       "          [38, 45, 93, ..., 95, 53, 80],\n",
    -       "          [53, 31,  5, ..., 74, 48, 96],\n",
    +       "array([[[[[11, 66, 29, ..., 99, 84, 16],\n",
    +       "          [20, 96, 11, ..., 59, 38, 93],\n",
    +       "          [77, 46, 40, ..., 27, 25, 88],\n",
            "          ...,\n",
    -       "          [98, 48, 42, ..., 41, 81, 69],\n",
    -       "          [87, 18, 10, ..., 97, 15, 33],\n",
    -       "          [38, 68, 19, ..., 71,  9, 70]],\n",
    +       "          [52, 79, 50, ..., 68, 61, 45],\n",
    +       "          [58, 64, 23, ..., 66, 89, 62],\n",
    +       "          [ 4, 76, 19, ..., 65,  2, 88]],\n",
            "\n",
    -       "         [[30,  3, 51, ..., 60, 70,  6],\n",
    -       "          [40,  3, 36, ..., 32, 22, 32],\n",
    -       "          [74,  8, 25, ..., 91, 65, 71],\n",
    +       "         [[11, 29, 35, ...,  8, 10, 69],\n",
    +       "          [95, 18, 74, ..., 45, 73, 14],\n",
    +       "          [19, 38, 68, ...,  6, 25, 49],\n",
            "          ...,\n",
    -       "          [72, 63, 10, ..., 54, 84, 63],\n",
    -       "          [12, 77, 74, ..., 10, 30, 32],\n",
    -       "          [27, 73, 36, ..., 63, 16, 57]],\n",
    +       "          [54, 45, 45, ..., 66, 47, 97],\n",
    +       "          [83, 90, 99, ..., 97, 76,  7],\n",
    +       "          [90,  4, 72, ..., 80, 84, 55]],\n",
            "\n",
    -       "         [[68, 46, 26, ..., 71, 71, 33],\n",
    -       "          [21, 92, 65, ..., 94, 44, 88],\n",
    -       "          [62, 13, 97, ..., 10, 42,  2],\n",
    +       "         [[64, 72, 42, ..., 40,  8, 94],\n",
    +       "          [76, 72, 98, ..., 50, 75, 47],\n",
    +       "          [22, 85, 42, ..., 47, 73, 23],\n",
            "          ...,\n",
            "...\n",
            "          ...,\n",
    -       "          [53, 77, 85, ...,  9, 56, 44],\n",
    -       "          [17, 72, 69, ..., 34, 63, 43],\n",
    -       "          [17,  3,  1, ..., 40, 55, 74]],\n",
    +       "          [84, 48, 13, ..., 79, 77, 72],\n",
    +       "          [23, 96, 42, ...,  5, 70, 43],\n",
    +       "          [90, 66, 26, ..., 54, 70, 25]],\n",
            "\n",
    -       "         [[ 1, 27, 55, ..., 74, 12, 45],\n",
    -       "          [88, 31, 98, ..., 24,  4, 54],\n",
    -       "          [25, 94, 82, ..., 44,  6, 42],\n",
    +       "         [[20, 17, 96, ..., 26, 20, 75],\n",
    +       "          [78, 90, 83, ..., 12, 10, 34],\n",
    +       "          [16, 71, 89, ..., 91, 92, 45],\n",
            "          ...,\n",
    -       "          [97, 21, 97, ..., 25, 99, 15],\n",
    -       "          [49, 44,  3, ..., 83, 13, 14],\n",
    -       "          [57, 69, 97, ..., 27, 32, 77]],\n",
    +       "          [26, 73, 29, ..., 36, 65, 78],\n",
    +       "          [86, 50, 37, ...,  1, 27, 92],\n",
    +       "          [51, 95, 42, ...,  4,  9, 22]],\n",
            "\n",
    -       "         [[76, 34, 34, ..., 62, 81, 11],\n",
    -       "          [59, 57, 36, ..., 86, 47, 48],\n",
    -       "          [71, 58, 18, ..., 26, 33, 70],\n",
    +       "         [[68, 51, 19, ..., 30,  7, 53],\n",
    +       "          [51, 17, 89, ...,  2, 55, 45],\n",
    +       "          [58, 29, 25, ..., 77, 19, 27],\n",
            "          ...,\n",
    -       "          [55,  9, 44, ..., 63, 60,  5],\n",
    -       "          [44, 28,  3, ..., 61, 81,  9],\n",
    -       "          [51, 19,  7, ..., 39, 92, 50]]]]])\n",
    +       "          [35, 62, 78, ..., 86, 17, 64],\n",
    +       "          [ 4, 52, 60, ...,  3, 95,  5],\n",
    +       "          [12, 65, 35, ..., 31, 65, 33]]]]])\n",
            "Coordinates:\n",
            "  * mode         (mode) <U4 'car' 'bike' 'foot'\n",
            "  * day          (day) datetime64[ns] 2015-01-01 2015-01-02 ... 2015-04-10\n",
    @@ -2838,47 +2838,47 @@
            "    origin       (origin) object MULTIPOLYGON (((-78.11376953125 34.720985412...\n",
            "  * destination  (destination) object MULTIPOLYGON (((-81.4727554321289 36.23...\n",
            "Indexes:\n",
    -       "    destination  ShapelySTRTreeIndex
  • " ], "text/plain": [ "\n", - "array([[[[[41, 61, 90, ..., 86, 69, 39],\n", - " [38, 45, 93, ..., 95, 53, 80],\n", - " [53, 31, 5, ..., 74, 48, 96],\n", + "array([[[[[11, 66, 29, ..., 99, 84, 16],\n", + " [20, 96, 11, ..., 59, 38, 93],\n", + " [77, 46, 40, ..., 27, 25, 88],\n", " ...,\n", - " [98, 48, 42, ..., 41, 81, 69],\n", - " [87, 18, 10, ..., 97, 15, 33],\n", - " [38, 68, 19, ..., 71, 9, 70]],\n", + " [52, 79, 50, ..., 68, 61, 45],\n", + " [58, 64, 23, ..., 66, 89, 62],\n", + " [ 4, 76, 19, ..., 65, 2, 88]],\n", "\n", - " [[30, 3, 51, ..., 60, 70, 6],\n", - " [40, 3, 36, ..., 32, 22, 32],\n", - " [74, 8, 25, ..., 91, 65, 71],\n", + " [[11, 29, 35, ..., 8, 10, 69],\n", + " [95, 18, 74, ..., 45, 73, 14],\n", + " [19, 38, 68, ..., 6, 25, 49],\n", " ...,\n", - " [72, 63, 10, ..., 54, 84, 63],\n", - " [12, 77, 74, ..., 10, 30, 32],\n", - " [27, 73, 36, ..., 63, 16, 57]],\n", + " [54, 45, 45, ..., 66, 47, 97],\n", + " [83, 90, 99, ..., 97, 76, 7],\n", + " [90, 4, 72, ..., 80, 84, 55]],\n", "\n", - " [[68, 46, 26, ..., 71, 71, 33],\n", - " [21, 92, 65, ..., 94, 44, 88],\n", - " [62, 13, 97, ..., 10, 42, 2],\n", + " [[64, 72, 42, ..., 40, 8, 94],\n", + " [76, 72, 98, ..., 50, 75, 47],\n", + " [22, 85, 42, ..., 47, 73, 23],\n", " ...,\n", "...\n", " ...,\n", - " [53, 77, 85, ..., 9, 56, 44],\n", - " [17, 72, 69, ..., 34, 63, 43],\n", - " [17, 3, 1, ..., 40, 55, 74]],\n", + " [84, 48, 13, ..., 79, 77, 72],\n", + " [23, 96, 42, ..., 5, 70, 43],\n", + " [90, 66, 26, ..., 54, 70, 25]],\n", "\n", - " [[ 1, 27, 55, ..., 74, 12, 45],\n", - " [88, 31, 98, ..., 24, 4, 54],\n", - " [25, 94, 82, ..., 44, 6, 42],\n", + " [[20, 17, 96, ..., 26, 20, 75],\n", + " [78, 90, 83, ..., 12, 10, 34],\n", + " [16, 71, 89, ..., 91, 92, 45],\n", " ...,\n", - " [97, 21, 97, ..., 25, 99, 15],\n", - " [49, 44, 3, ..., 83, 13, 14],\n", - " [57, 69, 97, ..., 27, 32, 77]],\n", + " [26, 73, 29, ..., 36, 65, 78],\n", + " [86, 50, 37, ..., 1, 27, 92],\n", + " [51, 95, 42, ..., 4, 9, 22]],\n", "\n", - " [[76, 34, 34, ..., 62, 81, 11],\n", - " [59, 57, 36, ..., 86, 47, 48],\n", - " [71, 58, 18, ..., 26, 33, 70],\n", + " [[68, 51, 19, ..., 30, 7, 53],\n", + " [51, 17, 89, ..., 2, 55, 45],\n", + " [58, 29, 25, ..., 77, 19, 27],\n", " ...,\n", - " [55, 9, 44, ..., 63, 60, 5],\n", - " [44, 28, 3, ..., 61, 81, 9],\n", - " [51, 19, 7, ..., 39, 92, 50]]]]])\n", + " [35, 62, 78, ..., 86, 17, 64],\n", + " [ 4, 52, 60, ..., 3, 95, 5],\n", + " [12, 65, 35, ..., 31, 65, 33]]]]])\n", "Coordinates:\n", " * mode (mode)
    <xarray.DataArray (mode: 3, day: 100, time: 24, points: 2, destination: 100)>\n",
    -       "array([[[[[31, 69, 46, ..., 85, 87, 41],\n",
    -       "          [63, 34, 15, ..., 62, 36, 23]],\n",
    +       "array([[[[[60,  1, 60, ..., 90, 59,  4],\n",
    +       "          [ 5, 20, 52, ..., 56,  7, 46]],\n",
            "\n",
    -       "         [[79, 46, 26, ..., 75, 89, 12],\n",
    -       "          [99, 67, 18, ..., 93, 63,  9]],\n",
    +       "         [[36, 44, 89, ..., 22, 47, 41],\n",
    +       "          [ 3, 45, 64, ..., 60, 52,  7]],\n",
            "\n",
    -       "         [[ 7, 22, 63, ..., 78, 89, 64],\n",
    -       "          [60, 33, 13, ..., 39, 54, 33]],\n",
    +       "         [[42,  1, 62, ...,  9, 62, 38],\n",
    +       "          [96, 13, 96, ..., 29, 33, 99]],\n",
            "\n",
            "         ...,\n",
            "\n",
    -       "         [[22, 59, 96, ..., 54, 84, 18],\n",
    -       "          [39, 52, 31, ..., 40, 45, 43]],\n",
    +       "         [[38, 74, 94, ..., 52, 96, 13],\n",
    +       "          [92, 29, 88, ..., 87, 52, 19]],\n",
            "\n",
    -       "         [[15, 37, 54, ..., 30,  2, 57],\n",
    -       "          [29, 90,  1, ..., 60, 21, 29]],\n",
    +       "         [[25, 60, 11, ..., 32, 79, 57],\n",
    +       "          [60, 50, 71, ..., 39, 69, 46]],\n",
            "\n",
    -       "         [[97, 47, 98, ..., 29, 76, 77],\n",
    -       "          [43, 42, 23, ..., 68, 56, 42]]],\n",
    +       "         [[32, 94, 97, ..., 28,  9, 19],\n",
    +       "          [58, 57, 85, ..., 77, 62, 80]]],\n",
            "\n",
            "...\n",
            "\n",
    -       "        [[[53, 70, 33, ...,  6, 78, 35],\n",
    -       "          [62, 58, 58, ..., 35, 88, 12]],\n",
    +       "        [[[85, 71, 12, ..., 51, 16,  6],\n",
    +       "          [66, 23,  9, ...,  3, 89, 90]],\n",
            "\n",
    -       "         [[27, 77,  3, ..., 62, 44, 34],\n",
    -       "          [95, 88, 66, ..., 67, 63, 83]],\n",
    +       "         [[81, 39, 53, ..., 98, 48,  1],\n",
    +       "          [37, 91,  7, ..., 57, 51, 21]],\n",
            "\n",
    -       "         [[43, 78, 66, ..., 22, 16, 56],\n",
    -       "          [15, 82, 12, ..., 20, 26, 43]],\n",
    +       "         [[40, 99, 49, ..., 47, 94, 36],\n",
    +       "          [14, 93, 90, ..., 90, 55, 81]],\n",
            "\n",
            "         ...,\n",
            "\n",
    -       "         [[ 6, 65, 35, ..., 46, 17, 12],\n",
    -       "          [21, 22, 69, ..., 45, 58, 11]],\n",
    +       "         [[70, 96, 51, ..., 12, 54, 66],\n",
    +       "          [46, 23, 55, ..., 36, 44, 87]],\n",
            "\n",
    -       "         [[75, 78, 24, ..., 13, 37, 66],\n",
    -       "          [12, 90, 93, ..., 17, 52, 47]],\n",
    +       "         [[56, 49, 15, ..., 16, 14, 97],\n",
    +       "          [84, 55, 60, ..., 58, 30, 69]],\n",
            "\n",
    -       "         [[49, 62, 62, ..., 74, 70, 19],\n",
    -       "          [32,  8, 19, ..., 79, 16, 87]]]]])\n",
    +       "         [[98, 82, 72, ...,  2, 64, 39],\n",
    +       "          [63,  7, 11, ..., 52, 82, 74]]]]])\n",
            "Coordinates:\n",
            "  * mode         (mode) <U4 'car' 'bike' 'foot'\n",
            "  * day          (day) datetime64[ns] 2015-01-01 2015-01-02 ... 2015-04-10\n",
    @@ -3589,47 +3589,47 @@
            "  * destination  (destination) object MULTIPOLYGON (((-81.4727554321289 36.23...\n",
            "Dimensions without coordinates: points\n",
            "Indexes:\n",
    -       "    destination  ShapelySTRTreeIndex
  • " ], "text/plain": [ "\n", - "array([[[[[31, 69, 46, ..., 85, 87, 41],\n", - " [63, 34, 15, ..., 62, 36, 23]],\n", + "array([[[[[60, 1, 60, ..., 90, 59, 4],\n", + " [ 5, 20, 52, ..., 56, 7, 46]],\n", "\n", - " [[79, 46, 26, ..., 75, 89, 12],\n", - " [99, 67, 18, ..., 93, 63, 9]],\n", + " [[36, 44, 89, ..., 22, 47, 41],\n", + " [ 3, 45, 64, ..., 60, 52, 7]],\n", "\n", - " [[ 7, 22, 63, ..., 78, 89, 64],\n", - " [60, 33, 13, ..., 39, 54, 33]],\n", + " [[42, 1, 62, ..., 9, 62, 38],\n", + " [96, 13, 96, ..., 29, 33, 99]],\n", "\n", " ...,\n", "\n", - " [[22, 59, 96, ..., 54, 84, 18],\n", - " [39, 52, 31, ..., 40, 45, 43]],\n", + " [[38, 74, 94, ..., 52, 96, 13],\n", + " [92, 29, 88, ..., 87, 52, 19]],\n", "\n", - " [[15, 37, 54, ..., 30, 2, 57],\n", - " [29, 90, 1, ..., 60, 21, 29]],\n", + " [[25, 60, 11, ..., 32, 79, 57],\n", + " [60, 50, 71, ..., 39, 69, 46]],\n", "\n", - " [[97, 47, 98, ..., 29, 76, 77],\n", - " [43, 42, 23, ..., 68, 56, 42]]],\n", + " [[32, 94, 97, ..., 28, 9, 19],\n", + " [58, 57, 85, ..., 77, 62, 80]]],\n", "\n", "...\n", "\n", - " [[[53, 70, 33, ..., 6, 78, 35],\n", - " [62, 58, 58, ..., 35, 88, 12]],\n", + " [[[85, 71, 12, ..., 51, 16, 6],\n", + " [66, 23, 9, ..., 3, 89, 90]],\n", "\n", - " [[27, 77, 3, ..., 62, 44, 34],\n", - " [95, 88, 66, ..., 67, 63, 83]],\n", + " [[81, 39, 53, ..., 98, 48, 1],\n", + " [37, 91, 7, ..., 57, 51, 21]],\n", "\n", - " [[43, 78, 66, ..., 22, 16, 56],\n", - " [15, 82, 12, ..., 20, 26, 43]],\n", + " [[40, 99, 49, ..., 47, 94, 36],\n", + " [14, 93, 90, ..., 90, 55, 81]],\n", "\n", " ...,\n", "\n", - " [[ 6, 65, 35, ..., 46, 17, 12],\n", - " [21, 22, 69, ..., 45, 58, 11]],\n", + " [[70, 96, 51, ..., 12, 54, 66],\n", + " [46, 23, 55, ..., 36, 44, 87]],\n", "\n", - " [[75, 78, 24, ..., 13, 37, 66],\n", - " [12, 90, 93, ..., 17, 52, 47]],\n", + " [[56, 49, 15, ..., 16, 14, 97],\n", + " [84, 55, 60, ..., 58, 30, 69]],\n", "\n", - " [[49, 62, 62, ..., 74, 70, 19],\n", - " [32, 8, 19, ..., 79, 16, 87]]]]])\n", + " [[98, 82, 72, ..., 2, 64, 39],\n", + " [63, 7, 11, ..., 52, 82, 74]]]]])\n", "Coordinates:\n", " * mode (mode) 1\u001b[0m arr\u001b[39m.\u001b[39;49msel(origin\u001b[39m=\u001b[39;49m[shapely\u001b[39m.\u001b[39;49mPoint(\u001b[39m-\u001b[39;49m\u001b[39m80\u001b[39;49m, \u001b[39m35\u001b[39;49m), shapely\u001b[39m.\u001b[39;49mPoint(\u001b[39m-\u001b[39;49m\u001b[39m76\u001b[39;49m, \u001b[39m35.6\u001b[39;49m)], method\u001b[39m=\u001b[39;49m\u001b[39m\"\u001b[39;49m\u001b[39mintersects\u001b[39;49m\u001b[39m\"\u001b[39;49m)\n", - "File \u001b[0;32m~/mambaforge/envs/xvec_dev/lib/python3.10/site-packages/xarray/core/dataarray.py:1526\u001b[0m, in \u001b[0;36mDataArray.sel\u001b[0;34m(self, indexers, method, tolerance, drop, **indexers_kwargs)\u001b[0m\n\u001b[1;32m 1416\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39msel\u001b[39m(\n\u001b[1;32m 1417\u001b[0m \u001b[39mself\u001b[39m: T_DataArray,\n\u001b[1;32m 1418\u001b[0m indexers: Mapping[Any, Any] \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1422\u001b[0m \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mindexers_kwargs: Any,\n\u001b[1;32m 1423\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m T_DataArray:\n\u001b[1;32m 1424\u001b[0m \u001b[39m\"\"\"Return a new DataArray whose data is given by selecting index\u001b[39;00m\n\u001b[1;32m 1425\u001b[0m \u001b[39m labels along the specified dimension(s).\u001b[39;00m\n\u001b[1;32m 1426\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1524\u001b[0m \u001b[39m Dimensions without coordinates: points\u001b[39;00m\n\u001b[1;32m 1525\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1526\u001b[0m ds \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_to_temp_dataset()\u001b[39m.\u001b[39;49msel(\n\u001b[1;32m 1527\u001b[0m indexers\u001b[39m=\u001b[39;49mindexers,\n\u001b[1;32m 1528\u001b[0m drop\u001b[39m=\u001b[39;49mdrop,\n\u001b[1;32m 1529\u001b[0m method\u001b[39m=\u001b[39;49mmethod,\n\u001b[1;32m 1530\u001b[0m tolerance\u001b[39m=\u001b[39;49mtolerance,\n\u001b[1;32m 1531\u001b[0m \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mindexers_kwargs,\n\u001b[1;32m 1532\u001b[0m )\n\u001b[1;32m 1533\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_from_temp_dataset(ds)\n", - "File \u001b[0;32m~/mambaforge/envs/xvec_dev/lib/python3.10/site-packages/xarray/core/dataset.py:2554\u001b[0m, in \u001b[0;36mDataset.sel\u001b[0;34m(self, indexers, method, tolerance, drop, **indexers_kwargs)\u001b[0m\n\u001b[1;32m 2493\u001b[0m \u001b[39m\"\"\"Returns a new dataset with each array indexed by tick labels\u001b[39;00m\n\u001b[1;32m 2494\u001b[0m \u001b[39malong the specified dimension(s).\u001b[39;00m\n\u001b[1;32m 2495\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2551\u001b[0m \u001b[39mDataArray.sel\u001b[39;00m\n\u001b[1;32m 2552\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 2553\u001b[0m indexers \u001b[39m=\u001b[39m either_dict_or_kwargs(indexers, indexers_kwargs, \u001b[39m\"\u001b[39m\u001b[39msel\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m-> 2554\u001b[0m query_results \u001b[39m=\u001b[39m map_index_queries(\n\u001b[1;32m 2555\u001b[0m \u001b[39mself\u001b[39;49m, indexers\u001b[39m=\u001b[39;49mindexers, method\u001b[39m=\u001b[39;49mmethod, tolerance\u001b[39m=\u001b[39;49mtolerance\n\u001b[1;32m 2556\u001b[0m )\n\u001b[1;32m 2558\u001b[0m \u001b[39mif\u001b[39;00m drop:\n\u001b[1;32m 2559\u001b[0m no_scalar_variables \u001b[39m=\u001b[39m {}\n", - "File \u001b[0;32m~/mambaforge/envs/xvec_dev/lib/python3.10/site-packages/xarray/core/indexing.py:183\u001b[0m, in \u001b[0;36mmap_index_queries\u001b[0;34m(obj, indexers, method, tolerance, **indexers_kwargs)\u001b[0m\n\u001b[1;32m 181\u001b[0m results\u001b[39m.\u001b[39mappend(IndexSelResult(labels))\n\u001b[1;32m 182\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m--> 183\u001b[0m results\u001b[39m.\u001b[39mappend(index\u001b[39m.\u001b[39;49msel(labels, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49moptions)) \u001b[39m# type: ignore[call-arg]\u001b[39;00m\n\u001b[1;32m 185\u001b[0m merged \u001b[39m=\u001b[39m merge_sel_results(results)\n\u001b[1;32m 187\u001b[0m \u001b[39m# drop dimension coordinates found in dimension indexers\u001b[39;00m\n\u001b[1;32m 188\u001b[0m \u001b[39m# (also drop multi-index if any)\u001b[39;00m\n\u001b[1;32m 189\u001b[0m \u001b[39m# (.sel() already ensures alignment)\u001b[39;00m\n", - "File \u001b[0;32m~/Git/xvec/xvec/strtree.py:40\u001b[0m, in \u001b[0;36mShapelySTRTreeIndex.sel\u001b[0;34m(self, labels, method, tolerance)\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[39mif\u001b[39;00m method \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39mand\u001b[39;00m method \u001b[39m!=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mnearest\u001b[39m\u001b[39m\"\u001b[39m:\n\u001b[1;32m 39\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39misinstance\u001b[39m(label, shapely\u001b[39m.\u001b[39mGeometry):\n\u001b[0;32m---> 40\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\n\u001b[1;32m 41\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mselection with another method than nearest only supports \u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 42\u001b[0m \u001b[39m\"\u001b[39m\u001b[39ma single geometry as input label.\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 43\u001b[0m )\n\u001b[1;32m 45\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(label, xarray\u001b[39m.\u001b[39mDataArray):\n\u001b[1;32m 46\u001b[0m label_array \u001b[39m=\u001b[39m label\u001b[39m.\u001b[39m_variable\u001b[39m.\u001b[39m_data\n", - "\u001b[0;31mValueError\u001b[0m: selection with another method than nearest only supports a single geometry as input label." + "name": "stdout", + "output_type": "stream", + "text": [ + "here\n" ] + }, + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
    <xarray.DataArray (mode: 3, day: 100, time: 24, origin: 2, destination: 100)>\n",
    +       "array([[[[[60,  1, 60, ..., 90, 59,  4],\n",
    +       "          [ 5, 20, 52, ..., 56,  7, 46]],\n",
    +       "\n",
    +       "         [[36, 44, 89, ..., 22, 47, 41],\n",
    +       "          [ 3, 45, 64, ..., 60, 52,  7]],\n",
    +       "\n",
    +       "         [[42,  1, 62, ...,  9, 62, 38],\n",
    +       "          [96, 13, 96, ..., 29, 33, 99]],\n",
    +       "\n",
    +       "         ...,\n",
    +       "\n",
    +       "         [[38, 74, 94, ..., 52, 96, 13],\n",
    +       "          [92, 29, 88, ..., 87, 52, 19]],\n",
    +       "\n",
    +       "         [[25, 60, 11, ..., 32, 79, 57],\n",
    +       "          [60, 50, 71, ..., 39, 69, 46]],\n",
    +       "\n",
    +       "         [[32, 94, 97, ..., 28,  9, 19],\n",
    +       "          [58, 57, 85, ..., 77, 62, 80]]],\n",
    +       "\n",
    +       "...\n",
    +       "\n",
    +       "        [[[85, 71, 12, ..., 51, 16,  6],\n",
    +       "          [66, 23,  9, ...,  3, 89, 90]],\n",
    +       "\n",
    +       "         [[81, 39, 53, ..., 98, 48,  1],\n",
    +       "          [37, 91,  7, ..., 57, 51, 21]],\n",
    +       "\n",
    +       "         [[40, 99, 49, ..., 47, 94, 36],\n",
    +       "          [14, 93, 90, ..., 90, 55, 81]],\n",
    +       "\n",
    +       "         ...,\n",
    +       "\n",
    +       "         [[70, 96, 51, ..., 12, 54, 66],\n",
    +       "          [46, 23, 55, ..., 36, 44, 87]],\n",
    +       "\n",
    +       "         [[56, 49, 15, ..., 16, 14, 97],\n",
    +       "          [84, 55, 60, ..., 58, 30, 69]],\n",
    +       "\n",
    +       "         [[98, 82, 72, ...,  2, 64, 39],\n",
    +       "          [63,  7, 11, ..., 52, 82, 74]]]]])\n",
    +       "Coordinates:\n",
    +       "  * mode         (mode) <U4 'car' 'bike' 'foot'\n",
    +       "  * day          (day) datetime64[ns] 2015-01-01 2015-01-02 ... 2015-04-10\n",
    +       "  * time         (time) int64 0 1 2 3 4 5 6 7 8 9 ... 15 16 17 18 19 20 21 22 23\n",
    +       "    origin       (origin) object MULTIPOLYGON (((-79.91995239257812 34.807918...\n",
    +       "  * destination  (destination) object MULTIPOLYGON (((-81.4727554321289 36.23...\n",
    +       "Indexes:\n",
    +       "    destination  ShapelySTRTreeIndex
    " + ], + "text/plain": [ + "\n", + "array([[[[[60, 1, 60, ..., 90, 59, 4],\n", + " [ 5, 20, 52, ..., 56, 7, 46]],\n", + "\n", + " [[36, 44, 89, ..., 22, 47, 41],\n", + " [ 3, 45, 64, ..., 60, 52, 7]],\n", + "\n", + " [[42, 1, 62, ..., 9, 62, 38],\n", + " [96, 13, 96, ..., 29, 33, 99]],\n", + "\n", + " ...,\n", + "\n", + " [[38, 74, 94, ..., 52, 96, 13],\n", + " [92, 29, 88, ..., 87, 52, 19]],\n", + "\n", + " [[25, 60, 11, ..., 32, 79, 57],\n", + " [60, 50, 71, ..., 39, 69, 46]],\n", + "\n", + " [[32, 94, 97, ..., 28, 9, 19],\n", + " [58, 57, 85, ..., 77, 62, 80]]],\n", + "\n", + "...\n", + "\n", + " [[[85, 71, 12, ..., 51, 16, 6],\n", + " [66, 23, 9, ..., 3, 89, 90]],\n", + "\n", + " [[81, 39, 53, ..., 98, 48, 1],\n", + " [37, 91, 7, ..., 57, 51, 21]],\n", + "\n", + " [[40, 99, 49, ..., 47, 94, 36],\n", + " [14, 93, 90, ..., 90, 55, 81]],\n", + "\n", + " ...,\n", + "\n", + " [[70, 96, 51, ..., 12, 54, 66],\n", + " [46, 23, 55, ..., 36, 44, 87]],\n", + "\n", + " [[56, 49, 15, ..., 16, 14, 97],\n", + " [84, 55, 60, ..., 58, 30, 69]],\n", + "\n", + " [[98, 82, 72, ..., 2, 64, 39],\n", + " [63, 7, 11, ..., 52, 82, 74]]]]])\n", + "Coordinates:\n", + " * mode (mode) Date: Wed, 23 Nov 2022 11:13:29 +0100 Subject: [PATCH 2/3] update for GeometryIndex --- xvec/index.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/xvec/index.py b/xvec/index.py index 1c4eee6..bad8c0c 100644 --- a/xvec/index.py +++ b/xvec/index.py @@ -177,13 +177,6 @@ def _sel_sindex(self, labels, method, tolerance): assert len(labels) == 1 label = next(iter(labels.values())) - if method != "nearest": - if not isinstance(label, shapely.Geometry): - raise ValueError( - "selection with another method than nearest only supports " - "a single geometry as input label." - ) - if isinstance(label, DataArray): label_array = label._variable._data elif isinstance(label, Variable): @@ -201,6 +194,10 @@ def _sel_sindex(self, labels, method, tolerance): else: indices = self.sindex.query(label, predicate=method, distance=tolerance) + # if label is an array, we need to use only the second array returned + if indices.ndim == 2: + indices = indices[1] + # attach dimension names and/or coordinates to positional indexer if isinstance(label, Variable): indices = Variable(label.dims, indices) From 48b35eaf87c763ff4b5a23fcbca12c445a7a3ff2 Mon Sep 17 00:00:00 2001 From: Martin Fleischmann Date: Wed, 23 Nov 2022 11:34:12 +0100 Subject: [PATCH 3/3] include unique option --- xvec/index.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xvec/index.py b/xvec/index.py index bad8c0c..9c6a505 100644 --- a/xvec/index.py +++ b/xvec/index.py @@ -198,6 +198,8 @@ def _sel_sindex(self, labels, method, tolerance): if indices.ndim == 2: indices = indices[1] + # indices = np.unique(indices[1]) + # attach dimension names and/or coordinates to positional indexer if isinstance(label, Variable): indices = Variable(label.dims, indices)