Author: caha

Dynamic Runtime Condition Variables

When using Carmenta Engine, there are times in which you want to be more specific about your visualization. Perhaps your visualization is only suitable for certain type of observers, at certain zoom levels or at certain times of the day. These are what we refer to as dynamical runtime condition variables. They exist as a set of UpdateAttributes inside the View class. There is a set of predefined variables but it’s also possible to add custom variables.

Working with Carmenta Server Core and Microsoft Azure App Service

Carmenta Server Core is the containerized version of Carmenta Server, using OS-level virtualization and Docker to enable fast application development and deployment to any type of environment – desktop, cloud or in-house data centers.

In this article we will describe how one could work with Carmenta Server Core locally to develop a set of OGC compliant map services and deploy the resulting container on the Microsoft Azure App Service PaaS platform. We will touch upon topics such as:

– Why containerize applications using Docker

– Development with Carmenta Server Core

– Azure App Service

– Deploying Carmenta Server Core to Azure App Service

Carmenta Engine API in PowerShell

PowerShell provides a lot of built-in functionality, but it is also possible to load dll files directly and gain additional functionality. In this article we will have a look at how it is possible to use the Carmenta Engine API directly in PowerShell to automate tasks such as creating configurations for Carmenta Engine.

Screen coordinates and CRS coordinates

When working with geospatial applications, a common operation is to convert coordinates between screen pixel coordinates and geographical coordinates. This can be useful in various cases, such as displaying the geographical coordinate for the mouse cursor position, working with custom tools for user interaction, editing feature geometries from code, and more.

Creating and registering a custom dataset for detailed information

Custom objects are a flexible plugin mechanism in Carmenta Engine for integrating customized operations in a regular map configuration. More functionality is added in new Carmenta Engine versions to make this integration more seamless compared to the built-in objects. In this guide, we will focus on the custom dataset use case, for retrieving a customized DataSetInfo, and dynamically instantiating the dataset based on a file on disk.

Carmenta Engine as a geodata processor

In Carmenta Engine we define data flows by linking operators together. An operator reads features from its input, processes or manipulates those features and pass the result to the next operator. In the typical case, operators are added and configured in a configuration file and calls are managed by the map view without direct user interaction with the operators.

But in some cases a more custom approach is necessary and the application need to access the processed features directly in code. For example, the application may want to display information produced by the operators or an external component (or service) may want to use the result as input. In this article, we will explain how to approach such use-case.

Geographical Coordinates in a Carmenta Engine workflow

Geographical data and map views are defined in a Coordinate Reference Systems (CRS). There are many different coordinate systems, which can be used for different purposes. It is for example very common to use a Mercator coordinate projection for visualization of worldwide data on a map. In contrast, Mercator is not recommended for calculations or data storage, because of risk for lack of precision, especially near the poles.

An application often needs to handle geodata in different CRSs or visualize it in another CRS than the CRS of the data source. This means that the data needs to be reprojected at some point. These projections can both affect performance and cause a loss of accuracy if they are not performed efficiently.

Carmenta Engine has in-depth support for efficient coordinate transformations. In this article, we will describe how geographical coordinates are generally handled in the Carmenta Engine workflow, as well as go into some more advanced use cases and best practices.

Dynamic Visibility Analyses

Analyzing visibility within a geographical area is often key for a better understanding of the environment. Line-of-sight coverage analyses are often applied to highly dynamic objects with varied characteristics, such as a set of sweeping security cameras in an urban environment, a soldier with a pair of binoculars, or radar systems and other sensors. This guide will help you configure the visibility operators in Carmenta Engine to tackle your specific use cases and handle dynamic application data.

For an introduction on the different visibility analyses available, you can read the Visibility Analysis article in the Carmenta Engine SDK documentation. For this guide, we will use the LineOfSightOperator in a 2D view to get an easy example, but keep in mind that the behavior of the other visibility operators is the same. There are some additional data inputs that will need configuring, and the results you get are different, but the core concepts of dynamic visibility analysis are the ones presented in the following sections.

Getting started with the tactical symbology in Carmenta Engine

Through its tactical extension, Carmenta Engine provides support for visualization and editing of tactical symbols and graphics according to widely used military standards. Currently, the supported standards are MIL-STD-2525 versions B, C and D, as well as NATO App-6 versions B, C and D.

Using a few well-chosen feature attributes, it becomes easy to visualize objects from an already existing dataset as a tactical overlay on a background map. Carmenta Engine’s standard tools have full support for dynamically creating and modifying tactical features directly on the map.

In this article, we will cover the basic layer chain which can be used to display a tactical overlay, as well as how to control the symbol modifiers from Feature attributes.