Sdílet prostřednictvím


geo_line_simplify()

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Zjednodušuje čáru nebo víceřádkové nahrazením téměř rovných řetězců krátkých hran jedním dlouhým okrajem na Zemi.

Syntaxe

geo_line_simplify(tolerance lineString, )

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Popis
lineString dynamic ✔️ A LineString nebo MultiLineString ve formátu GeoJSON.
tolerance int, long nebo real Definuje minimální vzdálenost v metrech mezi libovolnými dvěma vrcholy. Podporované hodnoty jsou v rozsahu [0, ~7 800 000 metrů]. Pokud není zadáno, použije se výchozí hodnota 10 .

Návraty

Zjednodušená čára nebo víceřádkový formát GeoJSON a dynamického datového typu bez dvou vrcholů s vzdáleností menší než tolerance. Pokud je řádek nebo tolerance neplatná, dotaz vytvoří výsledek null.

Poznámka:

  • Geoprostorové souřadnice jsou interpretovány jako reprezentované referenčním systémem souřadnic WGS-84 .
  • Geodetické datum použité k měření vzdálenosti na Zemi je sféra. Hrany čar jsou geodesics na kouli.
  • Pokud jsou hrany vstupní čáry rovné kartézské čáry, zvažte použití geo_line_densify() k převodu planárních hran na geodesické čáry.
  • Pokud je vstup víceřádkový a obsahuje více než jeden řádek, výsledkem bude zjednodušení sjednocení čar.
  • Vysoká tolerance může způsobit, že malá čára zmizí.

Definice a omezení řetězce řádků

dynamic({"type": "LineString";"souřadnice": [[lng_1;lat_1], [lng_2;lat_2], ...; [lng_N;lat_N]]})

dynamic({"type": "MultiLineString";"souřadnice": [[line_1; line_2; ..., line_N]})

  • Matice souřadnic linestringu musí obsahovat alespoň dvě položky.
  • Souřadnice [zeměpisná délka, zeměpisná šířka] musí být platné, pokud je zeměpisná délka skutečným číslem v rozsahu [-180, +180] a zeměpisná šířka je reálné číslo v rozsahu [-90, +90].
  • Délka okraje musí být menší než 180 stupňů. Vybere se nejkratší hrana mezi dvěma vrcholy.

Příklady

Následující příklad zjednodušuje čáru odebráním vrcholů, které jsou mezi sebou ve vzdálenosti 10 metrů.

let line = dynamic({"type":"LineString","coordinates":[[-73.97033169865608,40.789063020152824],[-73.97039607167244,40.78897975920816],[-73.9704617857933,40.78888837512432],[-73.97052884101868,40.7887949601531],[-73.9706052839756,40.788698498903564],[-73.97065222263336,40.78862640672032],[-73.97072866559029,40.78852791445617],[-73.97079303860664,40.788434498977836]]});
print simplified = geo_line_simplify(line, 10)

Výstup

zjednodušený
{"type": "LineString", "coordinates": [-73.97033169865608, 40.789063020152824], [-73.9707930386064, 40.78843449877836]]}

Následující příklad zjednodušuje čáry a kombinuje výsledky do kolekce geometrie GeoJSON.

NY_Manhattan_Roads
| project road = features.geometry
| project road_simplified = geo_line_simplify(road, 100)
| summarize roads_lst = make_list(road_simplified)
| project geojson = bag_pack("type", "Feature","geometry", bag_pack("type", "GeometryCollection", "geometries", roads_lst), "properties", bag_pack("name", "roads"))

Výstup

geojson
{"type": "Feature", "geometry": {"type": "GeometryCollection", "geometrie": [ ... ]}, "properties": {"name": "road"}}

Následující příklad zjednodušuje řádky a sjednocuje výsledek.

NY_Manhattan_Roads
| project road = features.geometry
| project road_simplified = geo_line_simplify(road, 100)
| summarize roads_lst = make_list(road_simplified)
| project roads = geo_union_lines_array(roads_lst)

Výstup

cesty
{"type": "MultiLineString", "coordinates": [ ... ]}

Následující příklad vrátí hodnotu True z důvodu neplatného řádku.

print is_invalid_line = isnull(geo_line_simplify(dynamic({"type":"LineString","coordinates":[[1, 1]]})))

Výstup

is_invalid_line
True

Následující příklad vrátí hodnotu True z důvodu neplatné tolerance.

print is_invalid_line = isnull(geo_line_simplify(dynamic({"type":"LineString","coordinates":[[1, 1],[2,2]]}), -1))

Výstup

is_invalid_line
True

Následující příklad vrátí hodnotu True, protože vysoká tolerance způsobí, že malá čára zmizí.

print is_invalid_line = isnull(geo_line_simplify(dynamic({"type":"LineString","coordinates":[[1.1, 1.1],[1.2,1.2]]}), 100000))

Výstup

is_invalid_line
Pravda