geo_line_interpolate_point()

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

Berekent een punt op breukwaarde op een lijn op aarde.

Syntaxis

geo_line_interpolate_point( lineString,fractie)

Meer informatie over syntaxisconventies.

Parameterwaarden

Naam Typ Verplicht Beschrijving
lineString dynamic ✔️ Een LineString in de GeoJSON-indeling.
fractie real ✔️ breukwaarde moet tussen 0 (begin van de regel) en 1 (einde van de regel) zijn.

Retouren

De puntcoördinaatwaarde in GeoJSON-indeling en van een dynamisch gegevenstype op regeltekenreeks op de specifieke breukwaarde. Als de waarde van de regel of breuk ongeldig is, produceert de query een null-resultaat.

Opmerking

  • De georuimtelijke coördinaten worden geïnterpreteerd als vertegenwoordigd door het WGS-84 coördinaatverwijzingssysteem.
  • De geodetische datum die wordt gebruikt om afstand op aarde te meten, is een bol. Lijnranden zijn geodesie op de bol.
  • Als de randen van de invoerlijn rechte cartesische lijnen zijn, kunt u overwegen geo_line_densify() te gebruiken om planaire randen te converteren naar geodetica.
  • De invoer mag niet meer dan één regeltekenreeks bevatten.
  • Gebruik geo_line_locate_point() om een breukwaarde te berekenen

LineString-definitie en -beperkingen

dynamic({"type": "LineString","coördinaten": [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]]})

  • LineString-coördinatenmatrix moet ten minste twee vermeldingen bevatten.
  • Coördinaten [lengtegraad, breedtegraad] moeten geldig zijn wanneer lengtegraad een reëel getal is in het bereik [-180, +180] en breedtegraad een reëel getal is in het bereik [-90, +90].
  • De lengte van de rand moet kleiner zijn dan 180 graden. De kortste rand tussen de twee hoekpunten wordt gekozen.

Voorbeelden

In het volgende voorbeeld wordt een punt op 25% locatie berekend sinds het begin van de regel.

let line = dynamic({"type":"LineString","coordinates":[[-73.95796, 40.80042], [-73.97317, 40.764486]]});
print point = geo_line_interpolate_point(line, 0.25);

Uitvoer

punt
{"type": "Punt", "coördinaten": [-73.961764043218281, 40.791436687257232]}

In het volgende voorbeeld wordt de puntlengte berekend op 90% sinds het begin van de regel.

let line = dynamic({"type":"LineString","coordinates":[[-73.95807266235352,40.800426144169315],[-73.94966125488281,40.79691751000055],[-73.97317886352539,40.764486356930334],[-73.98210525512695,40.76786669510221],[-73.96004676818848,40.7980870753293]]});
print point = geo_line_interpolate_point(line, 0.9)
| project lng = point.coordinates[0]

Uitvoer

resultaat
-73.96556545832799

In het volgende voorbeeld wordt een punt op een kaart gevisualiseerd.

let line = dynamic({"type":"LineString","coordinates":[[-73.95807266235352,40.800426144169315],[-73.94966125488281,40.79691751000055],[-73.97317886352539,40.764486356930334],[-73.98210525512695,40.76786669510221],[-73.96004676818848,40.7980870753293]]});
print point = geo_line_interpolate_point(line, 0.9)
| render scatterchart with (kind = map)

Schermopname van een geïnterpoleerd punt in het New York City Central Park.

Het volgende voorbeeld wordt geretourneerd true vanwege de ongeldige regel.

print is_bad_line = isnull(geo_line_interpolate_point(dynamic({"type":"LineString","coordinates":[[1, 1]]}), 0.5))

Uitvoer

is_bad_line
waar