Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Watertight vector maps from raster images (mzucker.github.io)
127 points by xk3 on April 10, 2021 | hide | past | favorite | 22 comments


Given the power of Openlayers + JSTS I'm a bit surprised nobody has built a general purpose WebGIS app.

QGIS is often too heavy or inaccessible. And I believe that GIS is something everyone can do. You don't need a fancy degree and training to explore spatial data and build maps.

I tried once but quickly realised it was beyond the scope of a part time project.


> general purpose WebGIS app

> QGIS is often too heavy or inaccessible

The reasoning is the contradiction here. While most GIS work is conceptually simple, there's so many things people want to do - any new GIS program will either feel incomplete or end up getting incredibly bloated and complex (per QGIS). Try dealing with raster+vector, different file formats, different databases, projection systems, different web service standards, tiling formats, 2d+3d+temporal visualisation, proprietary libraries for particular analysis, etc. etc.

Not to say QGIS can't be improved or a better webGIS wouldn't be helpful, but its a tough task to do so many things even if it all seems conceptually simple.

Lets not forget QGIS itself was basically a clean-slate approach which started much less able than previous open source GIS (Grass).


I hear you. Based on my experience with what my peers poke me for help with, a considerable amount can be done with just support for the most common features:

GeoTIFF, GeoJSON, CRS/projection support (OpenLayers handles this quite well already), tabular and spatial joins, filters, buffer/intersect.

A concern I think we share is that you'll always need that one, less common feature to get to the finish line. This may be. But I haven't found it to be the case as often as I worried. A lot of questions are really just about "how does X relate to Y?" where the linkage is space, time, or some other attribute.


I built an extensive open-source Rust-based spatial analysis platform called WhiteboxTools with the intention of serving as a plugable spatial analysis back-end for various GIS front-ends. So far people have created front ends for it in QGIS, ArcGIS, Python, and R, but I have long wanted to see people use it more in web-GIS. Perhaps one day...

https://jblindsay.github.io/ghrg/WhiteboxTools/index.html


Ive been wondering the same thing. especially when u see what can be done with WASM in apps like Figma. I believe most of the QGIS code base is c++ so i wonder if it's just a case writing a bunch of js, wasm glue code to make this a reality...


That's a really interesting thought. I think it would be worth seeing if OGR/GDAL can be ported to wasm.

Next would be GRASS.

JSTS is pure JS and does a lot of vector GIS fine.

I think those three things and a decent UI would be an absolutely killer Web app for the general public to do more GIS.


Yep, here's GDAL ported to WASM https://github.com/ddohler/gdal-js


Check out https://kepler.gl by Uber. Allows you to some basic GIS map based data exploration. Their deck.gl library is pretty nice if you need to add GIS data to your web app.


The lead of kepler.gl and several contributors to deck.gl left Uber last year to start Unfolded [0], a web-based geospatial platform.

[0]: https://www.unfolded.ai/studio

(Disclaimer: I work at Unfolded)


Thats AWESOME.

This Map is DOPE

https://studio.unfolded.ai/public/0c825631-2000-4ea7-a43f-a5...

https://i.imgur.com/5E6ancZ.png

---

However - it would be a lot better when you add another layer, that for, say an ARC layer, you should be able to click on the Source HEX, and then the Dest HEX - or Paste the HEX ID into the field, currently it demands LAT-LON for source and destination.... IT looks like it tries - But I cant seem to correctly apply it?

https://i.imgur.com/j8ttNfS.png


Thanks for the feedback! I'll look into this.


This is brilliant.

I build Web GIS software for managing worldwide fleets of thousands of robots in real time. I'm super into this stuff. Can't wait to see more from Unfolded.


I think it's coming, qua WASM.


Autotrace does have a tracing option "-centerline" which creates a single line on shape boudaries. I think it uses a fine thinning algorithm referenced in the scientific literature, but in the autotrace Todo list there is this item: "- Better thinning algorithm like CAT (Chordal Axis Transformation) " . http://autotrace.sourceforge.net/ https://github.com/autotrace/autotrace


For now it uses the thinning algorithm from the article "Efficient Binary Image Thinning using Neighborhood Maps". https://github.com/autotrace/autotrace/blob/master/src/thin-...


For anyone curious, the example map given is of West Papua.


Specifically, the languages of West Papua, coloured by family. (It’s a really well-done map, actually; it very clearly outlines language families such as Lakes Plains, Trans–New Guinea, Tor–Kwerba, Austronesian, East Bird’s Head etc. The only thing missing is a legend.)


This is potentially really lovely for some workflows in fantasy mapmaking where GIS data is extremely unlikely to exist.


Github account name made me chuckle.


This is an interesting read, but illustrator can also generate vectors from a raster image with a couple of clicks and parameter tuning


The author addresses this:

> There already exist tools to automatically convert raster (bitmap) images to vector formats, including Adobe Illustrator’s Live Trace/Image Trace tools or standalone programs like Peter Selinger’s potrace, which provides the comparable functionality in Inkscape.

> However, all of these tools share a common shortcoming from the perspective of mapmaking – given a simple raster line drawing(…) they actually produce two contours, one for the inside, and one for the outside.


Thank you so much for your comment! It made me dig into the article a bit and appreciate that this could be really handy for me. I do a lot of conversion of bitmap designs in Illustrator and this two-path problem is frequently something I abut against.

Time to learn how to use Python!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: