
转自原文 AE开发技术文档--8种数据访问方法 1、shapefileIWorkspaceFactory pWorkspaceFactory;pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();IFeatureWorkspace pFeatWS;pFeatWS = pWorkspaceFactory.OpenFromFile(@"D:\Data", 0) as IFeatureWorkspace;//打开一个要素类IFeatureClass pFeatureClass = pFeatWS.OpenFeatureClass("Cities");2、coverageCoverage 是一个集合,它可以包含一个或多个要素类。Coverage 数据的工作空间也是它所在的文件夹;由于Coverage 可以包含多个要素类,得到工作空间后在打开具体的要素类时可以用“Coverage 名称:要素类名称”,例如下面代码中的“basin:polygon”。IWorkspaceFactory pFactory = new ArcInfoWorkspaceFactoryClass();IWorkspace pWorkspace = pFactory.OpenFromFile(@"D:\ArcTutor\TopologyData", 0);IFeatureWorkspace pFeatWorkspace = pWorkspace as IFeatureWorkspace;IFeatureClass pFeatureClass = pFeatWorkspace.OpenFeatureClass("basin:polygon");3、Geodatabase Personal Geodatabase 数据的工作空间指的是扩展名为mdb 的文件。以下是打开位于Monto.mdb 中的Water 要素类的代码。IWorkspaceFactory pFactory = new AccessWorkspaceFactoryClass();IWorkspace pWorkspace = pFactory.OpenFromFile(@"D:\ArcTutor\Monto.mdb", 0);IFeatureWorkspace pFeatWorkspace = pWorkspace as IFeatureWorkspace;IFeatureClass pFeatureClass = pFeatWorkspace.OpenFeatureClass("Water")4、ArcSDE(Enterprise Geodatabase)IWorkspaceFactory pWorkspaceFactory = new SdeWorkspaceFactoryClass();IPropertySet propSet = new PropertySetClass();propSet.SetProperty("SERVER", "actc");propSet.SetProperty("INSTANCE", "5151");propSet.SetProperty("USER", "apdm");propSet.SetProperty("ASSWORD", "apdm");propSet.SetProperty("VERSION", "SDE.DEFAULT");IWorkspace pWorkspace = pWorkspaceFactory.Open(propSet, 0);IFeatureWorkspace pFeatWS = pWorkspace as IFeatureWorkspace;IFeatureClass pFeatureClass= pFeatWS.OpenFeatureClass("ControlPoint");5、TinIWorkspaceFactory pWSFact = new TinWorkspaceFactoryClass();IWorkspace pWS = pWSFact.OpenFromFile(@"D:\ArcTutor\3DAnalyst", 0);ITinWorkspace pTinWS = pWS as ITinWorkspace;ITin pTin = pTinWS.OpenTin("mal");6、栅格数据IWorkspaceFactory rasterWorkspaceFactory = new RasterWorkspaceFactoryClass();IRasterWorkspace rasterWorkspace =rasterWorkspaceFactory.OpenFromFile(@"D:\data\grid", 0) as IRasterWorkspace;IRasterDataset rasterDataset= rasterWorkspace.OpenRasterDataset("ca_hillshade");7、CAD以下代码是打开位于D:\ArcTutor\Editor\ExerciseData\EditingFeatures 文件夹下的buildings.dxf 中的多边形要素类。IWorkspaceFactory pCadwf = new CadWorkspaceFactoryClass();IWorkspace pWS =pCadwf.OpenFromFile(@"D:\ArcTutor\Editor\ExerciseData\EditingFeatures", 0);IFeatureWorkspace pCadFWS = pWS as IFeatureWorkspace;IFeatureClass pFeatClass = pCadFWS.OpenFeatureClass("buildings.dxf:polygon");8、一般关系表//创建一个连接IPropertySet pPropset;pPropset = new PropertySetClass();pPropset.SetProperty("CONNECTSTRING",@"rovider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Company.mdbersist SecurityInfo=False");//创建一个新的OleDB工作空间并打开IWorkspaceFactory pWorkspaceFact;IFeatureWorkspace pFeatWorkspace;pWorkspaceFact = new OLEDBWorkspaceFactoryClass();pFeatWorkspace = pWorkspaceFact.Open(pPropset, 0) as IFeatureWorkspace;ITable pTTable = pFeatWorkspace.OpenTable("Custom"); 没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。 本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6110106.html,如需转载请自行联系原作者
AJax几乎成了web2.0的一个代表,Java和Asp.net中都提供了一些AJax操作的控件。在MonoRail中也同样提供了AJax操作的共通类:AJaxHelperAJaxHelper可以指定当文本框输入变化时调用后台代码、可以监控一个Form,当Form内控件值变化时调用后台代码、可以在点击一个按钮时调用后台代码,也可以在页面加载时就调用后台代码。当然这些调用都是采用AJax,即无刷新方式的,调用后可以自动更新页面中的一块区域的内容。使用AJaxHelper后,几乎只要处理自己的业务逻辑就可以了,和AJax有关的代码都封装好了。下面就来看看这几种方式的使用方法:以下的Controller类都是从SmartDispatcherController继承的一、监控文本框Controller代码: public void index() { } public void InferAddress(String zip) { RenderText("Address " + zip); } 其中String zip的zip变量名需要和vm页面中的控件名相同 vm代码: 1<html> 2<head> 3$AjaxHelper.GetJavascriptFunctions() 4</head> 5 6<body> 7<form id="theform"> 8 请输入邮政号码:<br> 9 <input type="text" name="zip" id="zip"> 10 <br>11 <div id="address">12 </div>13</form>1415$AjaxHelper.ObserveField("%{field='zip', frequency='2', url='inferaddress.rails', update='address', with='Form.serialize(theform)'}")1617</body>18</html>19 第三行是注册AJax的脚本,第十五行就是监听zip控件,当输入变化时自动调用inferaddress.rails,将返回的文本更新到dir id="address"的区域中二、监控Formvm: <html><head>$AjaxHelper.GetJavascriptFunctions()</head><body><form id="myform"> 姓名: <input type="text" name="name" id="name"> <br> 地址: <input type="text" name="addressf" id="addressf"> <br> <div id="message"> </div></form>$AjaxHelper.ObserveForm("myform", 2, "FormTest.rails", "message", null)</body></html> controller public void FormTest(string value, string addressf) { RenderText(value + "::" + addressf); } 这里的定义有点奇怪,好像是一个BUG,也可能是1.0 RC3还在开发阶段所致 对Form中的第一个控件:"姓名",在controller必须定义成"value"名才能取得值,而且取得的值也有问题(会在前面加上控件名称),看下面的执行结果:三、响应按钮事件vm: <html><head>$AjaxHelper.GetJavascriptFunctions()</head><body> <div id="userlist"> </div> $AjaxHelper.BuildFormRemoteTag("UserList.rails", "%{update='userlist'}" )<table> <tr> <td>姓名:</td> <td><input type="text" name="name"></td> </tr> <tr> <td>邮件:</td> <td><input type="text" name="email"></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="增加"> </td> </tr></table> </form></body></html> controller: public void UserList(String name, String email) { IList list = Session["userlist"] as IList; if (list == null) { list = new ArrayList(); } list.Add(name + " " + email + "<br>"); Session["userlist"] = list; System.Text.StringBuilder userList = new System.Text.StringBuilder(); for (int i = 0; i < list.Count; i++) { userList.Append(list[i] as string); } RenderText(userList.ToString()); } 这样每次点增加按钮时,就可以不用刷新页面,直接就能把增加的信息显示在指定的位置了,当然你可以执行一些复杂的操作四、直接调用后台代码Controller public void User() { RenderText("user :" + Session["name"] as string); } vm: $AjaxHelper.GetJavascriptFunctions() <div id="user"> </div> <script language=javascript> new Ajax.Updater('user', '/myajax/User.rails', {}); </script> 可以在页面加载时就调用指定的User.rails命令,更新user区域 本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2007/11/05/950026.html,如需转载请自行联系原作者
Oracle Berkeley DB 11gR2于2010年3月23日发布,首次引入SQL支持,完全兼容SQLite的SQL API。 SQLite程序可以无缝移植到BDB上。 使用Oracle Berkeley DB可以有SQL, Key/Value, XML/XQuery or Java Object storage 等多种选择。 不仅仅是SQL. 而且支持Windows Mobile,Windows Embedded CE,Android等移动设备。 相关链接: http://www.oracle.com/database/berkeley-db/index.html 以前一些关于SQLite的文章: Windows Mobile下访问Sqlite的Native C++封装 如何压缩SQLite的数据文件 本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2010/03/25/Oracle_Berkeley_DB_SQLite.html,如需转载请自行联系原作者
PDF.NET 开发框架之 SOD框架 Ver 5.2.1.0307 正式版发布,包含以下部分: SOD_Pwmis.Core --包括下列数据提供程序 SqlServer SqlServerCe Access OleDb ODBC Oracle --包含框架的核心类库 PDF.NET SOD All --包括框架的全部类库和数据提供程序,目前有 SQLite MySQL PostgreSQL PDF.NET SOD AllSource --包括全部类库源码和示例程序源码,包括超市管理系统源码 PDF.NET SOD 文档 --包括下列文档: _NET ORM 的 “SOD蜜”--零基础入门篇 - 深蓝医生 - 博客园 PDF_NET SOD 开源框架红包派送活动 && 新手快速入门指引 - 深蓝医生 - 博客园 PDF实体类效率测试 PWMIS.Core.chm 版本说明 解决方案说明 -------------------------------------分界线-------------------------------- SOD : one SQL-MAP,ORM,Data Control framework SOD框架是PDF.NET 开发框架的子集,如下图: 有关详细内容,请参见框架官网 http://www.pwmis.com/sqlMap/ 有关开源的最新信息,请参见框架开源项目网站 http://pwmis.codeplex.com/ 本文转自深蓝医生博客园博客,原文链接:http://www.cnblogs.com/bluedoctor/p/4321218.html,如需转载请自行联系原作者
在“文本比较算法Ⅰ——LD算法”中,介绍了编辑距离的计算。 在“文本比较算法Ⅱ——Needleman/Wunsch算法”中,介绍了最长公共子串的计算。 在给定的字符串A和字符串B,LD(A,B)表示编辑距离,LCS(A,B)表示最长公共子串的长度。 如何来度量它们之间的相似度呢? 不妨设S(A,B)来表示字符串A和字符串B的相似度。那么,比较合理的相似度应该满足下列性质。 性质一:0≤S(A,B)≤100%,0表示完全不相似,100%表示完全相等 性质二:S(A,B)=S(B,A) 目前,网上介绍的各种相似度的计算,都有各自的不尽合理的地方。 计算公式一:S(A,B)=1/(LD(A,B)+1) 能完美的满足性质二。 当LD(A,B)=0时,S(A,B)=100%,不过无论LD(A,B)取任何值,S(A,B)>0,不能满足性质一。 计算公式二:S(A,B)=1-LD(A,B)/Len(A) 当Len(B)>Len(A)时,S(A,B)<0。不满足性质一。 有人会说,当S(A,B)<0时,强制指定S(A,B)=0就解决问题了。 问题是,S(A,B)=1-LD(A,B)/Len(A),而S(B,A)=1-LD(B,A)/Len(B)。当Len(A)≠Len(B)时,S(A,B)≠S(B,A)。不满足性质二 还有一个例子可以说明问题 A="BC",B="CD",C="EF" S(A,B)=1-LD(A,B)/Len(A)=1-2/2=0 S(A,C)=1-LD(A,C)/Len(A)=1-2/2=0 A和B的相似度与A和C的相似度是一样的。不过很明显的是B比C更接近A 计算公式三:S(A,B)=LCS(A,B)/Len(A) 这个公式能完美的满足的性质一 不过当Len(A)≠Len(B)时,S(A,B)≠S(B,A)。不满足性质二 用一个例子说明问题 A="BC",B="BCD",C="BCEF" S(A,B)=LCS(A,B)/Len(A)=2/2=100% S(A,C)=LCS(A,C)/Len(A)=2/2=100% A和B的相似度与A和C的相似度是一样的。不过很明显的是B比C更接近A 上面是网上能找到的三个计算公式,从上面的分析来看都有各自的局限性。 我们看一个例子: A=GGATCGA,B=GAATTCAGTTA,LD(A,B)=5,LCS(A,B)=6 他们的匹配为: A:GGA_TC_G__A B:GAATTCAGTTA 可以看出上面蓝色的部分表示的是LCS部分,黑色表示的是LD部分。 因此,给出一个新的公式 S(A,B)=LCS(A,B)/(LD(A,B)+LCS(A,B)) 这个公式能解决上述三个公式的种种不足。 而LD(A,B)+LCS(A,B)表示两个字符串A、B的最佳匹配字串的长度。这个是唯一的。 还有注意的是LD(A,B)+LCS(A,B)和Max(Len(A),Len(B))这两个并不完全相等。 本文转自万仓一黍博客园博客,原文链接:http://www.cnblogs.com/grenet/archive/2010/06/04/1751147.html,如需转载请自行联系原作者