DEV Community

Cover image for Geo Crash Course

Posted on

Geo Crash Course

What do you need to know when starting in Geo as a developer? Read on to know!

For a very long time I planned to write this guide on starting in Geo. In this guide, I will:

  • Tell you that Earth is not flat (SHOCK!) and why that's very inconvenient;
  • Define common terms (What's projection? There's also a coordinate system?.. OGC, OSM, WKT, WGS, ESPG?);
  • Teach you All Things You Need To Know™ to become a geo-developer and build things for Geo or using Geo;
  • Explain popular caveats - Dos and Don'ts - when working with Geo;
  • Give you an overview of geo-technologies, industry standards, databases, libraries;
  • Give you references for further reading.

I ran this workshop for my colleagues who are interested in Geo, and it was a great success! I hope you enjoy it as well.

Good luck with your journey around the globe!

Top comments (12)

jordonr profile image
Jordon Replogle • Edited

Thanks for the great slide deck. I've been thinking of doing a personal project that would rely on spatial data. On your slide 77, you mentioned relational databases and I was wondering if you had any experience/opinions on using NoSQL databases like MongoDB or ArangoDB?

Personally siding with PostGIS at the moment, but I haven't been able to decide.

desgrangeremi profile image
Rémi Desgrange

I'll talk about my experience but I think it's biased. I think that for most geospatial stuff postgis is the tool. You benefits from all the awesome postgresql ecosystem + geospatial. Since postgresql is a "industry standard" (this is not my word but Paul Ramsey' ) you also have a lot of ressource on the web and a lot answer on stack overflow.

With Mongodb you'll be on you're own and you'll need to implement everything on the app, in this case, turf.js can help).

With Postgis, you have everything you need (did I say I was biased ? :-)) for exemple with this query you can select data directly in geojson:

SELECT st_asgeojson(the_geom) FROM my_geom_table;
turnerj profile image
James Turner

While I don't know if it is remotely the same level of functionality as Postgis, MongoDB does have built-in geospatial support.

ice_lenor profile image

Thank you for your question, Jordon!

Unfortunately, I haven't used mongodb or any other nosql databases for geo stuff, except for Elasticsearch (Lucene), which I mention on the next slide.

Personally, I would opt for a relational database, like PostGIS or MsSQL, because I know they're working well with geodata. Geo is a rather niche topic, and it definitely will be lower priority for database developers, plus it can be difficult to implement properly. This is why many databases don't have geo support. By using a database with not very well developed geo support, I feel like I would put my product at risk. So I'd have to weigh it very carefully.

desgrangeremi profile image
Rémi Desgrange • Edited

This is a really great post and slides. Thank you !

May I say that you should maybe add redis along with elasticsearch since it has (limited) spatial support. Also, I think that "us", gis people, need to spread the word about geopackage and shapefile death.

ice_lenor profile image

Unfortunately I haven't used Redis myself (yet). But thanks a lot for the tip!

rhymes profile image

Great presentation Elena!

A couple of questions:

  • how much more "computationally intensive" is Vincenty? I've only known and used the haversine to calculate distance between coordinates stored in databases.

  • have your heard of the AuthaGraph projection? What do you think?

Thank you!

ianturton profile image
Ian Turton

Very good slides.

renatosuero profile image
Renato Suero

Thanks Elena,
I always wanted to know more about geo, your presentation is great

odoenet profile image
Rene Rubalcava

Great detailed presentation!

diegocrzt profile image
Diego Ramírez

Super Cool! thanks!

c0derr0r profile image
Irkan Hadi

Very informative, as someone with dev background and who is working with GIS team, this would have been a great first-day presentation.