Create and Share Smart M.Apps in M.App Enterprise
Create and Share Smart M.Apps in M.App Enterprise
Create and Share Smart M.Apps in M.App Enterprise
About Us ..............................................................................................................................................69
This manual contains step-by-step instructions on how to perform certain processes. You should be
aware that each exercise provides a single path through the application's tools. In most cases, there are
various ways to maximize tool usage, depending on the individual project.
This exercise manual is provided to the student, along with all images used by the instructor. Copies of
the presentation slides are available upon request. This provides the capability for recreating the
processes performed in class at a later date, as well as the key points on any theory involved.
Exercise Conventions
Section Title Page States the objective of the exercises and lists the application
tools to be used within the various tasks.
Exercise Tasks Each exercise is split into a set of tasks. After the course,
these tasks will help you locate within the manual where you
performed a certain set of steps.
Questions The instructor may quiz and/or review with you, following each
exercise.
Notational Conventions
Bold Text Any text that is bold indicates buttons, tabs, group names,
dialogs, and field names that are visible in the workspace
Monospace Text Any text that is monospace indicates a file name, text entered
by you, or code such as HTML, XML, JavaScript.
Graphics To help you locate buttons and objects used in the exercises,
the button icons will be next to the button name in the text.
Diagrams Optional diagrams can show you how to use some of the
application's tools.
This is a tip, describing a different way you can enter information into the
software or giving relevant information about the software.
1
Section 1: Adding Content to the
Studio
Section Objective
In this section Imagery as well as vector data will be added, which can be used in different apps.
Tools Used
M.App Enterprise Studio
The Studio represents the administrative part of M.App Enterprise. All content, apps and user/role
management is done there.
2
Exercise 1: Adding Imagery
1. Click Content
2. Be sure that Imagery is active
3. Click New
4. Define a Name. Use Shaded_Relief as meaningful name.
5. Type C:\Warehouses\Imagery\New York\shaded_relief.ecw as a path.
If you are pointing to a folder, a virtual mosaic is created. Please note that it
is only useful if all imageries are spatially correlated with each other.
Every client knows which format is the best fitting to its purpose. Rich client
uses ECWP if available. Browser only takes WMTS and WMS in
consideration.
Click Save.
3
Exercise 2: Adding vector data
5. Click Save.
4
Exercise 2: Adding vector data
8. Click Import
5
Section 2: Create styles for vector
data
Section Objective
In this section you are going to style some of the previously imported vector data
Tools Used
M.App Enterprise Studio
The Studio represents the administrative part of M.App Enterprise. All content, apps and user/role
management is done there.
6
Exercise 1: Creating styles
1. Click Stylesets.
2. Click New.
3. Type in a meaningful name e.g. HxGNStyles.
4. Click on the save icon.
5. Click the pencil icon to edit the styleset.
6. Click on the icon of Boroughs to add a new style.
7. Select Polygon at Add symbolizer.
7
Exercise 1: Creating styles
8
Section 3: User and Role
Management
Section Objective
In this section you are going to create one user with a role to enable him to start various apps.
Tools Used
M.App Enterprise Studio
The Studio represents the administrative part of M.App Enterprise. All content, apps and user/role
management is done there.
9
Exercise 1: Creating a role and a user
In this exercise a role is created which is assigned to different apps. This role is then assigned to a user,
so that the user can start the corresponding apps.
1. Click Security.
2. Click Roles.
3. Click New.
4. Type in a Name e.g. New York.
5. Click Save.
1. Click Users
2. Click New
3. Type in a Username e.g. NY_Editor
4. Type in a valid email address.
5. Check the box New York in the Roles section.
6. Click Save.
If you click Save in the background a email is sent to the address you typed
in at Step 4.
10
Section 4: Creating a Desktop App
Section Objective
In this section you are going to create your first Desktop App in M.App Enterprise
Tools Used
M.App Enterprise Studio
The Studio represents the administrative part of M.App Enterprise. All content, apps and user/role
management is done there.
11
Exercise 1: Creating a Desktop Legend
1. Click Desktop.
2. Be sure that Legends is active.
3. Click New.
12
Exercise 1: Creating a Desktop Legend
Check the boxes in front, if you want to drag and drop more than one
element from the list on the left side to the legend layout.
11. Change the order within the Theme Boroughs by checking the Boroughs_Label dataset and
clicking on the layer one up button.
12. Rename Boroughs_Label to Boroughs (Label) by clicking on the name in the layout window.
13. Rename Shaded_Relief to Shaded Relief.
14. Final result should look like the following screenshot.
13
Exercise 2: Creating an Overview
1. Click Overviews.
2. Click New.
3. Type in a meaningful name e.g. NY_Overview.
4. Drag and drop Boroughs from the left side to the overview layout.
5. Click Save.
14
Exercise 3: Creating a Desktop App
1. Click M.Apps.
2. Click New.
3. Assign the Legend from Exercise 1.
4. Assign the Overview from Exercise 2.
5. Assign the Styleset from Section 2 – Exercise 1.
6. Assign the Role from Section 3 – Exercise 1.
7. Type in a Name e.g. New York.
8. Type in an EPSG Code. For this example it is 2831.
9. Click Save.
If you leave the Bounding box input fields blank, the app automatically
calculates a bounding box based on your layers in the legend.
15
Exercise 4: Starting a Desktop App
1. Browse https://servername/Apps/?tenant=TenantName
2. Login with credentials from Section 3 – Exercise 2
Please check if Java is installed on the client machine in order to start the
Desktop Apps
16
Exercise 5: Tweaking the Desktop App with Queries
1. Click Content.
2. Click Vector Data.
3. Click New.
4. Select the existing connection in the drop down list Connections.
5. Switch to the last page.
6. Check tax_lots.
7. Type in a Name e.g. Tax_Lots.
8. Set the Max scale to 2500.
9. Check Caching.
10. Click Import.
1. Click Desktop.
2. Click Queries.
3. Click New.
4. Type in a Name e.g. Information about Tax Lots
5. Set Query & Display Dataset to Tax_Lots by clicking the pencil
6. Type in SQL Query the following query:
select ID, Borough, Address, OwnerName, ST_Area(geometry) as Area,
NumBldgs as "Number of Buildings", NumFloors as "Number of Floors",
YearBuilt from tax_lots where ID in ({ENTITY.IDFILTER})
17
Exercise 5: Tweaking the Desktop App with Queries
8. Click Save.
1. Click Desktop.
2. Click Legends.
3. Click on the pencil icon to edit the existing legend.
4. Click Add Theme.
5. Type in a name for the Theme e.g. Tax Lots
6. Drag and drop Tax_Lots from the left side into the theme.
18
Exercise 5: Tweaking the Desktop App with Queries
1. Click Desktop.
2. Click M.Apps.
3. Click on the first icon to publish the vector data.
1. Start the Desktop App or Reload if the Rich client is still open
2. Zoom in so that the Tax Lots will be visible.
3. Set layer Tax Lots active.
19
Exercise 6: Tweaking the Desktop App with Workflows
7. Click Content.
8. Click Vector Data.
9. Click New.
10. Select the existing connection in the drop down list Connections.
11. Check buildingextension.
12. Type in a Name e.g. BuildingExtension.
13. Click Import.
1. Click Desktop.
2. Click Legends.
3. Click on the pencil icon to edit the existing legend.
4. Click Add Theme.
5. Type in a name for the Theme e.g. Building Extensions
6. Drag and drop BuildingExtension from the left side into the theme.
7. Rename BuildingExtension to Building Extensions.
8. Put the theme to the top.
9. Click Save.
20
Exercise 6: Tweaking the Desktop App with Workflows
1. Click Content.
2. Click Workflows.
3. Click New.
a. Name BuildingExtensionWF
b. Select existing Connection in the dropdown list Connection
c. Click Save
4. Edit workflow definition by clicking on workflow editor tool
5. Drag&Drop a node, type list
a. ID of the new node BuildingExtensionsOverview
6. Edit List definition clicking on the node and then on the pencil button
a. Name BuildingExtensionList
b. Table buildingextension
c. ID Field id
7. Drag&drop columns and set following properties for each of them
a. Name id, Datatype number, Hidden checked
b. Name applicationnumber, Datatype number
c. Name firstname, Datatype string
d. Name lastname, Datatype string
21
Exercise 6: Tweaking the Desktop App with Workflows
22
Exercise 6: Tweaking the Desktop App with Workflows
15. Click on BuildingExtensionWF on the top bar (first node on the left)
16. Click on BuildingExtensionsOverview list node and make sure that BuildingExtensionList is selected
in the property List.
17. Click on EditBuildingExtension form node and make sure that EditBuildingExtensionForm is selected
in the property Form.
18. Click Save on the top bar to save the workflow.
1. Click Desktop.
2. Click Action Set.
3. Click New.
23
Exercise 6: Tweaking the Desktop App with Workflows
a. Name BuildingTools
4. Click on add action group (+) to Top context
a. Name BuildingGroup
5. Click on add workflow (+) to BuildingGroup
a. Name BuildingList
b. Workflow BuildingExtensionWF
c. Node BuildingExtensionsOverview
d. Width 800
e. Height 600
f. Blocking unchecked
6. Click Save.
24
Exercise 6: Tweaking the Desktop App with Workflows
1. Click Desktop.
2. Click M.Apps.
3. Click Edit.
4. Click Action Set.
a. Check BuildingTools
b. Click Apply
5. Click Save
1. Start the Desktop App or Reload if the Rich client is still open
2. Click on the button in the top bar.
3. Click on one row to have a look at the details form
25
Exercise 7: Improving the Workflow
function zoomTo(layername,featureids){
SC.Map.setActiveLayer(layername).then(function(){
return SC.Map.clearSelectedElements().then(function(){
return SC.Map.setSelectedElements(featureids).then(function(){
return SC.Map.fitSelectedElements().then(function(){
return SC.Map.closeWebBrowser();
});
});
});
}).fail(function (error) {
alert(error);
});
}
26
Exercise 7: Improving the Workflow
6. Click on Save.
7. Click on Lists in the top bar.
8. Click on edit for the BuildingList
9. Select the script BuildingScript in the combobox for the property Custom Scritps of
BuildingExtensionList
10. Drag&Drop a RowAction in the ListConfiguration
a. Name Zoom
b. Image ig-icon-search
c. Action click on edit
i. Add the following to Javascript tab
zoomTo('BuildingExtension',[{ROW.id}])
ii. Click OK
11. Click Save on the top bar to save the workflow
12. Test the function in the Desktop App.
27
Exercise 7: Improving the Workflow
Select nextval('buildingextension_seq')
b. Defaultvalue Mode onsave
6. Select applicationnumber textbox in the form and make sure no DefaultValue is set.
7. Drag&Drop an Action widget in the form context
a. Name Submit
b. Action click on the Edit button and put the following in the Javascript tab
c. Click on OK
8. Click on BuildingExtensionWF on the top bar (first node on the left)
9. Drag&Drop a Form node in the BuildingExtensionsOverview context
a. ID of the new node NewBuildingExtension
10. Click on the new node and set the following properties
a. Form select NewBuildingExtensionForm from the combobox
28
Exercise 7: Improving the Workflow
IG.navigate('NewBuildingExtension')
13. Click on BuildingExtensionWF on the top bar (first node on the left)
14. Click on NewBuildingExtension form node and make sure that NewBuildingExtensionForm is selected
in the property Form.
15. Make sure that BuildingExtensionsOverview is selected in the property Follow Node.
29
Section 5: Creating Browser Apps
Section Objective
In this section you are going to create your first Browser Apps in M.App Enterprise
Tools Used
M.App Enterprise Studio
The Studio represents the administrative part of M.App Enterprise. All content, apps and user/role
management is done there.
30
Exercise 1: Establishing the base for the Browser Apps
1. Click Content.
2. Click Vector Data.
3. Click New.
4. Select the existing connection in the drop down list Connections.
5. Check potholes.
6. Type in a Name e.g. Potholes.
7. Check Caching.
8. Click Import.
9. Define some Tooltips.
10. Define a Style for Potholes.
1. Click Content.
2. Click Vector Sets.
3. Click New.
4. Specify TaxLots_VS as Name.
5. Specify 3857 as EPSG.
31
Exercise 1: Establishing the base for the Browser Apps
1. Click Content.
2. Click Vector Sets.
3. Click New.
4. Drag and drop Datasets Potholes and Borough into the center panel.
You may need to import Borough as Vector Data again with Caching active.
Only cached Vector Data can be used in VectorSets.
7. Click Save.
8. Publish the VectorSet
32
Exercise 1: Establishing the base for the Browser Apps
3. Click Save.
⚫ 35000
⚫ 350300
33
Exercise 1: Establishing the base for the Browser Apps
⚫ 92000
8. Click Save.
9. Click the pencil icon in the list to edit the map view.
10. Click Transform.
11. Type in 3857 in the EPSG modal form.
12. Click OK.
13. Click Save.
14. Publish the MapView
34
Exercise 2: Creating a Multi Viewer App
1. Click M.Apps.
2. Click New.
3. Assign the Role from Section 3 – Exercise 1.
4. Type in a Name e.g. New York (Browser).
5. Click Save.
1. Click M.Apps.
2. Click the first icon to start the M.App Studio Editor
3. Define a layout in the first tab e.g. Choose a two sided window.
4. Drag and drop a Map into the Layout Window.
5. Select the Map View you have defined in Section 5 – Exercise 1 – Task 4
6. Click OK
35
Exercise 2: Creating a Multi Viewer App
7. Click Save.
1. Browse https://servername/Apps/?tenant=TenantName
2. Login with the credentials from Section 3 – Exercise 2
3. Click New York (Browser).
36
Exercise 3: Creating an Analyzer App
1. Click Browser.
2. Click Analyzer Views.
3. Click New.
4. Type in a Name e.g. Potholes
5. Click Save.
6. Click the second icon to open up Feature Analyzer.
37
Exercise 3: Creating an Analyzer App
38
Exercise 3: Creating an Analyzer App
5. Click OK.
6. Click Save.
39
Exercise 4: Creating a M.App to run a Spatial Model
We will use a model that creates a color shaded relief file, using a raster elevation model as input. A
description and the definition of the model can be found at this tutorial on the community (you must
download the json definition from that page in order to follow this exercise). The input DEM is already
provided for you on the server.
1. Click Browser
2. Be sure that Legends is active
3. Click New
a. Name: GeoprocessingLegend
b. Drag&drop OpenStreetMap to the legend
4. Click Save
1. Click Browser
2. Click Map Views
3. Click New
a. Name: GeoprocessingMapView
b. EPSG: 3857
c. Lower Corner: 1066860 6812018
d. Upper corner: 1098378 6848289
e. Legend: GeoprocessingLegend
4. Click Save
40
Exercise 4: Creating a M.App to run a Spatial Model
1. Click Browser
2. Click M.Apps
3. Click New
a. Name: GeoprocessingApp
b. Role: New York
4. Click Save
5. Edit app using Open in Editor tool
6. Click on the first button in the top left corner (Layout)
7. Drag&Drop a 2 vertical panels layout into the app editor main window
8. Adjust the left panel to be smaller (reduce width)
9. Click on the second button in the top left corner (Panel Templates)
10. Drag&Drop a Map Panel template into the right panel in the app editor main window
11. Select the MapView GeoprocessingMapView
41
Exercise 4: Creating a M.App to run a Spatial Model
12. Drag&Drop a Recipe template into the left panel in the app editor main window
13. Select Create New tool, Spatial Workshop application will be loaded
14. Click on the Import button and choose the shadedrelief.json file you have downloaded from the
community tutorial
42
Exercise 4: Creating a M.App to run a Spatial Model
15. Click on the Save button and close Spatial Workshop application
16. In M.App Editor click Cancel and click again on the Recipe panel to get back to the updated list of
recipes
17. Select Color Shaded Relief and click on Next
18. For Port Input 4 click Choose file … and select ROOT -> ShadedRelief ->
ASTGTM2_N40W075_dem.tif
43
Exercise 4: Creating a M.App to run a Spatial Model
19. For Port Input 6 select ROOT -> ShadedRelief -> Output
20. Click on OK
21. Click on the third button of the top left corner (Customize)
22. Click on the JS button of the Recipe panel
23. In the left menu, from Code Examples, select Recipe panel customization legend from
09.MAppEnterprise section, drag&drop it in the source code opened before
44
Exercise 4: Creating a M.App to run a Spatial Model
45
Exercise 4: Creating a M.App to run a Spatial Model
46
Exercise 4: Creating a M.App to run a Spatial Model
5. Click on Execute
6. At the end of the process you will see the output directly on the map content
47
Exercise 4: Creating a M.App to run a Spatial Model
- Basic Change Detection (this tutorial includes important information regarding the Geoprocessing
architecture and setup)
The dataset have been already uploaded to the server for convenience, you just have to download the
Recipe definition from the tutorials.
48
Section 5a: Analyzer Customization
Section Objective
In this section you will learn Feature Analyzer customization
Tools Used
M.App Enterprise Studio / Feature Analyzer
The Studio represents the administrative part of M.App Enterprise. All content, including Feature Analyzer
view management is done there.
49
Exercise 1: Importing an external library as a tooltip
1. Click Browser
2. Click Analyzer Views
3. Click New. Call the view “Custom Tooltips”. Press Enter
4. Click the Analyzer Icon beside “Custom Tooltips”
50
Exercise 1: Importing an external library as a tooltip
if (rowId === 0) {
var fieldPing = function (fieldName) {
var ping = currentRecord[fieldName];
}
fieldPing("murder_and_manslaughter");
fieldPing("rape");
fieldPing("robbery");
fieldPing("felony_assault");
fieldPing("burglary");
fieldPing("grand_larceny");
var configuration = {
configuration: {
size: {
canvasWidth:"300",
canvasHeight:"400"
},
prefix: "StaticChart-" + Math.floor(Math.random() * 100000)
},
action: action
};
TooltipController.RegisterCustomAction(name, configuration);
51
Exercise 1: Importing an external library as a tooltip
5. Click Apply.
52
Exercise 2: Using multiple Datasets
2. Wait for the console to read undefined. This lets us know that the dataset has been successfully
loaded.
53
Exercise 2: Using multiple Datasets
1. Next, let’s create a theme. Paste the following line into the console and press enter:
var theme = Analyzer.createThemeWidget(stage, "boroname");
2. Next, we need to add the theme chart to Analyzer. Copy and paste the following line and press enter:
Analyzer.addWidget(theme);
3. You’ll see the theme chart immediately added to Analyzer. However the contents read empty. This is
because Analyzer optimizes data transfer from M.App Enterprise. In the Configuration menu, click
Apply. This will force a reload which loads the missing fields.
4. You notice that the theme chart now has data populated within it.
3. You can give the feature layer a name. E.g. featureLayer.title = "Boroughs"
4. Finally, in the console:
Analyzer.addWidget(featureLayer);
5. You’ll notice that the feature layer is now immediately available in the map window
If you click one of the items on the pie chart, you’ll notice that the point feature do not filter. In some
cases, we’ll want to link two stages together. This means that if a filter is applied to one dataset, the other
dataset will update. To do this we’ll need to once again use the API.
1. Since the key fields don’t match, we need to create a functional attribute to fix this. Click the
Functional Attributes tab of the configuration window
54
Exercise 2: Using multiple Datasets
6. Click Apply in the configuration menu as this will load the needed fields to make the link.
7. Click the Borough Name in the Pie Chart. You will notice that the point dataset now filters from your
area feature filter.
55
Section 6: Creating a Mobile App
Section Objective
In this section you are going to create your first Mobile App in M.App Enterprise
Tools Used
M.App Enterprise Studio
8. The Studio represents the administrative part of M.App Enterprise. All content, apps and user/role
management is done there. In addition to Studio you will have to use a text editor of your preference.
56
Exercise 1: Creating a mobile M.App
1. Click Mobile
2. Be sure Shell is active
3. Click New
a. Name Basic
b. Select Basic.zip on your computer as Shell
4. Click Save
1. Click Mobile
2. Click Datasources
3. Click New
a. Name MobileSamples
b. EPSG 4326
c. Select existing Connection in the dropdown list Connection
4. Click Save
57
Exercise 1: Creating a mobile M.App
Task 3: Create a Mobile app which connects shell and data source
1. Click Mobile
2. Click Mapps
3. Click New
a. Name Basic
b. Title Basic
c. Assign the Shell from Task 1
d. Assign the data source from Task 2
e. Assign a Role
4. Click Save
58
Exercise 2: Starting a mobile M.App
1. Browse https://servername/Apps/?tenant=TenantName
2. Login with credentials from Section 6 - Excercise 1
3. If you click on the app you will see a QR code which we need to connect the M.App Enterprise
mobile app to your tenant.
NOTE: you only need to do this once per tenant as you can choose
between all assigned apps in the app
59
Exercise 2: Starting a mobile M.App
1. On your Smartphone: Download the M.App Enterprise app from the app store depending on
your platform:
a. Android
b. iOS
c. Windows 10
1. After you installed and launched the app, you can connect to your tenant by clicking on the ‘+’-
button:
60
Exercise 2: Starting a mobile M.App
If you scan the QR code the connection details should be filled in automatically:
NOTE: You need a valid SSL certificate or enable HTTP requests in IIS on
your M.App Enterprise Application-Server!
61
Exercise 2: Starting a mobile M.App
NOTE: You will see an empty location list where you can add new
locations and view existing ones.
62
Exercise 3: Tweaking your mobile M.App
63
Exercise 3: Tweaking your mobile M.App
1. NativeMap.xaml -→
a. Add to NativeMap.ShellActions:
<NavigateSelectionAction Type="Secondary" />
<ToggleLayerAction Type="Secondary" />
<CaptureDistanceAction Type="Secondary" />
<CurrentLocationAction Type="Secondary" />
<AutoCenterMapAction Type="Secondary" />
b. Add to MarkerVectorLayer:
<FeatureInfo Title="Name: @{name}" Detail="Comments:
@{description}">
<NavigateShellAction Icon="Edit" Target="LocationForm">
<Parameter Name="Id" Value="@{id}" />
</NavigateShellAction>
<NavigateSelectionAction />
</FeatureInfo>
2. Upload the modified Basic.zip (all files)
3. Test App
1. Shell.xaml →
a. add to Entities:
<Entity Id="Image" Table="images" Key="id" SyncType="Automatic"
RevisionField="lastupdatetime">
<Field Name="id" Type="Guid" IsRequired="True"/>
<Field Name="imagetype" Type="String"/>
<Field Name="entity_id" Type="Guid" ForeignEntity="Locations"/>
<Field Name="description" Type="String"/>
<Field Name="image" Type="Binary" LazyLoading="True"/>
<Field Name="image_thumb" Type="Binary"
LazyLoading="False"/>
<Field Name="image_size" Type="Number"/>
<Field Name="image_mimetype" Type="String"/>
<Field Name="lastupdatetime" Type="Timestamp"/>
</Entity>
b. Add to MasterDetail.Views:
<Navigation Id="LocationImageNavigation">
<Form Id="LocationImageForm" Title="Images"
View="LocationImageForm" Entity="{x:Reference Image}"/>
</Navigation>
64
Exercise 3: Tweaking your mobile M.App
1. Shell.xaml →
a. add Entity Id="LocationType":
<Entity Id="LocationType" Key="id" SyncType="Automatic"
Table="loc_type">
<Field IsRequired="True" Name="id" Type="Guid" />
<Field Name="type" Type="String"/>
</Entity>
b. Add to Entity Id="Locations":
<Field Name="type" Type="String" />
2. LocationForm.xaml → add to Form:
<Picker Name="type" Title="Location Type" KeyMember="id"
DisplayMember="type" Items="{Entity LocationType}"/>
3. Upload the modified Basic.zip (all files)
4. Test App (you must wipe local data while connecting because data model has changed)
65
Exercise 3: Tweaking your mobile M.App
1. Shell.xaml →
a. add Entity.Filters to Entity Id="Locations" to handle sql query:
<Entity.Filters>
<Filter Id="LocationsOpen" Sql="status = 'Open'" IsDefault="False"
/>
<Filter Id="LocationsToApprove" Sql="status = 'Awaiting Approval'"
IsDefault="False" />
</Entity.Filters>
66
Exercise 3: Tweaking your mobile M.App
2. Menu.xaml →
a. Add Menuitem to show the new Navigation:
<MenuItem Target="LocationToApproveNavigation" Title="Locations To
Approve" Icon="Work" />
3. Upload the modified Basic.zip (all files)
4. Test App
1. LocationForm.xaml →
a. Disable camera action if location has not been saved yet
Add to <NavigateFieldAction Icon="Camera" Target="LocationImageForm">:
<NavigateFieldAction.BeforeScript>
var id = Context.getValue('id');
if (!id) {
Context.message('Location must be saved before start capturing
pictures');
Context.cancel();
}
</NavigateFieldAction.BeforeScript>
67
Exercise 3: Tweaking your mobile M.App
68
About Us
Hexagon Geospatial helps you make sense of the dynamically changing world. We enable you to
envision, experience and communicate geographic information. Our technology provides you the form to
design, develop and deliver solutions that solve complex, real-world challenges. Ultimately, this is
realized through our creative software products and platforms.
CUSTOMERS. Globally, a wide variety of organizations rely on our products daily including local, state
and national mapping agencies, transportation departments, defense organizations, engineering and
utility companies, and businesses serving agriculture and natural resource needs. Our portfolio enables
these organizations to holistically understand change and make clear, reliable decisions.
TECHNOLOGY. Our priority is to deliver products, platforms and solutions that make our customers
successful. Hexagon Geospatial is focused on developing technology that displays and interprets
information in a personalized, meaningful way. We enable you to transform location-based content into
dynamic and useable business information that creatively conveys the answers you need.
TEAM. As an employer, we recognize that the success of our business is the result of our highly
motivated and collaborative staff. At Hexagon Geospatial, we celebrate a diverse set of people and
talents, and we respect people for who they are and the wealth of knowledge they bring to the table. We
retain talent by fostering individual development and ensuring frequent opportunities to learn and grow.
HEXAGON. Hexagon’s solutions integrate sensors, software, domain knowledge and customer workflows
into intelligent information ecosystems that deliver actionable information. They are used in a broad range
of vital industries.
Hexagon (Nasdaq Stockholm: HEXA B) has approximately 17,000 employees in 46 countries and net
sales of approximately 3.3bn USD. Learn more at hexagon.com and follow us @HexagonAB.
69
Copyright and Terms of Use
Copyright
© 2017 Hexagon AB and/or its subsidiaries and affiliates. All rights reserved. Hexagon has registered
trademarks in many countries throughout the world. Visit the Trademarks Page for information about the
countries in which the trademarks are registered. See Product Page and Acknowledgments for more
information.
The foregoing authorization specifically excludes content or material bearing a copyright notice or
attribution of rights of a third party. Except as expressly provided above, nothing contained herein shall be
construed as conferring by implication, estoppel or otherwise any license or right under any copyright,
patent or trademark of Hexagon Geospatial or Intergraph or any third party.
If you breach any of these Terms, your authorization to use this Document automatically terminates.
Upon termination, you will immediately destroy any downloaded or printed Materials in your possession or
control.
Disclaimers
ALL MATERIALS SUPPLIED HEREUNDER ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-
INFRINGEMENT. Hexagon Geospatial does not warrant that the content of this Document will be error-
free, that defects will be corrected, or that any Hexagon Geospatial Website or the services that make
Materials available are free of viruses or other harmful components.
Hexagon Geospatial does not warrant the accuracy and completeness of this Document. Hexagon
Geospatial may make changes to this Document at any time without notice.
70
Limitation Of Liability
IN NO EVENT SHALL HEXAGON GEOSPATIAL BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES, OR DAMAGES FOR LOSS OF PROFITS,
REVENUE, DATA OR USE, INCURRED BY YOU OR ANY THIRD PARTY, WHETHER IN AN ACTION
IN CONTRACT OR TORT, ARISING FROM YOUR ACCESS TO, OR USE OF, THIS DOCUMENT.
Indemnification
You agree to defend, indemnify, and hold harmless Hexagon Geospatial, its officers, directors,
employees, and agents from and against any and all claims, liabilities, damages, losses or expense,
including reasonable attorneys' fees and costs, arising out of or in any way connected with your access to
or use of this Document.
Use Of Software
Use of software described in this Document is subject to the terms of the end user license agreement that
accompanies the software, if any. You may not download or install any software that is accompanied by
or includes an end user license agreement unless you have read and accepted the terms of such license
agreement. Any such software is the copyrighted work of Hexagon Geospatial, Intergraph or its licensors.
Portions of the user interface copyright 2012-2017 Telerik AD.
Third party websites are owned and operated by independent parties over which Hexagon Geospatial has
no control. Hexagon Geospatial shall not have any liability resulting from your use of the third party
website. Any link you make to or from the third party website will be at your own risk and any information
you share with the third party website will be subject to the terms of the third party website, including
those relating to confidentiality, data privacy, and security.
Trademarks
The trademarks, logos and service marks ("Marks") displayed in this Document are the property of
Hexagon Geospatial, Intergraph or other third parties. Users are not permitted to use Marks without the
prior written consent of Hexagon Geospatial, Intergraph or the third party that owns the Mark. "Intergraph"
is a registered trademark of Intergraph Corporation in the United States and in other countries. Other
brands and product names are trademarks of their respective owners.
71
US Government Restricted Right
Materials are provided with "RESTRICTED RIGHTS." Use, duplication, or disclosure of Materials by the
U.S. Government is subject to restrictions as set forth in FAR 52.227-14 and DFARS 252.227-7013 et
seq. or successor provisions thereto. Use of Materials by the Government constitutes acknowledgment of
Hexagon Geospatial or Intergraph’s proprietary rights therein.
International Use
You may not use or export Materials in violation of U.S. export laws and regulations. Hexagon Geospatial
makes no representation that Materials are appropriate or available for use in every country, and access
to them from territories where their content is illegal is prohibited.
Hexagon Geospatial provides access to Hexagon Geospatial international data and, therefore, may
contain references or cross references to Hexagon Geospatial products, programs and services that are
not announced in your country. These references do not imply that Hexagon Geospatial intends to
announce such products, programs or services in your country.
The Materials are subject to U.S. export control and economic sanctions laws and regulations and you
agree to comply strictly with all such laws and regulations. In addition, you represent and warrant that you
are not a national of, or otherwise located within, a country subject to U.S. economic sanctions (including
without limitation Iran, Syria, Sudan, Cuba, and North Korea) and that you are not otherwise prohibited
from receiving or accessing the Materials under U.S. export control and economic sanctions laws and
regulations. Hexagon Geospatial makes no representation that the Materials are appropriate or available
for use in every country, and access to them from territories where their content is illegal is prohibited. All
rights to use the Materials are granted on condition that such rights are forfeited if you fail to comply with
the terms of this agreement.
Revisions
Hexagon Geospatial reserves the right to revise these Terms at any time. You are responsible for
regularly reviewing these Terms. Your continued use of this Document after the effective date of such
changes constitutes your acceptance of and agreement to such changes.
Applicable Law
This Document is created and controlled by Hexagon Geospatial in the State of Alabama. As such, the
laws of the State of Alabama will govern these Terms, without giving effect to any principles of conflicts of
law. You hereby irrevocably and unconditionally consent to submit to the exclusive jurisdiction of the
United States District Court for the Northern District of Alabama, Northeastern Division, or the Circuit
Court for Madison County, Alabama for any litigation arising out of or relating to use of this Document
(and agree not to commence any litigation relating thereto except in such courts), waive any objection to
the laying of venue of any such litigation in such Courts and agree not to plead or claim in any such
Courts that such litigation brought therein has been brought in an inconvenient forum. Some jurisdictions
do not allow the exclusions or limitations set forth in these Terms. Such exclusions or limitations shall
apply in all jurisdictions to the maximum extent allowed by applicable law.
Questions
Contact us with any questions regarding these Terms.
72