[OSM-talk] How to save Overpass query results to a GeoJSON file with Python?

Bryce Jasmer bryce at jasmer.com
Mon Mar 11 15:45:30 UTC 2019


I use the overpass library (I think it's the one you mentioned). The
resulting dictionary can be coerced to a string and written out and it
should be valid geojson.

#!/usr/bin/python3
import overpass
api = overpass.API()
result = api.get('area[name="Granollers"][admin_level=8];(nwr["highway"](area);relation["highway"](area););')
with open('results.geojson', 'w') as fd:
    fd.write(str(result))


On Mon, Mar 11, 2019 at 8:04 AM Carlos Cámara Menoyo via talk <
talk at openstreetmap.org> wrote:

> Thanks for your reply, Mateusz.
>
> I know (and use) Overpass turbo. However, what I want to do is to store a
> query and execute it in order to update results and store them as a file
> for further manipulation, so I can easily update results without the need
> to accessing to the interface, generate the query, run it and then download
> the results. I would like to achieve same functionallity but just by
> executing a file (which, additionally, may have more than one query).
>
> So far, I found overpy <https://github.com/DinoTools/python-overpy>,
> which seems to work fine in terms of querying but has two problems for me:
>
>    1. It seems to be unmaintained (last commit dates from April 2017)
>    2. I didn't succeed in storing the result into a geospatial file (or a
>    geopandas data frame) (visit this jupyter lab with my current achievements:
>    https://github.com/ccamara/osm-python/blob/master/overpy-demo.ipynb)
>
> I also have just found Overpass API wrapper
> <https://github.com/mvexel/overpass-api-python-wrapper>, but I still have
> to explore it and understand how does it work and how can I tame it to my
> needs.
>
> You propose a third way, which is using overpass and writing a script. It
> is not clear to me what do you mean with that, since I thought that that
> was precisely what I was attempting. Could you be more specific, please? Do
> you have other insight?
>
> Regards,
> Carlos
>
>
> Carlos Cámara-Menoyo
> https://carloscamara.es
>
>
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Monday 11 March de 2019 a les 14:15, Mateusz Konieczny <
> matkoniecz at tutanota.com> wrote:
>
>
>
>
> Mar 11, 2019, 11:18 AM by talk at openstreetmap.org:
>
> Dear colleagues,
>
> I have just started to use Python and I would like to make a query to
> Overpass and store the results in a geospatial format (e.g. GeoJSON) so I
> can programatically update the data.
>
> As far as I know, there is a library called overpy that should be what I
> am looking for. After reading its documentation
> <https://python-overpy.readthedocs.io/en/latest/example.html> I came up
> with the following code:
>
> import overpy
>
> API = overpy.Overpass()
> # Fetch highways within Granollers' city.
>
> result = API.query("""
>     area[name="Granollers"][admin_level=8];
>     // query part for: “highway=*”
>     (way["highway"](area);
>     relation["highway"](area);
>     );
>     // print results
>     out body;
>     """)
>
> The thing is that I am not familiar at all with Python and I don't know
> how to store result as a GeoJSON file (Honestly, I don't even know what
> kind of thing result is -I tried with type(result) and I get overpy.Result
> as an output, which doesn't mean much to my poor knowledge). I have been
> reading overpy documentation but I haven't been able to figure it out.
> Can anyone give me a clue with this?
>
> Are you familiar with http://overpass-turbo.eu/
> https://wiki.openstreetmap.org/wiki/Overpass_turbo ?
>
> There are two parts here
>
> (1) using overpass itself
> (2) writing python script
>
> That are separate (you can call Overpass API from any program, not just
> python)
>
> "I have just started to use Python" - note that it means learning two
> separate languages at once:
>
> (1) Python itself
> (2) Overpass query syntax
>
> PS In case that Overpass is new for you my page may be of some use:
>
>
> https://mapsaregreat.com/geographic-data-mining-and-visualisation-for-beginners/overpass-turbo-tutorial.html
>
>
> _______________________________________________
> talk mailing list
> talk at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/talk/attachments/20190311/b7619b05/attachment-0001.html>


More information about the talk mailing list