SlideShare a Scribd company logo
pgGeocoderのご紹介
2021/12/04(土) FOSS4G Japan 2021 Online

合同会社Georepublic Japan 長瀬 興
自己紹介
名前: Ko Nagase
仕事: 合同会社Georepublic Japan - 開発者
主に既存システムのメンテナンス担当
ここ数年はRedmine関連システムのメンテナンス・開発を担当
コミュニティ活動:
Redmineパッチ会、redmine.tokyoに参加
redmine.tokyo 第20回勉強会LT発表資料
GitHub: @sanak
最近の活動は、主にGTT Project 関連
Twitter: @geosanak (※ROM専です…)
趣味: ポケモンGO (青TL50、※最近サボり気味…)
合同会社Georepublic Japan
位置情報テクノロジー企業
URL: https://georepublic.info/ja/
FOSS4G・OSMなどに強い技術者・開発者が複数在籍
OSGeo日本支部の団体会員
所在地:
東京オフィス: SENQ霞が関
神戸オフィス: 摂津本山駅近く
お仕事募集中です
My City Report for Citizens
URL: https://www.mycityreport.jp
まちで見つけた「こまった」を、市民と自治体で

簡単に共有することができるサービス
サーバはAWS上で稼働し、ジオコーダサーバの内部で
pgGeocoder を利用
最近の住所・ジオコーダ関連の話題
2020/05/28 経産省がIMIコンポーネントツールで住所変換コンポーネントを公開
2020/06/01 GeoloniaがCommunity Geocoder を公開(Geolonia blog)
2021/03/02 Geoloniaが住所API をGitHub Pagesで公開(Geolonia blog)
2021/03/28 Geoloniaが住所正規化用のNodeモジュールを公開(Geolonia blog)
2021/05/20 Geoloniaがオープンソースの逆ジオコーダをベクトルタイルで作成(Geolonia blog)
2021/05/31 政府CIOポータルがベース・レジストリに関するディスカッションペーパー を公開
2021/06/01 AWSがAmazon Location Service をリリース
2021/12/01 Geoloniaが日本の住所におけるデジタル化の課題をまとめたホワイトペーパーを無料公開
(Geolonia プレスリリース)
その他、OSM-ja MLでの住所表記に関するディスカッションなど…
実はGeorepublic内で古くから使われていたジオコーダ(pgGeocoder)が…!
アジェンダ
pgGeocoderとは
pgGeocoderの仕組み
逆ジオコーディング時の課題
位置参照情報のデータ読み込みスクリプト対応
逆ジオコーディングの改善
その他の改善
今後の課題・展望
pgGeocoderとは(1/3)
GeorepublicメンバーのMarioさん
(GitHub:@mbasa)が、2010年11月、Georepublic入
社前に開発した、PostgreSQL/PostGISベースのオー
プンソースの日本の住所ジオコーダ・逆ジオコーダ
URL: https://github.com/mbasa/pgGeocoder
ライセンス: GPL v2
pgGeocoderとは(2/3)
基準となる住所データは、国土交通省の位置参照情
報(ISJ)の街区レベル、大字・町丁目レベルデータ(ポ
イント形式のCSVファイル)を使用
URL: http://nlftp.mlit.go.jp/isj/index.html
pgGeocoderとは(3/3)
PostGISやpgRoutingのようなPostgreSQLの拡張機
能(EXTENSION)でなく、テーブル定義、戻り値型定
義、PL/pgSQL関数
( geocoder / reverse_geocoder )定義、インデッ
クス作成などのメンテナンス定義のみのシンプルな
構成
PostGISさえあれば、ホスティングされた
PostgreSQL(AWS RDSや、GCP Cloud SQLなど)
上でも動作可能
インターフェースは psql やJDBCドライバなどに
よるSQL操作のみ
※Web APIサービスとして動作させる場合は、別
途開発が必要
例:
1. psql でデータベースに接続:
$ psql -U postgres addresses
2. geocoder 関数を呼び出し:
3. 結果:
SELECT * FROM geocoder('神奈川県横浜市西区みなとみらい3−6−3
code | x | y | address
------+------------+-----------+-------------------------
2 | 139.632805 | 35.458282 | 神奈川県横浜市西区みなとみら
(1 row)
` ` ` `
` `
` `
` `
pgGeocoderの仕組み(1/7)
位置参照情報(ISJ)の街区レベル、大字・町丁目レベルデータ(ポイント形式のCSVファイル)を、街区
( address )テーブル、大字( address_o )テーブルに読み込み
街区(address)テーブル
カラム名 型 備考
todofuken varchar(60) 都道府県名
shikuchoson varchar(60) 市区町村名
ooaza varchar(60) 大字・丁目+ 小字・通称名
chiban varchar(60) 街区符号・地番
lat float 緯度
lon float 経度
大字(address_o)テーブル
カラム名 型 備考
todofuken varchar(60) 都道府県名
shikuchoson varchar(60) 市区町村名
ooaza varchar(60) 大字町丁目名
tr_ooaza varchar(60) 正規化した大字町丁目名
lat float 緯度
lon float 経度
` ` ` `
pgGeocoderの仕組み(2/7)
大字( address_o )テーブルから、市区町村名・都道府県名でのGROUP BY句を使用して、上位の市区町村
( address_s )テーブル、都道府県( address_t )テーブルにデータを取り込み
緯度・経度については、各市区町村・都道府県の緯度・経度の重心
( ST_Centroid(ST_Union(ST_MakePoint(lon, lat))) )で代用
市区町村(address_s)テーブル
カラム名 型 備考
todofuken varchar(60) 都道府県名
shikuchoson varchar(60) 市区町村名
lat float 緯度
lon float 経度
都道府県(address_t)テーブル
カラム名 型 備考
todofuken varchar(60) 都道府県名
lat float 緯度
lon float 経度
ttable varchar(40) 街区テーブル名( address )を指定
` `
` ` ` `
` `
` `
pgGeocoderの仕組み(3/7)
データ取り込み・設定が完了したら、各テーブルにインデックスを作成
街区( address )テーブルに、Point型のジオグラフィカラムを追加し、緯度( lat )・経度( lon )から値を
設定
大字( address_o )テーブルの ooaza カラムの値に対して、 normalizeAddr 関数で正規化を行い、結
果を tr_ooaza カラムに設定
UPDATE address_o SET tr_ooaza = normalizeAddr(ooaza);
正規化は、PostgreSQLの translate 関数を使用して全角数値漢数字を半角英数値に変換したり、北海
道の条の対応なども含まれる
CREATE OR REPLACE FUNCTION normalizeAddr(character varying)
RETURNS varchar AS $$
:
address := translate(paddress,
'ヶケ−-ーの1234567890一二三四五六七八九十丁目',
'kk----1234567890123456789X-');
:
` ` ` ` ` `
` ` ` ` ` `
` `
` `
pgGeocoderの仕組み(4/7)
住所ジオコーディング( geocoder 関数)実行時のフロー
コード箇所: https://github.com/mbasa/pgGeocoder/blob/master/sql/pgGeocoder.sql#L75-L107
-- 都道府県テーブルから前方一致検索
output := searchTodofuken( address );
IF output.address <> 'なし' THEN
output.code := matching_todofuken;
-- マッチしたら、都道府県名を除いて、市区町村テーブルから前方一致検索
gc := searchShikuchoson( address,output.todofuken);
ELSE
output.code := matching_nomatch;
-- マッチしなければ、市区町村テーブルから前方一致検索
gc := searchShikuchoson( address,'');
END IF;
IF gc.address <> 'なし' THEN
output := gc;
output.code := matching_shikuchoson;
-- マッチしたら、都道府県名・市区町村名を除いて、大字テーブルから
-- 正規化した状態で部分一致検索
gc := searchOoaza( address,output.todofuken,output.shikuch
:
RETURN output;
END IF;
IF gc.address <> 'なし' THEN
output := gc;
output.code := matching_ooaza;
-- マッチしたら、都道府県名・市区町村名・大字名を除いて、街区テーブル
-- 正規化した状態で完全一致検索
gc := searchChiban( address,output.todofuken,output.shikuc
output.ooaza );
ELSE
RETURN output;
END IF;
IF gc.address <> 'なし' THEN
output := gc;
output.code := matching_chiban;
END IF;
` `
pgGeocoderの仕組み(5/7)
逆ジオコーディング( reverse_geocoder 関数)実行時の内部処理
コード箇所: https://github.com/mbasa/pgGeocoder/blob/master/sql/pgReverseGeocoder.sql#L79-L85
:
-- 街区(address)テーブルから、指定した緯度・経度に最も近いものを、指定距離(デフォルト:50m)内から検索
SELECT INTO record todofuken, shikuchoson, ooaza, chiban,
lon, lat,
todofuken||shikuchoson||ooaza||chiban AS address,
st_distance(st_setsrid(st_makepoint( mLon,mLat),4326)::geography,geog) AS dist
FROM address
WHERE st_dwithin(st_setsrid(st_makepoint(mLon,mLat),4326)::geography,geog,mDist)
ORDER BY dist LIMIT 1;
:
実行例:
SELECT * FROM reverse_geocoder(141.342094, 43.050264);
code | x | y | address | todofuken | shikuchoson | ooaza | chiban
------+------------+-----------+----------------------------------+-----------+-------------+---------------+--------
1 | 141.342094 | 43.050264 | 北海道札幌市中央区南七条西十一丁目1281 | 北海道 | 札幌市中央区 | 南七条西十一丁目 | 1281
(1 row)
` `
pgGeocoderの仕組み(6/7)
最近の話題として、今年6月に京都の通り名の住所ジオコーディングにも対応
コミット差分:
https://github.com/mbasa/pgGeocoder/commit/79c8884122f7435de8c5cd83b7c50538c791e5ef
実行例:
SELECT * FROM geocoder('京都府京都市中京区河原町通四条上る米屋町380-1ツジクラビル1階');
code | x | y | address | todofuken | shikuchoson | ooaza | chiban | go
------+------------+----------+---------------------------+-----------+-------------+-------+--------+----
2 | 135.769651 | 35.00449 | 京都府京都市中京区米屋町380番 | 京都府 | 京都市中京区 | 米屋町 | 380 |
(1 row)
pgGeocoderの仕組み(7/7)
その他、pgGeocoderの特徴として、バルク(一括の)ジオコーディングも可能
Wikiリンク: https://github.com/mbasa/pgGeocoder/wiki/bulk_geocoding
逆ジオコーディング時の課題(1/5)
和歌山県の山間部で逆ジオコーディングができない問題

https://github.com/gtt-project/pgGeocoder/issues/2
街区( address )テーブルの住所データ(図内赤丸)が
存在するのは都市部のみで、山間部は大字
( address_o )テーブルの住所データ(図内青丸)に対
して最近傍探索する必要がある
ただし、大字データを利用しても、奈良県境界付近
では、探索範囲(バッファ)を多めに取る必要が出て
くる
` `
` `
逆ジオコーディング時の課題(2/5)
街区・大字のポイントに対して最近傍探索を行って
いることが原因なので、e-Statの国勢調査町丁・字
等別境界データを利用したポイント-イン-ポリゴン
探索を行えば、問題は解決しそう
e-Stat境界データを別テーブルに取り込んで、街区
( address )・大字( address_o )テーブルへの参照
を持つカラムを追加し、マッチングすれば解決?
` ` ` `
逆ジオコーディング時の課題(3/5)
逆ジオコーディング時の課題(4/5)
e-Statサイトのデータ定義情報/ダウンロードデータについてを良く読むと…
1. 品質等

本システムで利用できる町丁・字等境界データについては、統計関連業務等のために作成されたもので、一般的な地域境界や行政区域と
は必ずしも一致していません。このため、同境界データを利用される方は、自らの責任で利用目的に適合しているかを判断してくださ
い。
境界データについての注意事項
1. 国勢調査の町丁・字等境界データは、地方公共団体が調査を実施する際に設定した調査区の境界を基に作成しているため、住居表示等で
用いられている実際の町丁・字の境界と一致しない場合があります。また、町丁・字の名称についても、一致しない場合があります。
2. 一つの市区町村内に同一の町丁・字番号を持つ境域が複数存在する場合があり、このような場合には、重複フラグを付与し、識別できる
ようにしています。
3. 町丁・字等の面積は、町丁・字等の境界データの図郭により算出したものであり、市区町村内のすべての町丁・字等の総計は、国土地理
院等の公式な面積と一致しません。
4. 都道府県の境界線は、接合処理を行っていないため、都道府県をまたがって市区町村を接合した場合には、都道府県の境界線にずれが生
じる場合があります。
5. 他県の飛び地の境域が市区町村に含まれる場合は、当該飛び地の境域情報も含まれます。また、水面調査区*がある場合には、同様に水面
調査区の情報も含まれます。
逆ジオコーディング時の課題(5/5)
e-Stat境界データと位置参照情報データのマッチン
グは断念…
e-Stat境界データのみの逆ジオコーディングの改善
は諦め、フォールバック先として、国土数値情報の
行政区域(市区町村単位)も組み合わせることに。
位置参照情報のデータ読み込みスクリプト対応(1/2)
(注)ここから先は、MyCityReport用にランドマーク(目標物)検索に対応していたGTT Project 側でのフォー
クリポジトリ上で対応を進めることに
URL: https://github.com/gtt-project/pgGeocoder
位置参照情報のデータ読み込みスクリプト対応(2/2)
社内にあったナレッジベース(Redmine Wiki)や、IMIコンポーネントの住所変換コンポーネントのbash形式
ダウンロードスクリプトを参考
基本SQLを整理(ジオグラフィカラムをテーブル作成時に追加など)し、bash形式スクリプトで基本データ構
築を可能に
内部的には、位置参照情報の各都道府県の街区、大字・町丁目レベルCSVを一旦、 isj スキーマ内のテ
ーブルに保存後、pgGeocoder側の各 address(_*) テーブルに反映
$ cp .env.example .env
$ createdb -U postgres addresses
$ bash scripts/install.sh
$ bash scripts/download_isj.sh 2020
$ bash scripts/import_isj.sh 2020
# インデックス作成、最適化(VACUUM FULL)を実行(20~30分程度時間がかかる)
$ bash scripts/maintenance.sh
` `
` `
逆ジオコーディングの改善(1/4)
e-Stat境界データ、国土数値情報の行政区域データの格納先として、それぞれ大字境界( boundary_o )テー
ブル、市区町村境界( boundary_s )テーブルを作成
大字境界(boundary_o)テーブル
カラム名 型 備考
todofuken varchar(60) 都道府県名
shikuchoson varchar(60) 市区町村名
ooaza varchar(60) 町丁・字名
code varchar(12) 図形と集計データのリンクコード
( KEY_CODE )
geom geometry ポリゴン(MultiPolygon)
市区町村境界(boundary_s)テーブル
カラム名 型 備考
todofuken varchar(60) 都道府県名
shikuchoson varchar(60) 市区町村名
code varchar(5) 行政区域コード( N03_007 )
geom geometry ポリゴン(MultiPolygon)
` `
` `
` `
` `
逆ジオコーディングの改善(2/4)
位置参照情報と同様に、e-Stat境界データと国土数値情報(行政区域)のシェープファイルをダウンロード
後、GDALの ogr2ogr コマンドでPostgreSQLで読み込める PGDump 形式に保存し、 estat ・ ksj の
各スキーマ内のテーブルに保存後、pgGeocoder側の各 boundary_* テーブルに反映
逆ジオコーディング( reverse_geocoder 関数)実行時の内部処理を、境界データを考慮したものに変更
コード箇所: https://github.com/gtt-
project/pgGeocoder/blob/gtt/master/sql/pgReverseGeocoder.sql#L72-L121
s_flag := FALSE; -- 市区町村境界フォールバックフラグ
SELECT INTO point st_setsrid(st_makepoint(mLon,mLat),4326);
-- 指定した緯度・経度にかかる大字境界ポリゴンを検索
SELECT INTO o_bdry geom FROM boundary_o WHERE st_intersects(point,geom);
IF FOUND THEN
-- 大字境界ポリゴンが見つかれば、その中に含まれる位置参照情報の街区ポイントを指定距離(デフォルト:50m)内から検索
SELECT INTO record todofuken, shikuchoson, ooaza, chiban,
lon, lat,
todofuken||shikuchoson||ooaza||chiban AS address,
st_distance(point::geography,geog) AS dist
FROM address
WHERE st_intersects(geog,o_bdry.geom::geography) AND st_dwithin(point::geography,geog,mDist)
` ` ` ` ` ` ` `
` `
` `
逆ジオコーディングの改善(3/4)
IF FOUND THEN
-- 大字境界ポリゴン内で条件に合う街区ポイントがあれば返却
RETURN mk_geores(record, 1);
ELSE
-- 街区ポイントがなければ、大字ポイントから同様に検索
SELECT INTO record todofuken, shikuchoson, ooaza, NULL::varchar as chiban,
lon, lat,
todofuken||shikuchoson||ooaza AS address,
st_distance(point::geography,geog) AS dist
FROM address_o
WHERE st_intersects(geog,o_bdry.geom::geography)
ORDER BY dist LIMIT 1;
IF FOUND THEN
RETURN mk_geores(record, 2);
ELSE
-- 大字境界ポリゴン内で大字ポイントも見つからなければ、市区町村境界フォールバックフラグをONに設定
s_flag := TRUE;
END IF;
END IF;
ELSE
-- 都道府県境界などで大字境界ポリゴンが見つからない場合も、市区町村境界フォールバックフラグをONに設定
s_flag := TRUE;
逆ジオコーディングの改善(4/4)
IF s_flag THEN
-- 指定した緯度・経度にかかる市区町村境界ポリゴンを検索
SELECT INTO s_bdry geom FROM boundary_s WHERE st_intersects(point,geom);
IF FOUND THEN
-- 市区町村境界ポリゴンが見つかれば、その中に含まれる市区町村ポイントを検索
SELECT INTO record todofuken, shikuchoson, NULL::varchar as ooaza, NULL::varchar as chiban,
lon, lat,
todofuken||shikuchoson AS address, 0 AS dist
FROM address_s AS a
WHERE st_intersects(a.geog, s_bdry.geom::geography);
IF FOUND THEN
-- 市区町村境界ポリゴン内で条件に合う市区町村ポイントがあれば返却
RETURN mk_geores(record, 3);
ELSE
RETURN NULL;
END IF;
ELSE
RETURN NULL;
END IF;
END IF;
その他の改善
国土数値情報の市区町村役場、国・都道府県の機関データによる、市区町村・都道府県の結果緯度・経度の
補正
位置参照情報の大字ポイントの重心を返していたところを、市区町村役場、都道府県庁の位置を返すよ
う修正
位置参照情報のみでは不足していた、政令指定都市の市レベルの情報を、国土数値情報の市区町村役場デー
タから補完
政令指定都市で、区名まで含めないと市区町村レベルでマッチしなかった問題を、市名まででもマッチ
可能に(例: 神奈川県横浜市 )
MyCityReportで対応していたランドマーク(目標物)検索データを、CSVファイルから読み込めるよう対応
` `
今後の課題・展望
課題:
Docker環境への対応
テストコードの追加
大字境界ポリゴン、市区町村境界ポリゴンの、トポロジを維持した簡素化
ランドマーク(目標物)検索データとしての、国土数値情報の各種ポイントデータの取り込み
郵便番号検索への対応
BBOXでのフィルタリングによる高速化検討
展望:
複数データソース(位置参照情報、国土数値情報、e-Stat境界データなど)を同一データベース内に格納
し、SQLクエリで照合できることで、各住所データ自体に誤りがあった場合にそれを検知し、データ提
供元(国交省、総務省など)に還元できる仕組みができると良いかも
Geolonia様で取り組まれている各種ジオコーディング関連のOSSプロジェクトとで、言語の違い
(JavaScript <=> (PL/pg)SQL)はあっても、何らかのコラボレーションができると良いかも
ご清聴ありがとうございました
GitHub: (スター・フィードバックお待ちしております!)
本家(@mbasa): https://github.com/mbasa/pgGeocoder
GTT(@gtt-project): https://github.com/gtt-project/pgGeocoder
Email:
個人: nagase@georepublic.co.jp
会社: info@georepublic.co.jp

More Related Content

PDF
Gui自動テストツール基本
PDF
A5 SQL Mk-2の便利な機能をお教えします
PDF
勉強会カンファレンス2012
PDF
SharePointリストのフォームのカスタマイズを利用したときにハマること
PDF
時系列分析入門
PDF
ガチ(?)対決!OSSのジョブ管理ツール
PDF
老害について
PDF
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
Gui自動テストツール基本
A5 SQL Mk-2の便利な機能をお教えします
勉強会カンファレンス2012
SharePointリストのフォームのカスタマイズを利用したときにハマること
時系列分析入門
ガチ(?)対決!OSSのジョブ管理ツール
老害について
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy

What's hot (20)

PDF
データベースエンジニアがデータヘルスの2年間で見たもの(仮)
PPTX
面白いセキュリティツール
PDF
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
PPTX
金融予測アルゴリズムのより良い評価手法について
PDF
2015年度GPGPU実践プログラミング 第8回 総和計算(高度な最適化)
PPTX
Leak canaryで メモリリーク調査
PDF
QGIS講習会【印刷編】
PDF
Cogbot_AzureOpenAIServices_AzureAI_20230302.pdf
PDF
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
PDF
Rで潜在ランク分析
PPTX
え?まだフルスクラッチで開発してるの!?Power Platform をフル活用すると普通にシステムができるんですよ
PDF
有意性と効果量について しっかり考えてみよう
PDF
学習係数
PPTX
[DL輪読会]Flow-based Deep Generative Models
PDF
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
PDF
プロダクトに貢献する~テスト計画コンシェルジュとリリース高速化で品質向上を牽引する~
PDF
私にとってのテスト
PDF
20201008 AWS独自設計推論チップInferentiaとInf1インスタンス
PPTX
『RUNNING LEAN』を大学生向けにまとめた
PDF
Bitcoinを技術的に理解する
データベースエンジニアがデータヘルスの2年間で見たもの(仮)
面白いセキュリティツール
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
金融予測アルゴリズムのより良い評価手法について
2015年度GPGPU実践プログラミング 第8回 総和計算(高度な最適化)
Leak canaryで メモリリーク調査
QGIS講習会【印刷編】
Cogbot_AzureOpenAIServices_AzureAI_20230302.pdf
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
Rで潜在ランク分析
え?まだフルスクラッチで開発してるの!?Power Platform をフル活用すると普通にシステムができるんですよ
有意性と効果量について しっかり考えてみよう
学習係数
[DL輪読会]Flow-based Deep Generative Models
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
プロダクトに貢献する~テスト計画コンシェルジュとリリース高速化で品質向上を牽引する~
私にとってのテスト
20201008 AWS独自設計推論チップInferentiaとInf1インスタンス
『RUNNING LEAN』を大学生向けにまとめた
Bitcoinを技術的に理解する
Ad

Similar to pgGeocoderのご紹介 (20)

PPTX
PostGIS Handson | FOSS4G Tokyo 2014
ODP
こんにちはGroovy
PPTX
BazelでビルドしたアプリをGCPにデプロイしようとしてハマった話
PDF
20201113_PGconf_Japan_GPU_PostGIS
PPTX
Gocon2017:Goのロギング周りの考察
PDF
FOSS4Gを利用したWebでの地理空間情報公開入門
PDF
Osc shimane-2016-do-postgres-dream-of-graph-database
PDF
GoBGP活用によるSD-WANプラクティス
PDF
130727 nagoyar presentation
PDF
20210511_PGStrom_GpuCache
PDF
20190418_PGStrom_on_ArrowFdw
PDF
GoでEPC作って本番運用している話
PDF
Webアプリを並行開発する際のマイグレーション戦略
PPTX
【修正版】Django + SQLAlchemy: シンプルWay
PDF
JSDoc ToolKit
PDF
20191211_Apache_Arrow_Meetup_Tokyo
ODP
FOSS4G 2012 Osaka
PDF
Road to ggplot2再入門
PDF
FOSS4G 2012 Tokyo GRASSハンズオン(GRASSを用いた衛星・GISデータ処理の基礎)
PDF
Exgettextの話
PostGIS Handson | FOSS4G Tokyo 2014
こんにちはGroovy
BazelでビルドしたアプリをGCPにデプロイしようとしてハマった話
20201113_PGconf_Japan_GPU_PostGIS
Gocon2017:Goのロギング周りの考察
FOSS4Gを利用したWebでの地理空間情報公開入門
Osc shimane-2016-do-postgres-dream-of-graph-database
GoBGP活用によるSD-WANプラクティス
130727 nagoyar presentation
20210511_PGStrom_GpuCache
20190418_PGStrom_on_ArrowFdw
GoでEPC作って本番運用している話
Webアプリを並行開発する際のマイグレーション戦略
【修正版】Django + SQLAlchemy: シンプルWay
JSDoc ToolKit
20191211_Apache_Arrow_Meetup_Tokyo
FOSS4G 2012 Osaka
Road to ggplot2再入門
FOSS4G 2012 Tokyo GRASSハンズオン(GRASSを用いた衛星・GISデータ処理の基礎)
Exgettextの話
Ad

pgGeocoderのご紹介