2013年6月28日 星期五

如何在網頁上放 OpenStreetMap 及 GPX 軌跡

本文分享兩個主題
  • 如何放單純的地圖(可互動操作)
  • 如何在網頁上放地圖並顯示 GPX 軌跡在地圖上

如何放單純的地圖(可互動操作)

  1. 連到 http://www.openstreetmap.org/
  2. 點選畫面最上面的 "Export" 功能
  3. 用滑鼠拖拉地圖區域
  4. 選擇格式
    • OpenStreetMap XML Data, 這是 XML 資料檔
    • Map Image (shows standard layer), 這是下載成圖片, 有 png,jpg,svg,pdf 格式
    • Embeddable HTML, 網頁的 HTML 語法 --- 選這個,系統就會給你一段 <iframe 開頭的 html 碼
譬如這段 HTML
<iframe frameborder="0" height="350" marginheight="0" marginwidth="0" scrolling="no" src="http://www.openstreetmap.org/export/embed.html?bbox=118.05,20.8,124.63,26.26&layer=mapnik&marker=23.97120,121.21765" style="border: 1px solid black;" width="425"></iframe><br /> <small><a href="http://www.openstreetmap.org/?lat=23.53&lon=121.34&zoom=7&layers=M&mlat=23.97120&mlon=121.21765">View Larger Map</a></small>
會產生這樣的地圖:

View Larger Map

如何在網頁上放地圖並顯示 GPX 軌跡在地圖上

這比較複雜一點,我的方法是用 leaflet 這個 library 來畫地圖。 leaflet 可以加 plugin,配合 leaflet-gpx,就能畫 GPX 軌跡。
我參考作者的 demo,簡化之後:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script src="http://kcwu.csie.org/~kcwu/geo/leaflet.js"></script>

<script src="http://kcwu.csie.org/~kcwu/geo/leaflet-gpx/gpx.js"></script>
<script src="http://kcwu.csie.org/~kcwu/geo/osm-gpx.js"></script>

<style type="text/css"> @import url('http://kcwu.csie.org/~kcwu/geo/osm-gpx.css');</style>
<section id='gpx_container' class=gpx ></section>
<script type="application/javascript">
    simple_gpx($('#gpx_container'),
            "http://kcwu.csie.org/~kcwu/geo/gpx/20130518 鷹仔尖.gpx",
            { title: '20130518 鷹仔尖.gpx', height: 400 });
</script>


上面這段 HTML code 可以做出下面這樣的地圖

使用說明:

  • 一般使用只要改 simple_gpx 那三行就夠了,剩下不用動。
  • 用到的檔案只有 osm-gpx.js 是我寫的,於 public domain 釋出。其他檔案是各 project 自己的(BSD或MIT授權),可自由使用。
  • 若同一頁會用多次,gpx_container 要改成其他名字(不能跟其他的重複,不然會錯亂)。前兩行(jquery.min.js 跟 leaflet.js)總共只要寫一次就好。 

2013年5月19日 星期日

鷹仔尖, 觀音山硬漢嶺

最近發現雨林老爬的部絡格,驚嘆其行程紀錄詳細的程度,尤其是每個路口都有照片並畫線加註。所以這次出遊,就來試試看用詳細的照片作行程紀錄 :)
很快的我就放棄畫線加註的念頭……也許是我不知道適合的畫圖工具,想到就覺得太費工了,我好懶。

行程摘要
捷運蘆洲站 > 觀音里站 > 鷹仔尖 > 盤絲亭 > 北橫古道 > 觀音山硬漢嶺 > 無極宮 > 八里渡船頭 > 淡水

詳細紀錄
8:00在捷運蘆洲站一號出口集合,搭橘20或785公車至觀音里站。下車處是停車場。

9:06 出發,從路邊護欄缺口階梯往下

9:07 下階梯後取左

9:11 小北插入口處萬聖公

一路是原始地形好走

疑似馬陸(恐怖?連結)約小指粗,近十隻

10:28 鷹仔尖涼亭。右往鷹仔尖登山口。休息後往左走占山步道支線到盤絲亭


10:44 涼亭下來五公尺右邊有泥土叉路,取左走步道。
上次登鷹仔尖就是從步道上來,走這泥土路下去。

10:48 (回望拍照)步道右後方有叉路,接10:44看到的叉路

10:51 盤絲亭旁的路口。右前往占山,左前(走步道)往硬漢嶺。右方另有一條沒有鋪面的路,不知通往哪裡。等一下取右前

涼亭前的大樹

盤絲亭,在此休息用餐


盤絲亭後方山徑,猜測往陵線。

盤絲亭後方山徑

盤絲亭後方山徑

13:49 從盤絲亭出發往占山方向 13:52 抵硬漢嶺叉路

叉路前地圖

往占山

另一個角度看路口。左前往盤絲亭,後往占山,右上走陵線上硬漢嶺,取右下走北橫古道。
上回登鷹仔尖大概是回程時在盤絲亭的路口轉錯邊,就沒有去占山了。

14:08 左上往駱駝嶺(不取)


14:15 北橫三、四段口,取左往硬漢嶺,右往四段

四段的路況

14:53 抵硬漢嶺,從觀景台下小路出來

硬漢碑,看別人的文章才知道三角點在碑頂

今天沒有展望

硬漢嶺牌樓


往西走160m到眾樂園

牛寮埔步道0m

前是牛寮埔步道,右方建築是廁所

廁所前花圃約九隻小小狗,沒看到狗媽媽


15:53 準備下山

15:54 觀景台下方,右是來的方向往盤絲亭,取前

15:57 原始山路,很滑不是很好走,一路都有拉繩。空不出手拍照了。

16:19 牛寮埔步道回望山路

16:28 牛寮埔步道

16:29 涼亭,在此休息

16:59 牛寮埔步道終點,接產業道路(往左)下山

步道前地圖

17:50 延著產業道路走到無極宮,有廁所。再往東走產業道路下山


17:54 牛寮埔福德宮。取右下山。左邊有小橋、鋪石路,不知通往哪裡。

福德宮前小橋

17:59 墓園一角叉路,有開路紀念碑。取左

開路紀念碑

18:07 明園大佛寺在路的左邊,可以看到大佛像

18:35 八里渡船頭



2013年4月4日 星期四

GnuCash 小技巧:調整同日交易順序

GnuCash 內部是以秒為單位來儲存交易日期。也就是說,假設有兩筆同一天的交易:

其實程式內部是
2013/4/4 00:00:00 A
2013/4/4 00:00:00 B
只是使用者看不到 00:00:00 的部分。

從 GnuCash 2.4 開始,有個功能可以調整同日交易的次序。但由於做得不夠好,開發人員就先把它隱藏起來。

打開試用的方法:
  1. 找到系統上的 gnc-plugin-page-register-ui.xml,Windows XP 的話在 C:\Program Files\gnucash\share\gnucash\ui
  2. 用一般的文字編輯軟體打開這個檔案,把
    <!--menuitem name="ShiftTransactionForward" action="ShiftTransactionForwardAction"/-->
    改成
    <menuitem action="ShiftTransactionForward" action="ShiftTransactionForwardAction"/>
    (有兩次)
存檔之後重開 GnuCash,在交易選單中會多出一個「將交易向下移」

在交易 A 上面使用這功能,程式內部會將該交易的時間加一秒。按了之後不會馬上更新順序。要做某些動作(譬如關掉該 tab 再開)讓 GnuCash 覺得該重新計算順序,才會看到效果。可以看到交易的順序的換過來了:

2013/4/4 00:00:00 B
2013/4/4 00:00:01 A
這功能最大的問題在於看不到內部的秒數,有時多按幾次自己都忘了各個交易加了幾秒了。不過在完整的功能出現之前就湊合著用吧。