geo_line_simplify()
Область применения: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Упрощает линию или многострочный путем замены почти прямых цепей коротких ребер одним длинным краем на Земле.
Синтаксис
geo_line_simplify(
Отказоустойчивость lineString,
)
Дополнительные сведения о соглашениях синтаксиса.
Параметры
Имя (название) | Type | Обязательно | Описание |
---|---|---|---|
lineString | dynamic |
✔️ | LineString или MultiLineString в формате GeoJSON. |
tolerance | int, long или real | Определяет минимальное расстояние в метрах между двумя вершинами. Поддерживаемые значения находятся в диапазоне [0, ~7800 000 метров]. Если не задано, по умолчанию используется значение 10 . |
Возвраты
Упрощенная линия или многострочная линия в формате GeoJSON и динамического типа данных без двух вершин с расстоянием меньше допустимости. Если строка или допустимость недопустимая, запрос создаст результат NULL.
Примечание.
- Геопространственные координаты интерпретируются как представленные эталонной системой координат WGS-84 .
- Геостатический datum , используемый для измерения расстояния на Земле является сферой. Границы линии — геодесик на сфере.
- Если границы линии ввода являются прямыми декартовыми линиями, рассмотрите возможность использования geo_line_densify() для преобразования планарных ребер в геодесетики.
- Если входные данные являются многострочные и содержат несколько строк, результатом будет упрощено объединение строк.
- Высокая допустимость может привести к исчезновению небольшой линии.
Определение и ограничения LineString
dynamic({"type": "LineString","координаты": [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]]})
dynamic({"type": "MultiLineString","координаты": [[line_1, line_2, ..., line_N]})
- Массив координат LineString должен содержать не менее двух записей.
- Координаты [долгота, широта] должны быть допустимыми, где долгота является реальным числом в диапазоне [-180, +180] и широта является реальным числом в диапазоне [-90, +90].
- Длина края должна быть меньше 180 градусов. Будет выбран самый короткий край между двумя вершинами.
Примеры
В следующем примере линия упрощается путем удаления вершин, которые находятся в пределах 10-метрового расстояния друг от друга.
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)
Выходные данные
simplified |
---|
{"type": "LineString", "координаты": [[-73.9703169865608, 40.789063063020152824], [-73.970793030664, 40.78844498977836]} |
В следующем примере упрощают линии и объединяются результаты в коллекцию геометрии 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"))
Выходные данные
geojson |
---|
{"type": "Feature", "geometry": {"type": "GeometryCollection", "geometries": [ ... ]}, "properties": {"name": "roads"}} |
В следующем примере упрощены строки и унифицированы результаты
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)
Выходные данные
Дороги |
---|
{"type": "MultiLineString", "координаты": [ ... ]} |
В следующем примере возвращается значение True из-за недопустимой строки.
print is_invalid_line = isnull(geo_line_simplify(dynamic({"type":"LineString","coordinates":[[1, 1]]})))
Выходные данные
is_invalid_line |
---|
Истина |
В следующем примере возвращается значение True из-за недопустимого допуска.
print is_invalid_line = isnull(geo_line_simplify(dynamic({"type":"LineString","coordinates":[[1, 1],[2,2]]}), -1))
Выходные данные
is_invalid_line |
---|
Истина |
В следующем примере возвращается значение True, так как высокая терпимость приводит к исчезновению небольшой строки.
print is_invalid_line = isnull(geo_line_simplify(dynamic({"type":"LineString","coordinates":[[1.1, 1.1],[1.2,1.2]]}), 100000))
Выходные данные
is_invalid_line |
---|
Истина |