2

我正在寻找一种从 ENC 层获取所有功能列表的方法,同时查看我遇到的编码示例

在这个示例代码中,我们有 MapView.IdentifyLayersAsync 和 MapView.IdentifyLayerAsync 方法,这两个方法分别返回 Task> 和 Task ,然后我们可以从 GeoElements 中获取特征,但这两种方法都需要 Point 作为输入参数,我们怎么能没有呢提供这一点,即获得 ENC 层的所有功能,是否可以在 MapView 中切换它们的可见性(特别是在 java 100.7.0 中)?提前致谢

4

2 回答 2

1

使用 identifyLayerAsync() 无法从 ENC 层获取所有功能。identifyLayerAsync() 用于通过鼠标单击识别可见特征。 https://developers.arcgis.com/java/latest/api-reference/reference/com/esri/arcgisruntime/mapping/view/GeoView.html#identifyLayersAsync(javafx.geometry.Point2D,double,boolean,int)

你的用例是什么?您是要获取当前视图中的所有 ENC 功能还是获取 ENC 文件中的所有功能?你看过 GDAL ogr2ogr 实用程序吗?它可以将 S57(ENC) 导出为其他矢量格式。

于 2020-02-03T20:12:32.467 回答
1

我一直在使用相同版本的 Java 运行时 SDK v100.7.0 并遇到了同样的问题。在“设置 ENC 环境设置”下的显示电子导航图表 - ArcGIS Runtime SDK for Java中查看他们的文档后,提到:

ENC 图层按照 IHO S-52 标准显示。您可以使用静态EncEnvironmentSettings类定义 ENC 图层的显示属性。这些设置适用于所有地图中的所有 ENC 图层。设置分为三类:水手设置、文本组可见性设置和查看组设置。文本组设置控制要素标签的显示,水手设置控制 ENC 要素的符号化和表示,查看组设置允许快速将设置应用于要素类型的逻辑组。例子:

    // Enables display of seabed information for all ENC layers
EncEnvironmentSettings.getDisplaySettings().getTextGroupVisibilitySettings().setIsNatureOfSeabed(true);

因此,要更改每个特征类型的可见性,您可以调用特定类别EncEnvironmentSettings.getDisplaySettings(),然后使用布尔值设置该类别下特定特征的可见性。

这个 ArcGIS 类文档将帮助EncEnvironmentSettings.DisplaySettings 类

于 2020-08-11T11:17:10.480 回答