圆形处理器
编辑圆形处理器编辑
将形状的圆形定义转换为近似它们的规则多边形。
表 6. 圆形处理器选项
名称 | 必需 | 默认值 | 描述 |
---|---|---|---|
|
是 |
- |
要解释为圆形的字段。可以是 WKT 格式的字符串或 GeoJSON 的映射。 |
|
否 |
|
要将多边形形状分配到的字段,默认情况下 |
|
否 |
|
如果 |
|
是 |
- |
结果内接距离(从中心到边)与圆半径之间的差值(对于 |
|
是 |
- |
处理圆形时要使用的字段映射类型: |
|
否 |
- |
处理器的描述。用于描述处理器的目的或其配置。 |
|
否 |
- |
有条件地执行处理器。请参阅 有条件地运行处理器。 |
|
否 |
|
忽略处理器的错误。请参阅 处理管道错误。 |
|
否 |
- |
处理处理器的错误。请参阅 处理管道错误。 |
|
否 |
- |
处理器的标识符。用于调试和指标。 |
response = client.indices.create( index: 'circles', body: { mappings: { properties: { circle: { type: 'geo_shape' } } } } ) puts response response = client.ingest.put_pipeline( id: 'polygonize_circles', body: { description: 'translate circle to polygon', processors: [ { circle: { field: 'circle', error_distance: 28, shape_type: 'geo_shape' } } ] } ) puts response
PUT circles { "mappings": { "properties": { "circle": { "type": "geo_shape" } } } } PUT _ingest/pipeline/polygonize_circles { "description": "translate circle to polygon", "processors": [ { "circle": { "field": "circle", "error_distance": 28.0, "shape_type": "geo_shape" } } ] }
使用上面的管道,我们可以尝试将文档索引到 circles
索引中。圆形可以表示为 WKT 圆形或 GeoJSON 圆形。结果多边形将使用与输入圆形相同的格式表示和索引。WKT 将被转换为 WKT 多边形,GeoJSON 圆形将被转换为 GeoJSON 多边形。
包含极点的圆形不受支持。
示例:在 Well Known Text 中定义的圆形编辑
在本例中,以 WKT 格式定义的圆形被索引
response = client.index( index: 'circles', id: 1, pipeline: 'polygonize_circles', body: { circle: 'CIRCLE (30 10 40)' } ) puts response response = client.get( index: 'circles', id: 1 ) puts response
PUT circles/_doc/1?pipeline=polygonize_circles { "circle": "CIRCLE (30 10 40)" } GET circles/_doc/1
来自上述索引请求的响应
{ "found": true, "_index": "circles", "_id": "1", "_version": 1, "_seq_no": 22, "_primary_term": 1, "_source": { "circle": "POLYGON ((30.000365257263184 10.0, 30.000111397193788 10.00034284530941, 29.999706043744222 10.000213571721195, 29.999706043744222 9.999786428278805, 30.000111397193788 9.99965715469059, 30.000365257263184 10.0))" } }
示例:在 GeoJSON 中定义的圆形编辑
在本例中,以 GeoJSON 格式定义的圆形被索引
response = client.index( index: 'circles', id: 2, pipeline: 'polygonize_circles', body: { circle: { type: 'circle', radius: '40m', coordinates: [ 30, 10 ] } } ) puts response response = client.get( index: 'circles', id: 2 ) puts response
PUT circles/_doc/2?pipeline=polygonize_circles { "circle": { "type": "circle", "radius": "40m", "coordinates": [30, 10] } } GET circles/_doc/2
来自上述索引请求的响应
{ "found": true, "_index": "circles", "_id": "2", "_version": 1, "_seq_no": 22, "_primary_term": 1, "_source": { "circle": { "coordinates": [ [ [30.000365257263184, 10.0], [30.000111397193788, 10.00034284530941], [29.999706043744222, 10.000213571721195], [29.999706043744222, 9.999786428278805], [30.000111397193788, 9.99965715469059], [30.000365257263184, 10.0] ] ], "type": "Polygon" } } }
关于精度的说明编辑
表示圆形的多边形的精度定义为 error_distance
。此差值越小,多边形越接近完美的圆形。
下表旨在帮助了解圆形半径如何影响给定不同输入后多边形的边数。
边的最小数量是 4
,最大数量是 1000
。