Thursday, June 23, 2011

Oracle BIEE 整合台灣地圖 Part I -- Load Taiwan Map Into BIEE Sample Data

工具
SQLPlus
MapBuilder 下載位置: http://www.oracle.com/technetwork/middleware/mapviewer/downloads/index.html
NAVTEQ Data Bundle for Oracle BI EE 下載位置: http://www.oracle.com/technetwork/middleware/bi-foundation/obiee-samples-167534.html
圖資
交通部運輸研究所 - 交通路網數值地圖

步驟
1. 依照 "SampleApp_Deploy_Instructions_825.pdf" 中"6 Deploying SampleApp Mapviewer Content (Optional)" import "obiee_navteq.dmp"
2. BIEE Sample App 使用"OBIEE_CITY", "OBIEE_COUNTRY", "OBIEE_STATE", 三個Map Theme. 其分別對應的表格為"OBIEE_CITY", "OBIEE_COUNTRY", "OBIEE_STATE".
使用SQL*Plus 查看其結構.
[oracle@rac1 ~]$ sqlplus  obiee_navteq/obiee_navteq@orcl

SQL*Plus: Release 11.2.0.1.0 Production on Tue Jun 14 22:53:00 2011

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> desc OBIEE_CITY
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ISO_COUNTRY_CODE                                   VARCHAR2(3)
 CITY_NAME                                          VARCHAR2(255 CHAR)
 POPULATION                                         NUMBER(10)
 GEOMETRY                                           MDSYS.SDO_GEOMETRY
 DISPLAY_NAME                                       VARCHAR2(255 CHAR)
 STATE_PROVINCE_ABBRV                               VARCHAR2(255)
 STATE_PROVINCE                                     VARCHAR2(255)
 CTRY_CD3_CITY                                      VARCHAR2(255)
 CTRY_CD3_STATE_NAME_CITY                           VARCHAR2(255)
 CTRY_CD3_STATE_ABBRV_CITY                          VARCHAR2(255)

SQL> desc OBIEE_COUNTRY
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 NAME                                               VARCHAR2(255 CHAR)
 NAME_INIT                                          VARCHAR2(1020 CHAR)
 OBIEE_LOWER                                        VARCHAR2(1020 CHAR)
 ISO_COUNTRY_CODE                                   VARCHAR2(5)
 SQKM                                               NUMBER(11)
 NAME_LABEL                                         VARCHAR2(255 CHAR)
 GEOMETRY                                           MDSYS.SDO_GEOMETRY

SQL> desc OBIEE_STATE
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 STATE_NAME                                         VARCHAR2(255 CHAR)
 ISO_COUNTRY_CODE                                   VARCHAR2(5)
 SQKM                                               NUMBER(11)
 GEOMETRY                                           MDSYS.SDO_GEOMETRY
 STATE_ABBRV                                        VARCHAR2(5 CHAR)
 STATE_NAME_INITCAP                                 VARCHAR2(255)
 ISO_CTRY_CD_STATE_NAME                             VARCHAR2(255)
 ISO_CTRY_CD_STATE_NAME_INITCAP                     VARCHAR2(255)
 ISO_CTRY_CD_STATE_ABBRV                            VARCHAR2(40)
 ISO_COUNTRY_CODE2                                  VARCHAR2(2)


3. 匯入台灣向量圖層
因為手上的資料格式與Demo schema的格式不同, 以先建立一個新的使用者
-- USER SQL
CREATE USER twmap IDENTIFIED BY twmap DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS ;

-- ROLES
GRANT "CONNECT" TO twmap;
GRANT "RESOURCE" TO twmap;

使用 MapBuild 匯入台灣的向量資料


匯入後的台灣地圖,基本上如下圖

匯入之後,需要新增 Geometry Theme (註:如果在匯入時,沒有順便建立theme;或所建立的theme不合用,就需要新增)
步驟:
在"Metadata"->"Themes"->"Geometry Themes", 滑鼠右鍵"Create Geometry Theme"
完成之後, 在"Theme Option" 下, 點左邊 "Advanced", 右邊 "Advanced Parameters", 下面 "Info Columns", 點選Edit. 新增Column -> COUNTYNAME, Name -> County Name
同樣的方式, 建立TWN_TOWN, TAIWAN Geometry Theme. 所以目前有三個Geometry Theme: TAIWAN, TWN_COUNTY, TWN_TOWN.


接下來,我們要建立"MAP". "MAP"是由"Theme"組成. 我們接下來將剛才所建立的三個Theme組合成一個"MAP".
步驟
"Metadata"->"Base Map", 右鼠鍵, "Create Base Map"
給 Map名稱"TAIWAN"
 接下來, 會看到剛才所定義的三個 Theme
將這三個Theme選入. 並設定適當的Min Scale 與 Max Scale


 測試與調整地圖著色的樣式, 放大縮小的感覺, 到覺得舒服, 不會太難看.(需要美感)
接下來, 要產生 Cached Map
"Metadata"->"Tile Layers", 右鼠鍵, "Create Map Tile Layer"


 變更名稱為"Taiwan"
調整視窗大小, 儘量讓中間地圖的大小為將來會呈現地圖的大小. 並點選"Update from Map", 更新資料
點選"Minimum Scale"旁的"From Map", 更新數值. 然後模擬使用者操作, 放大至想要的地圖的大小
 再點選"Maximum Scale"旁的"From Map", 更新數值. 修改"# Zoom Levels"
點選"Generate", 就會產生相關Zoom Levels的資料
 指定"Tile Storage" 為儲存 "map tiles"的位置. (最好與Mapviewer 存放Map tiles的位置相同.


 設定地圖顯示中心位置與預設Zoom Level

到目前, 資料庫上地圖相關的設定, 算是完成.

註: 產生台灣地圖的相關指令
CREATE TABLE TWN_COUNTY
AS
SELECT countyname_mb countyname,sdo_aggr_union(sdoaggrtype(t.geometry,0.05)) GEOMETRY
FROM twn_town t
GROUP BY t.countyname_mb;


CREATE TABLE TWN_COUNTRY
AS
SELECT 'TW' AS countryname,sdo_aggr_union(sdoaggrtype(t.geometry,0.05)) GEOMETRY
FROM TWN_COUNTY t ;