jmcmellen / splat

SPLAT! is an RF Signal Propagation, Loss, And Terrain analysis tool for the spectrum between 20 MHz and 20 GHz. This is a copy of the code written by John Magliacane
http://www.qsl.net/kd2bd/splat.html
GNU General Public License v2.0
74 stars 39 forks source link

Output signal strength as geojson #11

Open dougajmcdonald opened 5 years ago

dougajmcdonald commented 5 years ago

Is there any way that we could output the Signal Strength map (currently .ppm) as geojson? or some format which could be more easily rendered on a map?

I've tried the .kml output but that outputs a link to the .ppm which isn't vector based.

Would appreciate any thoughts.

hoche commented 5 years ago

I'm curious to know what you mean, exactly. I think the ppm included in with the kml is intended to be used as an overlay in Google Earth, and opening it up is supposed to project it right on top. I can't remember if Google earth under stands ppm's though. I changed that in my branch of Splat! so that it'll output a png with the kml instead.

Are you asking to have the different dBm/SS levels mapped as topology arcs rather than simple color areas?

dougajmcdonald commented 5 years ago

@hoche Yeah, the KML is intended for this I think. As you say, google earth (or other slippy maps interfaces (we're using leaflet on top of geoserver)) don't support .ppm so converting to another image format would be needed. I'll have a look at your branch as this would solve one of my problems.

However, as well as reading the image we'd probably want to adjust the opacity in the colours, as we'd want to display the splat output as a layer on a 2D map and may want to see other layers below.

At the moment I could do this by running splat and taking the output, running it through a Java backend (to amend the image) and then serve it to the client mapping application. This is all a bit clunky, so in an ideal world, splat would output say, GeoJSON to allow those kind of changes to be performed programatically and ideally changed at runtime.

I believe yes, I'd be looking for the dBm/SS levels to be mapped to GeoJSON features. As this would be infinitely more flexible to work with. I appreciate however that this probably isn't a trivial task.

hoche commented 5 years ago

I see.

Actually, generating GeoJSON that uses the png as an overlay - just like the kml does now - is on my short-term todo list; with any luck I'll have that done in the next few days. I'll have to think a bit about how to get vectors out what is essentially a raster grid of signal strengths. That might get punted down the road for a later enhancement though.

dougajmcdonald commented 5 years ago

GeoJSON with a .png would definitely be an improvement, that way the effort to load it onto mapping solutions like mapbox and leaflet would be easier.

In an ideal world however the data driving the .png would be output as GeoJSON features, but when I considered how to do this, I understand it would be pretty tricky as it's not like the signal strength level form nice segmants of a pie chart or anything, the shapes are complex and often not joined up.

I don't understand how the SS plot is generated however, perhaps there is some way to achieve this?

dBitech commented 4 years ago

This is not a difficult process to accomplish at all by post-processing the .ppm. The gdal ecosystem has all of the bits and pieces needed to do this and can be scripted to make it easy and painless. You can take the resulting .ppm produced by Splat!, create a GeoTIFF using gdal_translate. This rusting GeoTIFF can then be converted to a GeoJSON using the following script geotiff2geojson You may need to modify it for your particular needs but should provide some thoughts on the process.