Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Schakelen tussen services met behulp van de vervolgkeuzelijst Versie . Meer informatie over navigatie.
Van toepassing op: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Converteert veelhoek- of multipolygon planarranden naar geodetica door tussenliggende punten toe te voegen.
Syntaxis
geo_polygon_densify(
Veelhoek,Tolerantie, [ preserve_crossing ])
Meer informatie over syntaxisconventies.
Parameterwaarden
| Naam | Typologie | Verplicht | Description |
|---|---|---|---|
| Veelhoek | dynamic |
✔️ | Veelhoek of multipolygon in de GeoJSON-indeling. |
| tolerance | int, lang of echt | Definieert de maximale afstand in meters tussen de oorspronkelijke planaire rand en de geconverteerde geodetische randketen. Ondersteunde waarden bevinden zich in het bereik [0.1, 10000]. Als deze niet is opgegeven, wordt de standaardwaarde 10. |
|
| preserve_crossing | bool |
Als true, behoudt rand kruising over antimeridian. Indien niet opgegeven, wordt de standaardwaarde false gebruikt. |
Veelhoekdefinitie
dynamic({"type": "Polygon","coördinaten": [ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ]})
dynamic({"type": "MultiPolygon","coördinaten": [[ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]})
-
LinearRingShellis vereist en gedefinieerd als eencounterclockwisegeordende matrix met coördinaten [[lng_1;lat_1],...,[lng_i;lat_i],...,[lng_j;lat_j],...,[lng_1,lat_1]]. Er kan maar één shell zijn. -
LinearRingHoleis optioneel en gedefinieerd als eenclockwisegeordende matrix met coördinaten [[lng_1,lat_1],...,[lng_i;lat_i],...,[lng_j;lat_j],...,[lng_1;lat_1]]. Er kunnen een aantal binnenringen en gaten zijn. -
LinearRingHoekpunten moeten uniek zijn met ten minste drie coördinaten. De eerste coördinaat moet gelijk zijn aan de laatste. Er zijn ten minste vier vermeldingen vereist. - Coördinaten [lengtegraad, breedtegraad] moeten geldig zijn. Lengtegraad moet een reëel getal in het bereik [-180, +180] zijn en de breedtegraad moet een reëel getal zijn in het bereik [-90, +90].
-
LinearRingShellplaatst zich maximaal de helft van de bol. LinearRing verdeelt de bol in twee regio's. De kleinere van de twee regio's wordt gekozen. -
LinearRingde randlengte moet kleiner zijn dan 180 graden. De kortste rand tussen de twee hoekpunten wordt gekozen.
Constraints
- Het maximum aantal punten in de verdichte veelhoek is beperkt tot 10485760.
- Het opslaan van veelhoeken in dynamische indeling heeft groottelimieten.
- Het vergroten van een geldige veelhoek kan de veelhoek ongeldig maken. Het algoritme voegt punten op een niet-uniforme manier toe en kan ertoe leiden dat randen met elkaar verstrengelen.
Motivatie
-
GeoJSON-indeling definieert een rand tussen twee punten als een rechte cartesische lijn terwijl
geo_polygon_densify()geodesisch wordt gebruikt. - De beslissing om geodetische of planaire randen te gebruiken, is mogelijk afhankelijk van de gegevensset en is vooral relevant voor lange randen.
Retouren
Gedensificeerde veelhoek in de GeoJSON-indeling en van een dynamisch gegevenstype. Als de veelhoek of tolerantie ongeldig is, produceert de query een null-resultaat.
Opmerking
De georuimtelijke coördinaten worden geïnterpreteerd als vertegenwoordigd door het WGS-84 coördinaatverwijzingssysteem.
Voorbeelden
In het volgende voorbeeld wordt de polygoon Manhattan Central Park gedensificeerd. De randen zijn kort en de afstand tussen planaire randen en hun geodetische tegenhangers is kleiner dan de afstand die is opgegeven door tolerantie. Als zodanig blijft het resultaat ongewijzigd.
print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[-73.958244,40.800719],[-73.949146,40.79695],[-73.973093,40.764226],[-73.982062,40.768159],[-73.958244,40.800719]]]})))
Uitvoer
| densified_polygon |
|---|
| {"type":"Veelhoek","coördinaten":[[[-73.958244,40.800719],[-73.949146,40.79695],[-73.973093,40.764226],[-73.982062,40.768159],[-73.958244,40,800719]]]} |
In het volgende voorbeeld worden twee randen van de veelhoek gedensificeerd. Lengte van densified randen is ~110 km
print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]})))
Uitvoer
| densified_polygon |
|---|
| {"type":"Veelhoek","coördinaten":[[[10,10],[10.25,10],[10,5,10],[10,75,10],[11,10]];[11,10],[11,11],[10,75,11],[10,5,11],[10.25,11],[10,11],[10,10]]]} |
In het volgende voorbeeld wordt een null-resultaat geretourneerd vanwege de ongeldige coördinaatinvoer.
print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,900],[11,10],[11,11],[10,11],[10,10]]]}))
Uitvoer
| densified_polygon |
|---|
In het volgende voorbeeld wordt een null-resultaat geretourneerd vanwege de ongeldige tolerantie-invoer.
print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]}), 0)
Uitvoer
| densified_polygon |
|---|