Newer
Older
osmCoverage / doc / osmCoverage.md
# osmCoverage


## Summary

1. 位置情報付きのデータとOpenStreetMap上のデータとを比較・評価して、各データの`score`を算出する。

2. 算出されたデータは、PostGISデータベースに格納される。


## Development

* Used by NetBeans 8.2
* OpenJDK 8

## External library

* [hayashi.jar](https://osdn.net/projects/hayashilib/releases/) - hayashi lib
* [javax.json.jar](https://javaee.github.io/jsonp/) - JSON parser
* [commons-compress-1.18.jar](https://commons.apache.org/proper/commons-compress/download_compress.cgi) - Apache Commons Compress
* [hsqldb_2.2.9.jar](http://hsqldb.org/) - HSQLDB
* [postgresql-42.2.4.jar](https://www.postgresql.org/) - PostgeSQL JDBC driver

### build

### Development environment

![MachineStructure](machinestructure.png)

1. Geofabrikから`japan-latest.osm.pbf`を「作業用PC」にダウンロード
2. 「作業用PC」でゴニョゴニョすると、「統計データ(カバレッジ率)」と「ベクタタイル」が生成される
3. 生成された「統計データ」と「ベクタタイル」を GitHub に プッシュ(push) する
4. ついでに、`Raspi3`にある「公開用のPostGIS」にも「データ」をコピーする

## 処理

### バス停留所データ

* 国土交通省国土政策局「国土数値情報 バス停留所データ 平成22年」
* 国土数値情報のバス停位置を中心とする、300m四方以内に存在するOSMのバス停ノードの評価点の合計を数える。また、nameが同一ならば600m四方以内にまでのノードも評価点に加える。

| Type | tag             | score,NO_NAME,FIXED,NO_BUS | removed |
|------|-------------------------------------|----------|-------|
| node | highway=bus_stop                    | 50,1,1,- | false |
| node | amenity=bus_station                 | 50,1,1,- | false |
| area | amenity=bus_station                 | 50,1,1,- | false |
| node | public_transport=platform           | 50,1,1,1 | false |
| node | disused:highway=bus_stop            | 50,-,-,- | true  |
| node | abandoned:highway=bus_stop          | 50,-,-,- | true  |
| node | demolished:highway=bus_stop         | 50,-,-,- | true  |
| node | no:highway=bus_stop                 | 50,-,-,- | true  |
| node | disused:public_transport=platform   | 50,-,-,- | true  |
| node | abandoned:public_transport=platform | 50,-,-,- | true  |
| node | demolished:public_transport=platform | 50,-,-,- | true  |
| node | no:public_transport=platform        | 50,-,-,- | true  |

評価点:
* 基礎点 → 50ポイント
* nameがない → 1ポイント
* fixmeがある → 1ポイント
* bus=yesがない → 1ポイント

### 燃料給油所データ

* 国土交通省国土政策局「国土数値情報 燃料給油所データ 平成28年(2016)」
* 国土数値情報の燃料給油所位置を中心とする、200m四方の矩形領域に存在するOSMのamenity=fuelノードの評価点の合計を数える。

| Type        | tag          | score,NO_BLAND,FIXED | removed |
|-------------|------------------------------|--------|-------|
| node & area | amenity=fuel                 | 50,1,1 | false |
| node & area | disused:amenity=fuel         | 50,-,- | true  |
| node & area | abandoned:amenity=fuel       | 50,-,- | true  |
| node & area | demolished:amenity=fuel      | 50,-,- | true  |
| node & area | removed:amenity=fuel         | 50,-,- | true  |
| node & area | no:amenity=fuel              | 50,-,- | true  |

評価点:
* 基礎点 → 50ポイント
* blandがない → 1ポイント
* fixmeがある → 1ポイント

### 郵便局データ

* 国土交通省国土政策局「国土数値情報 郵便局データ(平成25年)」
* 国土数値情報の位置を中心とする、200m四方の矩形領域に存在するOSMの amenity=postoffice ノードの評価点の合計を数える

| Type        | tag                   | score,FIXED | removed |
|-------------|--------------------------------|------|-------|
| node & area | amenity=post_office            | 50,1 | false |
| node & area | disused:amenity=post_office    | 50,- | true  |
| node & area | abandoned:amenity=post_office  | 50,- | true  |
| node & area | demolished:amenity=post_office | 50,- | true  |
| node & area | removed:amenity=post_office    | 50,- | true  |
| node & area | no:amenity=post_office         | 50,- | true  |

評価点:
* 基礎点 → 50ポイント
* fixmeがある → 1ポイント

### 警察署データ

* 国土交通省国土政策局「国土数値情報 警察署データ(平成24年:2012)」
* 国土数値情報の警察署位置を中心とする、200m四方の矩形領域に存在するOSMのamenity=policeノードの評価点の合計を数える

| Type        | tag                 | score,FIXED | removed |
|-------------|------------------------------|------|-------|
| node & area | amenity=police               | 50,1 | false |
| node & area | disused:amenity=police       | 50,- | true  |
| node & area | abandoned:amenity=police     | 50,- | true  |
| node & area | demolished:amenity=police    | 50,- | true  |
| node & area | removed:amenity=police       | 50,- | true  |
| node & area | no:amenity=police            | 50,- | true  |

評価点:
* 基礎点 → 50ポイント
* fixmeがある → 1ポイント


## 使い方

### database PostGIS

#### PostGIS(osmdb) データベースを立ち上げる

"PostGIS"を起動する

* Use by DockerHub `kartoza/postgis:9.6-2.4`

1) `docker pull kartoza/postgis:9.6-2.4`

2) `WORKAREA=$pwd`

3) `mkdir $HOME/pg_data`

4) `docker run --name=osmdb -m 2g -d -e POSTGRES_USER=alex -e POSTGRES_PASS=password -e POSTGRES_DBNAME=osmdb -e ALLOW_IP_RANGE=0.0.0.0/0 -p 5432:5432 -v $HOME/pg_data:/var/lib/postgresql --restart=always kartoza/postgis:9.6-2.4`  

 * `--name=osmdb`
 * `-m 2g`                              momory 2GB
 * `-e POSTGRES_USER=alex`
 * `-e POSTGRES_PASS=password`
 * `-e POSTGRES_DBNAME=osmdb`
 * `-e ALLOW_IP_RANGE=0.0.0.0/0`        すべてのIPからの接続を許可する
 * `-p 5432:5432`
 * `-v $HOME/pg_data:/var/lib/postgresql`          PostgreSQL databade data folder
 * `--restart=always`

```
$ docker pull kartoza/postgis:9.6-2.4
$ mkdir 
$ mkdir $HOME/pg_data
$ docker run -m 2g --name=osmdb -d -e POSTGRES_USER=alex -e POSTGRES_PASS=password -e POSTGRES_DBNAME=osmdb -e ALLOW_IP_RANGE=0.0.0.0/0 -p 5432:5432 -v $HOME/pg_data:/var/lib/postgresql --restart=always kartoza/postgis:9.6-2.4
$ 
```


"pgAdmin4"で接続を確認する

1) `docker pull dpage/pgadmin4`

2) `docker run --name=pgadmin4 -p 80:80 -e "PGADMIN_DEFAULT_EMAIL=gisuser@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=gisuser" -d dpage/pgadmin4`

 * --name=pgadmin4
 * -e "PGADMIN_DEFAULT_EMAIL=gisuser@domain.com"
 * -e "PGADMIN_DEFAULT_PASSWORD=gisuser"

3) pgAdmin4 : Login

 * `http://localhost/`
 * userid: `gisuser@domain.com`
 * password: `gisuser`

4) pgAdmin4 : 接続 / Connection

 * host name: `localhost`
 * port: `5432`
 * database admin: `postgres`
 * user name: `alex`
 * password: `password`


"PostGISへの接続設定ファイル"を準備する

* postgis `osmdb.properties`

```
db_driver=org.postgresql.Driver
db_url=jdbc:postgresql://172.17.0.1:5432/osmdb
db_user=alex
db_passwd=password
```

""

6. osm2pgsql 
```
echo '*:*:*:alex:password' > ~/.pgpass
chmod 600 ~/.pgpass
```

91. stop pgAdmin4 `docker stop stupefied_poitras`

92. stop postGIS `docker stop postgis`