iNaturalist 專案 - 新竹市行道樹

專案首頁

此專案行道樹列表

俗名/學名
是否已列入專案
名稱來源
備註
新竹市府網站

Roystonea regia (H. B. K.) O. F. Cook
王棕
新竹市府網站

新竹市府網站

Ficus religionsa L.
思維樹、畢羅樹

新竹市府網站

楓香樹 Formosan Sweet Gum
Liquidambar formosana Hance
楓樹、丹楓、楓仔樹、香楓、香菇木
新竹市府網站
新竹市府網站

新竹市府網站

Terminalia boivinii Tul.(樹木誌)
雨傘樹、細葉欖仁、非洲欖仁樹
新竹市府網站

榕樹
正榕、榕樹根、倒吊榕根、老公鬚
Ficus microcarpa L. f.

Bischofia javanica Blume
重陽木、加冬

Koelreuteria henryi Dummer
苦苓舅、拔仔雞油、台灣欒華、木欒仔、五色欒華

Melaleuca leucadendron L.(樹木誌)
相思仔、日本相思、白瓶刷子樹、剝皮樹

木棉
Bombax malabaricum DC.
班芝樹、攀支花

盾柱木
Peltophorum inerme (Roxb.) Naves (樹木誌)
盾柱樹、雙翼豆

水黃皮
Pongamia pinnata (L.) Pierre ex Merr.
九重吹、水流豆、臭腥仔、鳥樹

大花紫薇
Lagerstroemia speciosa (L.) Pers.
百日紅

榔榆
Ulmus parvifolia Jacq.
紅雞油、秋榆

垂榕
Ficus benjamina L.
白肉榕、白榕、小葉榕、垂葉榕、孟占明榕

刺桐類
Erythrina variegata L.
梯枯、雞公樹

山櫻花
科  別:薔薇科
Prnus campanulata Maxim.
緋寒櫻

印度橡膠樹
科  別:桑科
Ficus elastica Roxb.
緬榕、橡皮樹、印度膠樹

蒲葵
科  別:棕櫚科
Livistona chinensis R. Br. var. subglobosa (Mart.) Becc.
木葵、散葉蒲葵

阿勃勒
科  別:蘇木科
Cassia fistula

烏臼
科  別:大戟科
Sapium sebiferum
木蠟樹、樁仔、瓊仔

檬果
科  別:漆樹科
Mangifera indica

美人樹
科  別:木棉科
Chorisia speciosa

火燄木
科  別:紫葳科
Spathodea campanulata

羅比親王海棗
科  別:棕櫚科
Phoenix roebelenii

苦楝
科  別:楝科
Melia azedarach
苦苓

印度紫檀
科  別:蝶形花科
Pterocarpus indicus
一日花

杜英
科  別:椴樹科
Elaeocarpus sylvestris
杜鶯,猴歡喜

紫薇
科  別:千屈菜科
Lagerstroemia indica
滿堂紅、百日紅、猴滑樹

艷紫荊

科  別:蘇木科
Bauhinia × blakeana

鳳凰木
科  別:蘇木科
Delonix regia
金鳳樹,火樹,紅花楹,九腳蹄

桃花心木
科  別:楝科
Swietenia macrophylla
新竹市府網站

大葉桉
科  別:桃金孃科
Eucalyptus robusta

龍柏
科  別:柏科
Juniperus chinensis cv.kaizuka
縲絲柏、繞龍柏、日本柏

猢猻木
科  別:木棉科
Adansonia digitata Linn.
猴麵包樹、酸瓠樹

福木
科  別:藤黃科
Garcinia suubelliptica
福樹、楠仔

厚皮香
科  別:茶科
Ternstroemia gymnanthera
紅柴、紅淡、紅樹、木槲

烏心石
科  別:木蘭科
Michelia formosana
鱸鰻、台灣含笑、扁玉蘭

大葉山欖
科  別:山欖科
Palaquium formosanum
臺灣膠木、驫古公樹、山檬果


分享

研究

行道樹資料觀察

政府開放資料


  • 手動查詢 Tree_Type
  • 04EB5C6A594980 榕樹 , TREE_TYPE_ 44

  • 某棵樹的 GPS ↔ google street map
  • 此顆 0448B56A594980(大王椰子)@24.171391,120.660998 街景
  • 老榕樹地圖

台中行道樹開放資料建議後新版 解析

  • 欄位差異
  • 少了 icon 之後的欄位,增加了 snippet
  • description 多了資訊
  • 樹種名
  • 樹胸徑(直徑,公分)
  • 樹圍(周長,公分)
  • 樹高(公尺)
  • 樹冠頭(面積,平方公尺)
  • 調查日
  • 少了 TREE_TYPE
  • 整體來說,多了更多有用的資訊,稍微增加處理的難度,美中不足是還是少了學名
  • 樹冠頭

評價:
整體來說,此更新超棒!
1. 感謝提供更多有價值的樹木狀態資訊。非常有心的單位
2. 在跟其他系統對接的時候,如有學名,則會更有幫助
3. 補充:樹的描述資訊都放入 description 有點增加後續處理的難度,不很重要,或許是有其他的考量,僅提供參考
  • 轉檔
  • 應該使用 openrefine 最有效率
  • 參考

  • Openrefine script
  • 解 HTML 出 table 值
  • remove HTML tags
  • 將欄位名/值萃取出來
  • rows 轉 cols
  • 改欄位名稱,刪除名稱欄位
  • 刪除 description 與處理過程欄位
[
  {
    "op": "core/column-addition",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "baseColumnName": "description",
    "expression": "grel:value.parseHtml().select(\"table\")[1].select(\"tr\").toString()",
    "onError": "set-to-blank",
    "newColumnName": "desc1",
    "columnInsertIndex": 2,
    "description": "Create column desc1 at index 2 based on column description using expression grel:value.parseHtml().select(\"table\")[1].select(\"tr\").toString()"
  },
  {
    "op": "core/column-addition",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "baseColumnName": "desc1",
    "expression": "grel:replace(value,/<\\/?\\w+((\\s+\\w+(\\s*=\\s*(?:\".*?\"|'.*?'|[^'\">\\s]+))?)+\\s*|\\s*)\\/?>/,'')",
    "onError": "set-to-blank",
    "newColumnName": "desc2",
    "columnInsertIndex": 3,
    "description": "Create column desc2 at index 3 based on column desc1 using expression grel:replace(value,/<\\/?\\w+((\\s+\\w+(\\s*=\\s*(?:\".*?\"|'.*?'|[^'\">\\s]+))?)+\\s*|\\s*)\\/?>/,'')"
  },
  {
    "op": "core/column-addition",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "baseColumnName": "desc2",
    "expression": "grel:value.find(/\\S+/).join(\",\")",
    "onError": "set-to-blank",
    "newColumnName": "desc3",
    "columnInsertIndex": 4,
    "description": "Create column desc3 at index 4 based on column desc2 using expression grel:value.find(/\\S+/).join(\",\")"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "desc3",
    "newColumnName": "cols",
    "description": "Rename column desc3 to cols"
  },
  {
    "op": "core/column-split",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "columnName": "cols",
    "guessCellType": true,
    "removeOriginalColumn": true,
    "mode": "separator",
    "separator": ",",
    "regex": false,
    "maxColumns": 0,
    "description": "Split column cols by separator"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 4",
    "newColumnName": "樹籍編",
    "description": "Rename column cols 4 to 樹籍編"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 6",
    "newColumnName": "樹種名",
    "description": "Rename column cols 6 to 樹種名"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 8",
    "newColumnName": "樹胸徑_",
    "description": "Rename column cols 8 to 樹胸徑_"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 10",
    "newColumnName": "樹圍_公",
    "description": "Rename column cols 10 to 樹圍_公"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 12",
    "newColumnName": "樹高_公",
    "description": "Rename column cols 12 to 樹高_公"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 14",
    "newColumnName": "樹冠投",
    "description": "Rename column cols 14 to 樹冠投"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 16",
    "newColumnName": "推估種",
    "description": "Rename column cols 16 to 推估種"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 18",
    "newColumnName": "調查日",
    "description": "Rename column cols 18 to 調查日"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 20",
    "newColumnName": "行政區",
    "description": "Rename column cols 20 to 行政區"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 22",
    "newColumnName": "里",
    "description": "Rename column cols 22 to 里"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 24",
    "newColumnName": "所在地",
    "description": "Rename column cols 24 to 所在地"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 26",
    "newColumnName": "地點類",
    "description": "Rename column cols 26 to 地點類"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 28",
    "newColumnName": "X坐標_TW",
    "description": "Rename column cols 28 to X坐標_TW"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 30",
    "newColumnName": "Y坐標_TW",
    "description": "Rename column cols 30 to Y坐標_TW"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 32",
    "newColumnName": "緯度",
    "description": "Rename column cols 32 to 緯度"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 34",
    "newColumnName": "經度",
    "description": "Rename column cols 34 to 經度"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "cols 2",
    "newColumnName": "FID",
    "description": "Rename column cols 2 to FID"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 1",
    "description": "Remove column cols 1"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 3",
    "description": "Remove column cols 3"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 5",
    "description": "Remove column cols 5"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 7",
    "description": "Remove column cols 7"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 9",
    "description": "Remove column cols 9"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 11",
    "description": "Remove column cols 11"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 13",
    "description": "Remove column cols 13"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 15",
    "description": "Remove column cols 15"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 17",
    "description": "Remove column cols 17"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 19",
    "description": "Remove column cols 19"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 21",
    "description": "Remove column cols 21"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 23",
    "description": "Remove column cols 23"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 25",
    "description": "Remove column cols 25"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 27",
    "description": "Remove column cols 27"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 29",
    "description": "Remove column cols 29"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 31",
    "description": "Remove column cols 31"
  },
  {
    "op": "core/column-removal",
    "columnName": "cols 33",
    "description": "Remove column cols 33"
  },
  {
    "op": "core/column-removal",
    "columnName": "description",
    "description": "Remove column description"
  },
  {
    "op": "core/column-removal",
    "columnName": "desc1",
    "description": "Remove column desc1"
  },
  {
    "op": "core/column-removal",
    "columnName": "desc2",
    "description": "Remove column desc2"
  }
]
  • 資料勘誤
  • 樹籍:04DF1C6A594980,名稱: ?梧 應為: 椬梧。KML 就錯誤了
  • 竟然沒有樹種名稱
  • 用 KML 在 google my map / QGIS 互轉
  • CSV 資料容易用 google map 轉入,然後輸出成 KML
  • QGIS export layer, 也可以轉成 KML
  • QGIS import vector 也可以輸入 KML
  • 實例:某鄉鎮邊界轉到 google my map 
  • QGIS 將開放資料中的鄉鎮圖資→選某個鄉鎮→存成圖層
  • 將此圖層匯出 KML, 再匯入google my map
  • 資料中的 GPS, 有時是 WD97 格式,如何轉入 google my map?
  • google my map 似乎使用 WGS84 格式
  • 匯入 QGIS (選擇 97 格式),匯出 KML (選 WGS84 )

其他


資料/系統盤點

型態說明
  • GIS 系統:地理資訊系統,樹標示在系統上
  • 資料:資料可下載
  • 開放圖資:資料為圖資型
  • 網頁:資料可在網站上瀏覽,查詢。但沒有地圖的功能
縣市
分類
名稱
型態
連結與補充
台北市
行道樹
GIS系統

台北市
行道樹

似乎下載不下來
新北市
行道樹
資料
沒有樹種,有 GPS
台中市
行道樹
GIS系統

台中市
行道樹
開放圖資
路,樹種,何時種,GPS
台南市
行道樹
網頁
位置沒有GPS, 只有路名,某路有幾棵樹
台南市
行道樹
資料
位置沒有GPS, 只有路名,某路有幾棵樹
花蓮/台東
老樹
資料
97 座標,花蓮台東區。已匯入 my map
新竹縣
老樹
資料
97 座標,須轉換,已匯入 my map
新竹市
老樹
資料
已匯入 my map
苗栗縣
老樹
資料
DOC
樹種,村里/路
雲林縣
老樹
資料
[未處理]無法下載
嘉義縣
老樹
資料
[未處理]97 座標,須轉換(轉換過程有錯誤)
台北市
老樹
資料
XML
這個可以轉成 CSV
已匯入 my map
澎湖縣
老樹
資料
有地址, 沒有 GPS
桃園市
老樹
資料
已匯入 my map
台中市
老樹
資料
[未處理]地址
查詢

其他

系統


經緯度轉段號

使用 openrefine 將種樹專案給的位置,找出段號等資訊

  • 執行範例
{
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "MultiPolygon",
                "coordinates": [
                    [
                        [
                            [
                                121.55366625461,
                                24.985793014745
                            ],
                            [
                                121.55366237187,
                                24.985791723302
                            ],
                            [
                                121.55369249155,
                                24.985761038096
                            ],
                            [
                                121.55384924635,
                                24.985815455747
                            ],
                            [
                                121.55381904241,
                                24.985846141297
                            ],
                            [
                                121.55380444302,
                                24.985860790847
                            ],
                            [
                                121.55379447147,
                                24.985873733201
                            ],
                            [
                                121.55376610959,
                                24.985864082985
                            ],
                            [
                                121.55368161324,
                                24.985834976479
                            ],
                            [
                                121.5536609312,
                                24.985827602179
                            ],
                            [
                                121.55366625461,
                                24.985793014745
                            ]
                        ]
                    ]
                ]
            },
            "properties": {
                "縣市": "臺北市",
                "鄉鎮": "文山區",
                "地段": "華興段三小段",
                "事務所": "古亭",
                "id": "AA0072",
                "段號": "141-3",
                "input": null,
                "ymax": 24.985873733201,
                "ymin": 24.985761038096,
                "xmax": 121.55384924635,
                "xmin": 121.5536609312,
                "xcenter": 121.553755088775,
                "ycenter": 24.985817385648502,
                "area_id": "AA",
                "section_id": "0072",
                "land_id": "01410003",
                "query_log": [
                    [
                        "(121.55379447147,24.985873733201) 經緯度查到 AA0072,01410003"
                    ]
                ],
                "query": "AA0072,01410003"
            }
        }
    ],
    "notfound": []
  • openrefine 處理的邏輯
  • 每一行
  • 合併 GPS 經緯度
  • 產生 query_str 去查詢得到 json
  • 根據查詢結果有沒有找到資料建立一個 result_status 欄位
  • result_status 有正常取得結果的
  • parseJson 取得 properties
  • 斷 properties 成個別欄位
  • 將 MultiPolygon 的 coordinates 斷出新欄位
  • 每 properties 欄位
  • 將個別欄位命名
  • 將欄位內容中的欄位名刪除
  • 一些技巧紀錄
'https://twland.ronny.tw/index/search?lands[]=' + value

value.parseJson()["features"][0]['properties']
{"縣市":"臺北市","鄉鎮":"文山區","地段":"華興段三小段","事務所":"古亭","id":"AA0072","段號":"141-3","input":null,"ymax":24.985873733201,"ymin":24.985761038096,"xmax":121.55384924635,"xmin":121.5536609312,"xcenter":121.553755088775,"ycenter":24.985817385648502,"area_id":"AA","section_id":"0072","land_id":"01410003","query_log":[["(121.55379447147,24.985873733201) 經緯度查到 AA0072,01410003"]],"query":"AA0072,01410003"}

substring(value,1,-1)


substring(value.split(':')[1],1,-1)
"縣市":"臺北市" -> 臺北市
value.split(':')[1]

value.parseJson()['features'][0]['geometry']['coordinates']
[[[[121.55366625461,24.985793014745],[121.55366237187,24.985791723302],[121.55369249155,24.985761038096],[121.55384924635,24.985815455747],[121.55381904241,24.985846141297],[121.55380444302,24.985860790847],[121.55379447147,24.985873733201],[121.55376610959,24.985864082985],[121.55368161324,24.985834976479],[121.5536609312,24.985827602179],[121.55366625461,24.985793014745]]]]

value.split(" ")[1]
  • 預計生成欄位
lon
lat
MultiPolygon-coordinates
縣市
鄉鎮
地段
事務所
id
段號
input
ymax
ymin
xmax
xmin
xcenter
ycenter
area_id
section_id
land_id
query_log
query
120.8535399
 21.89964806
[121.55366625461,24.985793014745],[121.55366237187,24.985791723302]
臺北市
文山區
華興段三小段
古亭
AA0072
141-3
null
24.985873733201
121.55384924635
121.55384924635
121.5536609312
121.553755088775
24.985817385648502
AA
0072
01410003
[["(121.55379447147,24.985873733201) 經緯度查到 AA0072,01410003"]]
"AA0072,01410003”
  • 欄位說明
  • 前面幾個欄位為原有資料
  • lon_lat:合併經緯度
  • query_status:0-API 結果說 not found 沒資料, 1-API 結果如果是正常
  • qr: 執行 API 取得的結果
  • geometry_coordinates: 此地號邊界點
  • 後面所有欄位為 properties 展開的各個欄位
  • openrefine script 紀錄,供之後使用與其他人接續處理
[
  {
    "op": "core/column-addition",
    "engineConfig": {
      "facets": [],
      "mode": "record-based"
    },
    "baseColumnName": "lon",
    "expression": "join ([coalesce(cells['lon'].value,''),coalesce(cells['lat'].value,'')],',')",
    "onError": "keep-original",
    "newColumnName": "lon_lat",
    "columnInsertIndex": 3,
    "description": "Create column lon_lat at index 3 based on column lon using expression join ([coalesce(cells['lon'].value,''),coalesce(cells['lat'].value,'')],',')"
  },
  {
    "op": "core/column-move",
    "columnName": "lon_lat",
    "index": 4,
    "description": "Move column lon_lat to position 4"
  },
  {
    "op": "core/column-addition-by-fetching-urls",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "Starred Rows",
          "expression": "row.starred",
          "columnName": "",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": true,
                "l": "true"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "baseColumnName": "lon_lat",
    "urlExpression": "grel:'https://twland.ronny.tw/index/search?lands[]=' + value",
    "onError": "set-to-blank",
    "newColumnName": "qr",
    "columnInsertIndex": 5,
    "delay": 5000,
    "cacheResponses": true,
    "httpHeadersJson": [
      {
        "name": "authorization",
        "value": ""
      },
      {
        "name": "user-agent",
        "value": "OpenRefine 3.3 [58b839b]"
      },
      {
        "name": "accept",
        "value": "*/*"
      }
    ],
    "description": "Create column qr at index 5 by fetching URLs based on column lon_lat using expression grel:'https://twland.ronny.tw/index/search?lands[]=' + value"
  },
  {
    "op": "core/column-removal",
    "columnName": "qr",
    "description": "Remove column qr"
  },
  {
    "op": "core/column-addition-by-fetching-urls",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "Starred Rows",
          "expression": "row.starred",
          "columnName": "",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": true,
                "l": "true"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "baseColumnName": "lon_lat",
    "urlExpression": "grel:'https://twland.ronny.tw/index/search?lands[]=' + value",
    "onError": "set-to-blank",
    "newColumnName": "qr",
    "columnInsertIndex": 5,
    "delay": 3000,
    "cacheResponses": true,
    "httpHeadersJson": [
      {
        "name": "authorization",
        "value": ""
      },
      {
        "name": "user-agent",
        "value": "OpenRefine 3.3 [58b839b]"
      },
      {
        "name": "accept",
        "value": "*/*"
      }
    ],
    "description": "Create column qr at index 5 by fetching URLs based on column lon_lat using expression grel:'https://twland.ronny.tw/index/search?lands[]=' + value"
  },
  {
    "op": "core/row-star",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "Starred Rows",
          "expression": "row.starred",
          "columnName": "",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": true,
                "l": "true"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "starred": false,
    "description": "Unstar rows"
  },
  {
    "op": "core/column-addition-by-fetching-urls",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "Starred Rows",
          "expression": "row.starred",
          "columnName": "",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": true,
                "l": "true"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "baseColumnName": "lon_lat",
    "urlExpression": "grel:'https://twland.ronny.tw/index/search?lands[]=' + value",
    "onError": "set-to-blank",
    "newColumnName": "qr2",
    "columnInsertIndex": 5,
    "delay": 1000,
    "cacheResponses": true,
    "httpHeadersJson": [
      {
        "name": "authorization",
        "value": ""
      },
      {
        "name": "user-agent",
        "value": "OpenRefine 3.3 [58b839b]"
      },
      {
        "name": "accept",
        "value": "*/*"
      }
    ],
    "description": "Create column qr2 at index 5 by fetching URLs based on column lon_lat using expression grel:'https://twland.ronny.tw/index/search?lands[]=' + value"
  },
  {
    "op": "core/row-star",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "Starred Rows",
          "expression": "row.starred",
          "columnName": "",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": true,
                "l": "true"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "starred": false,
    "description": "Unstar rows"
  },
  {
    "op": "core/column-removal",
    "columnName": "qr2",
    "description": "Remove column qr2"
  },
  {
    "op": "core/column-removal",
    "columnName": "qr",
    "description": "Remove column qr"
  },
  {
    "op": "core/column-addition-by-fetching-urls",
    "engineConfig": {
      "facets": [],
      "mode": "record-based"
    },
    "baseColumnName": "lon_lat",
    "urlExpression": "grel:'https://twland.ronny.tw/index/search?lands[]=' + value",
    "onError": "set-to-blank",
    "newColumnName": "qr",
    "columnInsertIndex": 5,
    "delay": 1000,
    "cacheResponses": true,
    "httpHeadersJson": [
      {
        "name": "authorization",
        "value": ""
      },
      {
        "name": "user-agent",
        "value": "OpenRefine 3.3 [58b839b]"
      },
      {
        "name": "accept",
        "value": "*/*"
      }
    ],
    "description": "Create column qr at index 5 by fetching URLs based on column lon_lat using expression grel:'https://twland.ronny.tw/index/search?lands[]=' + value"
  },
  {
    "op": "core/row-star",
    "engineConfig": {
      "facets": [
        {
          "type": "text",
          "name": "qr",
          "columnName": "qr",
          "query": "message",
          "mode": "text",
          "caseSensitive": false,
          "invert": false
        }
      ],
      "mode": "record-based"
    },
    "starred": true,
    "description": "Star rows"
  },
  {
    "op": "core/column-addition",
    "engineConfig": {
      "facets": [
        {
          "type": "text",
          "name": "qr",
          "columnName": "qr",
          "query": "message",
          "mode": "text",
          "caseSensitive": false,
          "invert": false
        }
      ],
      "mode": "record-based"
    },
    "baseColumnName": "qr",
    "expression": "grel:if(row.starred, 1, 0)",
    "onError": "set-to-blank",
    "newColumnName": "query_status",
    "columnInsertIndex": 6,
    "description": "Create column query_status at index 6 based on column qr using expression grel:if(row.starred, 1, 0)"
  },
  {
    "op": "core/column-move",
    "columnName": "query_status",
    "index": 5,
    "description": "Move column query_status to position 5"
  },
  {
    "op": "core/column-removal",
    "columnName": "query_status",
    "description": "Remove column query_status"
  },
  {
    "op": "core/column-addition",
    "engineConfig": {
      "facets": [
        {
          "type": "text",
          "name": "qr",
          "columnName": "qr",
          "query": "message",
          "mode": "text",
          "caseSensitive": false,
          "invert": false
        }
      ],
      "mode": "record-based"
    },
    "baseColumnName": "qr",
    "expression": "grel:if(row.starred, 0, 1)",
    "onError": "set-to-blank",
    "newColumnName": "query_status",
    "columnInsertIndex": 6,
    "description": "Create column query_status at index 6 based on column qr using expression grel:if(row.starred, 0, 1)"
  },
  {
    "op": "core/column-move",
    "columnName": "query_status",
    "index": 5,
    "description": "Move column query_status to position 5"
  },
  {
    "op": "core/row-star",
    "engineConfig": {
      "facets": [
        {
          "type": "text",
          "name": "qr",
          "columnName": "qr",
          "query": "message",
          "mode": "text",
          "caseSensitive": false,
          "invert": false
        }
      ],
      "mode": "record-based"
    },
    "starred": false,
    "description": "Unstar rows"
  },
  {
    "op": "core/mass-edit",
    "engineConfig": {
      "facets": [],
      "mode": "record-based"
    },
    "columnName": "query_status",
    "expression": "value",
    "edits": [
      {
        "from": [],
        "fromBlank": true,
        "fromError": false,
        "to": "1"
      }
    ],
    "description": "Mass edit cells in column query_status"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [],
      "mode": "record-based"
    },
    "columnName": "query_status",
    "expression": "value.toNumber()",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column query_status using expression value.toNumber()"
  },
  {
    "op": "core/column-addition",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "baseColumnName": "qr",
    "expression": "grel:substring(value.parseJson()[\"features\"][0]['properties'],1,-1)",
    "onError": "set-to-blank",
    "newColumnName": "prop",
    "columnInsertIndex": 7,
    "description": "Create column prop at index 7 based on column qr using expression grel:substring(value.parseJson()[\"features\"][0]['properties'],1,-1)"
  },
  {
    "op": "core/column-split",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "prop",
    "guessCellType": true,
    "removeOriginalColumn": true,
    "mode": "separator",
    "separator": ",",
    "regex": false,
    "maxColumns": 0,
    "description": "Split column prop by separator"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 1",
    "newColumnName": "縣市",
    "description": "Rename column prop 1 to 縣市"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 2",
    "newColumnName": "鄉鎮",
    "description": "Rename column prop 2 to 鄉鎮"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 3",
    "newColumnName": "地段",
    "description": "Rename column prop 3 to 地段"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 4",
    "newColumnName": "事務所",
    "description": "Rename column prop 4 to 事務所"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 5",
    "newColumnName": "id",
    "description": "Rename column prop 5 to id"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 6",
    "newColumnName": "段號",
    "description": "Rename column prop 6 to 段號"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 7",
    "newColumnName": "input",
    "description": "Rename column prop 7 to input"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 8",
    "newColumnName": "ymax",
    "description": "Rename column prop 8 to ymax"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 9",
    "newColumnName": "ymin",
    "description": "Rename column prop 9 to ymin"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 10",
    "newColumnName": "xmax",
    "description": "Rename column prop 10 to xmax"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 11",
    "newColumnName": "xmin",
    "description": "Rename column prop 11 to xmin"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 12",
    "newColumnName": "xcenter",
    "description": "Rename column prop 12 to xcenter"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 13",
    "newColumnName": "ycenter",
    "description": "Rename column prop 13 to ycenter"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 14",
    "newColumnName": "area_id",
    "description": "Rename column prop 14 to area_id"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 15",
    "newColumnName": "section_id",
    "description": "Rename column prop 15 to section_id"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 16",
    "newColumnName": "land_id",
    "description": "Rename column prop 16 to land_id"
  },
  {
    "op": "core/column-rename",
    "oldColumnName": "prop 17",
    "newColumnName": "query_log",
    "description": "Rename column prop 17 to query_log"
  },
  {
    "op": "core/column-removal",
    "columnName": "prop 21",
    "description": "Remove column prop 21"
  },
  {
    "op": "core/column-removal",
    "columnName": "prop 20",
    "description": "Remove column prop 20"
  },
  {
    "op": "core/column-removal",
    "columnName": "prop 19",
    "description": "Remove column prop 19"
  },
  {
    "op": "core/column-removal",
    "columnName": "prop 18",
    "description": "Remove column prop 18"
  },
  {
    "op": "core/column-removal",
    "columnName": "query_log",
    "description": "Remove column query_log"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "縣市",
    "expression": "grel:substring(value.split(':')[1],1,-1)",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column 縣市 using expression grel:substring(value.split(':')[1],1,-1)"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "鄉鎮",
    "expression": "grel:substring(value.split(':')[1],1,-1)",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column 鄉鎮 using expression grel:substring(value.split(':')[1],1,-1)"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "地段",
    "expression": "grel:substring(value.split(':')[1],1,-1)",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column 地段 using expression grel:substring(value.split(':')[1],1,-1)"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "事務所",
    "expression": "grel:substring(value.split(':')[1],1,-1)",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column 事務所 using expression grel:substring(value.split(':')[1],1,-1)"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "id",
    "expression": "grel:substring(value.split(':')[1],1,-1)",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column id using expression grel:substring(value.split(':')[1],1,-1)"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "段號",
    "expression": "grel:substring(value.split(':')[1],1,-1)",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column 段號 using expression grel:substring(value.split(':')[1],1,-1)"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "input",
    "expression": "grel:value.split(':')[1]",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column input using expression grel:value.split(':')[1]"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "ymax",
    "expression": "grel:value.split(':')[1]",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column ymax using expression grel:value.split(':')[1]"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "ymin",
    "expression": "grel:value.split(':')[1]",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column ymin using expression grel:value.split(':')[1]"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "xmax",
    "expression": "grel:value.split(':')[1]",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column xmax using expression grel:value.split(':')[1]"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "xmin",
    "expression": "grel:value.split(':')[1]",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column xmin using expression grel:value.split(':')[1]"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "xmin",
    "expression": "grel:value.split(':')[1]",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column xmin using expression grel:value.split(':')[1]"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "xcenter",
    "expression": "grel:value.split(':')[1]",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column xcenter using expression grel:value.split(':')[1]"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "ycenter",
    "expression": "grel:value.split(':')[1]",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column ycenter using expression grel:value.split(':')[1]"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "area_id",
    "expression": "grel:substring(value.split(':')[1],1,-1)",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column area_id using expression grel:substring(value.split(':')[1],1,-1)"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "section_id",
    "expression": "grel:substring(value.split(':')[1],1,-1)",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column section_id using expression grel:substring(value.split(':')[1],1,-1)"
  },
  {
    "op": "core/text-transform",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "query_status",
          "expression": "value",
          "columnName": "query_status",
          "invert": false,
          "omitBlank": false,
          "omitError": false,
          "selection": [
            {
              "v": {
                "v": 1,
                "l": "1"
              }
            }
          ],
          "selectBlank": false,
          "selectError": false
        }
      ],
      "mode": "record-based"
    },
    "columnName": "land_id",
    "expression": "grel:substring(value.split(':')[1],1,-1)",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10,
    "description": "Text transform on cells in column land_id using expression grel:substring(value.split(':')[1],1,-1)"
  },
  {
    "op": "core/column-addition",
    "engineConfig": {
      "facets": [],
      "mode": "record-based"
    },
    "baseColumnName": "qr",
    "expression": "grel:value.parseJson()['features'][0]['geometry']['coordinates']",
    "onError": "set-to-blank",
    "newColumnName": "geometry_coordinates",
    "columnInsertIndex": 7,
    "description": "Create column geometry_coordinates at index 7 based on column qr using expression grel:value.parseJson()['features'][0]['geometry']['coordinates']"
  }
]
  • 處理心得與補充
  • 約 2000 筆找段號約需執行 10 小時
  • openrefine 真是太強大了
  • 約 100 筆 API 會回傳 not found, 沒細究原因。說不定只是不穩定
  • multi-geojson export
  • 匯入 QGIS 驗證與測試
Prefix:
{
    "type": "FeatureCollection",
    "features": [

Row Template:
      {{jsonize(cells["qr"].value.parseJson()["features"][0])}}

Row Separator:
,
Suffix:

  ]
}

  • 面積統計資訊
已分析欄位: myarea, 單位應為 平方公尺
計數: 2235
唯一值: 2025
空值(遺失) :1
最小值: 29.0
最大值: 3460484.0
範圍: 3460455.0
總和: 81631728.0
平均值: 36524.26308724832
中位數: 7686.0
標準差: 153756.8560745848
變異係數: 4.209718227778996
最少數(最少出現的): 29.0
衆數(最多出現的): 25004.0
第一個四分位數:2537.0
第三個四分位數:24754.5
四分位距 (IQR):22217.5

新竹市食物森林--綠園道食物森林



製作行道樹地圖

  • 在 iNaturalist 匯出 CSV
  • 條件是 新竹市行道樹專案 + 有照片
  • 可能需要挑選簡化的欄位
  • 匯入 google my map
  • 挑選 common name 為分類,id 為標籤

新竹市行道樹地圖

從很久前買了一本台灣行道樹圖鑑,就想找找這些樹在家附近的哪裡。

直到最近的學習終於是有點進展了

  • 有了 iNaturalist 我們很容易知道某個物種在地圖上哪裡
  • iNaturalist - 新竹市行道樹專案,篩選了台灣常見的行道樹種類
於是在 iNaturalist 中,很容易有了新竹市行道樹地圖

美中不足的是,啊不知道哪種樹在哪裡,一個一個查有點 Low。
資料匯出/匯入很方便,於是節省大家幾分鐘。轉到 google my map 中

由於目前的觀察不多,當然資料不全,不過起碼每種是有幾顆可以看。喜歡樹的,可以隨手觀察上傳,地圖自然就會越來越豐富


新竹市行道樹 google map:
https://www.google.com/maps/d/u/0/edit?mid=1BKO9T-GkTwRFCJCmk4UB5El9VmyIweGT&ll=24.751906390175304%2C120.9569823022&z=11

新竹市行道樹 - iNaturalist 專案
https://www.inaturalist.org/projects/d038eeec-1cfa-46ab-b24d-c8f214fdcc57

台中都市廊道

用 OSM 找出學校跟公園區域
  • by 
### 臺中 學校與大學
[out:json][timeout:25];
// gather results
(
  // query part for: “university”
( area[name="臺中市"]; )->.a;
  way["amenity"="university"](area.a);
  way["amenity"="school"](area.a);

  relation["amenity"="university"](area.a);
relation["amenity"="school"](area.a);

);
// print results
out body;
>;
out skel qt;

####
[out:json][timeout:25];
// gather results
(
  // query part for: “university”
( area[name="臺中市"]; )->.a;
  way["leisure"="park"](area.a);

);
// print results
out body;
>;
out skel qt;
### 
[out:json][timeout:25];
// gather results
(
  ( area[name="臺中市"]; )->.a;
  // query part for: “river”
  way["waterway"="river"](area.a);
);
// print results
out body;
>;
out skel qt;

網格下周邊一公里有多少樹/樹冠面積

作法

  • 每公里的網格點→規則點 (向量→研究工具→產生規則點)
  • 每個網格點,周邊一公里的 buffer(向量→地理→輪廓)
  • 計算每個 buffer 內有幾棵樹(向量→分析→計算多邊形內數量)
  • 計數層使用漸層展示
  • 計數用樹的樹冠面積當權重,套疊不同不同層一起看

賞花地圖

正是台灣欒樹開花的季節,想說如果能知道哪裡有很多且密集的台灣欒樹,或是目前適合賞花的樹種地圖,應該是個很方便的事情

台中市有行道樹完整的開放資料,應該是個好的開始,來試試看這個想法
由於台中行道樹 shp 匯入很多數值欄位都是 string
  • 須先轉換成數值欄位後另存新欄位
  • 先將台灣欒樹資料,複製到 google sheet, 算出平均樹冠 
  • if( CROWN  IS 'NULL', 12.0, CROWN)
  • 已編輯回存
  • 做 buffer
  • 用樹的兩倍來做範圍
  • sqrt( CROWN_F)*2 =>sqrt( CROWN_F/3.14)*2 似乎比較正確
  • 根據里 使用 Dissolve with stats(plugin),融合 
  • CROWN_F 用 summary
  • 只顯示前十大的里
  • CROWN_F > 3000 (手動觀察的)
台灣欒樹

Chapter 1 全年無休的賞樹秘笈
樟樹、榕樹、垂榕、雀榕、稜果榕、琴葉榕、金龜樹、白千層、檸檬桉、大葉桉、光臘樹、榔榆、台灣櫸木、茄苳、黃槐、錫蘭橄欖、福木、黑板樹、台東漆、銀葉樹、杜英、木麻黃、麵包樹、波羅蜜、大葉桃花心木、大葉山欖、瓊崖海棠、銀樺、槭葉翅子木、朴樹、魯花樹、白水木、楓香、九芎、垂柳、菩提樹、黃連木、欖仁、小葉欖仁、珊瑚刺桐、掌葉蘋婆、台灣肖楠、落羽松、肯氏南洋杉、台灣五葉松、龍柏、竹柏、羅漢松、台東蘇鐵、蒲葵、台灣海棗

Chapter 2 春天的賞樹秘笈
山櫻花、桃花、李花、流蘇樹、紅楠、香楠、苦楝、木棉、水黃皮、羊蹄甲                                                      
、含笑、山黃梔、黃金風鈴木、刺桐、廣東油桐、大葉合歡、相思樹、鐵刀木、火燄木、厚皮香
                                                      
Chapter 3 夏天的賞樹秘笈                                    
紫薇、大花紫薇、雞冠刺桐、盾柱木、阿勃勒、鳳凰木、月橘、白玉蘭、烏心石、洋玉蘭、海檬果、緬梔、雨豆樹、黃槿、印度黃檀、馬拉巴栗、穗花棋盤腳、猢猻木
                             
Chapter 4 秋天的賞樹秘笈
台灣欒樹、美人樹、吉貝木棉、羅望子、烏桕、印度紫檀
Chapter 4 秋天的賞樹秘笈:台中行道樹系統數量
台灣欒樹(7377)
http://kplant.biodiv.tw/%E5%8F%B0%E7%81%A3%E6%AC%92%E6%A8%B9/%E5%8F%B0%E7%81%A3%E6%AC%92%E6%A8%B9.htm
美人樹(894)
http://kplant.biodiv.tw/%E7%BE%8E%E4%BA%BA%E6%A8%B9/%E7%BE%8E%E4%BA%BA%E6%A8%B9.htm
吉貝木棉(14)
http://kplant.biodiv.tw/%E5%90%89%E8%B2%9D%E6%9C%A8%E6%A3%89/%E5%90%89%E8%B2%9D%E6%9C%A8%E6%A3%89.htm
羅望子(134)
http://kplant.biodiv.tw/%E7%BE%85%E6%9C%9B%E5%AD%90/%E7%BE%85%E6%9C%9B%E5%AD%90.htm
烏桕(2950)
http://kplant.biodiv.tw/%E7%83%8F%E8%87%BCn/%E7%83%8F%E8%87%BC.htm
印度紫檀(5338)
http://kplant.biodiv.tw/%E5%8D%B0%E5%BA%A6%E7%B4%AB%E6%AA%80/%E5%8D%B0%E5%BA%A6%E7%B4%AB%E6%AA%80.htm
                                                
Chapter 5 冬天的賞樹秘笈
豔紫荊、青楓、無患子、梅花、第倫桃


試 QGISCLOUD

  • 註冊,安裝 plugin
  • 使用 plugin
  • 開 DB, 上傳所有 layer, 免費版只有 50MB 空間
  • 選 background layer
  • publish
  • 支援多種語文,但中文似乎不行(Label 中的中文會變成方框)

參考

hackpad 筆記






社群