diff --git a/src/h3_directededge.cpp b/src/h3_directededge.cpp index b7ab39d..8b29a08 100644 --- a/src/h3_directededge.cpp +++ b/src/h3_directededge.cpp @@ -349,7 +349,7 @@ struct DirectedEdgeToBoundaryOperator { // TODO: Is it possible to return null here instead? return StringVector::EmptyString(result, 0); } else { - std::string str = "POLYGON (("; + std::string str = "LINESTRING (("; for (int i = 0; i <= boundary.numVerts; i++) { std::string sep = (i == 0) ? "" : ", "; int vertIndex = (i == boundary.numVerts) ? 0 : i; diff --git a/src/h3_indexing.cpp b/src/h3_indexing.cpp index 4718349..c6c5005 100644 --- a/src/h3_indexing.cpp +++ b/src/h3_indexing.cpp @@ -194,6 +194,7 @@ struct CellToBoundaryOperator { std::string str = "POLYGON (("; for (int i = 0; i <= boundary.numVerts; i++) { std::string sep = (i == 0) ? "" : ", "; + // Add an extra vertex onto the end to close the polygon int vertIndex = (i == boundary.numVerts) ? 0 : i; str += StringUtil::Format("%s%f %f", sep, radsToDegs(boundary.verts[vertIndex].lng), diff --git a/src/h3_regions.cpp b/src/h3_regions.cpp index 3ed586f..de132ac 100644 --- a/src/h3_regions.cpp +++ b/src/h3_regions.cpp @@ -109,6 +109,14 @@ static void CellsToMultiPolygonWktFunction(DataChunk &args, lat_lng_sep = ", "; lat_lng = lat_lng->next; } + + if (loop->first) { + // Duplicate first vertex, to close the polygon + str += StringUtil::Format(", %f %f", + radsToDegs(loop->first->vertex.lng), + radsToDegs(loop->first->vertex.lat)); + } + str += ")"; loop_sep = ", "; loop = loop->next; diff --git a/test/sql/h3/h3_functions_directededge.test b/test/sql/h3/h3_functions_directededge.test index 3d9685a..b9eaa23 100644 --- a/test/sql/h3/h3_functions_directededge.test +++ b/test/sql/h3/h3_functions_directededge.test @@ -118,17 +118,17 @@ SELECT strlen(h3_directed_edge_to_boundary_wkt('0')) query I SELECT h3_directed_edge_to_boundary_wkt(1608492358964346879::ubigint) ---- -POLYGON ((-121.915080 37.271356, -121.862223 37.353926, -121.915080 37.271356)) +LINESTRING ((-121.915080 37.271356, -121.862223 37.353926, -121.915080 37.271356)) query I SELECT h3_directed_edge_to_boundary_wkt(1608492358964346879::bigint) ---- -POLYGON ((-121.915080 37.271356, -121.862223 37.353926, -121.915080 37.271356)) +LINESTRING ((-121.915080 37.271356, -121.862223 37.353926, -121.915080 37.271356)) query I SELECT h3_directed_edge_to_boundary_wkt('115283473fffffff') ---- -POLYGON ((-122.037735 37.420129, -122.090429 37.337556, -122.037735 37.420129)) +LINESTRING ((-122.037735 37.420129, -122.090429 37.337556, -122.037735 37.420129)) query I SELECT h3_origin_to_directed_edges('85283473fffffff') diff --git a/test/sql/h3/h3_functions_regions.test b/test/sql/h3/h3_functions_regions.test index 94fcc72..efb0309 100644 --- a/test/sql/h3/h3_functions_regions.test +++ b/test/sql/h3/h3_functions_regions.test @@ -3,47 +3,47 @@ require h3 query I select h3_cells_to_multi_polygon_wkt([586265647244115967::ubigint, 586260699441790975::ubigint, 586244756523188223::ubigint, 586245306279002111::ubigint, 586266196999929855::ubigint, 586264547732488191::ubigint, 586267846267371519::ubigint]) ---- -MULTIPOLYGON (((35.403069 42.817985, 36.626700 41.363407, 38.856463 41.330674, 39.977570 39.845483, 42.116516 39.762213, 43.204832 41.142599, 45.333799 41.016526, 46.521525 42.402510, 45.504839 43.945519, 46.765254 45.359443, 45.695764 46.905733, 43.318144 46.983130, 42.141990 48.470618, 39.760902 48.458995, 38.692906 46.992460, 36.299106 47.056314, 35.197789 45.672385, 36.468663 44.247648))) +MULTIPOLYGON (((35.403069 42.817985, 36.626700 41.363407, 38.856463 41.330674, 39.977570 39.845483, 42.116516 39.762213, 43.204832 41.142599, 45.333799 41.016526, 46.521525 42.402510, 45.504839 43.945519, 46.765254 45.359443, 45.695764 46.905733, 43.318144 46.983130, 42.141990 48.470618, 39.760902 48.458995, 38.692906 46.992460, 36.299106 47.056314, 35.197789 45.672385, 36.468663 44.247648, 35.403069 42.817985))) query I select h3_cells_to_multi_polygon_wkt([586265647244115967::bigint, 586260699441790975::bigint, 586244756523188223::bigint, 586245306279002111::bigint, 586266196999929855::bigint, 586264547732488191::bigint, 586267846267371519::bigint]) ---- -MULTIPOLYGON (((35.403069 42.817985, 36.626700 41.363407, 38.856463 41.330674, 39.977570 39.845483, 42.116516 39.762213, 43.204832 41.142599, 45.333799 41.016526, 46.521525 42.402510, 45.504839 43.945519, 46.765254 45.359443, 45.695764 46.905733, 43.318144 46.983130, 42.141990 48.470618, 39.760902 48.458995, 38.692906 46.992460, 36.299106 47.056314, 35.197789 45.672385, 36.468663 44.247648))) +MULTIPOLYGON (((35.403069 42.817985, 36.626700 41.363407, 38.856463 41.330674, 39.977570 39.845483, 42.116516 39.762213, 43.204832 41.142599, 45.333799 41.016526, 46.521525 42.402510, 45.504839 43.945519, 46.765254 45.359443, 45.695764 46.905733, 43.318144 46.983130, 42.141990 48.470618, 39.760902 48.458995, 38.692906 46.992460, 36.299106 47.056314, 35.197789 45.672385, 36.468663 44.247648, 35.403069 42.817985))) query I select h3_cells_to_multi_polygon_wkt(['8548ebb3fffffff','8548eb8ffffffff','8548ebbbfffffff','8548eb97fffffff','8548e94bfffffff','8548eb83fffffff','8548ebc3fffffff']) ---- -MULTIPOLYGON (((-111.824638 33.249329, -111.885131 33.168082, -111.830947 33.084633, -111.891348 33.003322, -111.837237 32.919796, -111.722800 32.917532, -111.668838 32.833881, -111.554458 32.831454, -111.493876 32.912689, -111.379390 32.910111, -111.318626 32.991243, -111.372435 33.074992, -111.311578 33.156059, -111.365461 33.239732, -111.480278 33.242290, -111.534312 33.325838, -111.649190 33.328232, -111.709868 33.247089), (-111.716343 33.082381, -111.655758 33.163590, -111.541047 33.161185, -111.487087 33.077560, -111.547762 32.996389, -111.662308 32.998805)), ((-110.852483 33.144537, -110.967274 33.147576, -111.028400 33.066655, -110.974820 32.982734, -110.860195 32.979687, -110.798984 33.060569))) +MULTIPOLYGON (((-111.824638 33.249329, -111.885131 33.168082, -111.830947 33.084633, -111.891348 33.003322, -111.837237 32.919796, -111.722800 32.917532, -111.668838 32.833881, -111.554458 32.831454, -111.493876 32.912689, -111.379390 32.910111, -111.318626 32.991243, -111.372435 33.074992, -111.311578 33.156059, -111.365461 33.239732, -111.480278 33.242290, -111.534312 33.325838, -111.649190 33.328232, -111.709868 33.247089, -111.824638 33.249329), (-111.716343 33.082381, -111.655758 33.163590, -111.541047 33.161185, -111.487087 33.077560, -111.547762 32.996389, -111.662308 32.998805, -111.716343 33.082381)), ((-110.852483 33.144537, -110.967274 33.147576, -111.028400 33.066655, -110.974820 32.982734, -110.860195 32.979687, -110.798984 33.060569, -110.852483 33.144537))) query I select h3_cells_to_multi_polygon_wkt(split('8548ebb3fffffff,8548eb8ffffffff,8548ebbbfffffff,8548eb97fffffff,8548e94bfffffff,8548eb83fffffff,8548eb9bfffffff,8548ebd7fffffff,8548eb13fffffff,8548ebc7fffffff,8548eb53fffffff,8548ebcbfffffff,8548ea27fffffff,8548ea23fffffff,8548ea33fffffff,8548eaaffffffff', ',')) ---- -MULTIPOLYGON (((-111.722800 32.917532, -111.668838 32.833881, -111.554458 32.831454, -111.493876 32.912689, -111.379390 32.910111, -111.325653 32.826287, -111.211230 32.823546, -111.150377 32.904639, -111.035852 32.901746, -110.974820 32.982734, -111.028400 33.066655, -110.967274 33.147576, -111.020926 33.231422, -111.135783 33.234298, -111.189587 33.318019, -111.304510 33.320732, -111.365461 33.239732, -111.480278 33.242290, -111.534312 33.325838, -111.649190 33.328232, -111.709868 33.247089, -111.824638 33.249329, -111.885131 33.168082, -111.830947 33.084633, -111.891348 33.003322, -111.837237 32.919796), (-111.655758 33.163590, -111.541047 33.161185, -111.487087 33.077560, -111.547762 32.996389, -111.662308 32.998805, -111.716343 33.082381), (-111.372435 33.074992, -111.311578 33.156059, -111.196822 33.153337, -111.143091 33.069539, -111.204036 32.988512, -111.318626 32.991243)), ((-110.499818 33.299511, -110.614803 33.302862, -110.668291 33.386801, -110.783347 33.389989, -110.844748 33.309244, -110.791177 33.225351, -110.852483 33.144537, -110.798984 33.060569, -110.684261 33.057368, -110.622871 33.138142, -110.508052 33.134785, -110.454790 33.050649, -110.516263 32.969916, -110.630915 32.973279, -110.692211 32.892438, -110.638937 32.808275, -110.524450 32.804907, -110.463071 32.885707, -110.348491 32.882184, -110.286936 32.962876, -110.340044 33.047132, -110.278394 33.127755, -110.331572 33.211937, -110.446484 33.215450))) +MULTIPOLYGON (((-111.722800 32.917532, -111.668838 32.833881, -111.554458 32.831454, -111.493876 32.912689, -111.379390 32.910111, -111.325653 32.826287, -111.211230 32.823546, -111.150377 32.904639, -111.035852 32.901746, -110.974820 32.982734, -111.028400 33.066655, -110.967274 33.147576, -111.020926 33.231422, -111.135783 33.234298, -111.189587 33.318019, -111.304510 33.320732, -111.365461 33.239732, -111.480278 33.242290, -111.534312 33.325838, -111.649190 33.328232, -111.709868 33.247089, -111.824638 33.249329, -111.885131 33.168082, -111.830947 33.084633, -111.891348 33.003322, -111.837237 32.919796, -111.722800 32.917532), (-111.655758 33.163590, -111.541047 33.161185, -111.487087 33.077560, -111.547762 32.996389, -111.662308 32.998805, -111.716343 33.082381, -111.655758 33.163590), (-111.372435 33.074992, -111.311578 33.156059, -111.196822 33.153337, -111.143091 33.069539, -111.204036 32.988512, -111.318626 32.991243, -111.372435 33.074992)), ((-110.499818 33.299511, -110.614803 33.302862, -110.668291 33.386801, -110.783347 33.389989, -110.844748 33.309244, -110.791177 33.225351, -110.852483 33.144537, -110.798984 33.060569, -110.684261 33.057368, -110.622871 33.138142, -110.508052 33.134785, -110.454790 33.050649, -110.516263 32.969916, -110.630915 32.973279, -110.692211 32.892438, -110.638937 32.808275, -110.524450 32.804907, -110.463071 32.885707, -110.348491 32.882184, -110.286936 32.962876, -110.340044 33.047132, -110.278394 33.127755, -110.331572 33.211937, -110.446484 33.215450, -110.499818 33.299511))) query I select h3_cells_to_multi_polygon_wkt(split('zero', ',')) ---- -MULTIPOLYGON (((94.143090 76.163043, 145.558198 87.364695, -34.758418 81.271372, 0.325610 73.310224, 31.831280 68.929958, 62.345345 69.393596))) +MULTIPOLYGON (((94.143090 76.163043, 145.558198 87.364695, -34.758418 81.271372, 0.325610 73.310224, 31.831280 68.929958, 62.345345 69.393596, 94.143090 76.163043))) query I select h3_cells_to_multi_polygon_wkt([NULL]::ubigint[]) ---- -MULTIPOLYGON (((94.143090 76.163043, 145.558198 87.364695, -34.758418 81.271372, 0.325610 73.310224, 31.831280 68.929958, 62.345345 69.393596))) +MULTIPOLYGON (((94.143090 76.163043, 145.558198 87.364695, -34.758418 81.271372, 0.325610 73.310224, 31.831280 68.929958, 62.345345 69.393596, 94.143090 76.163043))) query I select h3_cells_to_multi_polygon_wkt([NULL]::bigint[]) ---- -MULTIPOLYGON (((94.143090 76.163043, 145.558198 87.364695, -34.758418 81.271372, 0.325610 73.310224, 31.831280 68.929958, 62.345345 69.393596))) +MULTIPOLYGON (((94.143090 76.163043, 145.558198 87.364695, -34.758418 81.271372, 0.325610 73.310224, 31.831280 68.929958, 62.345345 69.393596, 94.143090 76.163043))) query I select h3_cells_to_multi_polygon_wkt([0]::ubigint[]) ---- -MULTIPOLYGON (((94.143090 76.163043, 145.558198 87.364695, -34.758418 81.271372, 0.325610 73.310224, 31.831280 68.929958, 62.345345 69.393596))) +MULTIPOLYGON (((94.143090 76.163043, 145.558198 87.364695, -34.758418 81.271372, 0.325610 73.310224, 31.831280 68.929958, 62.345345 69.393596, 94.143090 76.163043))) query I select h3_cells_to_multi_polygon_wkt([0]::bigint[]) ---- -MULTIPOLYGON (((94.143090 76.163043, 145.558198 87.364695, -34.758418 81.271372, 0.325610 73.310224, 31.831280 68.929958, 62.345345 69.393596))) +MULTIPOLYGON (((94.143090 76.163043, 145.558198 87.364695, -34.758418 81.271372, 0.325610 73.310224, 31.831280 68.929958, 62.345345 69.393596, 94.143090 76.163043))) query I select h3_cells_to_multi_polygon_wkt([]::ubigint[]) @@ -158,7 +158,7 @@ Invalid Input Error: Invalid WKT: expected a hole loop ',' or final ')' at pos 4 query I select h3_cells_to_multi_polygon_wkt(h3_polygon_wkt_to_cells('POLYGON ((-122.40898669969356 37.81331899988944, -122.38054369969613 37.78663019990699, -122.35447369969584 37.719806199904276, -122.51234369969448 37.70761319990403, -122.52471869969825 37.783587199903444, -122.47987669969707 37.81515719990604, -122.40898669969356 37.81331899988944))', 9)); ---- -MULTIPOLYGON (((-122.496395 37.709885, -122.494067 37.710064, -122.492808 37.708560, -122.490479 37.708739, -122.489410 37.710422, -122.487082 37.710601, -122.485823 37.709097, -122.483495 37.709276, -122.482425 37.710959, -122.480097 37.711138, -122.478838 37.709634, -122.476509 37.709812, -122.475440 37.711496, -122.473111 37.711675, -122.471852 37.710170, -122.469524 37.710349, -122.468454 37.712032, -122.466126 37.712211, -122.464866 37.710706, -122.462538 37.710885, -122.461468 37.712568, -122.459139 37.712747, -122.457880 37.711242, -122.455551 37.711420, -122.454482 37.713103, -122.452153 37.713282, -122.450894 37.711777, -122.448565 37.711955, -122.447495 37.713639, -122.445166 37.713817, -122.443907 37.712312, -122.441577 37.712490, -122.440507 37.714173, -122.438178 37.714351, -122.436919 37.712846, -122.434590 37.713024, -122.433520 37.714707, -122.431190 37.714885, -122.429931 37.713380, -122.427602 37.713558, -122.426532 37.715241, -122.424202 37.715419, -122.422943 37.713914, -122.420614 37.714092, -122.419543 37.715775, -122.417213 37.715953, -122.415955 37.714447, -122.413625 37.714625, -122.412554 37.716308, -122.410224 37.716486, -122.408966 37.714980, -122.406636 37.715157, -122.405565 37.716841, -122.403235 37.717018, -122.401976 37.715512, -122.399646 37.715690, -122.398575 37.717373, -122.396245 37.717550, -122.394987 37.716044, -122.392657 37.716222, -122.391585 37.717905, -122.389255 37.718082, -122.387996 37.716576, -122.385666 37.716753, -122.384595 37.718436, -122.382265 37.718614, -122.381006 37.717108, -122.378676 37.717285, -122.377604 37.718968, -122.375274 37.719145, -122.374015 37.717638, -122.371685 37.717815, -122.370613 37.719498, -122.368282 37.719675, -122.367024 37.718169, -122.364693 37.718346, -122.363621 37.720029, -122.361291 37.720205, -122.360032 37.718699, -122.357701 37.718876, -122.356629 37.720559, -122.354298 37.720735, -122.353226 37.722418, -122.354485 37.723925, -122.356816 37.723748, -122.358074 37.725254, -122.357002 37.726937, -122.358261 37.728444, -122.357188 37.730126, -122.358447 37.731633, -122.357375 37.733316, -122.358633 37.734822, -122.360964 37.734645, -122.362223 37.736151, -122.361151 37.737834, -122.362410 37.739340, -122.361338 37.741023, -122.362596 37.742529, -122.364927 37.742352, -122.366186 37.743858, -122.365114 37.745541, -122.366373 37.747046, -122.365301 37.748729, -122.366560 37.750235, -122.365487 37.751918, -122.366746 37.753423, -122.369078 37.753246, -122.370337 37.754752, -122.369265 37.756435, -122.370524 37.757940, -122.369451 37.759623, -122.370710 37.761129, -122.369638 37.762811, -122.370897 37.764317, -122.373229 37.764139, -122.374488 37.765645, -122.373416 37.767328, -122.374675 37.768833, -122.373603 37.770515, -122.374862 37.772021, -122.373790 37.773703, -122.375049 37.775209, -122.377381 37.775031, -122.378640 37.776536, -122.377568 37.778219, -122.378827 37.779724, -122.377755 37.781407, -122.379014 37.782912, -122.377942 37.784594, -122.379201 37.786099, -122.381533 37.785922, -122.382793 37.787427, -122.381720 37.789109, -122.382980 37.790614, -122.385312 37.790436, -122.386571 37.791941, -122.385499 37.793624, -122.386759 37.795128, -122.389091 37.794951, -122.390350 37.796455, -122.392682 37.796278, -122.393942 37.797782, -122.392870 37.799465, -122.394129 37.800969, -122.396461 37.800791, -122.397721 37.802296, -122.396649 37.803978, -122.397909 37.805483, -122.400241 37.805305, -122.401501 37.806809, -122.403832 37.806631, -122.405092 37.808135, -122.404020 37.809818, -122.405280 37.811322, -122.407612 37.811144, -122.408872 37.812648, -122.411204 37.812470, -122.412464 37.813974, -122.414796 37.813796, -122.415868 37.812113, -122.418200 37.811935, -122.419460 37.813439, -122.421791 37.813261, -122.423051 37.814764, -122.425383 37.814586, -122.426455 37.812904, -122.428786 37.812725, -122.430046 37.814229, -122.432378 37.814050, -122.433638 37.815554, -122.435970 37.815375, -122.437041 37.813693, -122.439372 37.813514, -122.440633 37.815018, -122.442964 37.814839, -122.444035 37.813157, -122.446366 37.812978, -122.447627 37.814481, -122.449958 37.814302, -122.451218 37.815806, -122.453549 37.815627, -122.454620 37.813944, -122.456952 37.813765, -122.458212 37.815269, -122.460543 37.815090, -122.461614 37.813407, -122.463945 37.813228, -122.465205 37.814731, -122.467536 37.814552, -122.468796 37.816055, -122.471127 37.815876, -122.472198 37.814193, -122.474529 37.814014, -122.475789 37.815517, -122.478120 37.815337, -122.479190 37.813655, -122.481521 37.813475, -122.482591 37.811793, -122.484922 37.811613, -122.485992 37.809931, -122.488323 37.809751, -122.489393 37.808068, -122.491723 37.807889, -122.492793 37.806206, -122.495123 37.806026, -122.496193 37.804344, -122.498523 37.804164, -122.499593 37.802481, -122.498333 37.800978, -122.499402 37.799296, -122.501732 37.799116, -122.502802 37.797433, -122.505132 37.797253, -122.506202 37.795570, -122.508531 37.795390, -122.509601 37.793708, -122.511931 37.793528, -122.513000 37.791845, -122.515330 37.791665, -122.516399 37.789982, -122.518728 37.789802, -122.519797 37.788119, -122.518537 37.786616, -122.519606 37.784933, -122.521936 37.784753, -122.523005 37.783070, -122.525334 37.782890, -122.526403 37.781207, -122.525142 37.779704, -122.522813 37.779884, -122.521553 37.778381, -122.522622 37.776698, -122.521362 37.775195, -122.522431 37.773512, -122.521170 37.772009, -122.522239 37.770326, -122.520979 37.768823, -122.522048 37.767140, -122.520788 37.765637, -122.521857 37.763954, -122.520596 37.762450, -122.521665 37.760767, -122.520405 37.759264, -122.521474 37.757581, -122.520214 37.756078, -122.521283 37.754394, -122.520023 37.752891, -122.521091 37.751208, -122.519831 37.749704, -122.520900 37.748021, -122.519640 37.746518, -122.520709 37.744834, -122.519449 37.743331, -122.517120 37.743511, -122.515861 37.742007, -122.516929 37.740324, -122.515670 37.738820, -122.516738 37.737137, -122.515478 37.735633, -122.516547 37.733950, -122.515287 37.732446, -122.516356 37.730762, -122.515096 37.729259, -122.516165 37.727575, -122.514905 37.726071, -122.515974 37.724388, -122.514714 37.722884, -122.515783 37.721200, -122.514523 37.719697, -122.515592 37.718013, -122.514332 37.716509, -122.515401 37.714825, -122.514141 37.713321, -122.515210 37.711638, -122.513950 37.710134, -122.511622 37.710313, -122.510363 37.708809, -122.508035 37.708988, -122.506776 37.707484, -122.504448 37.707664, -122.503379 37.709347, -122.501051 37.709526, -122.499792 37.708022, -122.497464 37.708201))) +MULTIPOLYGON (((-122.496395 37.709885, -122.494067 37.710064, -122.492808 37.708560, -122.490479 37.708739, -122.489410 37.710422, -122.487082 37.710601, -122.485823 37.709097, -122.483495 37.709276, -122.482425 37.710959, -122.480097 37.711138, -122.478838 37.709634, -122.476509 37.709812, -122.475440 37.711496, -122.473111 37.711675, -122.471852 37.710170, -122.469524 37.710349, -122.468454 37.712032, -122.466126 37.712211, -122.464866 37.710706, -122.462538 37.710885, -122.461468 37.712568, -122.459139 37.712747, -122.457880 37.711242, -122.455551 37.711420, -122.454482 37.713103, -122.452153 37.713282, -122.450894 37.711777, -122.448565 37.711955, -122.447495 37.713639, -122.445166 37.713817, -122.443907 37.712312, -122.441577 37.712490, -122.440507 37.714173, -122.438178 37.714351, -122.436919 37.712846, -122.434590 37.713024, -122.433520 37.714707, -122.431190 37.714885, -122.429931 37.713380, -122.427602 37.713558, -122.426532 37.715241, -122.424202 37.715419, -122.422943 37.713914, -122.420614 37.714092, -122.419543 37.715775, -122.417213 37.715953, -122.415955 37.714447, -122.413625 37.714625, -122.412554 37.716308, -122.410224 37.716486, -122.408966 37.714980, -122.406636 37.715157, -122.405565 37.716841, -122.403235 37.717018, -122.401976 37.715512, -122.399646 37.715690, -122.398575 37.717373, -122.396245 37.717550, -122.394987 37.716044, -122.392657 37.716222, -122.391585 37.717905, -122.389255 37.718082, -122.387996 37.716576, -122.385666 37.716753, -122.384595 37.718436, -122.382265 37.718614, -122.381006 37.717108, -122.378676 37.717285, -122.377604 37.718968, -122.375274 37.719145, -122.374015 37.717638, -122.371685 37.717815, -122.370613 37.719498, -122.368282 37.719675, -122.367024 37.718169, -122.364693 37.718346, -122.363621 37.720029, -122.361291 37.720205, -122.360032 37.718699, -122.357701 37.718876, -122.356629 37.720559, -122.354298 37.720735, -122.353226 37.722418, -122.354485 37.723925, -122.356816 37.723748, -122.358074 37.725254, -122.357002 37.726937, -122.358261 37.728444, -122.357188 37.730126, -122.358447 37.731633, -122.357375 37.733316, -122.358633 37.734822, -122.360964 37.734645, -122.362223 37.736151, -122.361151 37.737834, -122.362410 37.739340, -122.361338 37.741023, -122.362596 37.742529, -122.364927 37.742352, -122.366186 37.743858, -122.365114 37.745541, -122.366373 37.747046, -122.365301 37.748729, -122.366560 37.750235, -122.365487 37.751918, -122.366746 37.753423, -122.369078 37.753246, -122.370337 37.754752, -122.369265 37.756435, -122.370524 37.757940, -122.369451 37.759623, -122.370710 37.761129, -122.369638 37.762811, -122.370897 37.764317, -122.373229 37.764139, -122.374488 37.765645, -122.373416 37.767328, -122.374675 37.768833, -122.373603 37.770515, -122.374862 37.772021, -122.373790 37.773703, -122.375049 37.775209, -122.377381 37.775031, -122.378640 37.776536, -122.377568 37.778219, -122.378827 37.779724, -122.377755 37.781407, -122.379014 37.782912, -122.377942 37.784594, -122.379201 37.786099, -122.381533 37.785922, -122.382793 37.787427, -122.381720 37.789109, -122.382980 37.790614, -122.385312 37.790436, -122.386571 37.791941, -122.385499 37.793624, -122.386759 37.795128, -122.389091 37.794951, -122.390350 37.796455, -122.392682 37.796278, -122.393942 37.797782, -122.392870 37.799465, -122.394129 37.800969, -122.396461 37.800791, -122.397721 37.802296, -122.396649 37.803978, -122.397909 37.805483, -122.400241 37.805305, -122.401501 37.806809, -122.403832 37.806631, -122.405092 37.808135, -122.404020 37.809818, -122.405280 37.811322, -122.407612 37.811144, -122.408872 37.812648, -122.411204 37.812470, -122.412464 37.813974, -122.414796 37.813796, -122.415868 37.812113, -122.418200 37.811935, -122.419460 37.813439, -122.421791 37.813261, -122.423051 37.814764, -122.425383 37.814586, -122.426455 37.812904, -122.428786 37.812725, -122.430046 37.814229, -122.432378 37.814050, -122.433638 37.815554, -122.435970 37.815375, -122.437041 37.813693, -122.439372 37.813514, -122.440633 37.815018, -122.442964 37.814839, -122.444035 37.813157, -122.446366 37.812978, -122.447627 37.814481, -122.449958 37.814302, -122.451218 37.815806, -122.453549 37.815627, -122.454620 37.813944, -122.456952 37.813765, -122.458212 37.815269, -122.460543 37.815090, -122.461614 37.813407, -122.463945 37.813228, -122.465205 37.814731, -122.467536 37.814552, -122.468796 37.816055, -122.471127 37.815876, -122.472198 37.814193, -122.474529 37.814014, -122.475789 37.815517, -122.478120 37.815337, -122.479190 37.813655, -122.481521 37.813475, -122.482591 37.811793, -122.484922 37.811613, -122.485992 37.809931, -122.488323 37.809751, -122.489393 37.808068, -122.491723 37.807889, -122.492793 37.806206, -122.495123 37.806026, -122.496193 37.804344, -122.498523 37.804164, -122.499593 37.802481, -122.498333 37.800978, -122.499402 37.799296, -122.501732 37.799116, -122.502802 37.797433, -122.505132 37.797253, -122.506202 37.795570, -122.508531 37.795390, -122.509601 37.793708, -122.511931 37.793528, -122.513000 37.791845, -122.515330 37.791665, -122.516399 37.789982, -122.518728 37.789802, -122.519797 37.788119, -122.518537 37.786616, -122.519606 37.784933, -122.521936 37.784753, -122.523005 37.783070, -122.525334 37.782890, -122.526403 37.781207, -122.525142 37.779704, -122.522813 37.779884, -122.521553 37.778381, -122.522622 37.776698, -122.521362 37.775195, -122.522431 37.773512, -122.521170 37.772009, -122.522239 37.770326, -122.520979 37.768823, -122.522048 37.767140, -122.520788 37.765637, -122.521857 37.763954, -122.520596 37.762450, -122.521665 37.760767, -122.520405 37.759264, -122.521474 37.757581, -122.520214 37.756078, -122.521283 37.754394, -122.520023 37.752891, -122.521091 37.751208, -122.519831 37.749704, -122.520900 37.748021, -122.519640 37.746518, -122.520709 37.744834, -122.519449 37.743331, -122.517120 37.743511, -122.515861 37.742007, -122.516929 37.740324, -122.515670 37.738820, -122.516738 37.737137, -122.515478 37.735633, -122.516547 37.733950, -122.515287 37.732446, -122.516356 37.730762, -122.515096 37.729259, -122.516165 37.727575, -122.514905 37.726071, -122.515974 37.724388, -122.514714 37.722884, -122.515783 37.721200, -122.514523 37.719697, -122.515592 37.718013, -122.514332 37.716509, -122.515401 37.714825, -122.514141 37.713321, -122.515210 37.711638, -122.513950 37.710134, -122.511622 37.710313, -122.510363 37.708809, -122.508035 37.708988, -122.506776 37.707484, -122.504448 37.707664, -122.503379 37.709347, -122.501051 37.709526, -122.499792 37.708022, -122.497464 37.708201, -122.496395 37.709885))) query I select h3_polygon_wkt_to_cells('POLYGON EMPTY', 9); @@ -268,7 +268,7 @@ Invalid Input Error: Invalid WKT: expected a hole loop ',' or final ')' at pos 4 query I select h3_cells_to_multi_polygon_wkt(h3_polygon_wkt_to_cells_string('POLYGON ((-122.40898669969356 37.81331899988944, -122.38054369969613 37.78663019990699, -122.35447369969584 37.719806199904276, -122.51234369969448 37.70761319990403, -122.52471869969825 37.783587199903444, -122.47987669969707 37.81515719990604, -122.40898669969356 37.81331899988944))', 9)); ---- -MULTIPOLYGON (((-122.496395 37.709885, -122.494067 37.710064, -122.492808 37.708560, -122.490479 37.708739, -122.489410 37.710422, -122.487082 37.710601, -122.485823 37.709097, -122.483495 37.709276, -122.482425 37.710959, -122.480097 37.711138, -122.478838 37.709634, -122.476509 37.709812, -122.475440 37.711496, -122.473111 37.711675, -122.471852 37.710170, -122.469524 37.710349, -122.468454 37.712032, -122.466126 37.712211, -122.464866 37.710706, -122.462538 37.710885, -122.461468 37.712568, -122.459139 37.712747, -122.457880 37.711242, -122.455551 37.711420, -122.454482 37.713103, -122.452153 37.713282, -122.450894 37.711777, -122.448565 37.711955, -122.447495 37.713639, -122.445166 37.713817, -122.443907 37.712312, -122.441577 37.712490, -122.440507 37.714173, -122.438178 37.714351, -122.436919 37.712846, -122.434590 37.713024, -122.433520 37.714707, -122.431190 37.714885, -122.429931 37.713380, -122.427602 37.713558, -122.426532 37.715241, -122.424202 37.715419, -122.422943 37.713914, -122.420614 37.714092, -122.419543 37.715775, -122.417213 37.715953, -122.415955 37.714447, -122.413625 37.714625, -122.412554 37.716308, -122.410224 37.716486, -122.408966 37.714980, -122.406636 37.715157, -122.405565 37.716841, -122.403235 37.717018, -122.401976 37.715512, -122.399646 37.715690, -122.398575 37.717373, -122.396245 37.717550, -122.394987 37.716044, -122.392657 37.716222, -122.391585 37.717905, -122.389255 37.718082, -122.387996 37.716576, -122.385666 37.716753, -122.384595 37.718436, -122.382265 37.718614, -122.381006 37.717108, -122.378676 37.717285, -122.377604 37.718968, -122.375274 37.719145, -122.374015 37.717638, -122.371685 37.717815, -122.370613 37.719498, -122.368282 37.719675, -122.367024 37.718169, -122.364693 37.718346, -122.363621 37.720029, -122.361291 37.720205, -122.360032 37.718699, -122.357701 37.718876, -122.356629 37.720559, -122.354298 37.720735, -122.353226 37.722418, -122.354485 37.723925, -122.356816 37.723748, -122.358074 37.725254, -122.357002 37.726937, -122.358261 37.728444, -122.357188 37.730126, -122.358447 37.731633, -122.357375 37.733316, -122.358633 37.734822, -122.360964 37.734645, -122.362223 37.736151, -122.361151 37.737834, -122.362410 37.739340, -122.361338 37.741023, -122.362596 37.742529, -122.364927 37.742352, -122.366186 37.743858, -122.365114 37.745541, -122.366373 37.747046, -122.365301 37.748729, -122.366560 37.750235, -122.365487 37.751918, -122.366746 37.753423, -122.369078 37.753246, -122.370337 37.754752, -122.369265 37.756435, -122.370524 37.757940, -122.369451 37.759623, -122.370710 37.761129, -122.369638 37.762811, -122.370897 37.764317, -122.373229 37.764139, -122.374488 37.765645, -122.373416 37.767328, -122.374675 37.768833, -122.373603 37.770515, -122.374862 37.772021, -122.373790 37.773703, -122.375049 37.775209, -122.377381 37.775031, -122.378640 37.776536, -122.377568 37.778219, -122.378827 37.779724, -122.377755 37.781407, -122.379014 37.782912, -122.377942 37.784594, -122.379201 37.786099, -122.381533 37.785922, -122.382793 37.787427, -122.381720 37.789109, -122.382980 37.790614, -122.385312 37.790436, -122.386571 37.791941, -122.385499 37.793624, -122.386759 37.795128, -122.389091 37.794951, -122.390350 37.796455, -122.392682 37.796278, -122.393942 37.797782, -122.392870 37.799465, -122.394129 37.800969, -122.396461 37.800791, -122.397721 37.802296, -122.396649 37.803978, -122.397909 37.805483, -122.400241 37.805305, -122.401501 37.806809, -122.403832 37.806631, -122.405092 37.808135, -122.404020 37.809818, -122.405280 37.811322, -122.407612 37.811144, -122.408872 37.812648, -122.411204 37.812470, -122.412464 37.813974, -122.414796 37.813796, -122.415868 37.812113, -122.418200 37.811935, -122.419460 37.813439, -122.421791 37.813261, -122.423051 37.814764, -122.425383 37.814586, -122.426455 37.812904, -122.428786 37.812725, -122.430046 37.814229, -122.432378 37.814050, -122.433638 37.815554, -122.435970 37.815375, -122.437041 37.813693, -122.439372 37.813514, -122.440633 37.815018, -122.442964 37.814839, -122.444035 37.813157, -122.446366 37.812978, -122.447627 37.814481, -122.449958 37.814302, -122.451218 37.815806, -122.453549 37.815627, -122.454620 37.813944, -122.456952 37.813765, -122.458212 37.815269, -122.460543 37.815090, -122.461614 37.813407, -122.463945 37.813228, -122.465205 37.814731, -122.467536 37.814552, -122.468796 37.816055, -122.471127 37.815876, -122.472198 37.814193, -122.474529 37.814014, -122.475789 37.815517, -122.478120 37.815337, -122.479190 37.813655, -122.481521 37.813475, -122.482591 37.811793, -122.484922 37.811613, -122.485992 37.809931, -122.488323 37.809751, -122.489393 37.808068, -122.491723 37.807889, -122.492793 37.806206, -122.495123 37.806026, -122.496193 37.804344, -122.498523 37.804164, -122.499593 37.802481, -122.498333 37.800978, -122.499402 37.799296, -122.501732 37.799116, -122.502802 37.797433, -122.505132 37.797253, -122.506202 37.795570, -122.508531 37.795390, -122.509601 37.793708, -122.511931 37.793528, -122.513000 37.791845, -122.515330 37.791665, -122.516399 37.789982, -122.518728 37.789802, -122.519797 37.788119, -122.518537 37.786616, -122.519606 37.784933, -122.521936 37.784753, -122.523005 37.783070, -122.525334 37.782890, -122.526403 37.781207, -122.525142 37.779704, -122.522813 37.779884, -122.521553 37.778381, -122.522622 37.776698, -122.521362 37.775195, -122.522431 37.773512, -122.521170 37.772009, -122.522239 37.770326, -122.520979 37.768823, -122.522048 37.767140, -122.520788 37.765637, -122.521857 37.763954, -122.520596 37.762450, -122.521665 37.760767, -122.520405 37.759264, -122.521474 37.757581, -122.520214 37.756078, -122.521283 37.754394, -122.520023 37.752891, -122.521091 37.751208, -122.519831 37.749704, -122.520900 37.748021, -122.519640 37.746518, -122.520709 37.744834, -122.519449 37.743331, -122.517120 37.743511, -122.515861 37.742007, -122.516929 37.740324, -122.515670 37.738820, -122.516738 37.737137, -122.515478 37.735633, -122.516547 37.733950, -122.515287 37.732446, -122.516356 37.730762, -122.515096 37.729259, -122.516165 37.727575, -122.514905 37.726071, -122.515974 37.724388, -122.514714 37.722884, -122.515783 37.721200, -122.514523 37.719697, -122.515592 37.718013, -122.514332 37.716509, -122.515401 37.714825, -122.514141 37.713321, -122.515210 37.711638, -122.513950 37.710134, -122.511622 37.710313, -122.510363 37.708809, -122.508035 37.708988, -122.506776 37.707484, -122.504448 37.707664, -122.503379 37.709347, -122.501051 37.709526, -122.499792 37.708022, -122.497464 37.708201))) +MULTIPOLYGON (((-122.496395 37.709885, -122.494067 37.710064, -122.492808 37.708560, -122.490479 37.708739, -122.489410 37.710422, -122.487082 37.710601, -122.485823 37.709097, -122.483495 37.709276, -122.482425 37.710959, -122.480097 37.711138, -122.478838 37.709634, -122.476509 37.709812, -122.475440 37.711496, -122.473111 37.711675, -122.471852 37.710170, -122.469524 37.710349, -122.468454 37.712032, -122.466126 37.712211, -122.464866 37.710706, -122.462538 37.710885, -122.461468 37.712568, -122.459139 37.712747, -122.457880 37.711242, -122.455551 37.711420, -122.454482 37.713103, -122.452153 37.713282, -122.450894 37.711777, -122.448565 37.711955, -122.447495 37.713639, -122.445166 37.713817, -122.443907 37.712312, -122.441577 37.712490, -122.440507 37.714173, -122.438178 37.714351, -122.436919 37.712846, -122.434590 37.713024, -122.433520 37.714707, -122.431190 37.714885, -122.429931 37.713380, -122.427602 37.713558, -122.426532 37.715241, -122.424202 37.715419, -122.422943 37.713914, -122.420614 37.714092, -122.419543 37.715775, -122.417213 37.715953, -122.415955 37.714447, -122.413625 37.714625, -122.412554 37.716308, -122.410224 37.716486, -122.408966 37.714980, -122.406636 37.715157, -122.405565 37.716841, -122.403235 37.717018, -122.401976 37.715512, -122.399646 37.715690, -122.398575 37.717373, -122.396245 37.717550, -122.394987 37.716044, -122.392657 37.716222, -122.391585 37.717905, -122.389255 37.718082, -122.387996 37.716576, -122.385666 37.716753, -122.384595 37.718436, -122.382265 37.718614, -122.381006 37.717108, -122.378676 37.717285, -122.377604 37.718968, -122.375274 37.719145, -122.374015 37.717638, -122.371685 37.717815, -122.370613 37.719498, -122.368282 37.719675, -122.367024 37.718169, -122.364693 37.718346, -122.363621 37.720029, -122.361291 37.720205, -122.360032 37.718699, -122.357701 37.718876, -122.356629 37.720559, -122.354298 37.720735, -122.353226 37.722418, -122.354485 37.723925, -122.356816 37.723748, -122.358074 37.725254, -122.357002 37.726937, -122.358261 37.728444, -122.357188 37.730126, -122.358447 37.731633, -122.357375 37.733316, -122.358633 37.734822, -122.360964 37.734645, -122.362223 37.736151, -122.361151 37.737834, -122.362410 37.739340, -122.361338 37.741023, -122.362596 37.742529, -122.364927 37.742352, -122.366186 37.743858, -122.365114 37.745541, -122.366373 37.747046, -122.365301 37.748729, -122.366560 37.750235, -122.365487 37.751918, -122.366746 37.753423, -122.369078 37.753246, -122.370337 37.754752, -122.369265 37.756435, -122.370524 37.757940, -122.369451 37.759623, -122.370710 37.761129, -122.369638 37.762811, -122.370897 37.764317, -122.373229 37.764139, -122.374488 37.765645, -122.373416 37.767328, -122.374675 37.768833, -122.373603 37.770515, -122.374862 37.772021, -122.373790 37.773703, -122.375049 37.775209, -122.377381 37.775031, -122.378640 37.776536, -122.377568 37.778219, -122.378827 37.779724, -122.377755 37.781407, -122.379014 37.782912, -122.377942 37.784594, -122.379201 37.786099, -122.381533 37.785922, -122.382793 37.787427, -122.381720 37.789109, -122.382980 37.790614, -122.385312 37.790436, -122.386571 37.791941, -122.385499 37.793624, -122.386759 37.795128, -122.389091 37.794951, -122.390350 37.796455, -122.392682 37.796278, -122.393942 37.797782, -122.392870 37.799465, -122.394129 37.800969, -122.396461 37.800791, -122.397721 37.802296, -122.396649 37.803978, -122.397909 37.805483, -122.400241 37.805305, -122.401501 37.806809, -122.403832 37.806631, -122.405092 37.808135, -122.404020 37.809818, -122.405280 37.811322, -122.407612 37.811144, -122.408872 37.812648, -122.411204 37.812470, -122.412464 37.813974, -122.414796 37.813796, -122.415868 37.812113, -122.418200 37.811935, -122.419460 37.813439, -122.421791 37.813261, -122.423051 37.814764, -122.425383 37.814586, -122.426455 37.812904, -122.428786 37.812725, -122.430046 37.814229, -122.432378 37.814050, -122.433638 37.815554, -122.435970 37.815375, -122.437041 37.813693, -122.439372 37.813514, -122.440633 37.815018, -122.442964 37.814839, -122.444035 37.813157, -122.446366 37.812978, -122.447627 37.814481, -122.449958 37.814302, -122.451218 37.815806, -122.453549 37.815627, -122.454620 37.813944, -122.456952 37.813765, -122.458212 37.815269, -122.460543 37.815090, -122.461614 37.813407, -122.463945 37.813228, -122.465205 37.814731, -122.467536 37.814552, -122.468796 37.816055, -122.471127 37.815876, -122.472198 37.814193, -122.474529 37.814014, -122.475789 37.815517, -122.478120 37.815337, -122.479190 37.813655, -122.481521 37.813475, -122.482591 37.811793, -122.484922 37.811613, -122.485992 37.809931, -122.488323 37.809751, -122.489393 37.808068, -122.491723 37.807889, -122.492793 37.806206, -122.495123 37.806026, -122.496193 37.804344, -122.498523 37.804164, -122.499593 37.802481, -122.498333 37.800978, -122.499402 37.799296, -122.501732 37.799116, -122.502802 37.797433, -122.505132 37.797253, -122.506202 37.795570, -122.508531 37.795390, -122.509601 37.793708, -122.511931 37.793528, -122.513000 37.791845, -122.515330 37.791665, -122.516399 37.789982, -122.518728 37.789802, -122.519797 37.788119, -122.518537 37.786616, -122.519606 37.784933, -122.521936 37.784753, -122.523005 37.783070, -122.525334 37.782890, -122.526403 37.781207, -122.525142 37.779704, -122.522813 37.779884, -122.521553 37.778381, -122.522622 37.776698, -122.521362 37.775195, -122.522431 37.773512, -122.521170 37.772009, -122.522239 37.770326, -122.520979 37.768823, -122.522048 37.767140, -122.520788 37.765637, -122.521857 37.763954, -122.520596 37.762450, -122.521665 37.760767, -122.520405 37.759264, -122.521474 37.757581, -122.520214 37.756078, -122.521283 37.754394, -122.520023 37.752891, -122.521091 37.751208, -122.519831 37.749704, -122.520900 37.748021, -122.519640 37.746518, -122.520709 37.744834, -122.519449 37.743331, -122.517120 37.743511, -122.515861 37.742007, -122.516929 37.740324, -122.515670 37.738820, -122.516738 37.737137, -122.515478 37.735633, -122.516547 37.733950, -122.515287 37.732446, -122.516356 37.730762, -122.515096 37.729259, -122.516165 37.727575, -122.514905 37.726071, -122.515974 37.724388, -122.514714 37.722884, -122.515783 37.721200, -122.514523 37.719697, -122.515592 37.718013, -122.514332 37.716509, -122.515401 37.714825, -122.514141 37.713321, -122.515210 37.711638, -122.513950 37.710134, -122.511622 37.710313, -122.510363 37.708809, -122.508035 37.708988, -122.506776 37.707484, -122.504448 37.707664, -122.503379 37.709347, -122.501051 37.709526, -122.499792 37.708022, -122.497464 37.708201, -122.496395 37.709885))) query I select h3_polygon_wkt_to_cells_string('POLYGON EMPTY', 9);