發表文章

目前顯示的是 2015的文章

[T-SQL]利用cursor將SQL中的geography line的point一一取出

圖片
對SQL Server的geography的型態資料又愛又恨 一方面是他在SQL Server裡真的很好用又方便 一方面是如果要把資料匯出的話其它系統完全認不得 又要另外處理 今天是因為希望BI工具接geography的資料 在地圖上畫出我要的點跟線 但BI工具是另外一家廠商的 完全不認geography的型態資料 而畫出點很容易 線就有點麻煩 於是利用cursor將line裡面的點一一取出並排序號 這樣子我們的BI工具才可以畫出一條連接的線 以下是我自已寫的小範例 就是利用cursor把一行一行的line取出來 取得這一條件共有幾個點 STNumPoints() 然後用迴圈把每一個點的經緯度取出STPointN(@linePointStart).Lat, STPointN(@linePointStart).Long

[Python]簡單的爬網程式

最近去學了Python 有點後悔怎麼沒有早點認識他 Python寫起來真的很直覺 目前已經快要取代R 成為我的心頭好! 以下是筆記我的第一支爬網程式 by the way, GitHub的Gist服務實在是太棒溜~ 程式會爬yahoo電影的網頁 抓出我需要的資訊 並另存在一個txt檔案 結果像這樣 電影名稱:小小兵,Minions 上映日期:2015-07-09 類  型:動畫,喜劇 片  長:1時33分 導  演:《神偷奶爸》皮耶考芬,《羅雷司》凱爾巴爾達 演  員:(配音)《地心引力》珊卓布拉克,《神偷奶爸》史提夫卡爾,喬漢姆,《浪人47》真田廣之,《怒火狂飆》凱蒂米克松,《史瑞克2》珍妮佛珊德絲 發行公司:環球影業 官方網站:未提供 劇情介紹:由環球影業以及Illumination娛樂公司出品的《小小兵》故事起源於盤古開天時期,剛開始只是一個黃色的有機體,隨著時間漸漸演化成小小兵團,他們的存在目的就是要服侍當代最兇惡的主人,然而從T. Rex 恐龍,埃及法老王,拿破崙甚至是德古拉,小小兵總是不停的失敗了-到最後小小兵們發現已經沒有可以服侍的主人,從此開始鬱鬱寡歡,甚至逐漸凋零。這時其中的一隻小小兵—凱文他有個偉大的計畫,就是帶著他的麻吉—大胃王史都華還有膽小的蘿蔔,挺身而出踏上尋找新主人的冒險旅程…

我感受到企業的"大數據"迷思

1.管理階層最近幾年被"大數據"迷的暈頭轉向,認為只要公司裡面資料很多很多就是大數據,但卻不知道跟某些產業的資料量比起來簡直是小巫見大巫。 2.高層一直被啤酒跟尿布的陳年破事(我相信做Data Mining的鄉民都聽得很煩了吧)洗腦,認為只要有資料就可以做出一樣的結果,期待分析人員開始分析之後也可以有這麼驚喜的發現。 3.不去管是不是真的需要一個分散式運算的架構,大家都有我們公司怎麼可以沒有,來人啊,建一個! 我明天要去跟隔壁王董說我們也大數據了。 4.只要提到數據二個字通通改成大數據 5.建立跟管理分散式運算的架構是一批人,數據分析應該是另外一批人,但是要養一個可以架系統的已經很貴了,於是就順便叫他也要會Data Mining跟分析 6.會分析的人找到了! 可是我們要分析什麼? 不好意思啊,你自己研究,我要啤酒跟尿布那種效果(又來了) 7.挖掘出有商業應用的資訊需要時間,老闆通常等不及,或是團隊發現的事實是早就知道的Business know-how (老闆承受得了這種打擊嗎) 8.我認為Data Mining的重點在於最後千垂百鍊的模型,並且已經開發成一個運算核心,這個模型也要時常重新訓練,但是台灣老闆好像不覺得這是重點,分析團隊大部份做出的是一個封測的結果,像寫論文那樣,但是然後呢? 9.發現很多公司認為買了BI = 有大數據 10.市場上號稱自己會Data Mining的人素質參差不齊,我認為自己還要再努力,遇過做DM已經好幾年的 但連分群跟分類都搞不清楚,還很肯定的看著我說 分群跟分類是一樣的,我至今感到很震驚 ,然後不管用什麼演算法只要二個變數相關性很高就說有共線性的問題,而且不止一二位 我認為這是統計系出身的人應該要有的基本觀念 如果以後有機會面試DM的伙伴一定問這二個問題先

[T-SQL] 如何得到台灣村里經緯度及畫出村里界線

圖片
因為負責公司的open data專案而開始常常想 open data的應用 也想用利用open data做一些自己的作品 一直想用地理資訊呈現一些資料視覺化的效果 最近發現原來政府有公開村里的地理資訊資料 實在是太棒了 覺得自己繳的稅有了回報 政府公開的是shp檔 於是又摸索了一下如何把shp轉成SQL Server的地理物件 發現台灣很少有人寫到這一塊 於是我又雞婆的先來跟鄉民報告一下我是怎麼做的吧 在這裡 http://data.gov.tw/node/7438下載地理資訊 或是搜尋 村里界圖 村里經緯度 就可以找到 下載完之後解壓縮 先放著 趕緊再去下載一個很重要的轉檔程式 http://www.sharpgis.net/page/sql-server-2008-spatial-tools 下載完以後一樣要解壓縮 會看到資料夾裡面有Shape2sql執行檔 按二下之後會跳出這個畫面請你設定要連線的資料庫 如果暫時不連就先按Cancel 然後會跳出以下這個畫面 這才是正經的 在Shapefile的地方選擇你剛剛下載好並解壓縮的村里地理資訊資料裡的 .shp 檔案 接著按下Configure輸入你要上傳的資料庫連線資訊 如上圖 然後按下 upload to Database 幸運的話 你就會看到上傳的進度 等到上傳完成會跳出通知的視窗 如果不幸運的話 你可能會像我一樣遇到 系統缺少sqlspatial.dll的錯誤訊息 這時候就要去下載額外的功能套件 叫做   " Microsoft SQL Server System CLR Types "  http://www.microsoft.com/zh-TW/download/details.aspx?id=29065 裝好 Microsoft SQL Server System CLR Types 之後 再重新打開 Shape2sql重新上傳一次 應該就成功囉 你可以到你的資料庫裡面看有沒有多出一個資料表 上傳成功的資料表畫面如下 到空間結果的地方可以看到村里的界線圖 最重要的是資料表裡面已經有了Geometry物件 可以隨心所欲的做其它的運算 例如我運用了STCentriod這個method算出每一個村里的中心點

[T-SQL] geography 資料類型的應用筆記

因為公司產業的關係,常常會需要算二點之間的距離 還沒發現geography這個資料型別之前都是直接算二點之間的直線距離,但是心裡知道其實不對,應該要用弧形距離去算才對 SQL的geography的資料型別可以儲存單點、線、多邊形的表示方式 而且有方法直接可以算出真正的距離(以地球弧形為準) 簡直是天要救我啊 點 INSERT INTO [dbo].[GeoTest] ([ID], [Geo]) VALUES (1, 'POINT (121.43, 25.02)') 這裡可以注意到是用POINT後面直接帶經緯度,寫入之後系統會自動轉成geography物件 線 INSERT INTO [dbo].[GeoTest] ([ID], [Geo]) VALUES (2, 'LINESTRING (121.34 25.10, 120.10 24.33)') 這裡是用LINESTRING後面帶2個點,中間用逗號分隔,所以會變成一直線,寫入之後系統也會自動轉成geography物件,可以在SQL的空間結果裡看到一條線 多邊形 INSERT INTO [dbo].[GeoTest] ([ID], [Geo]) VALUES (3, 'POLYGON (121.34 25.10, 120.10 24.33, 123.11 23.12, 127.55 24.12)') 這裡是用POLYGON後面帶4個點,所以會變成一個多邊形,一樣會自動轉成geography物件,可以在空間結果裡看到一個區塊,這是可以應用到區域的劃分 假設要算二點之間的距離,可以用STDistance這個方法算出來,系統預設是公尺 以剛剛[GeoTest] 資料表為例,其中的Geo欄位是geography的資料型別 所以可以直接 SELECT Geo.STDistance('POINT (122.43, 24.02)'))  算出Geo這個欄位跟點 122.34, 24.02的距離是150127.0711 meters

如何將DSM(NAS)變成Mail Server

圖片
最近我的法國老闆指派給我一個新的任務 他想要把家裡的NAS變成mail server 從此以後收發mail不求人 說這樣子就有自由了(法國人可以不要動不動就扯到自由嗎) 身為家裡的資訊長兼軟體工程師兼財務長兼保潔阿姨 這個工作派下來之後我還真不曉得可以指派給誰 只好自己動手了 其實我也沒有設定過mail Server 都是從骨哥大師那裡查到一個一個步驟 撞牆之後再查一次 設定了好幾天以後終於成功了 用手機或是email軟體都可以收發才算大功告成 發現沒有人把整個流程寫下來 那我就來寫吧 多做善事看能不能以後不要下地獄 或是下了地獄至少不要上刀山下油鍋 當個觀眾就可以了 希望閰王爺有看到這一篇blog 我選擇用中華電信申請浮動ip送的固定ip + 去登記一個自已喜歡的網域來處理 申請網域的公司是法國老闆選的這家 gandi 我覺得服務很不錯啊  鄉民可以參考看看 首先我設定讓DSM可以自動撥號連網 取得固定ip  在DSM的應用程式裡面 選擇EZ-INTERNET 一開始會請你設定可以通過防火牆的port有那些 記得要把 mail server 跟 mail station 打勾 然後填入中華電信的帳號密碼 設定完成以後 你的DSM就可以自動撥號取得一組ip 假設是112.77.115.94 然後要到申請網域公司的網站 例如我就是到 gandi 去設定很重要的MX碼,同時也告訴gandi要把我註冊的網域跟我的ip連在一起哦 以gandi的介面為例,假設我申請了一個網域叫做abc.com 就要有一個 A type recored Name @ , Value "你的ip" 然後要有一個MX recored Name @ Value abc.com. 這樣子就等於是宣告所有寄到@abc.com的信都要指到112.77.115.94這個位址 因為我的法國老板喜歡@後面直接接網域名稱abc.com 所以要用@來設定 如果你想要設定成例如 email.abc.com 就要把 A type recored Name 改成 email, Value "你的ip" 對應的MX recored Name email, Value abc.com. 以此類推 鄉民們可以看到 我還另外

[R] Loop 迴圈小筆記

for ( i in 1:10 )  print( i ) 會發現i是從0開始跳 ; for ( i in seq(1:10) )  print( i ) i是從1開始跳