Skip to main content

Hello - looking for anyone (consultant, presales, customers) who has experience/knowledge around the reality of GIS integration. Specifically, has anyone got experience/involvement in automatically creating and synchronising IFS Objects with GIS asset data, to minimise manual user input with large volumes of assets?


It would be great to understand the method that was used to achieve this and the level of effort that was involved.

@Mathias Dahl 

 


Hi Sean, thanks for posting here.

Before I give my view, let’s tag some people here, to hear their experiences:

@Frank Sveen - for the work done for Avinor

@Anders Jansson - for what is going on at Swedavia

@chobus - for the work done for Hecla Mining

@dadude - for what’s happening with GIS in Germany

@Matti Toppari - for the work done for VR Track

And of course @JEWIUK and @Sean Ingram himself 🙂 since you were involved in something similar with Portsmouth Water. Or did @IanBalfe and friends do all of the heavy GIS lifting there? :-p

I will add my ideas in another reply soon.

 


I think Johan has already outlined this but here is my view.

Here is how an IFS object is connected to a GIS (Esri/ArcGIS) object, in 3 simple steps:

1. A record is added in GisintConnections in IFS, where we save the LU name and keyref of the IFS object. If done using standard methods, the resulting record  gets a unique integer value in the IfsObjId attribute (if you want to insert the records yourself, directly to the table, you need to extract the next free sequence number from IFS_OBJ_ID_SEQ.NEXTVAL).

2. Create a GIS object, or get hold of it, via the REST service for the map layer.

3. Update the GIS object's IFSID (the name is configurable, but this is the default one) column/attribute/field with the value from the IfsObjId attribute in GisintConnections.

Done. The objects are now "connected."

More

Now, step 3 can be done in other ways as well. For example with tools that can directly access the ArcGIS geodatabase feature tables.

I would say that doing the one-time "migration job" initially is not very different from migrating other data from some old system a customer might have, into IFS, or migrating data from IFS to another system. Most probably a big bang migration would happen first. After that users can either link the objects manually or you could build an "integration" to do it, using standard tools in the industry. Possibly even IFS Connect can pull this off, depending on what exactly you need to do. The volume of data that will have to be added after the initial migration/sync is key here I guess.

Was this clear?
 


I think Johan has already outlined this but here is my view.

Here is how an IFS object is connected to a GIS (Esri/ArcGIS) object, in 3 simple steps:

1. A record is added in GisintConnections in IFS, where we save the LU name and keyref of the IFS object. If done using standard methods, the resulting record  gets a unique integer value in the IfsObjId attribute (if you want to insert the records yourself, directly to the table, you need to extract the next free sequence number from IFS_OBJ_ID_SEQ.NEXTVAL).

2. Create a GIS object, or get hold of it, via the REST service for the map layer.

3. Update the GIS object's IFSID (the name is configurable, but this is the default one) column/attribute/field with the value from the IfsObjId attribute in GisintConnections.

Done. The objects are now "connected."

More

Now, step 3 can be done in other ways as well. For example with tools that can directly access the ArcGIS geodatabase feature tables.

I would say that doing the one-time "migration job" initially is not very different from migrating other data from some old system a customer might have, into IFS, or migrating data from IFS to another system. Most probably a big bang migration would happen first. After that users can either link the objects manually or you could build an "integration" to do it, using standard tools in the industry. Possibly even IFS Connect can pull this off, depending on what exactly you need to do. The volume of data that will have to be added after the initial migration/sync is key here I guess.

Was this clear?
 

Dear all,

in the German project the customer created the objects and the data in IFS Cloud, whilst synchronicing the data into ArcGIS via migration and other own methods. Within IFS Cloud there are also jobs keeping the IFS Cloud data uptodate. To be honest, it was a lot of “is the job able to do it?” for the customer and you’ll need a strong data migration and data engineer to explain and create such jobs in IFS Cloud.

T&R


Dear All,

 

We( @Kushan Jayasinghe @Darshana Herath  ) recently completed an integration for one of our customers. but the browser is taking considerable time to load the map and data.

 

  1. What kind of actions or configurations can we take to avoid this behaviour(in IFS Cloud 22R2 SU6)?
  2. and The map is not automatically zooming to the selected layer.

 

Please Help 

  @Mathias Dahl @Anders Jansson@dadude@Frank Sveen@chobus@Matti Toppari@jlunse

 

Thank you


What layer types are used, how many layers has been added to the map, where are they hosted and how many objects do they contain in Esri? Also, if you try with only one layer, does it load slower in IFS than directly from the map server? Do you use private layers and how is the proxy setup? Having the proxy load the data can affect performance.


Thank you for asking these questions and excited to see your comment @Mathias Dahl 😍

1) What layer types are used? Editable and Base map

2) How many layers has been added to the map? Only 2 layers (Base map and editable)

3) Where are they hosted and how many objects do they contain in Esri? Hosted under our Organization and we have been tested starting from 20 objects to single object in Esri

4) If you try with only one layer, does it load slower in IFS than directly from the map server? We tried that scenario as well. It load super fast when it comes to map server (Esri) but when we try to select that particular point layer via IFS GIS map window, it just show in the base map with tiny dots as per the below image.
 

5) Do you use private layers and how is the proxy setup? 

All layers are public and no restrictions in proxy setup according to my knowledge. 

Thanks in advance,
Kushan


If the layers are public, is it possible for you to share the URL to some of them here, plus the layer mapping configuration and proxy config?


https://services5.arcgis.com/GyodoRrmMqiuhjOu/ArcGIS/rest/services/Sohar_Water_Network/FeatureServer

http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer

 

==============================================================================
Proxy Config

 

<?xml version="1.0" encoding="utf-8" ?>
<ProxyConfig allowedReferers="*"
             logFile="proxy_log.log"
             mustMatch="true">
  <serverUrls>


    <!-- For basemaps on ArcGIS Online to work -->
      
<serverUrl url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"
               matchAll="true"/>
  
    <serverUrl url="https://services.arcgisonline.com/ArcGIS/rest/services"
               matchAll="true"/>

    <serverUrl url="http://services.arcgisonline.com/ArcGIS/rest/services"
               matchAll="true"/>

    <serverUrl url="https://server.arcgisonline.com/ArcGIS/rest/services"
               matchAll="true"/>

    <serverUrl url="http://server.arcgisonline.com/ArcGIS/rest/services"
               matchAll="true"/>

    <!-- The following URL is useful to have when the user opens a
         secure layer and where the proxy has no user name and
         password for it. In that scenario, the user will be prompted
         for username and password in the map, and that will in turn
         be passed to the proxy which will generate a token using the
         URL below. Similarly, if using an internal ArcGIS server with
         secure layers, the URL to that token generator must be added
         in this file as well. Modify the INTERNALSERVER example below. -->

    <!-- Allow generating tokens on ArcGIS Online. See explanation above. -->

    <serverUrl url="https://www.arcgis.com/sharing/generateToken"
               matchAll="true"/>

    <!-- To allow a certain service with the name MYCLOSEDSERVICEID on ArcGIS Online 
         The username and password are used to generate a short-lived token used to 
         login the user automatically. -->

    <serverUrl url="https://services.arcgis.com/MYCLOSEDSERVICEID/ArcGIS/rest/services"
               matchAll="true"
               username="myusername"
               password="mypassword"/>

    <!-- To allow generating tokens on an internal server. See explanation above. -->

    <serverUrl url="http://INTERNALSERVER:6080/arcgis/tokens/generateToken"
               matchAll="true"/>

    <!-- To allow a certain service with the name SERVICENAME on an internal server
         The username and password are used to generate a short-lived token used to 
         login the user automatically. -->

    <serverUrl url="https://INTERNALSERVER:6080/ArcGIS/rest/services/SERVICENAME"
               matchAll="true"
               username="myusername"
               password="mypassword"/>


  </serverUrls>
</ProxyConfig>
<!-- See https://github.com/Esri/resource-proxy for more information -->

 


Did you mean to use Layer ID = 0 on all layers? For the Basemap layer it doesn't even make sense I think.

Also, I don't see the whole URL in the fields on GIS Layer Mapping so I cannot say if something is wrong there.


Reply