Du lädst erstmal die OSM-Daten mit osm2pgsql in eine Postgres-Datenbank.
Dann ziehst Du Dir die POIs, die dich interessieren, in eine eigene Tabelle. Wie Du das genau machst, hängt davon ab, was Du genau willst; nehmen wir mal beispielhaft an, Dir reichen Restaurants und Cafes, dann erstellst Du erstmal eine Tabelle für die POIs:
create table my_poi (
type varchar(32),
name text,
cuisine text,
geom geometry('POINT', 3857)
);
kopierst die Punkt-POIs hinein
insert into my_poi
select amenity as type, name,tags->'cuisine',way
from planet_osm_point
where amenity='restaurant' or amenity='cafe';
und dann noch die Mittelpunkte der Flächen-POIs:
insert into my_poi
select amenity as type, name,tags->'cuisine',st_centroid(way)
from planet_osm_polygon
where amenity='restaurant' or amenity='cafe';
Natürlich kannst Du beliebige andere POIs kopieren, oder noch zusätzliche Spalten wie Öffnungszeiten, Adressen usw. - Hauptsache, Du hast am Ende eine schöne Tabelle mit lauter POIs. Dann ziehst Du Dir der Einfachheit halber noch die Ländergrenzen ebenfalls in eine eigene Tabelle (das wäre nicht nötig, macht es aber klarer):
create table laender as
select tags->'ISO3166-1' as isocode, tags->'name:de' as name, way as geom
from planet_osm_polygon
where admin_level='2' and boundary='administrative';
Damit es gleich keine Ewigkeit dauert, hilft ein Index:
create index laneder_index on laender using gist(geom);
Und dann kannst Du Deiner POI-Tabelle eine Ländercode-Spalte verpassen und sie befüllen lassen:
alter table my_poi add column country_code varchar(5);
update my_poi
set country_code=isocode
from laender
where st_contains(laender.geom,my_poi.geom);