Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Non-mercator Projection with Mapnik
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Tak Yanagida
November 01, 2014
Programming
1
1.2k
Non-mercator Projection with Mapnik
地図投影法の概要と、Mapnikによるベクタデータの非メルカトル図法でのレンダリング
FOSS4G Tokyo 2014で発表した資料です。
Tak Yanagida
November 01, 2014
Tweet
Share
More Decks by Tak Yanagida
See All by Tak Yanagida
How much we have to study English?
tyanagida
0
120
Functional Programming Applied in JS
tyanagida
0
110
Brief Introduction of jQuery Mobile
tyanagida
0
130
PowerShell for LL Users
tyanagida
0
1.2k
Other Decks in Programming
See All in Programming
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
130
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
380
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
370
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
200
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
140
Grafana:建立系統全知視角的捷徑
blueswen
0
330
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.4k
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
140
Oxlint JS plugins
kazupon
1
980
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
1
110
Featured
See All Featured
Making Projects Easy
brettharned
120
6.6k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
3.9k
Rails Girls Zürich Keynote
gr2m
96
14k
BBQ
matthewcrist
89
10k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
320
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
66
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
230
How STYLIGHT went responsive
nonsquared
100
6k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
How GitHub (no longer) Works
holman
316
140k
Transcript
Non-mercator projection with Mapnik (株) オンターゲット 柳田 岳洋 @tyanagida FOSS4Gで2地点比較地図を作る方法
地図投影法の概要と、 Mapnikによるベクタデータの 非メルカトル図法でのレンダリング
自己紹介 • お好みダムサーチ公開中 (Japanese Dam Finder) http://maps.ontarget.cc/dams/ • 本業はWebアプリ開発と、 新規Webサービスのコンサルティング
きっかけ / Motivation • Twitterでこの画像が話題になっていた • 投影法、なに使ってるの? • 切り張りして重ねていいの? *当画像の原典は検索したが確認でき
ず。数多く転載されている中から、 http://ameblo.jp/colonic4/entry- 11596544945.html より引用。 まずは投影法のお勉強
投影法: 形による分類 (Map Projection Basics) 円筒図法 円錐図法 方位図法
投影法: 性質による分類 • 投影法について詳しくは、 「地図投影法」(政春尋志, 朝倉書店, 2011)参照 http://amzn.to/1zPWM6I 名前 性質
正積 面積が正しい 正角 角度が正しい 正距 距離が正しい 任意の場所で 微小範囲で 特定条件で (例: 中心から任意の点) 風向は正しく描ける。 長距離の方位は正しくない。 “ただし”
投影法の検討 • 2地点を同条件で描画したい • 距離と面積の両方を比較したい • 2地点をそれぞれ、同一条 件の方位図法で投影 • 正距と正積の2種類を作成
(Decided to go with Azimuthal projection, Both equal-area and equidistant)
元データ選定 (Choosing Source Data) • ベクターデータが必要 • できれば世界をカバーしているもの • (とりあえず)データ量が手軽なもの
• Natural Earthを使用 http://www.naturalearthdata.com Public Domain 複数のシェープファイル 全データでもzipすれば300MB弱 *上記でうまくダウンロードできない場合は、GitHubからもダウンロード可能 https://github.com/nvkelso/natural-earth-vector
投影ツールの選定 • スクリプト言語(Python他)で操作できる • 対応している投影法が多い 等距離円など、計算した データを重ねたいから 色々な投影法で見比べ てみたかったから •
Mapnikを採用 OSMのレンダリングや、TileMillのバックエンドで使われ ていて実績十分 Pythonから呼び出すAPIあり 投影変換には定番のPROJ.4ライブラリを使用 • 他には、MapServer(shp2img)、GMT、d3.geo なども検討
Mapnikの使い方 • Ubuntu用に、Mapnik公式バイナリあり • 自分は仮想マシン内で使用 いわゆるDOS/Vマシン Windows7 VirtualBox Ubuntu12.04 •
Python用公式Introductionをたどると、 Natural Earthを無投影した画像ができる Python初心者でもOK 簡単!
ここから意外と難しい • OSMで使われている割に、情報が少ない • ドキュメントやAPIがイマイチ整理されてない 英語はもちろん、ときにはソースのC++も読む • zoom()とpan()があるけど、zoom_to_box()してからでないと 動作保証されない •
CSVはファイルからも配列からも読み込めるが、GeoJSONは ファイルからしか読み込めない (WKTを使って解決) • 正しいGeoJSONでもエラーになることがある (属性の順序に隠れた制約あり) 自分がハマった例 自助努力重要! GitHubのIssueやWikiに 少し投稿しました
Mapnikの重要な概念 • 3種類の座標がある 経緯度 投影面座標 画面座標 zoom_to_box() zoom() pan() たいてい巨大
(1000万とか) PROJ.4を使っている ツールは、たぶん同じ forward() inverse() 描画範囲 (envelope) 関数名 ちょっとハマった
投影法の指定方法 • PROJ.4は投影変換のデファクト。QGIS他、ほ とんどのFOSS4Gツールで採用されている • 投影法の指定は、長い文字列 +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0
+lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs • 「投影法名 proj4」でWeb検索するのが速い +proj=laea +lat_0=中心緯度 +lon_0=中心経度 +x_0=0 +y_0=0 • Lambert Azimuthal Equal Area 「ランベルト正積 方位図法」の英語名 例:Webメルカトル図法の場合
等距離円の描画 / Drawing equidistant circle • 地図上で、円になるとは限らない • 中心から、いろいろな方向に、一定距離進ん だ点の集合を描画する
• “Geodesic問題”を解けば良い • GeographicLibを使って、90角形を描画 • 他に、PROJ.4付属のgeodが使えるかも http://geographiclib.sourceforge.net/ 方位線も、同様に GeographicLibで描画
完成した図 ランベルト正積方位図法 (Lambert Azimuthal Equal Area) Webメルカトル図法 (Web Mercator) •
等距離円は、内側から50km, 100km, 200km • 左図:この範囲・解像度だと、正積・正距方位図法はまったく 同一画像になった • 右図:破線は本州に対する等距離円、実線は北海道に対す るもの
• 任意の場所を中心に、方位図法で比較して みたい • 試作第1弾として「どこでも方位図法」公開 (“Azimuthal Map, Anywhere”) 水曜に公開したばかり
Mapnikではなく、d3.jsを使用 今後の展開 (To be continued) • 北海道と本州程度の緯度差でも、メルカトル 図法では誤差が大きいことが確認できた http://maps.ontarget.cc/azmap/