Dela via


geo_polygon_to_h3cells()

Konverterar polygon till H3-celler. Den här funktionen är ett användbart geospatialt kopplings- och visualiseringsverktyg.

Syntax

geo_polygon_to_h3cells(polygon [,upplösning[,radius]])

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Obligatorisk Beskrivning
Polygon dynamic ✔️ Polygon eller multipolygon i GeoJSON-format.
Upplösning int Definierar den begärda cellupplösningen. Värden som stöds finns i intervallet [0, 15]. Om det är ospecificerat används standardvärdet 6 .
Radie real Buffertradie i meter. Om det är ospecificerat används standardvärdet 0 .

Returer

Matris med H3-celltokensträngar med samma upplösning som återskapar en polygon eller multipolygon. Om radien är inställd på ett positivt värde förstoras polygonen så att alla punkter inom den angivna radien för den inmatade polygonen eller multipolygonen kommer att finnas inuti och den nyligen beräknade polygonen som konverteras till H3-celler. Om polygon, upplösning, radie är ogiltigt eller om antalet celler överskrider gränsen genererar frågan ett null-resultat.

Anteckning

  • Att konvertera polygon till H3-celltoken kan vara användbart för att matcha koordinater till polygoner som kan innehålla dessa koordinater och matcha polygoner till polygoner.
  • Det maximala antalet token per polygon är 61680.
  • Polygonkanter är raka linjer.
  • En polygon representeras av de celler vars centroider finns inuti polygonen. Det innebär att cellerna inte är exakt samma som polygonen, men de kommer närmare när upplösningen ökar. För att säkerställa att varje punkt i polygonen täcks av en cell kan polygonen buffras. Detta säkerställer också att närliggande polygoner som rör varandra kommer att ha separata celler, så att ingen cell kommer att tillhöra mer än en polygon.

Se även geo_polygon_to_s2cells().

Exempel

I följande exempel beräknas H3-celler som är ungefärliga för polygonen.

let polygon = dynamic({"type":"Polygon","coordinates":[[[-3.659,40.553],[-3.913,40.409],[-3.729,40.273],[-3.524,40.440],[-3.659,40.553]]]});
print h3_cells = geo_polygon_to_h3cells(polygon)

Resultat

h3_cells
["86390cb57ffffff","86390cb0fffffff","86390ca27ffffff","86390cb87ffffff","86390cb07ffffff","86390ca2fffffff","86390ca37ffffff","86390cb17ffffff","86390cb1fffffff","86390cb8fffffff","86390cba7ffffff","86390ca07ffffff","86390cbafffffff"]

I följande exempel visas en multipolygon som består av H3-celler som approximeras ovanstående polygon. Om du anger en högre upplösning förbättras polygonomnäring.

let polygon = dynamic({"type":"Polygon","coordinates":[[[-3.659,40.553],[-3.913,40.409],[-3.729,40.273],[-3.524,40.440],[-3.659,40.553]]]});
print h3_cells = geo_polygon_to_h3cells(polygon)
| mv-expand cell = h3_cells to typeof(string) // extract cell to a separate row
| project polygon_cell = geo_h3cell_to_polygon(cell) // convert each cell to a polygon
| project individual_polygon_coordinates = pack_array(polygon_cell.coordinates)
| summarize multipolygon_coordinates = make_list(individual_polygon_coordinates)
| project multipolygon = bag_pack("type","MultiPolygon", "coordinates", multipolygon_coordinates)

Resultat

multipolygon
{"type": "MultiPolygon",
"koordinater": [ ... ]}

Följande exempel returnerar null eftersom polygonen är ogiltig.

let polygon = dynamic({"type":"Polygon","coordinates":[[[0,0],[1,1]]]});
print is_null = isnull(geo_polygon_to_h3cells(polygon))

Resultat

is_null
Sant