72,000,000 件の観光スポット(Points of Interest)

2026/02/03 1:40

72,000,000 件の観光スポット(Points of Interest)

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

概要:
オーバーチュアは、2026年1月時点で 72 444 739件のレコード を含むグローバルなポイント・オブ・インタレスト(POI)データセットをリリースしました。データは毎月AWS S3に公開され、各リリースには合計約 7.2 GB の複数のParquetファイルが含まれます(例:2026‑01‑21.0 リリースでは8つのファイル)。
近年、オーバーチュアは新しいスキーマフィールドを追加しました:運営状況と信頼度(9月)、基本カテゴリ(10月)、および分類体系(12月)。データセットには 7200万件以上 のPOIが含まれ、住所・ジオメトリ・連絡先情報・ブランド・カテゴリ・信頼スコア・ソーシャルリンクなどの詳細属性が揃っています。

主要統計は次のとおりです:

  • カテゴリ: 「restaurant」(約4.8 M)、「specialty_store」(約2.9 M)と398種類のユニークな基本カテゴリ。
  • 運営状況: 72 443 934件がオープン、785件がクローズ、20件が一時的にクローズ。
  • バージョン: 最も頻繁に使用されるのはバージョン5(ズーム‑5で137 824ヘキサゴン)。バージョンは1から8まで存在。
  • ブランド: 約4 M件がブランド情報を持ち、主要ブランドにはCitibank、Wildberries、Western Union、Shell、およびMcDonald’s(42 K店舗)があります。
  • 分類階層: 例として [food_and_drink, restaurant](約2 M)、[lifestyle_services, beauty_service, beauty_salon](約600k)。
  • 海洋POI: 約29.6 百万件のPOIがオープンオーシャン/シー上に位置し、H3‑6ヘキサゴンはMarine Regionsポリゴンと交差。
  • 信頼度分布: 大多数が0.3–1.0の範囲で、最も頻繁な値は1.0(36 231 092件)。

リリースは60日後に自動的に削除されるため、ユーザーはローカルコピーを最新状態に保つ必要があります。この包括的POIリソースは、ビジネスや開発者が大規模でマッピング・分析・位置情報サービスを提供する際の基盤となります。

本文

Overture Map の Places データセットは、毎月更新とともにリリースされます。

Places は「ポイント・オブ・インタレスト(POI)」です;2024 年 1 月時点で全世界で 7200 万件を超える POI が含まれています。


例 – エストニア、タリン市 Viru Street

各 POI は「主な名前」と「基本カテゴリ」を角括弧で表示し、ポイントの色はその POI の基本カテゴリに対応しています。


最近の改善点

追加プロパティ
9 月
operating_status
,
confidence
10 月
basic_category
12 月
taxonomy

本稿では最新リリース(2026‑01‑21.0)をレビューします。


私のワークステーション

  • CPU: AMD Ryzen 9 9950X、5.7 GHz、16 コア / 32 スレッド
  • キャッシュ: L1 = 1.2 MB, L2 = 16 MB, L3 = 64 MB
  • 冷却: リキッドクーラー。Cooler Master HAF‑700 ケースに収容
  • RAM: 96 GB DDR5 @ 4,800 MT/s
  • ストレージ: Crucial T700 4 TB NVMe M.2 SSD(12,400 MB/s 読み込み)、ヒートシンク付き
  • 電源: Corsair 1,200‑W モジュラー PSU、ASRock X870E Nova‑90 マザーボード
  • OS: Ubuntu 24 LTS を Microsoft の Windows Subsystem for Linux 上で Windows 11 Pro で実行(GPU: NVIDIA GTX 1080 – ドライバサポートが優れており ArcGIS Pro は Windows でのみ動作)

前提ソフトウェアのインストール

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install jq python3-pip python3.12-venv

# Python 仮想環境
python3 -m venv ~/.pois
source ~/.pois/bin/activate

# Parquet デバッグツール
git clone https://github.com/marklit/pqview ~/pqview
pip install -r ~/pqview/requirements.txt

# AWS CLI
pip install awscli

# DuckDB 1.4.3(拡張機能付き)
cd ~
wget -c https://github.com/duckdb/duckdb/releases/download/v1.4.3/duckdb_cli-linux-amd64.zip
unzip -j duckdb_cli-linux-amd64.zip
chmod +x duckdb
./duckdb

# 起動時に拡張機能をロード
.timer on
.width 180
LOAD h3;
LOAD lindel;
LOAD json;
LOAD parquet;
LOAD spatial;

地図は QGIS 3.44(Tile+ と HCMGIS プラグインで Bing/Esri ベースマップ)で描画しました。


Overture の Places をダウンロード

curl https://labs.overturemaps.org/data/releases.json
# 最新: 2026-01-21.0
aws s3 --no-sign-request sync \
    s3://overturemaps-us-west-2/release/2026-01-21.0/theme=places/type=place/ \
    ~/places

8 個の Parquet ファイル、約 7.2 GB。


データフルエンシー

総レコード数: 72,444,739

SELECT COUNT(*) FROM 'places/part*.parquet';
-- 72444739

POI 密度ヒートマップ(H3 zoom‑3)

CREATE OR REPLACE TABLE h3_3_stats AS
    SELECT H3_LATLNG_TO_CELL(bbox.ymin, bbox.xmin, 3) AS h3_3,
           COUNT(*) AS num_pois
    FROM 'places/part*.parquet'
    GROUP BY h3_3;

COPY (
    SELECT ST_ASWKB(H3_CELL_TO_BOUNDARY_WKT(h3_3)::geometry),
           num_pois
    FROM h3_3_stats
    WHERE ST_XMIN(geom) BETWEEN -179 AND 179
      AND ST_XMAX(geom) BETWEEN -179 AND 179
) TO 'num_pois.h3_3_stats.parquet' (FORMAT PARQUET, CODEC ZSTD, COMPRESSION_LEVEL 22, ROW_GROUP_SIZE 15000);

サンプルレコード(チリの Starbucks)

SELECT * EXCLUDE(addresses,bbox,brand,categories,names,taxonomy,sources),
       addresses::JSON AS addresses,
       bbox::JSON      AS bbox,
       brand::JSON     AS brand,
       categories::JSON AS categories,
       names::JSON     AS names,
       taxonomy::JSON  AS taxonomy,
       sources::JSON   AS sources
FROM 'places/part*.parquet'
WHERE brand.names.primary = 'Starbucks'
LIMIT 1;

列ごとの空き容量(ファイル単位)

python3 ~/pqview/main.py types --html places/part-00000-faac29ab-3031-41b7-836a-26e1193347c0-c000.zstd.parquet > places.types.html

ソース

SELECT COUNT(*), a.dataset
FROM (SELECT UNNEST(sources) a FROM 'places/part*.parquet')
GROUP BY dataset ORDER BY 1 DESC;
-- Overture, meta, Foursquare, Microsoft, AllThePlaces, DAC, PinMeTo, RenderSEO, Krick

基本カテゴリ

SELECT COUNT(DISTINCT basic_category) FROM 'places/part*.parquet';
-- 398 種類のユニークカテゴリ

上位 100 件(抜粋):

CountCategory
4,809,112restaurant
2,941,235specialty_store
1,816,052beauty_salon

各 H3 zoom‑3 六角形ごとの最頻カテゴリは、密度ヒートマップと同様に算出しました。


Operating Status

SELECT COUNT(*), operating_status FROM 'places/part*.parquet'
GROUP BY operating_status ORDER BY 1 DESC;
-- open: 72,443,934; closed: 785; temporarily closed: 20

バージョン分布

SELECT version, COUNT(*) FROM 'version.h3_5_stats.parquet'
GROUP BY version ORDER BY 1;
-- 最頻バージョン: 5 (137 824 件)

ブランド名

SELECT COUNT(*), brand.names.primary
FROM 'places/part*.parquet'
GROUP BY brand.names.primary
ORDER BY 1 DESC LIMIT 25;
-- NULL が圧倒的(68 001 883 件);次に Citibank, Wildberries, Western Union 等

タクソノミー階層

SELECT COUNT(*), taxonomy.hierarchy
FROM 'places/part*.parquet'
GROUP BY taxonomy.hierarchy ORDER BY 1 DESC LIMIT 25;
-- 例: [food_and_drink, restaurant], [lifestyle_services, beauty_service, beauty_salon] 等

海上 POI

7 個の Marine Regions GeoPackage ファイルを DuckDB にインポートしました:

CREATE OR REPLACE TABLE marineregions (name VARCHAR, geom GEOMETRY);
INSERT INTO marineregions SELECT name, geom FROM ST_READ('~/marineregions_org/High_Seas_v1.gpkg');
-- 各 GPKG ファイルについて同様に実行

海面上の POI 数:

CREATE OR REPLACE TABLE h3_stats AS
    SELECT H3_LATLNG_TO_CELL(bbox.ymin, bbox.xmin, 6) AS hexagon,
           COUNT(*) AS num_pois
    FROM 'places/part*.parquet'
    GROUP BY hexagon;

SELECT SUM(num_pois)
FROM h3_stats a
JOIN marineregions b ON ST_Overlaps(H3_CELL_TO_BOUNDARY_WKT(a.hexagon)::GEOMETRY, b.geom)
WHERE b.name IS NOT NULL;
-- 29,590,753 POI(約 2,900 万件)が海洋・沿岸に存在

Marine Regions のポリゴンは将来使用のため Parquet にエクスポートしました。


Confidence

SELECT COUNT(*), (confidence*10)::INT/10 AS conf_bucket
FROM 'places/part*.parquet'
GROUP BY conf_bucket ORDER BY 2;
-- 最頻バケット: 1.0(36 231 092 件)

最も一般的な confidence を H3 zoom‑5 と zoom‑3 六角形で可視化したマップを作成しました。


締めくくり

ご覧いただきありがとうございます。北米・ヨーロッパにてコンサルティングおよび実務開発サービスを提供しております。
私のサービスが貴社のお役に立つ方法について話し合いたい場合は、LinkedIn からご連絡ください。

同じ日のほかのニュース

一覧に戻る →

2026/02/08 6:45

小型 C コンパイラ

## Japanese Translation: Tiny C Compiler(TCC)は、非常に小さな(約100 KBのx86実行ファイル)Cコンパイラであり、1回のステップでコンパイル・アセンブル・リンクを行い、バイトコード層なしでネイティブx86マシンコードを生成します。2.4 GHz Pentium IV上では、Links BrowserテストをGCC(20.0 秒)より約10倍速く実行できます(2.27 秒)。これは別のコンパイルステージが不要であるためです。 TCCはISO C99を完全にサポートし、自身をコンパイルでき、任意のC動的ライブラリを直接リンクすることも可能です。完全なプリプロセッサ、GNUスタイルのアセンブラー構文、オプションのメモリと境界チェック機能、さらにはシェバンベースの「Cスクリプト」まで含まれ、コマンドラインから実行できます。libtccライブラリにより、他のプログラムがTCCをランタイムコード生成のバックエンドとして使用できるようになります。 性能テストはPentium IV上で行われました。新しい測定値(参照1–4)では、モダンハードウェアでも速度向上が継続しています。ドキュメント、メールリストサポート、およびSavannah/GitHubリポジトリは最新情報を提供します。 TCCはGNU Lesser General Public License(LGPL)の下で配布されており、商用利用も許可されています。

2026/02/08 8:23

**良質なコードの静かな終焉**

## Japanese Translation: 著者は中学時代から「Good Code™」―読みやすく、保守しやすく、特定の目的を持って存在するコード――を書き続けることに情熱を注いできました。機能提供に重点を置くソフトウェアエンジニアとして、彼は今日の高速開発環境で良いコードがますます希少になっていると感じています。 同僚の経験はこの状況をよく示しています。外部Linuxカーネル統合システムをCからRustへ書き換えた後、最初のバージョンは機能していたものの読みづらく保守が困難でした。原始的なCロジックを学習した上で再度書き直すと、コードはクリーンになり、自明であり、元のCよりも優れていると言えるようになりました。この経験が著者に品質コードへの熱意を再燃させました。 現在、彼はほとんどの場合初期バージョンを書かず、代わりに「Good Code™」ではなく許容できるものを生成するコーディングエージェントに頼っています。このようなツールへの継続的な依存が個々の行レベルでの品質への注意を薄め、業界実務におけるGood Codeの静かな消滅を招くと彼は恐れています。コード品質が低下すると保守コストや技術的負債が増大し、開発者の生産性、製品の信頼性、そして最終的には企業から提供されるソフトウェアへのユーザーの信頼まで損なわれます。

2026/02/08 2:39

**セクターC:512バイトで実装されたCコンパイラ**

## Japanese Translation: SectorCは、x86‑16アセンブリで完全に書かれたCコンパイラで、単一の512バイトのブートセクタに収まります。Ultra‑compactなトークン化スキーム「Barely C」を使用しており、各スペース区切り語を「メガトークン」とみなし、`atoi()`で識別子をハッシュし64Kテーブルに格納します。変数はこのハッシュを通じてセグメント0x3000に保存されます。最初のBarely C実装は468バイトで、シンボルテーブルなしの再帰下降パーサーでした。バイトスレッド化されたForth風の変種も試みられましたが、サイズをさらに削減することはできませんでした。 最終的なコンパイラはわずか **303 バイト** です。サイズは、フォールスルーロジック、テイルコール、コールフュージョン、`lodsw/stosw`の広範な使用、およびすべてのジャンプオフセットを1バイト内に収めるなどの手法で削減されました。残り約200バイトでBarely Cは完全なCサポートへと拡張されました:ネストされたif/whileブロック、包括的な演算子集合(+, −, *, &, |, ^, <<, >>, ==, !=, <, >, <=, >=)、ハッシュテーブルを介した関数定義と再帰、インライン`asm`ステートメント、および単一行(`//`)と複数行(`/* */`)コメントの両方が実装されました。 コンパイラのランタイムは `rt/` ディレクトリ内の2つのCファイルに分かれています:ライブラリルーチン(多くの場合インラインasmを含む)を持つ `lib.c` とエントリポイントとして機能する `_start.c` です。これらはプログラムソースと結合してからコンパイルされます。記事には、全ブートセクタのBase64文字列、VGAモード0x13hで動くサイン波を描画するデモ、および追加例(`hello.c` はビデオメモリ0xB8000に書き込み、`twinkle.c` はPCスピーカーで「Twinkle Twinkle Little Star」を再生)が含まれています。この作業は、512バイトという一見不可能な目標—完全機能のCコンパイラを実現すること—が、創造的なトークン化、ハッシュ化、および積極的なコードサイズ最適化によって達成できることを示しています。