3DNL ArcGIS Web Service

The Cyclomedia ArcGIS Web Service 3DNL, built on Esri's SLPK (Scene Layer Package) and I3S (Indexed 3D Scene Layer) standards, provides a high-fidelity, large-scale 3D representation of urban environments. Seamlessly integrated into the Esri ArcGIS Pro and ArcGIS Online ecosystems, this service allows users to visualize, analyze, and interact with accurate 3D models of cities, infrastructure, and landscapes.

Picture

Obtain credentials

Before you can start using the Recording Locations Service, you need to have credentials. If you do not have them yet, please use this form to request access.

Request your credentials
Picture

Read the documentation

Everything you need to know about the use of our Recording Locations Service can be found below in the Service Documentation.

Read the service documentation
Picture

View our examples

To help you getting started, we have created a set of code examples for you. You can use them as a basis for your own service requests.

Explore the code examples

Service Documentation

The 3D mesh is created from Cyclomedia's extensive aerial imagery and LiDAR data, delivering rich, photorealistic visualizations that support various GIS processes such as urban planning, asset management, and spatial analysis. The use of the SLPK and I3S formats ensures optimized streaming and efficient rendering of large datasets, even when handling complex cityscapes.

The ArcGIS Web Service 3DNL I3S service is an ArcGIS service which can be accessed through this URL: https://atlasapi.cyclomedia.com/i3s/arcgis/rest/services/3dnl/SceneServer

This service an be used in ArcGIS Pro, ArcGIS Online and integrated with the ArcGIS JavaScript API

ArcGIS Pro

1. Open a new project in ArcGIS Pro.

2. Create a local Scene.

3. Go to Map navigation bar and choose ‘Add Data’ > ‘From Path’ or directly choose ‘Add Data From Path’.

4. Add the 3DNL layer (https://atlasapi.cyclomedia.com/i3s/arcgis/rest/services/3dnl/SceneServer) to the Path input field.

5. Choose ‘Add’.

6. There will be a prompt to login. Add your Cyclomedia username and password.

7. Complete steps.

ArcGIS Online

1. Open ArcGIS Online

2. Check with your organization admin if the Cyclomedia 3DNL ArcGIS Web Service URL is added as a trusted server. For more information, refer to Configure security settings—ArcGIS Online Help | Documentation

3. Create a WebScene.

4. Use the '+' icon to create a Local Scene.

5. Add a new layer and choose for ArcGIS web service.

6. Fill the 3DNL Layer URL (https://atlasapi.cyclomedia.com/i3s/arcgis/rest/services/3dnl/SceneServer) in the Layer URL box.

7. Fill the prompt for adding username and password.

8. 3DNL is now successfully added to your Scene.

Best practices for 3DNL in ArcGIS Online

1. Add local elevation layer

With the Living Atlas, an elevation layer can be added in the RD New coordinate system. It can be found in the Living Atlas under the name "Elevation 3D (RD)". This layer is based on AHN3 and AHN4 and corresponds to the coordinate system of 3DNL. Height layers can be used as a surface that provides base heights for other layers in scenes.

When adding, the pop-up 'Data mismatch will appear, click on ‘Drop’ so that the projection of the scene is switched to RD New.

To learn more about Applying Elevation in a 3D Scene, read Esri's Storymap (in Dutch).

2. Set the visibility range

In the layer properties, which can be found for every layer in the Layer Manager, it is possible to set the visibility range of the 3DNL layer.

It is advised to set a minimum Visibility range, for example of 1:15,000 – max. This makes sure that 3DNL is only loaded when the scene is sufficiently zoomed in.

3. Make use of a base layer

By adding a base layer the user has the possibility to go to the correct location in the scene. A suggestion to use as a base layer is the ‘Topo RD voor 3D’ which can be found in the Living Atlas.

The visibility range of both layers can also be combined, when 3DNL is visible starting at 1:15,000, the Topo layer can be visible up to 1:15,000. For this the Visibility range has to be set ‘min – 1:15,000’.

4. Mesh modification

Mesh modifications can be used to clip, mask or replace the 3DNL mesh. The modifications can be found in the layer properties in the Layer Manager.

The Mask modification can be used to show a certain part of the 3DNL mesh. The areas outside of the area will not be shown, which improves the performance of the 3DNL layer.

The Clip modification gives the possibility to exclude a certain part of the mesh. This can be used to make other layers visible which would otherwise overlap the 3DNL mesh.

Lastly the Replace modification can be used to adjust the height of the mesh inside the polygon. This can for example be used to flatten the mesh to ground level.

More information about mesh modifications can be found here.

ArcGIS JavaScript API

See below code examples to start using the service with ArcGIS JavaScript API


<html lang="en"> 
<head> 
<meta charset="utf-8" /> 
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
<title>Cyclomedia ArcGIS JavaScript API Example</title> 
<link rel="stylesheet" href="https://js.arcgis.com/4.29/esri/themes/light/main.css" /> 
<script src="https://js.arcgis.com/4.29/"></script> 
<style> 
  html, body, #viewDiv { padding: 0; margin: 0; height: 100%; width: 100%; } 
  #menu { padding: 1em; } 
</style> 
<script> 
  require([ 
    "esri/WebScene", 
    "esri/views/SceneView", 
    "esri/layers/IntegratedMeshLayer", 
    "esri/config", 
    "esri/request" ], 
    (WebScene, SceneView, IntegratedMeshLayer, esriConfig, esriRequest) => { 
      const webscene = new WebScene(); 
      
      const params = new URLSearchParams(window.location.search); 
      var t = params.get("t") 
      
      const baseUrl = 'https://atlasapi.cyclomedia.com/i3s/arcgis/rest/services/3dnl/SceneServer'; 
  
   esriConfig.request.interceptors.push({ 
    urls: new RegExp(baseUrl, "i"), // Match your server URL 
    before: function(params) { 
      // Add authorization header 
      params.requestOptions.headers = params.requestOptions.headers || {}; 
      params.requestOptions.headers.Authorization = 'Basic <Base64-encoded Cyclomedia's username and password, separated by a colon>'; 
     } 
  }); 
  fetch(baseUrl, { 
    method: 'GET', 
    headers: { 
      'Content-Type': 'application/json', 
      'Authorization': 'Basic ' 
      } 
    } 
  ) .then((response) => { return response.json(); })
    .then((json) => { 
      var count = 0; 
      json.layers.forEach((layer) => { 
        const l = new IntegratedMeshLayer({ 
          url: '${baseUrl}/layers/${count++}', 
          copyright: "Cyclomedia", 
          title: layer.name 
        }); 
        webscene.add(l); 
      }); 
    }); 
    const view = new SceneView({ 
      container: "viewDiv", 
      map: webscene, 
      qualityProfile: "high", 
      zoom: 1 
    }); 
  }); 
</script> 
</head> 
<body> <div id="viewDiv"> </div> 
</body> 
</html>
    

FAQ

  • ArcGIS Pro version support

    • Version 3.3 and above

  • I have added the I3S service to ArcGIS Online, but run into trouble.

  • ArcGIS JavaScript API support

    • Version 4.29 and above