どのように結合が処理されるかを定義する。 JOINキーワードで始まり、ENDキーワードで終わる。 JoinオブジェクトはQueryオブジェクト内部で定義される。
説明
JoinsはLayerオブジェクト内に定義する。Joinsを理解するキーは、一回のクエリを処理されて、Joinsが有効になる。Joinsは地図の見た目に何も影響がない、主要な目的はテーブルデータの検索です。
サポートされているフォーマット
- DBF/XBase files
- CSV (comma delimited text file)
- PostgreSQL and PostGIS tables
- MySQL tables
Mapfileパラメータ
CONNECTION [string]
DB接続文字列(DBFとCSVフォーマットは定義しなくでもよい)。下記はPostgreSQLの接続例です。
CONNECTION "host=127.0.0.1 port=5432 user=postgres password=postgres dbname=somename"
CONNECTIONTYPE [string]
DB接続の種類(DBFとCSVフォーマットは定義しなくでもよい)。 下記はPostgreSQLの接続例です。
CONNECTIONTYPE ogr
FROM [item]
結合対象の項目名、大文字小文字区別している。
NAME [string]
この結合のユニークな名前。必須。
TABLE [file]
結合対象のXBaseファイル、CSVファイル(相対パス)名称。
PostgreSQLとMySQLの場合は、結合対象テーブルの名称。
TEMPLATE [filename]
1対多の結合に用いるテンプレート。テンプレートは各レコードごとに1度処理され、結合されるテーブルでの項目名のみを含むことができる。
TO [item]
結合されるテーブルでの対象項目。大文字小文字区別している。
TYPE [ONE-TO-ONE|ONE-TO-MANY]
結合の種類。デフォルトはONE-TO-ONEである。
サンプル1:Join from SHP file to DBF file
Mapfile Layer
LAYER NAME prov_bound TYPE POLYGON STATUS DEFAULT DATA prov.shp CLASS NAME "Province" STYLE OUTLINECOLOR 120 120 120 COLOR 255 255 0 END END TEMPLATE "../htdocs/cgi-query-templates/prov.html" HEADER "../htdocs/cgi-query-templates/prov-header.html" FOOTER "../htdocs/cgi-query-templates/footer.html" JOIN NAME "test" TABLE "../data/lookup.dbf" FROM "ID" TO "IDENT" TYPE ONE-TO-ONE END END # layer
Ogrinfo
>ogrinfo lookup.dbf lookup -summary
INFO: Open of `lookup.dbf'
using driver `ESRI Shapefile' successful.
Layer name: lookup
Geometry: None
Feature Count: 12
Layer SRS WKT:
(unknown)
IDENT: Integer (2.0)
VAL: Integer (2.0)
>ogrinfo prov.shp prov -summary
INFO: Open of `prov.shp'
using driver `ESRI Shapefile' successful.
Layer name: prov
Geometry: Polygon
Feature Count: 12
Extent: (-2340603.750000, -719746.062500) - (3009430.500000, 3836605.250000)
Layer SRS WKT:
(unknown)
NAME: String (30.0)
ID: Integer (2.0)
Template
<tr bgcolor="#EFEFEF"><td align="left">[NAME]</td><td align="left">[test_VAL]</td></tr>
サンプル2:Join from SHP file to PostgreSQL table
Mapfile Layer
LAYER NAME prov_bound TYPE POLYGON STATUS DEFAULT DATA prov.shp CLASS NAME "Province" STYLE OUTLINECOLOR 120 120 120 COLOR 255 255 0 END END TOLERANCE 20 TEMPLATE "../htdocs/cgi-query-templates/prov.html" HEADER "../htdocs/cgi-query-templates/prov-header.html" FOOTER "../htdocs/cgi-query-templates/footer.html" JOIN NAME "test" CONNECTION "host=127.0.0.1 port=5432 user=postgres password=postgres dbname=join" CONNECTIONTYPE ogr TABLE "lookup" FROM "ID" TO "ident" TYPE ONE-TO-ONE END END # layer
Ogrinfo
>ogrinfo -ro PG:"host=127.0.0.1 port=5432 user=postgres password=postgre dbname=join" lookup -summary
INFO: Open of `PG:host=127.0.0.1 port=5432 user=postgres password=postgres dbname=join'
using driver `PostgreSQL' successful.
Layer name: lookup
Geometry: Unknown (any)
Feature Count: 12
Layer SRS WKT:
(unknown)
ident: Integer (0.0)
val: Integer (0.0)
Template
<tr bgcolor="#EFEFEF"><td align="left">[NAME]</td><td align="left">[test_val]</td></tr>
サンプル3:Join from SHP file to CSV file
Mapfile Layer
LAYER NAME prov_bound TYPE POLYGON STATUS DEFAULT DATA prov.shp CLASS NAME "Province" STYLE OUTLINECOLOR 120 120 120 COLOR 255 255 0 END END TOLERANCE 20 TEMPLATE "../htdocs/cgi-query-templates/prov.html" HEADER "../htdocs/cgi-query-templates/prov-header.html" FOOTER "../htdocs/cgi-query-templates/footer.html" JOIN NAME "test" TABLE "../data/lookup.csv" FROM "ID" TO "IDENT" TYPE ONE-TO-ONE END END # layer
CSV File
"IDENT","VAL"
1,12
2,11
3,10
4,9
5,8
6,7
7,6
8,5
9,4
10,3
11,2
12,1
Ogrinfo
>ogrinfo lookup.csv lookup -summary
INFO: Open of `lookup.csv'
using driver `CSV' successful.
Layer name: lookup
Geometry: None
Feature Count: 12
Layer SRS WKT:
(unknown)
IDENT: String (0.0)
VAL: String (0.0)
Template
<tr bgcolor="#EFEFEF"><td align="left">[NAME]</td><td align="left">[test_VAL]</td></tr>














