geo_line_simplify()
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 |