CentOS6 にPostgreSQL9.6+PostGIS2.3を導入する
さて、手順を備忘録としてまとめていく。
CentOS 6 に PostgreSQL 9.x を yum インストールする手順 | WEB ARCH LABO
インストールとサービスの起動まで
$ sudo yum -y localinstall http://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm $ sudo yum list postgresql*
$ sudo vi /etc/yum.repos.d/pgdg-96-centos.repo #[pgdg96]の編集して、enabled=0へ編集 #enabled=0
久々にログインしたサーバでyumしたらepel接続でsslエラーが出たので対応 - Qiita
こちらを参照してnssを更新後、再度、pgdg96を有効化
$ sudo yum -y install postgresql96-server postgresql96-devel $ sudo service postgresql-9.6 initdb $ sudo chkconfig postgresql-9.6 on $ sudo service postgresql-9.6 start
サーバの起動まで出来ました
データベースの作成とユーザの設定
UbuntuでPostgreSQLを使ってみよう (2) — Let's Postgres
$ sudo passwd postgres $ su - postgres $ createdb test $ create user hoge $ psql -d test test=# create role hoge with login; test=# ¥q $ exit $ su - hoge $ psql -d test # hogeユーザでログイン可能になる
PostGISのインストール
$ sudo yum list postgis* $ sudo yum --enablerepo=epel -y install postgis2_96 postgis2_96-client
postgis環境設定など
ユーザの作成
su - postgres create user hoge -P #db ユーザを作成する OSユーザと合わせる psql -d test test=# create extension postgis; ERROR: ライブラリ"/usr/pgsql-9.6/lib/rtpostgis-2.3.so"をロードできませんでした: libhdf5.so.6: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
so.7は存在するようなので
postgresql - Postgres create POSTGIS extension error with CentOS 6 - Stack Overflow
$ cd /usr/lib64 $ sudo ln -s libhdf5_hl.so.7 libhdf5_hl.so.6 $ sudo ln -s libhdf5.so.7 libhdf5.so.6
再度実行見事できた。
su - postgres psql -d test test=# create extension posts; CREATE EXTENSION test=# SELECT PostGIS_full_version(); postgis_f ull_version -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- POSTGIS="2.3.0 r15146" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 1.9.2, released 2012/10/08" LIBXML="2.7.6" LIBJSON="0.11" RASTE R (1 行)
逆ジオコーディングでSSLエラー
HTTPS接続がCan't verify SSL peersというエラーになるときは - Okiraku Programming
sudo cpanm Mozilla::CA
MojoliciousからTengを使う
最近Mojolicious+Tengキャッチアップできていなかったので、以下を参照してくみなおす。
第33回 MojoliciousでかんたんWebアプリケーション開発(3):Perl Hackers Hub|gihyo.jp … 技術評論社
自宅のデスクトップPCが逝去。
妻が使っているWIndowsマシン。マウスが使えないということで
ヤマダ電機でマウスを買ってきましたが、やはり使えない。
おかしいと思い調べてみると、キーボードも使えない。USBポートが全滅していました。
箱を開けて調べてみると、放熱板がやけに高温になっている。火傷するほどの。
マザーが飛んだんだろう。
さて、現在のマザーボードはG41M-VSというもの。
www.asrock.com
通販でももはや売っていない。同じタイプのマザーで使えそうなのないかなと
ドスパラを検索。
Foxconn PRODUCT : Motherboard : Details
起動できなくなったが・・
リセットボタンやら、起動ボタンを長押しして、再トライ。
起動できるようになり。普通にwindowsもそのまま使えた。
4000円少しの投資で復活。嬉しい限りです。
geojsonでアプリにしていく
ポスグレに格納したポリゴンデータをgoogle map上に表示させたい
Creating GeoJSON Feature Collections with JSON and PostGIS functions - Postgres OnLine Journal
三島市のコインランドリーのボロネイ図作り、人口をカウントする
コインランドリー用のテーブルを用意しておく
前に述べた通り。QGISへ取り込む。
ボロネイ図を描写する
入力にコインランドリーのベクターを指定する。
そうするとシェープファイルが吐き出される。(volonay.shp)
そのシェープファイルを入力に新たなテーブルを作る
shp2pgsql -s 4326 volonoy.shp volonoy > volonoy.sql psql -d test -f volonoy.sql
人口カウント用のSQLを発行する
select v.id, (select name from volonoy b where b.id = v.id), sum(tblt000609) from volonoy v inner join population p on st_intersects( p.geom, v.geom ) group by v.id order by sum desc
三島市のコインランドリー周辺500mの人口を求めてみた
人口のシェープファイルを作成する
PostGISを使ってSQLだけで面積按分:準備編(QGISを使ってCSVデータとShapeデータ結合してPostgreSQLに投入) - Qiitaqiita.com
シェープファイルからSQLに変換後、postgisのテーブル(population)へ入れる
$ shp2pgsql -s 4326 population.shp population > population.sql $ psql -d dbname -f population.sql
人口を求めるクエリを発行する
select l.id, (select name from laundry b where b.id = l.id), sum(tblt000609) from laundry l inner join population p on st_intersects( p.geom, st_buffer(l.geom::geography,500)::geometry )group by l.id
重なったところの面積を按分する
select l.id, (select name from laundry b where b.id = l.id), sum(tblt000609 *( ST_AREA( ST_Intersection(p.geom , st_buffer(l.geom::geography,500)::geometry ) ) / ST_AREA( p.geom ) ) ) from laundry l inner join population p on st_intersects( p.geom, st_buffer(l.geom::geography,500)::geometry )group by l.id