I'm a programmer, but I'm new to GIS.

I want to build a map that displays the status of some IoT devices I work with.

My ideal vision is a world map, which would fill the screen, but for now, Europe would do, or even a single European country. It would be nice to be able to switch between EU and a single EU country.

These are my requirements:

  • I want to mark each device on the map with a traffic light status indicator - so basically a dot representing each device, it'll be red/orange/green depending on its state.

  • The states should be updated relatively close to real time, maybe once every 10 seconds if that's reasonable? I'll be pulling state information from a queue that pushes real-time information.

  • Only details of devices whose states change will be included in each update (Although if required I can push states for all objects visible on the map).

  • At any one time, ~50k points could need to be displayed, though typically it'll be more like 10k to 15k points. Currently, there are around 30 active jobs with ~175k devices in total (I'd love to show them all, but if it's too much it's not an issue).

  • There are over 2.5 million points in the database (stored as GPS coordinates) and multiple jobs may be running at the same time, The maps should be able to switch between jobs, but I can limit the number of clients with access to the map, It'll mostly be visible on a display in our team area.

  • Detailed zoom is not currently a requirement, it'll be a full-screen map on a large display.

So far I'm looking at GeoServer as the server with OpenStreetMap, I think I need OpenLayers too. I've installed postgres and postgis. I will be coding my own service in Java, probably with Spring, but I haven't decided on the front end yet. I'm considering AngularJs and Vaadin at the moment.

So, how realistic is my proposal and what else do I need to consider?

  • Are you using QGIS? – MyGIS Sep 6 '18 at 7:51
  • I'm not using anything right now, I literally started looking at this yesterday. So far I've got postgresql running with postGIS as well as GeoServer. I just completed an introduction to GeoServer tutorial to display data from a postGIS table about 5 minutes ago. – bot_bot Sep 6 '18 at 8:29
  • I suggest you use QGIS to view your points stored in PostGIS, then create the symbology. Then install the Geoserver Explorer Plugin (it may not be available with the latest version, try with QGIS 2.8x). You will be able to send your layer(s) with their symbology directly to Geoserver without dealing with the sld style conversion. If you want to create your web maps using Openlayers very quickly, you can use the qgis2Web plug-in. – MyGIS Sep 6 '18 at 8:45
  • Thanks, I'll look into that. Will that allow automatic addition points later on? If I'm understanding correctly, will this mean when new devices are added to the system I'll need to create new symbology? or is in terms of setting up how it works, like if state = 1 then set the color to orange, or whatever. Then when new devices are added that will automatically apply? – bot_bot Sep 6 '18 at 8:51
  • 1
    It will be reflected the moment you refresh the map. – MyGIS Sep 6 '18 at 8:53

If you have classified your points symbology based on a certain field in PostGIS, every time the field cell value changes it will be reflected in the OpenLayers map when you refresh the map. For example if you field is calle "Status" and you have a value "On" or "Off", every time you reload the map it will read the value from the field to reflect the current status and change the color of the point based on the symbology/classification chosen.

| improve this answer | |
  • 1
    I would separate the data per locality/district. Each one in one map. It all depends on how your data is represented. – MyGIS Sep 6 '18 at 8:48
  • 2
    use a WMS so it is just an image of the data being sent not all the data weach time – Ian Turton Sep 6 '18 at 8:48
  • 1
    Ian is right; the load would be on PostGIS and Geoserver in my point of view. But that would be handled by both of them. The bigger is the scale the less points you will be displaying at one go. – MyGIS Sep 6 '18 at 8:50
  • 1
    I don't think you could. I suggest you create different layers with the same data setting the display scale and most importantly decide on which devices you would like to display in a smaller scale. his is how I would do it. – MyGIS Sep 6 '18 at 9:26
  • 1
    If you have further inquiries, please do open a new question. – MyGIS Sep 6 '18 at 9:50

Not the answer you're looking for? Browse other questions tagged or ask your own question.