Function | Usage | Description |
---|---|---|
$TA.Model('ModelName',{setting}) | 建立實體,回傳此實體Model | 建立$TA.Model物件 |
Model('ModelName',{setting}) | 表示前方Model的子實體,回傳最後的子實體Model | 接續在前面的Model後方,擴展新的Model |
exModel('ModelName',{setting}) | 表示前方Model的子實體,回傳前方原本的實體Model | 接續在前面的Model後方,擴展新的Model |
getJSONStringify() | 將該ResultSet由物件轉為字串利於展示 | 直接對Model操作 |
let Model = $TA.Model('Thing');
let Model = $TA.Model('Thing',{id:8,name:'空氣品質測站',properties:{"city":'8',"authority":'行政院環境保護署'}});
//Model會回傳目前Model,故回傳Datastream let Model = $TA.Model('Thing').Model('Datastream'); //exModel會回傳前方Model,故回傳前面的Datastream let Model = $TA.Model('Datastream').exModel('Thing');
//Model會回傳目前Model,故回傳Thing let Model = $TA.Model('Observation').Model('Datastream').Model('Thing'); //exModel會回傳前方Model,故回傳前面的Datastream,Datastream再進行一次exModel,回傳前方的Thing let Model = $TA.Model('Thing').exModel('Datastream').exModel('Observation');
let Model = $TA.Model('Thing').exModel('Datastream',{id:3,name:"PM2.5"}).exModel('Datastream',{id:5,name:"PM10"});
let Model = $TA.Model('Thing').exModel('Datastream',{id:3,name:"PM2.5"}).exModel('Datastream',{id:5,name:"PM10"}); let ModelString = Model.getJSONStringify();
注意,以下function是用來設定查詢選項,並不會獲得實際資料,要將Model傳入getFormatData()獲得資料。若要獲得資料,在設定時,實體間就只能用Model()連接,不可使用exModel()。
Function | Usage | Description |
---|---|---|
$expand($TA.Model, ...) | 表示對前方的Model擴展 | 接續在$TA.Model或Model後方 |
$select(String, ...) | 表示只取回前方的Model的特定屬性 | 接續在$TA.Model或Model後方 |
$orderby(String, 'desc/asc') | 以前方Model的某屬性做排序 | 接續在$TA.Model或Model後方或查詢選項後 |
$top(Int) | 表示只取回前方的Model的特定幾筆 | 接續在$TA.Model或Model後方或查詢選項後 |
$skip(Int) | 表示省略前方Model的特定幾筆 | 接續在$TA.Model或Model後方或查詢選項後 |
$count(boolean) | 表示獲得reponse的實體總數 | 接續在$TA.Model或Model後方或查詢選項後 |
$filter(String) | 針對查詢進行篩選過濾 | 接續在$TA.Model或Model後方或查詢選項後 |
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things?$expand=Locations let Model = $TA.Model('Thing').$expand($TA.Model('Location')); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); Service.getFormatData(Model);
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things(3)?$expand=Locations,Datastreams,Datastreams/Observations let Model = $TA.Model('Thing',{id:3}).$expand($TA.Model('Location'),$TA.Model('Datastream'),$TA.Model('Datastream').Model('Observation')); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); Service.getFormatData(Model);
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things?$select=name,properties let Model = $TA.Model('Thing').$select('name','properties'); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service =$TA.Service(serverDomain) Service.getFormatData(Model);
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things(3)?$expand=Locations,Datastreams($select=phenomenonTime) let Model = $TA.Model('Thing',{id:3}).$expand($TA.Model('Datastream').$select('phenomenonTime')); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain) Service.getFormatData(Model);
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Datastreams(6)?$expand=Observations($orderby=phenomenonTime asc) let Model = $TA.Model('Datastream',{id:6}).$expand($TA.Model('Observation').$orderby('phenomenonTime','asc')); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain) Service.getFormatData(Model);
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Datastreams(6)?$expand=Observations($top=10;$orderby=phenomenonTime asc) let Model = $TA.Model('Datastream',{id:6}).$expand($TA.Model('Observation').$top(10)); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain) Service.getFormatData(Model);
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things(6)?$expand=Datastreams($skip=10) let Model = $TA.Model('Thing',{id:6}).$expand($TA.Model('Datastream').$skip(10)); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain) Service.getFormatData(Model);
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things?$count=true let Model = $TA.Model('Thing').$count(true); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain) Service.getFormatData(Model);
//SensorThings請求為http://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Datastreams?$filter=ObservedProperty/name eq 'PM2.5' let Model = $TA.Model('Datastream').$filter("ObservedProperty/name eq 'PM2.5'"); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain) Service.getFormatData(Model);
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Datastreams(8)?$expand=Observations($filter=Observations/phenomenonTime ge 2019-11-12T00:00:00.000Z and Observations/phenomenonTime le 2019-11-14T00:00:00.000Z) let Model = $TA.Model('Datastream',{id:8}).$expand($TA.Model('Observation').$filter("Observations/phenomenonTime ge 2019-11-12T00:00:00.000Z and Observations/phenomenonTime le 2019-11-14T00:00:00.000Z")); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain) Service.getFormatData(Model);
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things?$filter=properties/city eq '新北市'&$expand=Datastreams($filter=Datastreams/ObservedProperty/name eq 'PM2.5'),Datastreams/Observations($orderby=phenomenonTime desc;$top=1) let Model = $TA.Model('Thing').$filter("properties/city eq '新北市'").$expand($TA.Model('Datastream').$filter("Datastreams/ObservedProperty/name eq 'PM2.5'"),$TA.Model('Datastream').Model('Observation').$orderby('phenomenonTime','desc').$top(1)); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain) Service.getFormatData(Model);
最主要的物件,所有Model皆會存放成ResultSet物件,包含next()、hasNext()、getAllData()、getJSONStringify(),四種function,是所有get方法的回傳值。
Function | Usage | Description |
---|---|---|
next() | 提出ResultSet第一筆資料,並在ResultSet中移除該筆 | 直接對ResultSet操作 |
hasNext() | 根據還有無資料回傳true/false | 直接對ResultSet操作 |
getAllData(callback) | 將該ResultSet的所有資料抓回 | 直接對ResultSet操作 |
getJSONStringify() | 將該ResultSet由物件轉為字串利於展示 | 直接對ResultSet操作 |
{ "type": "Thing", "value": [ { "type": "Thing", "id": 7, "name": "空氣品質測站-大里", "description": "空氣品質測站-大里", "properties": { "englishName": "Dali", "areaName": "中部空品區", "city": "臺中市", "stationType": "一般測站", "authority": "行政院環境保護署", "stationName": "大里", "township": "大里區" }, "Datastream": [], "Location": [], "HistoricalLocation": [] }, { "type": "Thing", "id": 8, "name": "空氣品質測站-大園", "description": "空氣品質測站-大園", "properties": { "englishName": "Dayuan", "areaName": "北部空品區", "city": "桃園市", "stationType": "一般測站", "authority": "行政院環境保護署", "stationName": "大園", "township": "大園區" }, "Datastream": [], "Location": [], "HistoricalLocation": [] } ] }
負責取出ResultSet第一筆Model,並從resultSet中刪除,回傳Model。
let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); //建立Service()物件 let ResultSet = Service.getThings(); ResultSet.next()
下例:取得在桃園市一般測站中名稱為PM2.5的Datastreams
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Datastreams?$filter=name eq 'PM2.5' and Thing/properties/city eq '桃園市' and Thing/properties/stationType eq '一般測站' let Model = $TA.Model('Datastream').$filter("name eq 'PM2.5' and Thing/properties/city eq '桃園市' and Thing/properties/stationType eq '一般測站'") let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/" let Service = $TA.Service(serverDomain); //建立Service()物件 let ResultSet = Service.getFormatData(Model); while(ResultSet.hasNext() === true){ ResultSet.next() } ResultSet.next(); //此時resultSet已無物件
判斷ResultSet是否還有Modle物件,若無,回傳false,其餘情形回傳true。
let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); 建立Service()物件 let ResultSet = Service.getThings() ResultSet.hasNext();
let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); let ThingID = "8" let ResultSet = Service.getThingByID(ThingID); while(ResultSet.hasNext() === true){ ResultSet.next() } ResultSet.hasNext()
取完ResultSet所有資料。回傳ResultSet
Property | Required | Type | none |
---|---|---|---|
callback | optional | function | false |
SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Datastreams?$filter=name eq 'PM2.5' and Thing/properties/city eq '桃園市' and Thing/properties/stationType eq '一般測站' //同步 let Model = $TA.Model('Datastream').$filter("name eq 'PM2.5' and Thing/properties/city eq '桃園市' and Thing/properties/stationType eq '一般測站'") let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); //建立Service()物件 let ResultSet = Service.getFormatData(Model).getAllData(); while(ResultSet.hasNext() === true){ ResultSet.next(); } //異步 let Model = $TA.Model('Datastream').$filter("name eq 'PM2.5' and Thing/properties/city eq '桃園市' and Thing/properties/stationType eq '一般測站'") let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); Service.getFormatData(function(ResultSet){ ResultSet.getAllData(function(R){ while(R.hasNext() === true){ R.next(); } }); });
將ResultSet轉為字串以利於呈現。
let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); let ReSultSet = Service.getThings(); let ResultSetString = ResultSet.getJSONStringify();
向SensorThings API發起請求,所有response皆以ResultSet物件回傳。取得資料分為兩類方法,一為傳入Model來getFormatData()、另一為高階函數。使用時需要先建立$TA.Service()物件、並設定serverDomain。
Property | Required | Type | Default |
---|---|---|---|
serverDomain | mandatory | String | none |
let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); //建立Service()物件
Function | Usage | Description |
---|---|---|
setDomain(serverDomain) | 重新設定該Service的目標URL | 直接對Service操作,傳入新的serverDomain |
getURL(Model) | 用設定好的Model,回傳符合SensorThings之路徑 | 直接對Service操作,傳入設定好的Model |
extend(function) | 對該建立的Service物件新增自定義function | 直接對Service操作,傳入function |
getFormatData(Model) | 根據Model設定的查詢條件,回傳ResultSet | 傳入設定好之Model以獲得資料,詳情請看下方說明 |
高階函數 | 根據不同需求,回傳ResultSet | 根據需求使用以獲得資料,詳情請看下方說明 |
Property | Required | Type | Default |
---|---|---|---|
serverDomain | mandatory | String | none |
let serverDomain1 = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let serverDomain2 = "https://sta.ci.taiwan.gov.tw/STA_WaterLevel_v2/v1.0/"; let Service = $TA.Service(serverDomain1); 建立Service()物件 Service.setDomain(serverDomain2); 更改Service.serverDomain
Property | Required | Type | Default |
---|---|---|---|
Model | mandatory | JSON Object | none |
//獲得Things(3)/Datastreams let Model = $TA.Model('Thing',{id:3}).Model('Datastream'); //建立Model let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); //建立Service()物件 Service.getURL(Model) 取得查詢選項之URL
Property | Required | Type | Default |
---|---|---|---|
function | mandatory | function | none |
let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); //新增一個function,能夠取得ID為5的Datastreams的最近一筆觀測時間 Service.extend({ getTheNewObservationByDatastream05 : function(){ return this.getFormatData($TA.Model('Datastream',{id:5}).Model('Observation').$top(1)); } }); Service.getTheNewObservationByDatastream05().next()
第一種方法,以Service()物件的serverDomain作為預設URL,或者自行傳入URL,並給設定好的Model,回傳ResultSet。
Property | Required | Type | Default |
---|---|---|---|
Model | mandatory | JSON Object | none |
URL | optional | String | serverDomain |
callback | optional | function | false |
let Model = $TA.Model('Thing').$expand($TA.Model('Location')); //建立Model let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain) //建立Service() let ResultSet = Service.getFormatData(Model); //取得ResultSet ResultSet.next()
第二種方式,直接給定完整的URL,回傳ResultSet。
Property | Required | Type | Default |
---|---|---|---|
URL | mandatory | String | none |
callback | optional | function | false |
let URL = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things?$expand=Locations"; let ResultSet = $TA.Service.getFormatData(URL); ResultSet.next()
Function | Usage | Description |
---|---|---|
getThings(serviceURL,callback) | 取回所有的Things實體 | 傳入目標server的URL |
getLocations(serviceURL,callback) | 取回所有的Datastreams實體 | 傳入目標server的URL |
getHistoricalLocations(serviceURL,callback) | 取回所有的HistoricalLocations實體 | 傳入目標server的URL |
getDatastreams(serviceURL,callback) | 取回所有的Datastreams實體 | 傳入目標server的URL |
getSensors(serviceURL,callback) | 取回所有的Sensors實體 | 傳入目標server的URL |
getObservedProperties(serviceURL,callback) | 取回所有的ObservedProperties實體 | 傳入目標server的URL |
getObservations(serviceURL,callback) | 取回所有的Observations實體 | 傳入目標server的URL |
getFeaturesOfInterests(serviceURL,callback) | 取回所有的FeaturesOfInterests實體 | 傳入目標server的URL |
回傳ResultSet:Things
Property | Required | Type | Default |
---|---|---|---|
serviceURL | optional | String | serverDomain |
callback | optional | function | false |
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things let URL = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let ResultSet = $TA.Service.getThings(URL); ResultSet.next();
Function | Usage | Description |
---|---|---|
getThingByID(ID,serviceURL,callback) | 取回Things(ID)實體 | 傳入目標server的URL及ID |
getLocationByID(ID,serviceURL,callback) | 取回Datastreams(ID)實體 | 傳入目標server的URL及ID |
getHistoricalLocationByID(ID,serviceURL,callback) | 取回HistoricalLocations(ID)實體 | 傳入目標server的URL及ID |
getDatastreamByID(ID,serviceURL,callback) | 取回Datastreams(ID)實體 | 傳入目標server的URL及ID |
getSensorByID(ID,serviceURL,callback) | 取回Sensors(ID)實體 | 傳入目標server的URL及ID |
getObservedPropertYByID(ID,serviceURL,callback) | 取回ObservedProperties(ID)實體 | 傳入目標server的URL及ID |
getObservationByID(ID,serviceURL,callback) | 取回Observations(ID)實體 | 傳入目標server的URL及ID |
getFeaturesOfInterestByID(ID,serviceURL,callback) | 取回FeaturesOfInterests(ID)實體 | 傳入目標server的URL及ID |
回傳ResultSet:Thing(ID)。
Property | Required | Type | Default |
---|---|---|---|
ID | mandatory | String / Int | none |
URL | optional | String | serverDomain |
callback | optional | function | false |
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things(8) let ID = "8"; let URL = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let ResultSet = $TA.Service.getThingByID(ID,URL); ResultSet.next();
Function | Usage | Description |
---|---|---|
getLocationsByThingID(ID,serviceURL,callback) | 取回Things(ID)/Locations實體 | 傳入目標server的URL及ThingID |
getHistoricalLocationsByThingID(ID,serviceURL,callback) | 取回所有的Things(ID)/HistoricalLocations實體 | 傳入目標server的URL及ThingID |
getDatastreamsByThingID(ID,serviceURL,callback) | 取回所有的Things(ID)/Datastreams實體 | 傳入目標server的URL及ThingID |
getThingsByLocationID(ID,serviceURL,callback) | 取回Locations(ID)/Things實體 | 傳入目標server的URL及LocationID |
getHistoricalLocationsByLocationID(ID,serviceURL,callback) | 取回所有的Locationss(ID)/HistoricalLocations實體 | 傳入目標server的URL及LocationID |
getThingByHistoricalLocationID(ID,serviceURL,callback) | 取回HistoricalLocations(ID)/Thing實體 | 傳入目標server的URL及HistoricalLocationID |
getLocationsByHistoricalLocationID(ID,serviceURL,callback) | 取回HistoricalLocations(ID)/Locations實體 | 傳入目標server的URL及HistoricalLocationID |
getThingByDatastreamID(ID,serviceURL,callback) | 取回Datastreams(ID)/Thing實體 | 傳入目標server的URL及DatastreamID |
getSensorByDatastreamID(ID,serviceURL,callback) | 取回所有的Datastreams(ID)/Sensor實體 | 傳入目標server的URL及DatastreamID |
getObservedPropertyByDatastreamID(ID,serviceURL,callback) | 取回所有的Datastreams(ID)/ObservedProperty實體 | 傳入目標server的URL及DatastreamID |
getObservationsByDatastreamID(ID,serviceURL,callback) | 取回所有的Datastreams(ID)/Observations實體 | 傳入目標server的URL及DatastreamID |
getDatastreamsBySensorID(ID,serviceURL,callback) | 取回所有的Sensors(ID)/Datastreams實體 | 傳入目標server的URL及SensorID |
getDatastreamsByObservedPropertyID(ID,serviceURL,callback) | 取回所有的ObservedProperties(ID)/Datastreams實體 | 傳入目標server的URL及ObservedPropertyID |
getDatastreamByObservationID(ID,serviceURL,callback) | 取回所有的Observations(ID)/Datastream實體 | 傳入目標server的URL及ObservationID |
getFeatureOfInterestByObservationID(ID,serviceURL,callback) | 取回所有的Observations(ID)/FeatureOfInterest實體 | 傳入目標server的URL及ObservationID |
getObservationsByFeatureOfInterestID(ID,serviceURL,callback) | 取回所有的FeatureOfInterest(ID)/Observations實體 | 傳入目標server的URL及FeatureOfInterestID |
回傳ResultSet:Locations(ID)/Things。
Property | Required | Type | Default |
---|---|---|---|
LocationID | mandatory | String / Int | none |
URL | optional | String | serverDomain |
callback | optional | function | false |
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Locations(8)/Things let ID = "8"; let URL = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let ResultSet = $TA.Service.getThingByLocationID(ID,URL); ResultSet.next();
Function | Usage | Description |
---|---|---|
getThingsByThingsProperties(ThingProperties,serviceURL,callback) | 取回符合Properties的Things實體 | 傳入目標server的URL及ThingProperties |
getDatastreamsAndObservationsByThingsProperties(ThingProperties,serviceURL,callback) | 取回符合Properties的Datastreams及Observations實體 | 傳入目標server的URL及ThingProperties |
getDatastreamsAndObservationsByObservedPropertyAndThingsProperties (ObservedProperty,ThingProperties,serviceURL,callback) |
取回符合Properties且特定ObservedProperty的Datastreams及Observations實體 | 傳入目標server的URL及ObservedProperty、ThingProperties |
getThingsBylocationPolygonAndObservedProperty(polygon,ObservedProperty,serviceURL,callback) | 取回經緯度在範圍中且特定ObservedProperty的Things實體 | 傳入目標server的URL及經緯度範圍、ObservedProperty |
getDatastreamAndObservationsByDatastreamIDAndTimePeriod(DatastreamID,TimePeriod,serviceURL,callback) | 取回時間段內且特定DatastreamID的Datastreams及Observations實體 | 傳入目標server的URL及DatastreamID、時間段區間 |
getDatastreamsAndObservationsByObservedPropertyAndTimePeriod(ObservedProperty,TimePeriod,serviceURL,callback) | 取回時間段內且特定ObservedProperty的Datastreams及Observations實體 | 傳入目標server的URL及ObservedProperty、時間段區間 |
getDatastreamsAndObservationsByThingIDAndTimePeriod(ThingID,TimePeriod,serviceURL,callback) | 取回時間段內且特定ThingID的Datastreams及Observations實體 | 傳入目標server的URL及ThingID、時間段區間 |
回傳ResultSet:Things。(符合ThingProperties)
Property | Required | Type | Default |
---|---|---|---|
properties | mandatory | JSON Object Array | none |
URL | optional | String | serverDomain |
callback | optional | function | false |
//properties可多筆、屬性名稱不可變、需json格式 //SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things?$count=true&$filter=properties/authority eq '行政院環境保護署' and properties/city eq '彰化縣' let properties = [ { "properties": "authority", "characteristic": "行政院環境保護署", }, { "properties": "city", "characteristic": "彰化縣", }, ]; let URL = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let ResultSet = $TA.Service.getThingsByThingsProperties(properties,URL); ResultSet.next()
回傳ResultSet:Datastreams。(符合ThingProperties)
Property | Required | Type | Default |
---|---|---|---|
properties | mandatory | JSON Object Array | none |
URL | optional | String | serverDomain |
callback | optional | function | false |
//properties可多筆、屬性名稱不可變、需json格式 //SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Datastreams?$expand=Observations&$filter=Thing/properties/authority eq '行政院環境保護署' and Thing/properties/city eq '彰化縣' &$count=true let properties = [ { "properties": "authority", "characteristic": "行政院環境保護署", }, { "properties": "city", "characteristic": "彰化縣", }, ]; let URL = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let ResultSet = $TA.Service.getDatastreamsAndObservationsByThingsProperties(properties,URL) ResultSet.next()
回傳ResultSet:Datastreams。(符合ObservedProperty及ThingProperties)
Property | Required | Type | Default |
---|---|---|---|
ObservedProperty | mandatory | String | none |
properties | mandatory | JSON Object Array | none |
URL | optional | String | serverDomain |
callback | optional | function | false |
//properties可多筆、屬性明稱不可變、需json格式 //SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Datastreams?$expand=Observations($orderby=phenomenonTime desc)&$filter=ObservedProperties/name eq 'PM2.5' and Thing/properties/authority eq '行政院環境保護署' and Thing/properties/city eq '彰化縣' &$count=true let ObservedProperty = "PM2.5"; let properties = [ { "properties": "authority", "characteristic": "行政院環境保護署", }, { "properties": "city", "characteristic": "彰化縣", }, ]; let URL = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let ResultSet = $TA.Service.getDatastreamsAndObservationsByObservedPropertyAndThingsProperties(ObservedProperty,properties,URL) ResultSet.next()
(polygon,ObservedProperty,URL,callback):回傳ResultSet:Things。(空間查詢特定觀測值的Things)
Property | Required | Type | Default |
---|---|---|---|
polygon | mandatory | WKT String | none |
ObservedProperty | mandatory | String | none |
URL | optional | String | serverDomain |
callback | optional | function | false |
//polygon裡面存放WKT格式POLYGON //SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Datastreams?$expand=Observations($filter=phenomenonTime ge 2019-11-10T15:00:00.000Z and phenomenonTime le 2019-11-12T12:00:00.000Z;$count=true;$orderby=phenomenonTime asc)&$filter=ObservedProperties/name eq 'PM2.5' let polygon = "POLYGON ((120.409653 23.925175, 121.493806 25.072611 , 120.758833 24.382942, 122.758833 26.382942, 120.409653 23.925175))"; let ObservedProperty = "PM2.5"; let URL = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let ResultSet = $TA.Service.getThingsAndLatestObservationByLocationPolygonAndObservedProperty(polygon,ObservedProperty,URL) ResultSet.next()
ResultSet:Datastream。(時間段內特定DatastreamID的Datastream)
Property | Required | Type | Default |
---|---|---|---|
DatastreamID | mandatory | String / Int | none |
TimePeriod | mandatory | JSON Object Array | none |
URL | optional | String | serverDomain |
callback | optional | function | false |
//TimePeriod裡面存放起末時間、僅單筆、需json格式 //SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Datastreams(10)?$expand=Observations($filter=Observations/phenomenonTime ge 2019-11-10T15:00:00.000Z and phenomenonTime le 2019-11-12T12:00:00.000Z;$orderby=Observations/phenomenonTime asc) let TimePeriod = { "start":"2019-11-10T15:00:00.000Z", "end":"2019-11-12T12:00:00.000Z" }; let URL = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let DatastreamID = "10"; let ResultSet = $TA.Service.getDatastreamAndObservationsByDatastreamIDAndTimePeriod(DatastreamID,TimePeriod,URL) ResultSet.next()
回傳ResultSet:Datastreams。(時間段內特定ObservedProperty的Datastreams)
Property | Required | Type | Default |
---|---|---|---|
ObservedProperty | mandatory | String | none |
TimePeriod | mandatory | JSON Object | none |
URL | optional | String | serverDomain |
callback | optional | function | false |
//TimePeriod僅單筆、需json格式 //SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Datastreams?$expand=Observations($filter=phenomenonTime ge 2019-11-10T15:00:00.000Z and phenomenonTime le 2019-11-12T12:00:00.000Z;$count=true;$orderby=phenomenonTime asc)&$filter=ObservedProperties/name eq 'PM2.5' let ObservedProperty = "PM2.5"; let TimePeriod = { "start":"2019-11-10T15:00:00.000Z", "end":"2019-11-12T12:00:00.000Z" }; let URL = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let ResultSet = $TA.Service.getDatastreamsAndObservationsByObservedPropertyAndTimePeriod(ObservedProperty,TimePeriod,URL) ResultSet.next()
回傳ResultSet:Datastreams。(時間段查詢特定測站的Datastreams)
Property | Required | Type | Default |
---|---|---|---|
ThingID | mandatory | String / Int | none |
TimePeriod | mandatory | JSON Object | none |
URL | optional | String | serverDomain |
callback | optional | function | false |
//TimePeriod僅單筆、需json格式 //SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Datastreams?$expand=Observations($filter=phenomenonTime ge 2019-11-10T15:00:00.000Z and phenomenonTime le 2019-11-12T12:00:00.000Z;$count=true;$orderby=phenomenonTime asc)&$filter=Things/id eq '10'&$orderby=Datastream/id let ThingID = "10"; let TimePeriod = { "start":"2019-11-10T15:00:00.000Z", "end":"2019-11-12T12:00:00.000Z" } let URL = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let ResultSet = $TA.Service.getDatastreamsAndObservationsByThingIdAndTimePeriod(ThingID,TimePeriod,URL) ResultSet.next()
使用ResultSet繪製地圖及圖表。使用時需要先建立$TA.Display()物件,該物件會引入Leaflet及Highchart。
Function | Usage | Description |
---|---|---|
drawMap(divID,ResultSet) | 繪製地圖 | 傳入Things的ResultSet,根據Location標記 |
drawChart(divID,serviceURL,DatastreamID,TimePeriod) | 繪製圖表 | 第一種方式,繪製特定ID的Datastreams在時間段內的觀測量 |
drawChart(divID,ResultSet) | 繪製圖表 | 第二種方式,傳入Datastreams的ResultSet,根據Observations繪製 |
建立Model來getFormatData()或使用高階函數取得ResultSet。並將傳入的ResultSet(Things)按照Locations在地圖上標記位置,必須存有Locations才能繪圖。回傳Leaflet的map物件。
Property | Required | Type | Default |
---|---|---|---|
divID | mandatory | String | none |
ResultSet | mandatory | JSON Object Array | none |
let Model = $TA.Model('Thing').$expand($TA.Model('Location')); //建立包含Locations的Things Model物件 let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain) //建立一個Service()物件 let ResultSet = Service.getFormatData(Model,URL); //取得ResultSet let divID = "myMap"; //設定地圖繪製的位置 let Display = $TA.Display(); //建立一個Display()物件 Display.drawMap(divID,ResultSet) //用drawMap()繪製地圖、並回傳map物件
let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.serverDomain(serverDomain); //建立一個Service()物件 let polygon = "POLYGON ((120.409653 23.925175, 121.493806 25.072611 , 120.758833 24.382942, 122.758833 26.382942, 120.409653 23.925175))"; let ObservedProperty = "PM2.5"; let ResultSet = Service.getThingsAndLatestObservationByLocationPolygonAndObservedProperty(polygon,ObservedProperty); //取得ResultSet let divID = "myMap"; //設定地圖繪製的位置 let Display = $TA.Display(); //建立一個Display()物件 Display.drawMap(divID,ResultSet) //用drawMap()繪製地圖、並回傳map物件
//SensorThings請求為https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things?$expand=Locations,Datastreams,Datastreams/Observations&$filter=Things/properties/city eq '新北市' and substringof('空氣品質測站',name) //自訂查詢條件建立Model。例:取得新北市的空氣品質測站及觀測量 let Model = $TA.Model('Thing').$expand($TA.Model('Location'),$TA.Model('Datastream')),$TA.Model('Datastream').Model('Observation')).$filter("Things/properties/city eq '新北市' and substringof('空氣品質測站',name)") let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); //建立Service()物件 let ResultSet = Service.getFormatData(Model,URL) //取得ResultSet let divID = "myMap"; //設定地圖繪製的位置 let Display = $TA.Display(); //建立Display()物件 Display.drawMap(divID,ResultSet) //用drawMap()繪製地圖、並回傳map物件
第一種方式,查詢特定ID的Datastream在時間段內的觀測量,並繪製圖表。回傳Highchart的chart物件。
Property | Required | Type | Default |
---|---|---|---|
divID | mandatory | String | none |
URL | mandatory | String | none |
DatastreamID | mandatory | Array | none |
TimePeriod | mandatory | JSON Object Array | none |
//DatastreamID可多筆、需array格式 //DatastreamID個數須與Timeperiod個數相同,或多筆Datastream共用一個Timeperiod let URL = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let DatastreamID = [6,30,46,76,100]; let TimePeriod = [ { "start":"2019-11-13T15:00:00.000Z", "end":"2019-11-24T12:00:00.000Z" }, { "start":"2019-11-15T12:00:00.000Z", "end":"2019-11-25T04:00:00.000Z" }, { "start":"2019-11-10T12:00:00.000Z", "end":"2019-11-20T20:00:00.000Z" }, { "start":"2019-11-13T16:00:00.000Z", "end":"2019-11-23T04:00:00.000Z" }, { "start":"2019-11-17T03:00:00.000Z", "end":"2019-11-28T06:00:00.000Z" } ]; let divID = "draw"; //設定圖表繪製的位置 let Display = $TA.Display(); //建立Display()物件 Display.drawChart(divID,URL,DatastreamID,TimePeriod) //用drawChart()繪製地圖、並回傳chart物件
第二種方式,建立Model來getFormatData()取得ResultSet,根據ResultSet(Datastreams)繪製圖表,必須存有Observations才能繪圖。
Property | Required | Type | Default |
---|---|---|---|
divID | mandatory | String | none |
ResutlSet | mandatory | JSON Object Array | none |
//SensorThings請求為 https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/Things(5)/Datastreams?$expand=Observations($filter=Datastreams/Observations/phenomenonTime ge 2019-11-10T12:00:00.000Z and Datastreams/Observations/phenomenonTime le 2019-11-12T12:00:00.000Z)&$orderby=Datastream/id let Model = $TA.Model('Thing',{id:'5'}).Model('Datastream').$expand($TA.Model('Observation').$filter("Datastreams/Observations/phenomenonTime ge 2019-11-10T12:00:00.000Z and Datastreams/Observations/phenomenonTime le 2019-11-12T12:00:00.000Z")).$orderby("Datastream/id"); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); //建立Service()物件 let ResultSet = $TA.Service.getFormatData(Datastream,URL); //取得ResultSet let divID = "draw"; //設定圖表繪製的位置 let Display = $TA.Display() //建立Display()物件 Display.drawChart.(divID,ResultSet); //用drawChart()繪製圖表、並回傳chart物件
第三種方式,利用高階函數取得ResultSet,根據ResultSet(Datastreams)繪製圖表,必須存有Observations才能繪圖。
3.建立Display()物件
4.用drawMap()繪製
let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/" let Service = $TA.Service(serverDomain); //建立Service()物件 let ThingID = "10"; let TimePeriod = { "start":"2019-11-10T15:00:00.000Z", "end":"2019-11-12T12:00:00.000Z" } let ResultSet = Service.getDatastreamsAndObservationsByThingIDAndTimePeriod(ThingID,TimePeriod); //取得ResultSet let divID = "draw"; //設定圖表繪製的位置 let Display = $TA.Display(); //建立Display()物件 Display.drawChart(divID,ResultSet) //用drawChart()繪製圖表、並回傳chart物件
可對$TA的Model類別新增自定義的物件,或對$TA的Service、Display類別中新增自定義的function。
但無法對ResultSet使用。
Property | Required | Type | Default |
---|---|---|---|
className | mandatory | String | none |
function | mandatory | function | none |
可以在Model類別中,新增自定的物件。
$TA.extend('Model', { Task: function(id, name, data, Thing) { this.type='Task'; this.id = id; this.data = data; this.name = name; this.Thing = Thing; return this; } }); let Model = $TA.Model('Task',{id:3,name:'Task1',data:'Test'});
可以在Service類別中,新增自定的function。
//新增function用來取得ID為1的Thing及其所有的Datastream $TA.extend('Service', { getThing01$expandDatastream: function() { return this.getFormatData($TA.Model('Thing', {id: 1}).$expand($TA.Model('Datastream'))); } }); let serverDomain = "https://sta.ci.taiwan.gov.tw/STA_AirQuality_v2/v1.0/"; let Service = $TA.Service(serverDomain); let ResultSet = Service.getThing01$expandDatastream(); ResultSet.next()