-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- -- $Id: cleanGeometry.sql 2008-04-24 10:30Z Dr. Horst Duester $--
-- cleanGeometry - remove self- and ring-selfintersections from -- input Polygon geometries -- http://www.sogis.ch
-- Copyright 2008 SO!GIS Koordination, Kanton Solothurn, Switzerland
-- Version 1.0
-- contact: horst dot duester at bd dot so dot ch--
-- This is free software; you can redistribute and/or modify it under-- the terms of the GNU General Public Licence. See the COPYING file.
-- This software is without any warrenty and you use it at your own risk-- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CREATE OR REPLACE FUNCTION cleanGeometry(geometry)
RETURNS geometry AS
$BODY$DECLARE
inGeom ALIAS for $1;
outGeom geometry;
tmpLinestring geometry;
Begin
outGeom := NULL;
-- Clean Process for Polygon
IF (GeometryType(inGeom) = 'POLYGON' OR GeometryType(inGeom) = 'MULTIPOLYGON') THEN
-- Only process if geometry is not valid, -- otherwise put out without change
if not isValid(inGeom) THEN
-- create nodes at all self-intersecting lines by union the polygon boundaries-- with the startingpoint of the boundary.
tmpLinestring := st_union(st_multi(st_boundary(inGeom)),st_pointn(boundary(inGeom),1));
outGeom = buildarea(tmpLinestring);
IF (GeometryType(inGeom) = 'MULTIPOLYGON') THEN
RETURN st_multi(outGeom);
ELSE
RETURN outGeom;
END IF;
else
RETURN inGeom;
END IF;
------------------------------------------------------------------------------
-- Clean Process for LINESTRINGS, self-intersecting parts of linestrings -- will be divided into multiparts of the mentioned linestring ------------------------------------------------------------------------------
ELSIF (GeometryType(inGeom) = 'LINESTRING') THEN
-- create nodes at all self-intersecting lines by union the linestrings-- with the startingpoint of the linestring.
outGeom := st_union(st_multi(inGeom),st_pointn(inGeom,1));
RETURN outGeom;
ELSIF (GeometryType(inGeom) = 'MULTILINESTRING') THEN
outGeom := multi(st_union(st_multi(inGeom),st_pointn(inGeom,1)));
RETURN outGeom;
ELSIF (GeometryType(inGeom) = '' OR GeometryType(inGeom) = 'GEOMETRYCOLLECTION') THEN
RETURN NULL;
ELSE
RAISE NOTICE 'The input type % is not supported %',GeometryType(inGeom),st_summary(inGeom);
RETURN inGeom;
END IF; End;$BODY$
LANGUAGE 'plpgsql' VOLATILE;
以上這段是要在PostgreSQL裡建立一個function,然後在進行 insert 動作的時候, 讓要 insert 的 geometry 先丟到這個function進行檢查並重整後, 回傳正確的 geometry。結束
2010年10月26日
Insert geometry 前確認是否合法
2010年10月24日
[Windows 7] 我不要讓「媒體櫃」成為檔案總管的「首頁」
- 我的電腦:
%SystemRoot%\explorer.exe /E,::{20D04FE0-3AEA-1069-A2D8-08002B30309D} - 我的文件:
%SystemRoot%\explorer.exe /n,::{450D8FBA-AD25-11D0-98A8-0800361B1103} - 資源回收筒:
%SystemRoot%\explorer.exe /E,::{645FF040-5081-101B-9F08-00AA002F954E} - 控制台:
%SystemRoot%\explorer.exe /E,::{26EE0668-A00A-44D7-9371-BEB064C98683} - 網路連線:
%SystemRoot%\explorer.exe /E,::{7007ACC7-3202-11D1-AAD2-00805FC1270E}
2010年8月19日
[C#]動態取得UserControl的HTML
- ASP.NET MVC絕對是可以輕鬆辦到這件事情的。
- 每個區塊的內容都設計成單一的ASPX網頁,再讓Jquery去依據需要透過AJAX取得網頁內容
<%@ Register src="Menu.ascx" tagname="Menu" tagprefix="uc1" %> |
public class HTMLHelper { //使用委派,可以讓我們在建立UserControl時, 可以執行一些我們需要的動作 public delegate void InitializeControlDelegate(T ControlToUse); public static string RenderUserControl (string ControlPath, InitializeControlDelegate InitControlCallback) where T : UserControl {
System.Web.UI.Page pageHolder = new Page();//建立新的頁面物件 T ControlToRender = (T)pageHolder.LoadControl(ControlPath);//從指定的位置載入UserControl,並轉換為型別T pageHolder.Controls.Add(ControlToRender); //執行指定的委派工作//將這個UserControl加入到頁面中
InitControlCallback.Invoke(ControlToRender);
//建立一個字串寫入物件
StringWriter result = new StringWriter();
System.Web.HttpContext.Current.Server.Execute(pageHolder, result, false); return result.ToString(); //回傳結果 } }//使用Server.Execute執行網頁並將網頁內容寫入到 result
string _ucHtml = HTMLHelper.RenderUserControl
"~/inc/block/GoodCollection.ascx",
uc =>
{
uc.StorePK = 1;
uc.TypePK = 5;
}
);
2010年5月27日
2010年5月25日
2009年1月5日
2008年9月11日
啞了的部落格
看看我自己部落格上百篇的文章,我很懷疑我之前哪來的毅力可以這麼幹,我想應該是我現在的時間都奉獻給工作與家庭了,今天中午休息時也不知道為什麼突然想寫個東西,那就上來寫吧~ 不然我要這個部落格做什麼用呢?那以後? 我也不知道,以後就讓以後再說吧。
2008年2月13日
便宜的旅行箱
太久沒上來看自己的BLOG,結果看到一堆網友在詢問行李箱去哪買,我真的感到不好意思~ 現在說明也太晚了,因為那個攤位應該只是臨時攤位而已
所以也早就沒有再擺囉~ 如果網友有興趣的話可以參考 羅小美網友提供的網站http://www.mjholly.com 看看吧
今天帶著老婆小孩去逛愛買樓上的B&Q,而老婆想到要買行李箱,就到一樓去找了賣行李箱的攤位,想不到剛好有特價品。據那位阿桑店員說是她們在新光三越的專櫃撤了,這些是存貨要出清所以才在特價,這說是他在說,不管是真是假,那些旅行箱真的很便宜!~
這件21吋的硬殼旅行箱只要650喔~ 超便宜的~~網路上同款旅行箱要賣1390呢!(感謝女兒充當麻豆~)
兩段式伸縮把手
牌子是JUST BEETLE,說實在的我根本沒聽過啦~
要打開囉~
啥~ 裡面黑黑的那是甚麼?
哈~ 是我另外買的17吋硬殼電腦背包喔~
這個硬殼背包只要250耶!(網路價399) 看看裡面有好多內袋~ 我是買來準備要放WII的~ 當然WII專用包會比較好啦...
現場我還看到這組,在momo台賣快4000元,但特價只要1600~ 可惜對我們來說太大囉...
2007年12月26日
霹靂遊俠 2008
美國NBC電視網將在2008年2月17日首映 霹靂遊俠2008 兩小時的電視電影版,如果你已經忘記什麼是霹靂遊俠的就看一下下方的劇照吧。 如果你不用看就已經知道的那就表示你真的夠老。
只是舊瓶裝新酒可不可以得到大家的青徠,還是需要看劇情內容是不是有創新喔~據說新一代的車子具有變形能力(舊代霹靂車是會長出尾巴及小翅膀,但我不覺得那稱得上是變形),這點子不會是從變形金剛來的吧?
男主角扮演的是前一代男主角--李麥克的兒子,既然是繼承式的劇情,當然擔任老爸角色的也就是原男主角 David Hasselhoff 來擔任啦~
這一次的主角—霹靂車,由原來的 PONTIAC Firebird 改為全新世代的 FORD Mustang Shelby GT500KR,且為了承襲當時的黑色風格,全車採用黑色塗妝,於車身上的拉線則以霧黑處理。並將原來的GT500KR做了一些修改,採用V8引擎,CC數為5,400,馬力具備550hp,扭力達70.5kgm。而這台車也在"我是傳奇"的電影中有出現喔!
2007年12月7日
當劉伯溫遇上打鼓機....
當我在DTXmania打鼓機模擬器鼓譜創作日誌看到這段影片,差點崩潰~ 或許我太久沒接觸這類遊戲,所以應該是我早就跟這個圈子脫節了??
我猶然記得五六年前在網路上看到人家自創的打鼓機鼓譜,當時都以日本流行歌曲及動畫歌曲為主(那時真的只有宅男會幹種種事),想不到現在本土化的威力這麼厲害,將鄉土劇 (雖然他是在講中國故事) 跟打鼓機結合真是想都沒想到的事情,不過NAMCO都可以把日本傳統太鼓作成遊戲,然後用一些兒歌當鼓譜了,想到這也就不足為奇了。
但是我還是要給台灣人的創新加油囉~