itinero / routing

The routing core of itinero.
Apache License 2.0
220 stars 70 forks source link

Implement a better isochrones algorithm. #137

Open xivk opened 6 years ago

xivk commented 6 years ago

Implement a better isochrones algorithm, a more detailed description can be found here.

If you are a new contributor this is perfect, get in touch by responding below. Your code will end up in our next release after finishing. What we think you can learn:

What you need:

We'll help you get started and we can offer personal guidance.

LukeStanislaus commented 6 years ago

Hi @xivk, I'd be interested in having a go at this, it would be great if you could throw me a few pointers on where to start.

xivk commented 6 years ago

Hi @LukeStanislaus , that's awesome!

I suggest you start with getting it to work and write the result(s) as geojson. A few examples of the current output:

http://geojson.io/#id=gist:anonymous/881edef7c53e6f845d5e8f27640f5467&map=10/51.2460/4.7502

Issues in the current implementation:

http://geojson.io/#id=gist:anonymous/92efaf559971eb8fa180890e4ebdfb4e&map=14/49.8647/5.9885

A few pointers:

Getting started:

The code is in the namespace Itinero.Algorithms.Networks.Analytics.Isochrones. You can start by using the extension methods and run through the code to see what happens. Writing this to geojson can be done using this extension method. This will help you get a feel for the code. Also you need to load a router/routerdb, you can find how to do that in the docs, you best load a small test-area.

Don't worry, this looks like a lot, but the idea is collaborate on this so there are no silly questions and just ask if you need more info!

LukeStanislaus commented 6 years ago

Hi @xivk,

I've had a look through ToGeoJSON, and I'm not sure how to turn an entire RouterDB into a polygon list in order to run it through the methods.

I've tried turning the RouterDB into a route and then through the ToGeoJSON method using this code.

But the result, as you can see here, is as expected - simply a route. I see the TilesToPolygon class, so maybe there is a way to turn the RouterDB to a list of tiles, then to a list of polygons, then through the ToGeoJSON method, in order to output an area like you have in your examples?

Thanks for the great help,

Luke

ohlordyitsordy commented 3 years ago

Hi @xivk ,

I'm a fairly recent CS grad and happened to stumble upon your project while looking for some free software to map isochrones.

I have experience working within larger codebases but no open source contributions yet. I have been actively looking for a good starting place to get into open source and this seems perfect as I also enjoy working with maps.

I see this is a fairly old issue however and that Luke already expressed interest in this, so are you still looking for someone to implement this?

dabreegster commented 3 years ago

Hi @ohlordyitsordy, I found this issue while searching for open source isochrone implementations. If you're interested in another OpenStreetMap-based project, I'm exploring the idea of 15-minute neighborhoods in this issue. A simple prototype is in place, but it needs lots of work. A small group will be working on it through an online civic tech hackathon this Saturday.

xivk commented 3 years ago

Hey, @ohlordyitsordy sorry for the late reply, yes we could some help with this if you are still interested.

We are however also working on a new version of Itinero apart from this repository (will be public soon), it could also be an option to do the work in the new codebase.