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

Carlos Cámara Menoyo ccamara at pm.me
Mon Mar 11 15:04:17 UTC 2019


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:

- It seems to be unmaintained (last commit dates from April 2017)
- 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/talk/attachments/20190311/880eb079/attachment.html>


More information about the talk mailing list