Dynamic map creation - layering technology that helps us keep your workers safe
At SaferMe, we believe in maps as a way of communicating.
Traditional maps are one-way. You have to search to find what you want.
SaferMe technology allows you to design maps to communicate the right information to your users, at exactly the time that they need it – especially information about things that can hurt people.
We do this by allowing you to leverage a huge range of hazard data, to provide your users with the information they need to stay safe.
SaferMe apps use a standardised map “layer language” so that users can easily interface with other data sources, around the world.
In our New Zealand operation, we are fortunate that the government is focused on making many types of data public.
Because of this, we are now accessing LINZ (Land Information New Zealand) imagery to add an extra layer of information to our maps to benefit our NZ clients. The LINZ maps add details and higher zoom levels for users, helping people figure out what’s dangerous nearby, faster.
Slide the below visual to see the contrast between an aerial image in a part of NZ where the map has been obscured by weather, and the same location when a LINZ aerial image has been overlaid.
Use your mouse to slide the red line:
function TwoFace(t,e,i){if(!(this instanceof TwoFace))return new TwoFace(t,e,i);var a=document.createElement("canvas"),n=document.getElementById(t),s=.5;this.ctx=a.getContext("2d"),this.images=[],a.addEventListener("mousemove",d,!1),a.addEventListener("mousedown",d,!1),a.addEventListener("mouseup",d,!1);var r=this;function d(t){t.layerX||0==t.layerX?(t._x=t.layerX,t._y=t.layerY):(t.offsetX||0==t.offsetX)&&(t._x=t.offsetX,t._y=t.offsetY);var e=r[t.type];"function"==typeof e&&e.call(r,t)}a.setAttribute("width",e),a.setAttribute("height",i),n.appendChild(a),Object.defineProperty(this,"ready",{get:function(){return this.images.length>=2}}),Object.defineProperty(this,"width",{get:function(){return e}}),Object.defineProperty(this,"height",{get:function(){return i}}),Object.defineProperty(this,"divide",{get:function(){return s},set:function(t){t>1&&(t/=100),s=t,this.draw()}})}function createImage(t,e){var i=document.createElement("img");return i.src=t,"function"==typeof e&&i.addEventListener("load",e),i}TwoFace.prototype={add:function(t){var e=createImage(t,function(t){this.images.push(e),this.ready&&this.draw()}.bind(this))},draw:function(){if(this.ready){var t=this.images.length-1,e=this.images[t-1],i=this.images[t];this.drawImages(this.ctx,e,i),this.drawHandle(this.ctx)}},drawImages:function(t,e,i){var a=this.divide*this.width;t.drawImage(i,0,0),t.drawImage(e,0,0,a,this.height,0,0,a,this.height)},drawHandle:function(t){var e=this.divide*this.width;t.fillStyle="rgb(220, 50, 50)",t.fillRect(e-1,0,2,this.height)},mousedown:function(t){var e=t._x/this.width;this.divide=e,this.dragstart=!0},mousemove:function(t){if(!0===this.dragstart){var e=t._x/this.width;this.divide=e}},mouseup:function(t){var e=t._x/this.width;this.divide=e,this.dragstart=!1}};var twoface=TwoFace("twoface-demo",528,554);twoface.add("https://s3.amazonaws.com/tm-public-dropbox/linz-before-after/before.png"),twoface.add("https://s3.amazonaws.com/tm-public-dropbox/linz-before-after/after.png");
Let’s get technical:
How do we do what we do?
Our mobile and web solutions can pull geographic, satellite, point and shape data in real time and display this to the user in an intuitive and interactive way.
We do this by providing a schema for each client app, that specifies which map layers need to be visible, and where these layers should be sourced. We can work with our clients to pull in data from a wide range of sources, and then display it in a user-friendly way.
The schema is composed of a collection of TileJSON layers, which are merged and processed by the client application in real time. Using this standard, we can composite imagery using a variety of data types from virtually any data source.
The TileJSON specification can also allow us to control which layers are visible at various zoom levels.
Adding in our own dynamically generated point and shape data, alerting, and customised report forms, we can generate beautiful maps that reach out to you, protecting you from dangerous locations and real-world hazards.
As a technology team, we see our value in taking traditional GIS capability and making it widely available, not just to experts, but to people working in the field who need it to stay safe.
It’s not just pins on a map anymore!
Chris Noldus
Head of Development
1 December 2019 · SaferMe Team