logo
home > web > postgresql

postgresqlの最近のブログ記事

既に構築されているDBに追加でpostgisを導入して、位置情報の取り扱いをしたい場合、
以下のsqlをDBに流し込めば大丈夫でした。

postgisは既にインストールされていることが前提


psql -U ユーザ名 -d DB名 -f /usr/share/pgsql/contrib/lwpostgis.sql
psql -U ユーザ名 -d DB名 -f /usr/share/pgsql/contrib/spatial_ref_sys.sql 
psql -U ユーザ名 -d DB名 -f /usr/share/pgsql/contrib/postgis_comments.sql


流し込めたら確認

## DB接続
psql -U ユーザ名 -d DB名

## postgis version 確認コマンド
select postgis_version() ;

            postgis_version            
---------------------------------------
 1.3 USE_GEOS=1 USE_PROJ=1 USE_STATS=1

バージョンが確認できればOK

DBを再度createdbし直す必要は全くないんですね。よかった。
最近スマートフォン対応で位置情報を取り扱うことが多くなっています。
postgresqlで在地から半径500m内にある地点の検索はどうしたらよいでしょうか?

postgresにはpoint型というXY座標を取り扱う型が存在します。
しかし、緯度経度を取り扱う場合は単純にXY座標では表現できません。

北極点周辺と赤道付近を想像してください。
同じ緯度で地球を一周する場合、北極点付近ではおそらく数百メートルで一周するのではないでしょうか?
赤道付近ではどうでしょう?4万km移動することになるでしょう。

地球は丸く、単純に碁盤の目のように正方形ではないのです。
ですからXY座標では表現できないのです。地球は丸い!

そこで緯度経度の情報を取り扱えるpostgisの登場です!
様々な関数が用意されており便利らしいです。(まだ使ってませんが。。)

御託はいいのでひとまずインストール。

まずはpostgisのインストール
yum install postgis


テンプレートDBの作成
postgisの関数を使えるように用意しておく?みたい。
createdb -U postgres template_postgis
createlag -U postgres plpgsql template_postgis
createlang -U postgres plpgsql template_postgis
psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/lwpostgis.sql
psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/lwpostgis_upgrade.sql 
psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/postgis_comments.sql 
psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/spatial_ref_sys.sql 

後は使用するDBの作成
createdb -U webservice -T template_postgis test_db

postgisが使えるか確認
psql -U webservice -c "select postgis_version();" test_db

            postgis_version            
---------------------------------------
 1.3 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 行)
バージョン情報が表示されればOK

JavaScript Journal | JavaScript総合情報サイト

このアーカイブについて

このページには、過去に書かれたブログ記事のうちpostgresqlカテゴリに属しているものが含まれています。

前のカテゴリはpluginです。

次のカテゴリはTwitterです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。