建立圖磚
Overture 主要以 GeoParquet 格式 發佈。雖然 GeoParquet 是一種緊湊的格式,但圖磚對於創建可平移、可縮放的 slippy 地圖以供網頁顯示至關重要。
- 資料被分解成等尺寸的方形塊(圖磚),以便只載入可見的資料。
- 圖磚按照詳細程度排列成金字塔,以實現縮小的預覽。
GitHub 上的 overture-tiles
overture-tiles GitHub 儲存庫 包含了從 Overture 資料生成圖磚集的腳本和程式。這些圖磚集設計用於像在 explore.overturemaps.org 進行的 "X-ray" 視覺化,以協助檢查幾何和屬性。它們並不設計為一個可用於生產的製圖底圖。
每個 Overture 主題都作為單獨的 PMTiles 存檔儲存。
單個圖磚包含在開放的 MVT 矢量圖磚格式中的幾何和標籤。
存取圖磚
Overture 圖磚在每次發行時生成。目前的測試版圖磚發佈於以下網址:
s3://overturemaps-tiles-us-west-2-beta/RELEASE/THEME.pmtiles
這些公共 S3 URL 也可以通過 HTTP 訪問:
https://overturemaps-tiles-us-west-2-beta.s3.amazonaws.com/RELEASE/THEME.pmtiles
查看圖磚
本地和遠端 HTTP URL 可以在 pmtiles.io 預覽。
在 pmtiles.io 上查看 2024-07-22/places.pmtiles
區域取樣
要為世界的某個部分創建新的圖磚集,請使用 pmtiles
CLI 的 extract
指令。
要獲取比利時根特周圍的所有 建築物
圖磚:
pmtiles extract https://overturemaps-tiles-us-west-2-beta.s3.amazonaws.com/2024-07-22/buildings.pmtiles ghent.pmtiles --bbox=3.660507,51.004250,3.784790,51.065996
在 AWS 上
overture-tiles
腳本可以與 AWS Batch 一起自動化,使用 c7gd.16xlarge
型號的 EC2 實例按需生成全球最大圖磚集,大約需要 90 分鐘。產生的費用包括按需實例、S3 存儲和交易成本。
需要事先設定的環境
- AWS CLI
- AWS Cloud Development Kit (CDK)
npm install -g aws-cdk
- Docker 桌面版
設定
-
修改
bin/overture-tiles-cdk.ts
,指定不同的 S3 儲存貯體名稱。 -
從
overture-tiles-cdk
儲存庫運行:
npm run cdk bootstrap
npm run cdk deploy
- 在網頁控制台中使用 AWS 彈性容器註冊表 (ECR) 認證 Docker 客戶端。使用 View Push Commands 生成
overture-tiles
儲存庫中的Dockerfile
,並推送至 ECR:
- 從 AWS Batch console 提交作業。
-
選擇可用的 Job Definitions 。每個定義與 Overture 發布版本中的一個版本和主題相關聯。
-
選擇 OvertureTilesQueue 作為工作佇列。
-
工作完成後,可在
s3://BUCKET_NAME/RELEASE/THEME.pmtiles
拿到圖磚集。
在本地工作站
環境需求
- Java Runtime Environment 版本 22+,用於生成
addresses
、base
、buildings
和transportation
主題,以及來自 onthegomap/planetiler Releases 的planetiler.jar
。 - felt/tippecanoe 工具和 DuckDB CLI 用於其他主題。
- AWS CLI 用於下載 Overture 資料。
Scripts
-
使用 這些文檔 將 Overture Parquet 資料集複製到您的本地機器。如果您只想運行一個小樣本資料,可以僅使用目錄中的第一個
.parquet
文件,而不是全部。 -
對於
base
、buildings
和transportation
主題,使用 Java 生成圖磚集:
# --data indicates where your Overture data is (overture/theme=base/...)
java -cp planetiler.jar profiles/Base.java --data=overture
上述命令會在 data
目錄中輸出 base.pmtiles
。
- 對於其他主題,運行
themes/
中的主題腳本:
scripts/2024-07-22/places.sh overture places.pmtiles
這個命令從 overture
讀取 Overture 數據,並將結果寫進 places.pmtiles
。
自訂
Overture 發布的圖磚集主要用於 explore.overturemaps.org。對於您自己的應用,您可能希望:
- 限制或修改每個特徵的屬性,以減少圖磚大小。
- 更改在較低縮放級別中包含的特徵或 屬性。
在這些範例中,在boston/
文件夾中處理波士頓的一個小區域提取,但所有平鋪方法都可以延伸到完整資料集。
mkdir -p boston/theme=buildings/type=building
mkdir -p boston/theme=places/type=place
overturemaps download --bbox=-71.068,42.353,-71.058,42.363 -f geoparquet --type=building -o boston/theme=buildings/type=building/0.geoparquet
overturemaps download --bbox=-71.068,42.353,-71.058,42.363 -f geoparquet --type=place -o boston/theme=places/type=place/0.geoparquet
範例: 地點
默認的 places.sh
腳本包括所有 Overture 屬性,以幫助檢查。如果想要減小圖磚大小,可以刪除 @name
欄位中的所有主要名稱。
請修改 places.sh 以配合您的 Overture 資料公開版本:
...
json_object(
'id', id,
'@name', json_extract_string(names, '$.primary')
) AS properties,
...
./scripts/2024-07-22/places.sh boston boston_places.pmtiles
檢查在 pmtiles.io 上創建的 boston_places.pmtiles
以查看簡化過的屬性:
範例:建築
為了減少圖磚的大小,預設的建築腳本僅在縮放級別 13 上包含所有屬性。您的應用程式可能需要在更低的縮放級別上獲取這些資料。
請修改 profile/Buildings.java
以便在縮放級別 12 上填充所有 Overture 屬性,而不是在縮放級別 13 上:
...
OvertureProfile.addFullTags(source, polygon, 12);
...
java -cp planetiler.jar profiles/Buildings.java --data=boston
檢查在 pmtiles.io 上創建的 data/buildings.pmtiles
以查看在縮放級別 12 上的額外屬性: