Teknik Informatika/Overpass API

Overpass API adalah API yang bersifat read-only untuk mengakses data yang ada dalam OpenStreetMap. Sebelum tahun 2011, layanan ini bernama OSM Server Side Scripting (OSM3S). API ini menyimpan copy dari seisi database OpenStreetMap, yang diupdate setiap menit sekali. Kita dapat menggunakan beberapa public instance dari API ini, atau membuat self-hosting sendiri.

Self-hosting sunting

System requirements sunting

  • Expat XML Parser
  • C++ compiler
  • OSM file berformat XML, dikompres dengan format bzip. Jika ingin menggunakan kompresi protobuf, gunakan osmconvert untuk mengubahnya jadi bzip.
    • OSM file ini dinamakan "Planet.osm", seluruh database OSM dalam sebuah file XML. File ini diupdate tiap minggu. Pada 1 Desember 2022, file ini berukuran 1671 GB (uncompressed) / 121.5 GB (bzip2 compressed) / 66.4 GB (protobuff compressed).
  • Tidak perlu install database engine, karena sudah built-in dalam Overpass API
  • Siapkan beberapa folder ini :
    • $EXEC_DIR : Tempat file executable utama
    • $DB_DIR : Direktori untuk menyimpan file database
    • $REPLICATE_DIR : Direktori untuk menyimpan file update OSM per menit

Instalasi (Linux server) sunting

Pertama, instal beberapa packages yang dibutuhkan

sudo apt-get update
sudo apt-get install g++ make expat libexpat1-dev zlib1g-dev

Lalu, download Overpass API, ekstrak, compile dan install

wget http://dev.overpass-api.de/releases/osm-3s_v[latest_version].tar.gz 
tar -zxvf osm-3s_v*.tar.gz
cd osm-3s_v*
./configure CXXFLAGS="-02" --prefix=$EXEC_DIR
make install

Public Instance sunting

Selain self-hosting sendiri, kita juga bisa menggunakan public instance milik orang lain. Dengan catatan, bahwa ada batasan penggunaan di setiap servernya.

Endpoint Specs
4 physical cores, 64 GB RAM, SSD. Per user quota 10.000 queries per day + 5 GB data per day.
https://maps.mail.ru/osm/tools/overpass/api/interpreter 2 servers, 56 physical cores, 384 GB RAM, SSD.
https://overpass.kumi.systems/api/interpreter 4 servers, 20 cores, 256 GB RAM, SSD. No rate limit

Panduan Querying sunting

Tampilkan seluruh data yang mengandung "key:value" tertentu sunting

// Single line comment
/* Multiline comment */
[out:json][timeout:25];
(
node["service"="driveway2"]({{bbox}});
way["service"="driveway2"]({{bbox}});
relation["service"="driveway2"]({{bbox}});
)
out body;
>;
out skel qt;

Tampilkan seluruh kontribusi dari suatu user tertentu + map styling sunting

[out:json][timeout:30];

// fetch area "Ireland" to search in
{{geocodeArea:Ireland}}->.searchArea;

(
node(user:"username")["emergency"="defibrillator"]
(area.searchArea);
);

out body;
>;

{{
style:
node[emergency=defibrillator]{
  icon-image:url('https://...');
  icon-width:16;
}
}}

Tampilkan data umur bangunan menggunakan kode warna sunting

[out:json][timeout:2500];
{{geocodeArea:Nottingham}}->.searchArea;
(
nwr["building"][start_date]({{bbox}});
);
(._;>;);
out body;

{{style:

node { 
  color:#000000;
  fill-color: #000000
}
area[start_date>=2005]{
  color: #313695;
  fill-color: #313695;
}
area[start_date<2005]{
  color:#4575B4;
  fill-color: #4575B4;
}

(._;>;); sunting

Jika bagian kode ini dihapus, akan muncul error :

"This query returned no nodes. In OSM, only nodes contain coordinates. For example, a way cannot be displayed without its nodes."

Kode ini ditambahkan secara otomatis (menggunakan fitur "repair query" pada Overpass API) untuk menampilkan titik koordinat pada objek "way".