Select to view content in your preferred language

Dynamic Parameters for S-63 charts in Runtime SDK for Qt (QML)

1486
8
11-10-2019 11:42 PM
TiakiRice
Emerging Contributor

Hello,

My setup currently is:

  • ArcGIS Enterprise server with the Maritime Chart Service enabled
  • S-63 charts properly licenced and set up with a permit
  • Qt QML project being developed on a machine co-located with the chart server

I can load the charts just fine using an ArcGISMapImageLayer pointing at the "http://..../MapServer/exts/MaritimeChartService/MapServer" url of my chart server.

My question is: how do i set the Dynamic Parameters of the S-63 charts; specifically the Colour Scheme. I see there is an ENCLayer with mariner options which i don't think I can use with S-63 charts as they must be hosted on a chart server. From what I can gather I need to pass in display_params somehow to the export requests being made to the server. I'm just not sure where i would add these parameters.

Current code below (practically sample code at this point):

ApplicationWindow {
    id: appWindow
    width: 800
    height: 600
    title: "Project"

    MapView {
        anchors.fill: parent
        focus: true

        Map {
            Basemap {
                ArcGISMapImageLayer {
                    url: "http://127.0.0.1:6080/arcgis/rest/services/TiledMap/MapServer/exts/MaritimeChartService/MapServer"

                }
            }
        }
    }
}‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Cheers, Tiaki

0 Kudos
8 Replies
JamesBallard1
Esri Regular Contributor

Hi Tiaki Rice‌,

   I initially responded incorrectly. Let me do some research on this and get back to you.

0 Kudos
JamesBallard1
Esri Regular Contributor

Unfortunately I don't think there is any way to do this. You'd need to add custom query parameters on the rest requests on there is no way to do that.

I will check with my colleagues to be sure.

0 Kudos
TiakiRice
Emerging Contributor

That would be quite disappointing if that is the case. It is strange that this isn't possible as having a look at the WMS Layer class, it provides a "customParameters" field which allows exactly that.

Why is this same functionality not available for the ArcGISMapImageLayer class?

0 Kudos
JamesBallard1
Esri Regular Contributor

Tiaki Rice‌,

  Thanks for your patience. I've checked with some colleagues and we are considering a new feature in an upcoming release that will accommodate setting custom query parameters per-layer. It's being considered for a post-100.7 release, but I cannot make any guarantees about when it will be available.

We do hear your concerns and hope to get this implemented.

0 Kudos
JamesBallard1
Esri Regular Contributor

Tiaki Rice‌,

   I found out some more information. It turns out you can publish MCS as a WMS service. The endpoint would be

http://..../MapServer/exts/MaritimeChartService/WMSServer 

If you're able to access the WMS service endpoint, you should be able to consume the layer as a WmsLayer

WmsLayer QML Type | ArcGIS for Developers 

With that, you can use the customParameters as you pointed out before.

WmsLayer QML Type | ArcGIS for Developers 

Please let us know if that works for you.

Regards,

-James

0 Kudos
TiakiRice
Emerging Contributor

James,

Thanks for the information! This does get me a little closer although I will say the amount of configuration for a WMS server utilised in this way is pretty woeful.

The specific parameters that i'm trying to configure are the DisplayParameters such as requesting a different "ColorScheme" value. I am aware that these can be changed via the S52DisplayProperties.xml but i need to be able to change these parameters during runtime.

The following JSON reported by "http://127.0.0.1:6080/arcgis/rest/services/service/MapServer/exts/MaritimeChartService/MapServer/par..." shows the parameters which don't appear in the WMS server. 

{
 "DisplayParameters": {
  "ECDISParameters": {
   "version": "10.7.1",
   "DynamicParameters": {
    "Parameter": [
     {
      "name": "AreaSymbolizationType",
      "value": 2
     },
     {
      "name": "AttDesc",
      "value": 1
     },
     {
      "name": "ColorScheme",
      "value": 0
     },
     ...
     ...
     ...
    ]
   }
  }
 }
}

Regards, Tiaki

0 Kudos
TiakiRice
Emerging Contributor

James Ballard,

I'm revisiting this issue which I could not manage to resolve at the time with a potential alternate solution.

I'm trying to load S-63 charts using an EncLayer via an EncExchangeSet. All is well until it tries to load the cells at which point I receive the following error: "Cell load error: Cell Permit not found. Load the permit file provided by the data supplier."

Are S-63 charts supported by EncLayer in 100.7.0? If so, how do i load my permit using the EncExchangeSet class? If not, what options do I have to load S-63 charts in ArcGIS Qt runtime SDK 100.7.0 and be able to modify the display properties (i.e. colour scheme) during runtime?

Regards, Tiaki Rice

0 Kudos
JamesBallard1
Esri Regular Contributor

Hi Tiaki Rice‌,

  No, unfortunately S-63 datasets are not supported with the Qt SDK at this time.

0 Kudos