ラズパイ(Ubuntu 20.04.1 LTS Server)- PHPでPostgreSQLに接続してクエリー発行


プラットフォームはラズパイ 4B / 4GB、OSはUbuntu 20.04.1 LTS Serverを使ってみます。

PostgreSQLは12.4がインストール済で、データベースも作成済みとします。

インストールや設定等はこの辺をご参照ください。

 

2つのファイルを編集してPostgreSQLに接続できるようにしておきます。

sudo nano /etc/postgresql/12/main/postgresql.conf
以下のコメントアウトを外します。

listen_addresses = ‘localhost’

 

sudo nano /etc/postgresql/12/main/pg_hba.conf

以下の2行をtrustに修正

 

PostgreSQLを再起動
sudo systemctl restart postgresql

 

PHP 7.4.3 (cli)をインストール

php.iniを修正

コメントアウトを解除
extension=pgsql

pg_xxxなどのコマンド用に以下をインストール

 

接続して簡単なクエリーをテスト(テーブルからデータを10個取得)
【/home/postgresql.php】

上記のコードではpg_query関数を使っています。シンプルですがSQLインジェクションの脆弱性があります。

不安な向きは以下のようにpg_query_params関数に変更。

 

簡単にブラウズするには、phpのビルトインサーバーを起動(例えばIPアドレスは192.168.0.34でポートは8000番を使うとして、ドキュメントルートは/homeだとします)

 

他PCからアクセス
http://192.168.0.34:8000/postgresql.php

 


WebGISみたいなもんにしたらこんな感じです。

最短経路探索をやっています。

緑の領域はpgRroutingのデータがロードされてる範囲。

ラズパイ4BでデータベースとSQLのみでやるなら、この範囲で端から端までの探索で4~5秒といった感じです。

背景地図は自前のタイルサーバーからとっています。

Leafletを使っていますがライブラリもスタイルシートもローカルに置いています。

このWebアプリはOpenStreetMapのクレジット表示以外は自前で完結しています。

中心座標と半径で範囲を指定して地物検索

 

 

ソースとかはまた次回ということで。

 


Appendix1

 

WebサーバーにApacheを使ったり、地図配信に自前のタイルサーバーを使う場合などは以下を参照

ラズパイ(Ubuntu 20.04 LTS Server)にOpenStreetMapのタイルサーバーを構築

 


Appendix2

 

経路探索したい!場合は以下を参照

ラズパイ(Ubuntu 20.04.1 LTS Server)でpgRoutingを使って経路探索

 


Appendix3

 

XMLHttpRequstでPHP(xxx.php)からデータを受け取る

 

 

PHPのPostgreSQLクエリー

nameカラムとジオメトリ型カラム(geom)で緯度・経度・半径を使って地物検索

$query = "select name,ST_AsText(geom) from <テーブル> where ST_DWithin(geom, ST_GeomFromText('POINT(<経度> <緯度>)',4326), <半径>,true) order by name;";$result = pg_query($query);

 

 


Appendix4

 

Leafletライブラリを使って緯度・経度を取得

イベントはclickやmousemoveを使います。

スタイルシートやJavaScriptライブラリなどLeaflet一式

自前のタイルサーバーを使う場合はIPアドレスをセット

OpenStreetMapのタイルサーバーを使う場合は以下のようになります。

 


Appendix5

 

国交省などから取得したShapeファイルから施設などの地物のデータベースを作成

ラズパイ(Ubuntu 20.04 LTS Server)で空間データベース(大阪編)

 


Appendix6

 

Javascriptで簡易距離計算、単位はm

 

 

 


Appendix7

 

ローカルにテキストデータを保存する場合はblobを使います。

保存場所はWindowsの場合はユーザーのダウンロードディレクトリー

ChromeとFirefoxで動作確認

 


 

 

Be the first to comment

Leave a Reply

Your email address will not be published.


*