How to get POI in city in OpenStreetMap through Overpass API with cURL? The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)How to get WKT or GEOJson by country or city name with Overpass API?How can I geocode to a shape instead of a coordinate?Overpass API: Get coordinates of postal boundaryAlternative overpass api for OpenStreetmap locations query?How to get the intersections lat/lng on overpass api?Openstreemap Overpass API to get Couture linesCan you restrict which OSM tags are returned by Overpass API?Using Overpass Turbo to return all cemeteries (nodes, ways and relations) with their municipalityCounting schools with Overpass API?Overpass get Street in City

Didn't get enough time to take a Coding Test - what to do now?

Synthesis of a weinreb amide from an acid

How do you keep chess fun when your opponent constantly beats you?

List only local user accounts with a single command

Change bounding box of math glyphs in LuaTeX

Derivation tree not rendering

The variadic template constructor of my class cannot modify my class members, why is that so?

Windows 10: How to Lock (not sleep) laptop on lid close?

How does this infinite series simplify to an integral?

Finding the path in a graph from A to B then back to A with a minimum of shared edges

Are my PIs rude or am I just being too sensitive?

how can a perfect fourth interval be considered either consonant or dissonant?

How does ice melt when immersed in water

In horse breeding, what is the female equivalent of putting a horse out "to stud"?

Create an outline of font

Was credit for the black hole image misattributed?

RT6224D-based step down circuit yields 0V - why?

verb not working in beamer even though I use [fragile]

Hopping to infinity along a string of digits

Am I ethically obligated to go into work on an off day if the reason is sudden?

Who or what is the being for whom Being is a question for Heidegger?

How to politely respond to generic emails requesting a PhD/job in my lab? Without wasting too much time

What force causes entropy to increase?

How to tell if two pearson correlations from the same sample differ significanly



How to get POI in city in OpenStreetMap through Overpass API with cURL?



The 2019 Stack Overflow Developer Survey Results Are In
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)How to get WKT or GEOJson by country or city name with Overpass API?How can I geocode to a shape instead of a coordinate?Overpass API: Get coordinates of postal boundaryAlternative overpass api for OpenStreetmap locations query?How to get the intersections lat/lng on overpass api?Openstreemap Overpass API to get Couture linesCan you restrict which OSM tags are returned by Overpass API?Using Overpass Turbo to return all cemeteries (nodes, ways and relations) with their municipalityCounting schools with Overpass API?Overpass get Street in City



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








1















I'm very new to OpenStreetMap's Overpass QL API. After digging through its hefty wiki and several tutorials I get the feeling that if I want to query for a city I can use either area[name="Tbilisi"][boundary=administrative] or geocodeArea:Tbilisi. I think [boundary=administrative] helps identify it as a city or at least some kind of official entity like a state or municipality rather than, say, part of the name of a cafe. I don't know if I am right.



Following that, I should be able to get restaurants in Tbilisi with the area[name="Tbilisi"][boundary=administrative] syntax on Overpass Turbo like so:



area[name="Tbilisi"][boundary=administrative]->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out;


However, it returns '"elements": []'. out count returns a total of 0.



I then tried with geocodeArea:Tbilisi:



geocodeArea:Tbilisi->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out;


This returned a very long list of elements, out count total is 419.



Unfortunately, I can't use geocodeArea:Tbilisi with cURL like this:



curl --globoff 'https://overpass-api.de/api/interpreter?data=[out:json];geocodeArea:Tbilisi->.searchArea;node["amenity"="restaurant"](area.searchArea);out;'


It gives:



...
<p><strong style="color:#FF0000">Error</strong>: line 1: parse error: Unknown type "{" </p>
<p><strong style="color:#FF0000">Error</strong>: line 1: parse error: An empty query is not allowed </p>
<p><strong style="color:#FF0000">Error</strong>: line 1: parse error: ';' expected - '{' found. </p>


(Update 8 Apr 19: As mmd mentions in the comments below, geocodeArea:CITY_NAME is Overpass Turbo syntactic sugar and cannot be used for Overpass API.) Looking into the Network tab of dev tools after running this same query in Overpass Turbo, I find this works on Overpass Turbo because it translates geocodeArea:Tbilisi to area(3601996871). But I'd like to query by city name if possible.



I don't know if I've misunderstood the query structure. If I try the area[name="CITY_NAME"] syntax with Singapore like so:



[out:json];
area[name="Singapore"][boundary=administrative]->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out count;


Overpass Turbo returns a total of 2221.



But with the geocodeArea:CITY_NAME syntax like this:



[out:json];
geocodeArea:Singapore->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out count;


The total count is different. It's 2192.



What is the correct way to query for POI in a city? Preferably with cURL and by city name?










share|improve this question









New contributor




nusantara is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.















  • 1





    geocodeArea:Singapore is overpass turbo specific syntactic sugar, which is invalid syntax for Overpass API!

    – mmd
    Apr 8 at 9:02











  • If you want to query by name then you need to perform a geocoding step before to determine the relation ID, for example with the help of Nominatim.

    – scai
    Apr 8 at 9:52











  • ... and that's exactly what overpass turbo's geocodeArea does: it calls Nominatim, converts the relation number to an Overpass area id, and sends the query to the Overpass API backend server. If you don't want to use Nominatim, you need to find the correct tags for the area you're interested, like in area[name="Singapore"][boundary=administrative]. This requires you to spend some time on OSM tagging, which would be beyond the scope of this question.

    – mmd
    Apr 8 at 20:19


















1















I'm very new to OpenStreetMap's Overpass QL API. After digging through its hefty wiki and several tutorials I get the feeling that if I want to query for a city I can use either area[name="Tbilisi"][boundary=administrative] or geocodeArea:Tbilisi. I think [boundary=administrative] helps identify it as a city or at least some kind of official entity like a state or municipality rather than, say, part of the name of a cafe. I don't know if I am right.



Following that, I should be able to get restaurants in Tbilisi with the area[name="Tbilisi"][boundary=administrative] syntax on Overpass Turbo like so:



area[name="Tbilisi"][boundary=administrative]->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out;


However, it returns '"elements": []'. out count returns a total of 0.



I then tried with geocodeArea:Tbilisi:



geocodeArea:Tbilisi->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out;


This returned a very long list of elements, out count total is 419.



Unfortunately, I can't use geocodeArea:Tbilisi with cURL like this:



curl --globoff 'https://overpass-api.de/api/interpreter?data=[out:json];geocodeArea:Tbilisi->.searchArea;node["amenity"="restaurant"](area.searchArea);out;'


It gives:



...
<p><strong style="color:#FF0000">Error</strong>: line 1: parse error: Unknown type "{" </p>
<p><strong style="color:#FF0000">Error</strong>: line 1: parse error: An empty query is not allowed </p>
<p><strong style="color:#FF0000">Error</strong>: line 1: parse error: ';' expected - '{' found. </p>


(Update 8 Apr 19: As mmd mentions in the comments below, geocodeArea:CITY_NAME is Overpass Turbo syntactic sugar and cannot be used for Overpass API.) Looking into the Network tab of dev tools after running this same query in Overpass Turbo, I find this works on Overpass Turbo because it translates geocodeArea:Tbilisi to area(3601996871). But I'd like to query by city name if possible.



I don't know if I've misunderstood the query structure. If I try the area[name="CITY_NAME"] syntax with Singapore like so:



[out:json];
area[name="Singapore"][boundary=administrative]->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out count;


Overpass Turbo returns a total of 2221.



But with the geocodeArea:CITY_NAME syntax like this:



[out:json];
geocodeArea:Singapore->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out count;


The total count is different. It's 2192.



What is the correct way to query for POI in a city? Preferably with cURL and by city name?










share|improve this question









New contributor




nusantara is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.















  • 1





    geocodeArea:Singapore is overpass turbo specific syntactic sugar, which is invalid syntax for Overpass API!

    – mmd
    Apr 8 at 9:02











  • If you want to query by name then you need to perform a geocoding step before to determine the relation ID, for example with the help of Nominatim.

    – scai
    Apr 8 at 9:52











  • ... and that's exactly what overpass turbo's geocodeArea does: it calls Nominatim, converts the relation number to an Overpass area id, and sends the query to the Overpass API backend server. If you don't want to use Nominatim, you need to find the correct tags for the area you're interested, like in area[name="Singapore"][boundary=administrative]. This requires you to spend some time on OSM tagging, which would be beyond the scope of this question.

    – mmd
    Apr 8 at 20:19














1












1








1








I'm very new to OpenStreetMap's Overpass QL API. After digging through its hefty wiki and several tutorials I get the feeling that if I want to query for a city I can use either area[name="Tbilisi"][boundary=administrative] or geocodeArea:Tbilisi. I think [boundary=administrative] helps identify it as a city or at least some kind of official entity like a state or municipality rather than, say, part of the name of a cafe. I don't know if I am right.



Following that, I should be able to get restaurants in Tbilisi with the area[name="Tbilisi"][boundary=administrative] syntax on Overpass Turbo like so:



area[name="Tbilisi"][boundary=administrative]->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out;


However, it returns '"elements": []'. out count returns a total of 0.



I then tried with geocodeArea:Tbilisi:



geocodeArea:Tbilisi->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out;


This returned a very long list of elements, out count total is 419.



Unfortunately, I can't use geocodeArea:Tbilisi with cURL like this:



curl --globoff 'https://overpass-api.de/api/interpreter?data=[out:json];geocodeArea:Tbilisi->.searchArea;node["amenity"="restaurant"](area.searchArea);out;'


It gives:



...
<p><strong style="color:#FF0000">Error</strong>: line 1: parse error: Unknown type "{" </p>
<p><strong style="color:#FF0000">Error</strong>: line 1: parse error: An empty query is not allowed </p>
<p><strong style="color:#FF0000">Error</strong>: line 1: parse error: ';' expected - '{' found. </p>


(Update 8 Apr 19: As mmd mentions in the comments below, geocodeArea:CITY_NAME is Overpass Turbo syntactic sugar and cannot be used for Overpass API.) Looking into the Network tab of dev tools after running this same query in Overpass Turbo, I find this works on Overpass Turbo because it translates geocodeArea:Tbilisi to area(3601996871). But I'd like to query by city name if possible.



I don't know if I've misunderstood the query structure. If I try the area[name="CITY_NAME"] syntax with Singapore like so:



[out:json];
area[name="Singapore"][boundary=administrative]->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out count;


Overpass Turbo returns a total of 2221.



But with the geocodeArea:CITY_NAME syntax like this:



[out:json];
geocodeArea:Singapore->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out count;


The total count is different. It's 2192.



What is the correct way to query for POI in a city? Preferably with cURL and by city name?










share|improve this question









New contributor




nusantara is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












I'm very new to OpenStreetMap's Overpass QL API. After digging through its hefty wiki and several tutorials I get the feeling that if I want to query for a city I can use either area[name="Tbilisi"][boundary=administrative] or geocodeArea:Tbilisi. I think [boundary=administrative] helps identify it as a city or at least some kind of official entity like a state or municipality rather than, say, part of the name of a cafe. I don't know if I am right.



Following that, I should be able to get restaurants in Tbilisi with the area[name="Tbilisi"][boundary=administrative] syntax on Overpass Turbo like so:



area[name="Tbilisi"][boundary=administrative]->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out;


However, it returns '"elements": []'. out count returns a total of 0.



I then tried with geocodeArea:Tbilisi:



geocodeArea:Tbilisi->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out;


This returned a very long list of elements, out count total is 419.



Unfortunately, I can't use geocodeArea:Tbilisi with cURL like this:



curl --globoff 'https://overpass-api.de/api/interpreter?data=[out:json];geocodeArea:Tbilisi->.searchArea;node["amenity"="restaurant"](area.searchArea);out;'


It gives:



...
<p><strong style="color:#FF0000">Error</strong>: line 1: parse error: Unknown type "{" </p>
<p><strong style="color:#FF0000">Error</strong>: line 1: parse error: An empty query is not allowed </p>
<p><strong style="color:#FF0000">Error</strong>: line 1: parse error: ';' expected - '{' found. </p>


(Update 8 Apr 19: As mmd mentions in the comments below, geocodeArea:CITY_NAME is Overpass Turbo syntactic sugar and cannot be used for Overpass API.) Looking into the Network tab of dev tools after running this same query in Overpass Turbo, I find this works on Overpass Turbo because it translates geocodeArea:Tbilisi to area(3601996871). But I'd like to query by city name if possible.



I don't know if I've misunderstood the query structure. If I try the area[name="CITY_NAME"] syntax with Singapore like so:



[out:json];
area[name="Singapore"][boundary=administrative]->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out count;


Overpass Turbo returns a total of 2221.



But with the geocodeArea:CITY_NAME syntax like this:



[out:json];
geocodeArea:Singapore->.searchArea;
node["amenity"="restaurant"](area.searchArea);
out count;


The total count is different. It's 2192.



What is the correct way to query for POI in a city? Preferably with cURL and by city name?







openstreetmap overpass-api






share|improve this question









New contributor




nusantara is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




nusantara is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited Apr 8 at 9:09







nusantara













New contributor




nusantara is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked Apr 7 at 18:40









nusantaranusantara

63




63




New contributor




nusantara is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





nusantara is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






nusantara is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







  • 1





    geocodeArea:Singapore is overpass turbo specific syntactic sugar, which is invalid syntax for Overpass API!

    – mmd
    Apr 8 at 9:02











  • If you want to query by name then you need to perform a geocoding step before to determine the relation ID, for example with the help of Nominatim.

    – scai
    Apr 8 at 9:52











  • ... and that's exactly what overpass turbo's geocodeArea does: it calls Nominatim, converts the relation number to an Overpass area id, and sends the query to the Overpass API backend server. If you don't want to use Nominatim, you need to find the correct tags for the area you're interested, like in area[name="Singapore"][boundary=administrative]. This requires you to spend some time on OSM tagging, which would be beyond the scope of this question.

    – mmd
    Apr 8 at 20:19













  • 1





    geocodeArea:Singapore is overpass turbo specific syntactic sugar, which is invalid syntax for Overpass API!

    – mmd
    Apr 8 at 9:02











  • If you want to query by name then you need to perform a geocoding step before to determine the relation ID, for example with the help of Nominatim.

    – scai
    Apr 8 at 9:52











  • ... and that's exactly what overpass turbo's geocodeArea does: it calls Nominatim, converts the relation number to an Overpass area id, and sends the query to the Overpass API backend server. If you don't want to use Nominatim, you need to find the correct tags for the area you're interested, like in area[name="Singapore"][boundary=administrative]. This requires you to spend some time on OSM tagging, which would be beyond the scope of this question.

    – mmd
    Apr 8 at 20:19








1




1





geocodeArea:Singapore is overpass turbo specific syntactic sugar, which is invalid syntax for Overpass API!

– mmd
Apr 8 at 9:02





geocodeArea:Singapore is overpass turbo specific syntactic sugar, which is invalid syntax for Overpass API!

– mmd
Apr 8 at 9:02













If you want to query by name then you need to perform a geocoding step before to determine the relation ID, for example with the help of Nominatim.

– scai
Apr 8 at 9:52





If you want to query by name then you need to perform a geocoding step before to determine the relation ID, for example with the help of Nominatim.

– scai
Apr 8 at 9:52













... and that's exactly what overpass turbo's geocodeArea does: it calls Nominatim, converts the relation number to an Overpass area id, and sends the query to the Overpass API backend server. If you don't want to use Nominatim, you need to find the correct tags for the area you're interested, like in area[name="Singapore"][boundary=administrative]. This requires you to spend some time on OSM tagging, which would be beyond the scope of this question.

– mmd
Apr 8 at 20:19






... and that's exactly what overpass turbo's geocodeArea does: it calls Nominatim, converts the relation number to an Overpass area id, and sends the query to the Overpass API backend server. If you don't want to use Nominatim, you need to find the correct tags for the area you're interested, like in area[name="Singapore"][boundary=administrative]. This requires you to spend some time on OSM tagging, which would be beyond the scope of this question.

– mmd
Apr 8 at 20:19











0






active

oldest

votes












Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);






nusantara is a new contributor. Be nice, and check out our Code of Conduct.









draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f318046%2fhow-to-get-poi-in-city-in-openstreetmap-through-overpass-api-with-curl%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes








nusantara is a new contributor. Be nice, and check out our Code of Conduct.









draft saved

draft discarded


















nusantara is a new contributor. Be nice, and check out our Code of Conduct.












nusantara is a new contributor. Be nice, and check out our Code of Conduct.











nusantara is a new contributor. Be nice, and check out our Code of Conduct.














Thanks for contributing an answer to Geographic Information Systems Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f318046%2fhow-to-get-poi-in-city-in-openstreetmap-through-overpass-api-with-curl%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown