Visar inlägg med etikett GIS. Visa alla inlägg
Visar inlägg med etikett GIS. Visa alla inlägg

onsdag 21 juni 2017

Pogo Rent 3000

Background

The aim of the article is to give and idea how to build robust GIS applications build on .Net and Bing Maps.
Pogo Rent 3000 is a fictional company that hires pogo sticks round the world. As a consultant, I am asked to help implement GIS functionality to their web site and to where ever it gives value. Through a couple of posts I will show how to address this in a pragmatic way. For start the company wants to show a basic map with great Pogo parks in northern Sweden.
The aim of this article is to describe the implementation of Pogo Rent 3000. The idea of this project is to provide a solid implementation of a GIS project based on Bing Maps. The techniques and framework used are well known and provide a robust foundation for GIS applications.
I strongly recommend using standard formats for communication with GIS backend is really importance and cannot be stated enough. The application also showing an example of an endpoint that simulates a Web Feature Service (WFS from OGC, see http://www.opengeospatial.org/standards/wfs) or included in the code as a GeoServiceController. OGC formats and protocol gives flexibility and maintainability.

Application structure

The application is structured the simplest way possible and providing a robust platform to extend the system later on. I build a classic 3-tier application.

UI Tier

On top there is Bing Maps V8, it is one of the best map client out there as today. It provides a straight forward, documented API. More over a set of spatial function like measuring and a set of modules. A module is functionality you can extend the web client with. For example, with GeoJSON, (http://geojson.org) support. The small script that is needed is, for convenience, written in TypeScript. GeoJSON is an OGC standard since 2016. This means we can add in other datasets from other sources without worrying about the format as long as it is GeoJSON.
With the GeoJSON module it is super easy to parse the JSON from the server.
let primitives = Microsoft.Maps.GeoJson.read(geoJSONtext) as Array;

Service Tier

As service tier I have a Asp.NET Web API. This tier is boosted with Net Topology Suit (NTS, https://github.com/NetTopologySuite/NetTopologySuite) which provide a rich set of GIS operations. NTS is great for adding spatial functions to the application. It also provides GeoJSON support. With this in place we have the possibility to serve OGC formats.

Data Tier

In this example we use a single text file as data source. The source is a GeoJSON file. I could of course easily just accessed GeoJSON file directly through a GET request from the client but for demo purpose I actually read and parse the file with NTS. The data tier also have an interface. The idea with the interface is that it should be easy to add other data sources, for example SQL Server.
Reading GeoJSON with NTS is really simple, here is a snippet from the application:
var reader = new NetTopologySuite.IO.GeoJsonReader();
var features = reader.Read<FeatureCollection>(data);
     
Data is the GeoJSON. It will parse the json into an object which we can spatial filter, manipulate compare or do other operations.

Wrap up

With the techniques and framework in place, it is pretty straight forward to implement. The implementation is as simple as possible and it provides possibility to extend the PogoRent3000 system. To summarize, building a GIS application is not different than building any 3-tier application.

A demo application is online here.

And the code is here 

A special thanks to SoulSolutions.










fredag 13 februari 2015

Open SMIL

Open SMIL is an effort of combining GIS and SharePoint. I build SMIL over 5 years ago. The company I working for using SMIL in various projects and industries. That implies the platform is flexible and customisable. And maybe the most important thing, it addresses change. The users always want another button, more information, authorisation (in my experience rarely used but often asked for of some reason, maybe it is a culture thing?)

However, GIS has a reputation being expensive and complicated. SharePoint provides a highly customisable platform and Bing Maps is a platform with great features covering world wide data. Combining these platforms platform providing a light GIS have been the target of the OpenSMIL project.

OpenSMIL has i mobile map client connected to a SharePoint site, with geo enabled SharePoint lists represented as GIS layers. The mobile client runs in a browser in a SharePoint context. With this tool the user can collect data. The data is stored into a SharePoint list so it is available immediately in SharePoint.

Inside SharePoint there is a WebPart showing the layers (SharePoint lists with geographical information). SharePoint list items are plotted on the map and are clickable.
   

SharePoint lists have two maps, one preview that shows on mouseover an icon in the list.And another showing the item. The user can create new or change geometry. For example draw a polygon that might represent the area for a document.
   

In order to share geographical data with others you can invite them use your SharePoint site or export a list as a KML file. KML is standard See OGC.

But how to enable i list or document library to store geographical information? Easy, just add a column, give it a name and add a new field to the list.

For project place visit, project site. Or jump right into the code.