Sdílet prostřednictvím


geo_line_simplify()

Zjednodušuje čáru nebo víceřádku nahrazením téměř rovných řetězců krátkých hran jednou dlouhou hranou na Zemi.

Syntax

geo_line_simplify(Linestring,Tolerance)

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

Parametry

Název Typ Vyžadováno Popis
Linestring dynamic ✔️ 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án, použije se výchozí hodnota 10 .

Návraty

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

Poznámka

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

Definice a omezení linestringu

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

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

  • Pole souřadnic LineString musí obsahovat alespoň dvě položky.
  • Souřadnice [zeměpisná délka, zeměpisná šířka] musí být platné, kde zeměpisná délka je reálné číslo v rozsahu [-180; +180] a zeměpisná šířka je reálné číslo v rozsahu [-90, +90].
  • Délka hrany musí být menší než 180 stupňů. Zvolí se nejkratší hrana mezi těmito dvěma vrcholy.

Příklady

Následující příklad zjednodušuje čáru odebráním vrcholů, které jsou od sebe vzdáleny 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.97079303860664, 40.78843498977836]]}

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", "geometries": [ ... ]}, "properties": {"name": "roads"}}

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

Silnice
{"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
Ano

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
Ano

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

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
Ano