求地图控件、或者地图引擎的解决方案

ubosm 2014-04-15 11:11:14
需求如下

1、地图需要离线,全球的那种(我试过GMap.NET只能选择某个区域进行离线,不能全球地图离线,而且离线数据要下好久好久,maopinfo貌似只能支持WINFORM)

2、要能在地图上的某个坐标显示一个WPF的自定义控件,而且该控件可以在上边拖动改变控件的地图坐标。

3、地图要能显示中文。

非常感谢各位高手支招。
...全文
151 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
海涵德 2014-04-21
  • 打赏
  • 举报
回复
内网地图怎么解决?
海涵德 2014-04-21
  • 打赏
  • 举报
回复
两个都不好,占用资源太多,不知是否是正版。
ubosm 2014-04-19
  • 打赏
  • 举报
回复
引用 10 楼 madaming 的回复:
我这里正在做这个,是我自己的自主代码和地图素材。 silverlight及其他软件都可以用,可以给你dll。
非常感谢 我决定用ARCGIS 或者GMAP.NET两个中选一个咯
vbfool 2014-04-17
  • 打赏
  • 举报
回复
引用 4 楼 ubosm 的回复:
引用 3 楼 vbfool 的回复:
ArcGIS的WPF版客户端SDK,你说的功能全部都是可以做到的,而且也是我见过的在WPF下效果最好的地图客户端SDK。
但是据说ARCgis老贵 老贵啊
那个客户端版本,其实是免费的,因为就是一个Client。但是地图数据才贵。
海涵德 2014-04-17
  • 打赏
  • 举报
回复
我这里正在做这个,是我自己的自主代码和地图素材。 silverlight及其他软件都可以用,可以给你dll。
ubosm 2014-04-16
  • 打赏
  • 举报
回复
引用 7 楼 KumaPower 的回复:
引用 6 楼 ubosm 的回复:
[quote=引用 5 楼 KumaPower 的回复:] 价钱问题,楼主是管开发还是管项目?如果只是学习什么的,sdk反正是免费的,关键是地图服务。
要管开发也要管项目, 要控制项目成本的,虽然用的纳税人的钱钱,但是不能随便用啥
但我见过不少ZF部门确实是买授权的ArcGIS的。。。。。。[/quote] 我现在在试GMAP.NET感觉能把世界地图给弄走 ,如果可以 就用gmap了 政府部门也是有预算的
Bonjour-你好 2014-04-16
  • 打赏
  • 举报
回复
引用 6 楼 ubosm 的回复:
引用 5 楼 KumaPower 的回复:
价钱问题,楼主是管开发还是管项目?如果只是学习什么的,sdk反正是免费的,关键是地图服务。
要管开发也要管项目, 要控制项目成本的,虽然用的纳税人的钱钱,但是不能随便用啥
但我见过不少ZF部门确实是买授权的ArcGIS的。。。。。。
ubosm 2014-04-16
  • 打赏
  • 举报
回复
引用 5 楼 KumaPower 的回复:
价钱问题,楼主是管开发还是管项目?如果只是学习什么的,sdk反正是免费的,关键是地图服务。
要管开发也要管项目, 要控制项目成本的,虽然用的纳税人的钱钱,但是不能随便用啥
Bonjour-你好 2014-04-16
  • 打赏
  • 举报
回复
价钱问题,楼主是管开发还是管项目?如果只是学习什么的,sdk反正是免费的,关键是地图服务。
exception92 2014-04-16
  • 打赏
  • 举报
回复
不懂,路过。
ubosm 2014-04-16
  • 打赏
  • 举报
回复
引用 3 楼 vbfool 的回复:
ArcGIS的WPF版客户端SDK,你说的功能全部都是可以做到的,而且也是我见过的在WPF下效果最好的地图客户端SDK。
但是据说ARCgis老贵 老贵啊
Bonjour-你好 2014-04-16
  • 打赏
  • 举报
回复
Arc GIS
vbfool 2014-04-16
  • 打赏
  • 举报
回复
ArcGIS的WPF版客户端SDK,你说的功能全部都是可以做到的,而且也是我见过的在WPF下效果最好的地图客户端SDK。
XXX航空移动化应用平台项目 1 投标书 13 2 规格偏离表 13 3 资格证明文件 13 3.1法人营业执照(三证合一) 13 3.2法定代表人授权书 13 3.3 投标人的资信证明 13 3.4 招标文件要的其他资格证明文件 15 3.4.1投标单位资质证书及项目人员资格证书 15 3.4.1.1 CMMI等级登记证书 15 3.4.1.2 ISO9001质量管理体系认证证书 15 3.4.1.3 软件企业认证证书 15 3.4.1.4 计算机软件著作权登记书-SDK 15 3.4.1.5计算机软件著作权登记书-MAS 15 .4.1.6计算机软件著作权登记书-MMS 16 3.4.1.7计算机软件著作权登记书-EMM 16 3.4.1.8计算机软件著作权登记书-MDM 16 3.4.1.9 项目人员证书 16 3.4.2投标单位近3年内获国家及地方政府荣誉证书 18 3.4.2.1 2015年度中国移动互联网行业领军企业奖 18 3.4.2.2 2014-2015年度云计算应用优秀实践单位奖 18 3.4.2.3 2014年度中国最具影响力品牌奖 19 3.4.2.4 2013年度最佳技术服务提供商 19 3.4.2.5 2013年度中国移动应用平台最具影响力奖 19 3.4.2.6 2014移动生产力十大优秀案例奖 19 3.4.3投标单位综合情况审查表 19 3.4.4拟派项目经理资格审查表 20 3.4.5承担本项目主要技术人员和售后服务人员表 20 3.4.6最近两年主要开发实施同类型企业相同或类似系统的开发案例 21 3.4.6.1案例合同首尾页 21 3.4.6.2 系统开发主界面截图 22 4 项目解决方案 26 4.1 项目解决方案内容 26 4.1.1 系统总体目标、设计架构、系统详细设计方案 27 4.1.1.1 设计原则 27 1. 统一设计原则 27 2. 稳定性原则 27 3. 统一设计原则 27 4. 稳定性原则 27 5. 先进性原则 27 6. 高可靠/高安全性原则 27 7. 开放性原则 28 8. 适用性原则 28 9. 可扩展性原则 28 10. 操作/维护的易用性原则 28 11. 高可靠/高安全性原则 28 4.1.1.2 架构设计 29 4.1.1.2.1. 系统架构设计 29 4.1.1.2.2. 业务系统架构设计 31 4.1.1.2.3. 业务处理架构 32 4.1.1.2.4. 网络拓扑图 33 4.1.1.3 技术路线 35 4.1.1.3.1 统一的移动构建平台 35 4.1.1.3.2 Hybrid移动开发引擎 35 4.1.1.3.3 面向服务的SOA接口集成 35 4.1.1.3.4 高并发处理机制 36 4.1.1.3.5 高效的内存数据库 36 4.1.1.3.6 兼容多种集成模式 36 4.1.1.3.7 开放式的框架设计 36 4.1.1.3.8 数据库选型 36 4.1.1.4 应用工具 37 4.1.1.4.1. 开发工具 37 4.1.1.4.2. 分析设计工具 38 4.1.1.4.3. 项目管理辅助工具 38 4.1.1.4.4. 测试工具 39 4.1.1.4.5. 统计工具 40 4.1.1.4.6. 开发语言 42 4.1.1.4.7. 辅助软件工具及其效果 44 4.1.1.5 移动平台建设方案 45 4.1.1.5.1. 移动业务整合平台(APPCAN MAS) 45 4.1.1.5.2. 移动业务开发平台(APPCAN SDK) 53 1. 音频对象API 55 2. 电话对象API 55 3. 照相机对象API 55 4. 剪贴板对象API 55 5. 日期控件API 55 6. 联系人对象API 55 7. 数据库对象API 55 8. 设备信息对象API 55 9. 下载对象API 55 10. 邮件对象API 55 11. 文件管理对象API 55 12. 图片浏览对象API 56 13. Jabber对象API 56 14. 位置服务对象API 56 15. 日志log输出对象API 56 16. 彩信对象API 56 17. 支付宝API 56 18. 二维码扫描对象API 56 19. 传感器对象API 56 20. 短信对象API 57 21. Socket对象API 57 22. 上传对象API 57 23. 视频对象API 57 24. widget对象API 57 25. 平台对象API 57 26. 多窗口机制API 57 27. 跨域访问对象API 57 28. zip压缩解压缩API 57 29. 百度广告推广接口 57 30. 百度地图接口 57 31. 百度统计接口 58 32. 数据统计分析自定义事件接口 58 33. 微博分享接口 58 34. 自定义编辑框接口 58 35. 游戏引擎接口 58 (1) 插件扩展 58 AppCan IDE 启动画面 62 AppCan IDE 代码编辑界面 63 AppCan IDE模拟器与调试器 63 AppCan IDE 本地打包界面 64 AppCan UI框架控件 65 AppCan Player示意图 66 AppCan模拟器 67 Mac Mini服务器 68 AppCan SDK套装管理后台-项目列表 69 AppCan SDK套装管理后台-项目管理 69 AppCan SDK套装管理后台-引擎升级 70 4.1.1.5.3. 移动业务管理平台(APPCAN EMM) 71 4.1.1.6 前端应用建设方案 78 4.1.1.6.1. 机票预订 78 4.1.1.6.2. 订单管理 82 4.1.1.6.3. 航班动态 86 4.1.1.6.4. XXX商店 90 4.1.1.6.5. 会员注册\登录 93 4.1.1.6.6. 常用乘机人管理 95 4.1.1.6.7. 机票验真 97 4.1.1.6.8. 促销专区 98 4.1.1.6.9. 更多服务 99 4.1.1.6.10. 主页 103 1、 功能性:主页面集成APP中所有功能模块,用户可应用功能模块快速使用需功能。 103 2、 经济性与宣传性:通过轮播图、广告、促销信息、资讯等展示形式满足XXX航空的宣传需与广告需,达到增加收益的目的。 103 3、 美观性:页面设计根据XXX航空整体UI设计思想为依据进行设计,使用户一目了然具备XXX航空的代表性和与其他航空公司的差异化,在此基础上进行深入设计,如根据季节设计清爽的界面、根据时下热播电影设计主题界面等。 103 4.1.1.7 后台管理系统建设方案 104 4.1.1.6.1. 移动平台业务管理系统 105 (1) 应用趋势统计 110 4.1.1.6.2. 移动平台会员管理中心 123 4.1.1.8 非功能性方案 126 4.1.1.7.1. 跨平台解决方案 126 AppCan应用引擎构成图 126 4.1.1.7.2. 消息推送解决方案 127 4.1.1.7.3. 消息/数据可靠性和即时性解决方案 129 4.1.1.7.4. 大数据推送解决方案 129 4.1.1.7.5. 用户操作行为分析解决方案 130 HTML5中国统计分析案例图 132 4.1.1.7.6. 业务系统整合解决方案 132 4.1.1.7.7. 大并发时保证后台业务系统可用性解决方案 136 4.1.1.7.8. 性能解决方案 137 4.1.1.7.9. 接口解决方案 139 4.1.1.7.10. 易用性解决方案 139 4.1.2 软件及硬件配置方案 141 1. 硬件配置 141 2. 软件配置 142 (1) 软件安装配置 142 (2) 软件版本要 142 4.1.3 项目开发组组成及各成员职责分配方案 144 4.1.3.1. 项目工作方法 144 4.1.3.2. 项目组织结构 145 1. 项目实施领导小组 145 2. 项目经理 146 3. SQA组 146 4. 产品设计组 146 5. UI设计组 146 6. 手机端开发组 147 7. 后台系统开发组 147 8. 测试验收组 147 9. 角色和责任 147 4.1.3.3. 关键人员简历 150 4.1.4 项目管理方案 150 4.1.4.1. 项目例会 150 4.1.4.1.1. 项目协调会 150 4.1.4.1.2. 项目启动会 150 4.1.4.1.3. 现场安装前的工程协调会 150 4.1.4.1.4. 试运行前的工程协调会 151 4.1.4.2. 工作文档评审 151 4.1.4.2.1. 设计评审时机 151 4.1.4.2.2. 设计评审的形式 152 4.1.4.2.3. 设计评审的准备 153 4.1.4.2.4. 设计评审的实施 153 4.1.4.2.5. 对发现问题的处理和跟踪措施 153 4.1.4.2.6. 质量记录的控制 154 4.1.4.3. 项目风险控制 154 4.1.4.3.1. 管理风险 154 4.1.4.3.2. 技术风险 155 4.1.4.3.3. 人员风险 155 4.1.4.4. 项目质量管理 156 5.1.4.4.1. 质量管理过程 156 5.1.4.4.2. 质量管理组织 156 SQA组需参与的关键评审工作任务表 157 4.1.4.5. 变更管理 158 4.1.4.5.1. 需分级管理 158 4.1.4.5.2. 全生命周期变更管理 159 4.1.4.5.3. 需变更管理原则 160 4.1.4.5.4. 需变更应对方法 161 4.1.5 项目实施方案 163 4.1.5.1. 实施计划日程表 165 4.1.5.2. 实施计划表 166 4.1.5.3. 阶段工作及成果 168 4.1.5.4. 项目进度保障措施与办法 170 1. 定义项目成功的标准 170 2. 识别项目的驱动、约束和自由程度 171 3. 定义产品发布标准 171 4. 沟通承诺 171 5. 计划中,在质量控制活动后应该有修改工作 171 6. 为过程改进安排时间 172 7. 管理项目的风险 172 8. 根据工作计划而不是日历来作估计 172 9. 不要为人员安排超过他们80%的时间 172 10. 记录你的估算和你是如何达到估算的 173 11. 记录估算并且使用估算工具 173 12. 遵守学习曲线 173 13. 考虑意外缓冲 173 14. 录实际情况与估算情况 173 15. 只有当任务100%完成时,才认为该任务完成 174 16. 公开、公正地跟踪项目状态 174 4.1.6 质量控制、质量保证方案 175 4.1.6.1. 项目质量管理的关键 175 4.1.6.2. 本项目质量保证措施 175 4.1.6.3. IT项目质量管理的目标和质量控制 177 4.1.7 系统安全性方案 179 4.1.7.1. 安全性设计原则 179 (9) 系统对内网服务及对外网服务功能要独立发布,并提供安全、可靠的权限控制。 179 4.1.7.2. 服务器安全 179 4.1.7.3. 移动应用安全 179 4.1.7.4. 终端认证 180 4.1.7.5. 终端授权 181 4.1.7.6. 终端证书 181 4.1.7.7. 本地安全存储 181 4.1.7.8. 数据传输安全 181 4.1.7.9. 数据库安全机制 182 4.1.7.10. 容错机制 182 4.1.7.11. 数据同步 183 4.1.7.12. 服务器集群和负载均衡 183 4.1.7.13. 防火墙 184 4.1.8 项目交付定义 185 4.1.9 项目验收方案 186 4.1.9.1. 验收方案 186 1. 验收目的 186 2. 验收对象 186 3. 项目验收的前提条件 186 (1) 所有建设项目按照合同要全部建成,并满足使用要; 186 4. 验收方法 187 5. 验收步骤 187 6. 验收程序 188 7. 验收依据 189 8. 验收内容和标准 190 9. 验收结论 191 10. 项目交接 192 4.1.9.2. 测试方案 193 4.1.9.2.1. 测试内容设计 193 4.1.9.2.2. 测试阶段规划 198 V模型图 198 4.1.9.2.3. 测试工作流程 201 4.1.9.2.4. 测试结果评价与测试工具 208 (1) 项目汇报文件 210 (2) 测试方案 210 4.1.9.2.5. 测试人员名单 211 4.1.10 本期项目完成交付后,技术服务计划、维护、承诺及费用 212 4.1.10.1. 概述 212 4.1.10.2. 服务内容 213 1. 咨询服务 213 2. 应用系统的故障响应 213 3. 应用系统辅助操作 213 4. 应用系统的维护服务 213 5. 交流和培训 213 6. 应用系统业务调整 214 7. 应用系统软件升级 214 4.1.10.3. 支持机构 214 1. 咨询服务组 214 2. 咨询服务专家组 214 4.1.10.4. 支持方式 215 1. 现场维护 215 2. 热线电话咨询 215 3. 咨询服务网站 215 (1) 远程登录诊断维护 215 4.1.11 人员培训计划、技术转移方案 216 4.1.11.1. 培训方案 216 4.1.11.1.1. 培训对象和内容 216 4.1.11.1.2. 培训目的 217 4.1.11.1.3. 培训原则与培训质量保证体系 218 (1) 培训的师资力量 219 4.1.11.1.4. 培训方式 220 4.1.11.1.5. 培训大纲 220 4.1.11.1.6. 培训组织及技术力量安排 222 4.1.11.1.7. 培训组织方案 223 4.1.11.2. 技术转移方案 225 4.1.12 预期系统性能状况,后续升级扩展方案和计划建议 227 4.1.12.1. 移动端响应标准 227 4.1.12.2. 系统响应标准 227 4.1.12.3. 优化办法 227 4.1.12.4. 系统批处理效率 228 4.1.12.5. 并发用户下的系统性能 228 4.1.13 其他资料 229 4.1.13.1. 典型案例 229
概述 FastReport是功能齐全的报表控件,使开发者可以快速并高效地为.NET/VCL/COM/ActiveX应用程序添加报表支持。 成立于1998年,Fast Reports, Inc.开发了快速报表软件:应用程序、库和插件。 FastReports, Inc.公司的旗舰产品—FastReport,由于其独特的编程原则成为了Delphi平台最优秀的报表控件。对于如此年轻的企业来说这是巨大的成功。FastReport VCL版本在2001年荣获Delphi人最受欢迎类的读者杂志“最佳报表控件”第二名。 FastReport的报表生成器(无论VCL平台还是.NET平台),跨平台的多语言脚本引擎FastScript,桌面OLAP FastCube,如今都被世界各地的开发者所认可,这些名字被等价于“速度”、“可靠”和“品质”。 FastReports公司是国际型的报表控件开发商,在美国,欧洲和非洲不同国家均设有办事处。FastReports网站有10种不同语言的介绍,FastReports报表拥有40种语言的本地化的信息。 FastReports拥有50多个国家的经销商和合作伙伴,20,000多个来自世界各地的客户。 2产品简介 FASTREPORT .NET 一款功能齐全的报表分析解决方案。它适用于那些使用Microsoft Visual Studio 2005/2008/2010,Delphi Prizm开发工具的开发人员。2013版支持AJAX,云存储,地图编辑器和自定义标签。 FASTREPORT VCL FastReport VCL是一种附加组件,它能使开发者能为应用程序快速有效地生成报表。FastReport VCL提供了创建报表所需的所有工具,包括报表引擎,报表设计工具,预览器,对话框设计工具,以及Pascal-like 宏解释程序。[1] FASTREPORT for COM/ActiveX FASTREPORT for COM/ActiveX为开发者的项目开发提供简单易用,快速和强大的报表解决方案。 FASTREPORT.MONO FastReport.Mono是为Mono Framework设计的功能全面多平台的报表生成工具,它可以应用于Windows, Linux, Mac OS X等。[2] FastCube 2 beta FASTCUBE是一款适用于有效的数据分析的工具。FastCube是一套适用于Delphi/C++Builder/Lazarus的快速桌面OLAP控件。它能不用担心数据库的大小而创建多种报告与图表。[3] 3使用问题 开发WEB应用系统通常都会遇到报表打印问题。简单应用可利用IE的页面打印功能,利用HTML标签控制格式来实现。 但复杂的业务型应用系统,报表不仅是组成应用的重要部分,还常常是相当复杂的。很多应用系统都要提供。自定义报表的功能——即客户可以自行设计、修改报表。 在C/S结构系统中,报表问题有很多成熟的解决方法。如DELPHI开发工具不仅自带有报表控件,还可以利用第三方控件来实现快速灵活的报表制作和打印,其中有名的控件是FR-Software & A.Tzyganenko 的FastReport。FastReport提供了能与DELPHI无缝集成的从设计到打印的完整控件包,提供的设计界面友好灵活,对于开发可让用户自定义报表的C/S应用来说,是一种很好的解决方式。 FastReport是非常强大的报表控件,相比QuickReport,ReportBuilder更加灵活,又非常小巧,速度快。VCL版本支持Borland Delphi 2-6 and Borland C++Builder 1-6。CLX版本支持Delphi和Kylix。
第4章 ASP.NET的网页代码模型及生命周期 从本章开始,就进入了ASP.NET应用程序开发的世界。在了解了C#的结构,以及面向对象的概念后,就可以从面向对象的思想开发ASP.NET应用程序。在ASP.NET中,能够使用面向对象的思想和软件开发中的一些思想,例如封装、派生、继承以及高级的设计模式等。本章首先介绍ASP.NET中最重要的概念---网页代码模型。 4.1 ASP.NET的网页代码模型 在ASP.NET应用程序开发中,微软提供了大量的控件,这些控件能够方便用户的开发以及维护。这些控件具有很强的扩展能力,在开发过程中无需自己手动编写。不仅如此,用户还能够创建自定义控件进行应用程序开发以扩展现有的服务器控件的功能。 4.1.1 创建ASP.NET网站 在ASP.NET中,可以创建ASP.NET网站和ASP.NET应用程序,ASP.NET网站的网页元素包含可视元素和页面逻辑元素,并不包含designer.cs文件。而ASP.NET应用程序包含designer.cs文件。创建ASP.NET网站,首先需要创建网站,单击【文件】按钮,在下拉菜单中选择【新建网站】选项,单击后会弹出对话框用于ASP.NET网站的创建,如图4-1所示。 图4-1 新建ASP.NET网站 在【位置】选项中,旁边的【下拉菜单】可以按照开发的需来写,一般选择文件系统,地址为本机的本地地址。语言为.NET网站中使用的语言,如果选择Visual C#,则默认的开发语言为C#,否则为Visual Basic。创建了ASP.NET网站后,系统会自动创建一个代码隐藏页模型页面Default.aspx。ASP.NET网页一般由三部分组成,这三个部分如下所示。 q 可视元素:包括HTML,标记,服务器空间。 q 页面逻辑元素:包括事件处理程序和代码。 q designer.cs页文件:用来为页面的控件做初始化工作,一般只有ASP.NET应用程序(Web Application)才有。 ASP.NET页面中包含两种代码模型,一种是单文件页模型,另一种是代码隐藏页模型。这两个模型的功能完全一样,都支持控件的拖拽,以及智能的代码生成。 4.1.2 单文件页模型 单文件页模型中的所有代码,包括控件代码、事物处理代码以及HTML代码全都包含在.aspx文件中。编程代码在script标签,并使用runat=“server”属性标记。创建一个单文件页模型,在【文件】按钮中选择【新建文件】选项,在弹出对话框中选择【Web窗体】或在右击当前项目,在下拉菜单中选择【添加新建项】选项即可创建一个.aspx页面,如图4-2所示。 图4-2 创建单文件页模型 在创建时,去掉【将代码放在单独的文件中】复选框的选择即可创建单文件页模型的ASP.NET文件。创建后文件会自动创建相应的HTML代码以便页面的初始化,示例代码如下所示。 <%@ Page Language=“C#” %> <script runat=“server”> 无标题页
编译并运行,即可看到一个空白的页面被运行了。ASP.NET单文件页模型在创建并生成时,开发人员编写的类将编译成程序集,并将该程序集加载到应用程序域,并对该页的类进行实例化后输出到浏览器。可以说,.aspx页面的代码也即将会生成一个类,并包含内部逻辑。在浏览器浏览该页面时,.aspx页面的类实例化并输出到浏览器,反馈给浏览者。ASP.NET单文件页模型运行示例图如图4-3所示。 图4-3 单文件页模型 4.1.3 代码隐藏页模型 代码隐藏页模型与单文件页模型不同的是,代码隐藏页模型将事物处理代码都存放在cs文件中,当ASP.NET网页运行的时候,ASP.NET类生成时会先处理cs文件中的代码,再处理.aspx页面中的代码。这种过程被成为代码分离。 代码分离有一种好处,就是在.aspx页面中,开发人员可以将页面直接作为样式来设计,即美工人员也可以设计.aspx页面,而.cs文件由程序员来完成事务处理。同时,将ASP.NET中的页面样式代码和逻辑处理代码分离能够让维护变得简单,同时代码看上去也非常的优雅。在.aspx页面中,代码隐藏页模型的.aspx页面代码基本上和单文件页模型的代码相同,不同的是在script标记中的单文件页模型的代码默认被放在了同名的.cs文件中,.aspx文件示例代码如下所示。 <%@ Page Language=“C#” AutoEventWireup=“true” CodeFile=“Default.aspx.cs” Inherits=“_Default” %> 无标题页
从上述代码中可以看出,在头部声明的时候,单文件页模型只包含Language=“C#”,而代码隐藏页模型包含了CodeFile=“Default.aspx.cs”,说明被分离出去处理事物的代码被定义在Default.aspx.cs中,示例代码如下所示。 using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; //使用HtmlControls using System.Web.UI.WebControls; //使用WebControls using System.Web.UI.WebControls.WebParts; //使用WebParts public partial class _Default : System.Web.UI.Page //继承自System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } } 上述代码为Default.apx.cs页面代码。从上述代码可以看出,其格式与类库、编写类的格式相同,这也说明了.aspx页面允许使用面向对象的特性,如多态、继承等。但是ASP.NET代码隐藏页模型的运行过程比单文件页模型要复杂,运行示例图如图4-4所示。 图4-4 代码隐藏页模型 上述描述了代码隐藏类模型的页面生成模型。当页面被呈现之前,ASP.NET应用程序会解释并编译相应的cs文件中的代码,与此同时,ASP.NET应用程序还会将.aspx页面进行编译并生成.aspx页面对应的类。生成.aspx页面对应的类后会将该类与cs文件中的类进行协调生成新的类,该类会通过IIS在用户浏览页面时呈现在用户的浏览器中。 4.1.4 创建ASP.NET Web Application ASP.NET网站有一种好处,就是在编译后,编译器将整个网站编译成一个DLL(动态链接库),在更新的时候,只需要更新编译后的DLL(动态链接库)文件即可。但是ASP.NET网站却有一个缺点,编译速度慢,并且类的检查不彻底。 相比之下,ASP.NET Web Application不仅加快了速度,只生成一个程序集,而且可以拆分成多个项目进行管理。创建Application,首先需要新建项目用于开发Web Application,单击菜单栏上的【文件】按钮,在下拉菜单中选择【新建项目】选项,在弹出窗口中选择【ASP.NET应用程序】选项,如图4-5所示。 图4-5 创建ASP.NET应用程序 在创建了ASP.NET应用程序后,系统同样会默认创建一个Default.aspx页面,不同的是,多出了一个Default.aspx.designer.cs,用来初始化页面控件,一般不需要修改。 4.1.5 ASP.NET网站和ASP.NET应用程序的区别 在ASP.NET中,可以创建ASP.NET网站和ASP.NET应用程序,但是ASP.NET网站和ASP.NET应用程序开发过程和编译过程是有区别的。ASP.NET应用程序主要有以下特点: q 可以将ASP.NET应用程序拆分成多个项目以方便开发,管理和维护。 q 可以从项目中和源代码管理中排除一个文件或项目。 q 支持VSTS的Team Build方便每日构建。 q 可以对编译前后的名称,程序集等进行自定义。 q 对App_GlobalResources 的Resource强类支持。 ASP.NET WebSite编程模型具有以下特点: q 动态编译该页面,而不用编译整个站点。 q 当一部分页面出现错误不会影响到其他的页面或功能。 q 不需要项目文件,可以把一个目录当作一个Web应用来处理。 总体来说,ASP.NET网站适用于较小的网站开发,因为其动态编译的特点,无需整站编译。而ASP.NET应用程序适应大型的网站开发、维护等。 4.2 代码隐藏页模型的解释过程 在ASP.NET的代码隐藏页模型中,一个完整的.aspx页面包含两个页面,分别是以.aspx和.cs文件为后缀的文件,这两个文件在形成了整个Web窗体。在编译的过程中都被编译成由项目生成的动态链接库(.DLL),同时,.aspx页面同样也会编译。但是与.cs页面编译过程不同的是,当浏览者第一次浏览到.aspx页面时,ASP.NET自动生成该页的.NET类文件,并将其编译成另一个.DLL文件。 当浏览者再一次浏览该页面的时候,生成的.DLL就会在服务器上运行,并响应用户在该页面上的请或响应,ASP.NET应用程序的解释过程图如4-6所示。 图4-6 代码隐藏页模型页面的执行过程 在客户端浏览器访问该页面时,浏览器会给IIS发送请消息,IIS则会开始执行ASP.NET编译过程,如果不存在编译过后的DLL文件,则加载编译的类并创建对象。当创建对象完成,生成创建对象后的代码并生成一个ASPX页面代码,该页面代码反馈给IIS,IIS再反馈成HTML页面的形式给客户端。 4.3 代码隐藏页模型的事件驱动处理 在传统的ASP开发中,ASP的事件都是按照网页的顺序来处理的,一般情况下,ASP页面的事件都是从上到下处理事件,可以说ASP的开发是一个线性的处理模型。在用户的浏览操作中,每一次用户的操作都会导致页面重新被发送到服务器。因此,重复的操作必然导致客户端和服务器的往返过程,服务器必须重新创建页面,当创建页面后,服务器再按照原来的从上到下的顺序进行事件处理。 在ASP.NET中,通过使用模拟事件驱动模型的行为代替了ASP的线性处理模型。ASP.NET页框架模型隐式的为用户建立了事件和事件处理程序的关联。ASP.NET让用户可以为从浏览器传递的事件在服务器代码中设置相应的处理程序。假设某个用户正在浏览网站并与页面之间产生了某种交互,用户的操作就会引发事件,事件通过HTTP被传输到服务器。在服务器中,ASP.NET框架解释信息,并触发事件与之对应的处理程序。该程序可以是.aspx页面中的处理程序,也可以是开发者自定义的类库,或者COM组件等。事件驱动处理如图4-7所示。 图4-7 页面框架的事件驱动处理模型 上图则说明了当一个浏览者通过浏览器触发ASPX页面时,浏览器、服务器和服务器返回页的过程。 4.4 ASP.NET客户端状态 Web开发不像软件开发,Web应用实际上是没有状态的,这就说明Web应用程序不自动指示序列中的请是否来自相同的浏览器或客户端,也无法判断浏览器是否一直在浏览一个页面或者一个站点,也无法判断用户执行了哪个操作并统计用户的喜好。 4.4.1 视图状态 从上面的章节中可以知道,当服务器每次的往返过程,都将销毁页面并重新创建新的页面。如果一个页面中的信息超出了页面的生命周期,那么这个页面中的相关信息就不存在了。如果注销了页面的信息,那么用户的一些信息可能就不存在了。 在ASP.NET中,网页包含视图状态来保存用户的信息,视图状态在页面发回到自身时,跨页过程存储和用户自己的页面的特定值,视图状态的优点如下所示。 q 不需要任何服务器资源。 q 在默认情况下,对控件启用状态的数据进行维护,不会被破坏。 q 视图状态的值经过哈希运算和压缩保护,安全性更高。 视图状态同样有一些缺点,缺点如下所示。 q 视图状态会影响性能,如果页面存储较大较多的值,则性能会有较大的影响。 q 在手机,移动终端上,可能无法保存视图状态中使用的值。 q 视图状态虽然安全性较高,但是还是有风险,如果直接查看页面代码,可以看到相应代码。 4.4.2 控件状态 ASP.NET中还提供了控件状态属性作为在服务器往返过程中存储自定义控件中的数据的方法。在页面控件中,如果有多个自定义控件使用多个不同的控件来显示不同的数据结构,为了让这些页面控件能够在在页面上协调的工作,则需要使用控件状态来保护控件,同时,控件状态是不能被关闭的。同样,控件状态也有它的优点,优点如下所示。 q 与视图状态相同的是,不需要任何服务器资源。 q 控件状态是不能被关闭的,提供了控件管理的更加可靠的方法。 q 控件状态具有通用性。 4.4.3 隐藏域 在ASP中,通常使用隐藏域保存页面的信息。在ASP.NET中,同样具有隐藏域来保存页面的信息,作为维护页面状态的一种形式,但是隐藏域的安全性并不高,最好不要在隐藏域保存过多的信息。隐藏域具有以下优点。 q 不需要任何服务器资源。 q 支持广泛,任何客户端都支持隐藏域。 q 实现简单,隐藏域属于HTML控件,无需像服务器控件那样有需要编程知识。 而隐藏域具有一些不足,如下所示。 q 具有较高的安全隐患。 q 存储结构简单。 q 同样,如果存储了较多的较大的值,则会导致性能问题。 q 如果隐藏域过多,则在某些客户端中被禁止。 q 隐藏域将数据存储在服务器上,而不存储在客户端。 注意:如果开发中,页面的隐藏域过多,这些隐藏域被存储在服务器。当客户端浏览页面的时候,会有一些防火墙扫描页面,以保证操作系统的安全,如果页面的隐藏域过多,那么这些防火墙可能会禁止页面的某些功能。 4.4.4 Cookie Cookie在客户端用户保存网站的少量的用户信息,服务器可以通过编程的方法获取用户信息,Cookie信息和页面请通常一起发送到服务器,服务器对客户端传递过来的Cookie信息做处理。通常Cookie保存用户的登录状态、用户名等基本信息等等,在后面的章节会详细介绍使用ASP.NET操作Cookies。 4.4.5 客户端状态维护 虽然使用某些客户端状态并不使用服务器资源,但是这些状态都具有潜在的安全隐患,如Cookie。非法用户可以使用Cookie欺骗来攻击网站进行用户信息的获取,不过使用客户端状态能够使用客户端的资源从而提高服务器性能。使用客户端状态,虽然有安全隐患,但是具有良好的编程能力,以及基本的安全知识,能够较好的解决安全问题,同时也能够提高服务器性能。下面小结了一些客户端状态的优缺点。 q 视图状态:推荐当存储少量挥发到自身的页面的信息时使用。 q 控件状态:不需要任何服务器资源,控件状态是不能被关闭的,提供了控件管理的更加可靠和更通用的方法。 q 隐藏域:实现简单,但是在应用程序中会造成一些安全隐患。 q Cookie:实现简单,同样也能够简单的获取用户的信息,但是Cookie有大小的限制,不适宜存储大量的代码。 4.5 ASP.NET页面生命周期 ASP.NET页面运行时,也同类的对象一样,有自己的生命周期。ASP.NET页面运行时,ASP.NET页面将经历一个生命周期,在生命周期内,该页面将执行一系列的步骤,包括控件的初始化,控件的实例化,还原状态和维护状态等,以及通过IIS反馈给用户呈现成HTML。 ASP.NET页面生命周期是ASP.NET中非常重要的概念,了解ASP.NET页面的生命周期,就能够在合适的生命周期内编写代码,执行事务。同样,熟练掌握ASP.NET页面的生命周期,可以开发高效的自定义控件。ASP.NET生命周期通常情况下需要经历几个阶段,这几个阶段如下所示。 q 页请:页请发生在页生命周期开始之前。当用户请一个页面,ASP.NET将确定是否需要分析或者编译该页面,或者是否可以在不运行页的情况下直接请缓存响应客户端。 q 开始:发生了请后,页面就进入了开始阶段。在该阶段,页面将确定请是发回请还是新的客户端请,并设置IsPostBack属性。 q 初始化:在页面开始后,进入了初始化阶段。初始化期间,页面可以使用服务器控件,并为每个服务器控件进行初始化。 q 加载:页面加载控件。 q 验证:调用所有的验证程序控件的Vailidate方法,来设置各个验证程序控件和页的属性。 q 回发事件:如果是回发请,则调用所有事件处理的程序。 q 呈现:在呈现期间,视图状态被保存并呈现到页。 q 卸载:完全呈现页面后,将页面发送到客户端并准备丢弃时,将调用卸载。 4.6 ASP.NET生命周期中的事件 在页面周期的每个阶段,页面将引发可运行用户代码进行处理事件。对于控件产生的事件,通过声明的方式执行代码,并将事件处理程序绑定到事件。不仅如此,事件还支持自动事件连接,最常用的就是Page_Load事件了,除了Page_Load事件以外,还有Page_Init等其他事件,本节将会介绍此类事件。 4.6.1 页面加载事件(Page_PreInit) 每当页面被发送到服务器时,页面就会重新被加载,启动Page_PreInit事件,执行Page_PreInit事件代码块。当需要对页面中的控件进行初始化时,则需要使用此类事件,示例代码如下所示。 protected void Page_PreInit(object sender, EventArgs e) //Page_PreInit事件 { Label1.Text = “OK”; //标签赋值 } 在上述代码中,当触发了Page_PreInit事件时,就会执行该事件的代码,上述代码将Lable1的初始文本值设置为“OK”。Page_PreInit事件能够让用户在页面处理中,能够让服务器加载时只执行一次而当网页被返回给客户端时不被执行。在Page_PreInit中可以使用IsPostBack来实现,当网页第一次加载时IsPostBack属性为false,当页面再次被加载时,IsPostBack属性将会被设置为true。IsPostBack属性的使用能够影响到应用程序的性能。 4.6.2 页面加载事件(Page_Init) Page_Init事件与Page_PreInit事件基本相同,区别在于Page_Init并不能保证完全加载各个控件。虽然在Page_Init事件中,依旧可以访问页面中的各个空间,但是当页面回送时,Page_Init依然执行所有的代码并且不能通过IsPostBack来执行某些代码,示例代码如下所示。 protected void Page_Init(object sender, EventArgs e) //Page_Init事件 { if (!IsPostBack) //判断是否第一次加载 { Label1.Text = “OK”; //将成功信息赋值给标签 } else { Label1.Text = “IsPostBack”; //将回传的值赋值给标签 } } 4.6.3 页面载入事件(Page_Load) 大多数初学者会认为Page_Load事件是当页面第一次访问触发的事件,其实不然,在ASP.NET页生命周期内,Page_Load远远不是第一次触发的事件,通常情况下,ASP.NET事件顺序如下所示。 q 1. Page_Init()。 q 2. Load ViewState。 q 3. Load Postback data。 q 4. Page_Load()。 q 5. Handle control events。 q 6. Page_PreRender()。 q 7. Page_Render()。 q 8. Unload event。 q 9. Dispose method called。 Page_Load事件是在网页加载的时候一定会被执行的事件。在Page_Load事件中,一般都需要使用IsPostBack来判断用户是否进行了操作,因为IsPostBack指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问,示例代码如下所示。 protected void Page_Load(object sender, EventArgs e) //Page_Load事件 { if (!IsPostBack) { Label1.Text = “OK”; //第一次执行的代码块 } else { Label1.Text = “IsPostBack”; //如果用户提交表单等 } } 上述代码使用了Page_Load事件,在页面被创建时,系统会自动在代码隐藏页模型的页面中增加此方法。当用户执行了操作,页面响应了客户端回发,则IsPostBack为true,于是执行else中的操作。 4.6.4 页面卸载事件(Page_Unload) 在页面被执行完毕后,可以通过Page_Unload事件用来执行页面卸载时的清除工作,当页面被卸载时,执行此事件。以下情况会触发Page_Unload事件。 q 页面被关闭。 q 数据库连接被关闭。 q 对象被关闭。 q 完成日志记录或者其他的程序请。 4.6.5 页面指令 页面指令用来通知编译器在编译页面时做出的特殊处理。当编译器处理ASP.NET应用程序时,可以通过这些特殊指令要编译器做特殊处理,例如缓存、使用命名空间等。当需要执行页面指令时,通常的做法是将页面指令包括在文件的头部,示例代码如下所示。 <%@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“Default.aspx.cs” Inherits=“MyWeb._Default” %> 上述代码中,就使用了@Page页面指令来定义ASP.NET页面分析器和编译器使用的特定页的属性。当代码隐藏页模型的页面被创建时,系统会自动增加@Page页面指令。 ASP.NET页面支持多个页面指令,常用的页面指令如下所示。 q @ Page:定义ASP.NET页分析器和编译器使用的页特定(.aspx文件)属性,可以编写为<%@ Page attribute=“value” [attribute=“value”…]%>。 q @ Control:定义ASP.NET页分析器和编译器使用的用户控件(.ascx文件)特定的属性。该指令只能为用户控件配置。可以编写为<%@ Control attribute=“value” [attribute=“value”…]%>。 q @ Import:将命名空间显示导入到页中,使所导入的命名空间的所有类和接口可用户该页。导入的命名空间可以是.NET Framework类库或用户定义的命名空间的一部分。可以编写为<%@ Import namespace=“value” %>。 q @ Implements:提示当前页或用户控件实现制定的.NET Framework接口。可以编写为<%@ Implements interface=“ValidInterfaceName” %>。 q @ Reference:以声明的方式指示,应该根据在其中声明此指令的页对另一个用户控件或页源文件进行动态编译和链接。可以编写为<%@ Reference page | control=“pathtofile” %>。 q @ Output Cache:以声明的方式空间ASP.NET页或页中包含的用户控件的输出缓存策略。可以编写为<%@ Output Cache Duration=“#ofseconds” Location=“Any | Client | Downstream | Server | None” Shared=“True |False” VaryByControl=“controlname” VaryByCustom=“browser | customstring” VaryByHeader=“headers” VaryByParam=“parametername” %> q @ Assembly:在编译过程中将程序集链接到当前页,以使程序集的所有类和接口都可用在该页上。可以编写为<%@ Assembly Name=“assemblyname” %>或<%@ Assembly Src=“pathname” %>的方式。 q @ Register:将别名与命名空间以及类名关联起来,以便在自定义服务器控件语法中使用简明的表示法。可以编写为<%@ Register tagprefix=“ tagprefix” Namespace=“namepace” Assembly=“assembly” %>或<%@ Register tagprefix=“ tagprefix” Tagname=“tagname” Src=“pathname” %>的方式。 4.7 ASP.NET网站文件类型 在ASP.NET中包含诸多的文件类型,这些类型的文件由ASP.NET支持和管理,而除了这些文件以外,其他的文件都由IIS托管。使用VS2008能够创建大部分可以使用ASP.NET托管运行的程序。同时,使用应用程序映射可以将文件类型映射到应用程序。当需要伪静态时,很可能需要将.html后缀托管到IIS中的应用扩展,因为默认情况下ASP.NET不会处理HTML的操作。 技巧:现在的网站构架中,生成静态是一种降低网站压力的一种很好的解决方案。在某些情况下,服务器可能需要伪静态支持,就是将.aspx页面后缀显式成.html后缀,让搜索引擎能够更好的搜录。 1.ASP.NET管理的文件类型 ASP.NET管理的文件类型能够在ASP.NET应用程序中被ASP.NET应用程序的不同模块进行访问和调用,这些文件可能是用户能够直接访问的,也有可能是用户无法直接访问的。ASP.NET管理的文件类型如表4-1所示。 表4-1 ASP.NET管理的文件类型 文件类型 保存位置 描述 .asax 根目录。 Global.asax 文件。包含 HttpApplication 对象的派生代码,用于重新展示 Application 对象。 .ascx 根目录或子目录。 可重用的自定义 Web 控件。 .ashx 根目录或子目录。 处理器文件。包含实现 IHttpHandler 接口的代码,用于处理输入请。 .asmx 根目录或子目录。 XML Web Services 文件。包含由 SOAP 提供给其他 Web 应用的类对象和功能。 .aspx 根目录或子目录。 ASP.NET Web 窗体。包含 Web 控件和其他业务逻辑。 .axd 根目录。 跟踪视图文件。通常是 Trace.axd。 .browser App_Browsers 目录。 浏览器定义文件。用于识别客户端浏览器的可用特征。 .cd 根目录或子目录。 类图文件。 .compile Bin 目录。 定位于适当汇编集中的预编译文件。可执行文件(.aspx,.ascx,.master,theme)预编译后放在 Bin 目录。 .config 根目录或子目录。 Web.config 配置文件。包含用于配置 ASP.NET 若干特征的 XML 元素集。 .cs,.jsl,vb App_Code 目录。有些是 ASP.NET 的代码分离文件,位于与 Web 页面相同的目录。 运行时被编译的类对象源代码。类对象可以是 HTTP 模块,HTTP 处理器,或 ASP.NET 页面的代码分离文件。 .csproj,vbproj,vjsproj Visual Studio 工程目录。 Visual Studio 客户工程文件。 .disco,.vsdisco App_WebReferences 目录。 XML Web Services Discovery 文件。用于定位可用 Web Services。 .dsdgm,dsprototype 根目录或子目录。 分布式服务图表(DSD)文件。可添加到 Visual Studio 方案中,为反向引擎提供消耗 Web Services 时的交互性图表。 .dll Bin 目录。 已编译类库文件。作为替代,可将类对象源代码保存到 App_Code 目录。 .licx,.webinfo 根目录或子目录。 许可协议文件。许可协议有助于保护控件开发者的知识产权,并对控件用户的使用权进行验证。 .master 根目录或子目录。 模板文件定义 Web 页面的统一布局,并在其他页面中得到引用。 .mdb,.ldb App_Data 目录。 Access 数据库文件。 .mdf App_Data 目录。 SQLServer 数据库文件。 .msgx,.svc 根目录或子目录。 Indigo Messaging Framework(MFx)服务文件。 .rem 根目录或子目录。 远程处理器文件。 .resources App_GlobalResources 或 App_LocalResources 目录。 资源文件。包含图像,本地化文本,或其他数据的资源引用串。 .resx App_GlobalResources 或 App_LocalResources 目录。 资源文件。包含图像,本地化文本,或其他数据的资源引用串。 .sdm,.sdmDocument 根目录或子目录。 系统定义模型(SDM)文件。 .sitemap 根目录。 网站地图文件。包含网站的结构。ASP.NET 通过默认的网站地图提供者,简化导航控件对网站地图文件的使用。 .skin App_Themes 目录。 皮肤定义文件。用于确定显示格式。 .sln Visual Web Developer 工程目录。 Visual Web Developer 工程的项目文件。 .soap 根目录或子目录。 SOAP 扩展文件。 注意:ASP.NET 管理的文件类型映射到 IIS 的 Aspnet_isapi.dll。 2.IIS 管理的文件类型 在ASP.NET应用程序中,有些动态的文件如asp文件就不被ASP.NET应用程序框架管理,这些文件由IIS进行管理,由IIS管理的文件类型如表4-2所示。 表4-2 IIS管理的文件类型 文件类型 保存位置 描述 .asa 根目录。 Global.asa 文件。包含 ASP 会话对象或应用程序对象生命周期中的各种事件处理。 .asp 根目录或子目录. ASP Web 页面。包含 @ 指令和使用 ASP 内建对象的脚本代码。 .cdx App_Data 目录. Visual FoxPro 的混合索引文件。 .cer 根目录或子目录。 证明文件。用于对网站的授权。 .idc 根目录或子目录。 Internet Database Connector(IDC)文件。被映射到 httpodbc.dll。 注意:由于无法为数据库连接提供足够的安全性,IDC 将不再被继续使用。IIS 6.0 是最后一个支持 IDC 的版本。 .shtm,.shtml,.stm 根目录或子目录。 包含文件。被映射到 ssinc.dll。 注意:IIS管理的文件类型被映射到IIS的asp.dll 3.静态文件类型 IIS仅提供已注册MIME类型的静态文件服务,注册信息保存在Mime Map IIS元数据库中。如果某种文件类型已经映射到指定应用程序,在不需要作为静态文件的情况之下,无需再在MIME类型列表中进行包含。默认的静态文件类型如表4-3所示。 表4-3 静态文件类型 文件类型 保存位置 描述 .css 根目录或子目录,以及 App_Themes 目录。 样式表文件。用于确定 HTML 元素的显示格式。 .htm,.html 根目录或子目录。 静态网页文件。由 HTML 代码编写。 注意:虽然ASP.NET的代码页面也能够手动添加到MIME类型列表中,但是这样操作浏览者就能够看到页面源代码,从而暴露ASP.NET页面源代码,相对于服务器而言是非常不安全的。 4.8 小结 本章介绍了ASP.NET页面生命周期,以及ASP.NET页面的几种模型。ASP.NET页面生命周期是ASP.NET中非常重要的概念,熟练掌握ASP.NET生命周期能对ASP.NET开发,自定义控件开发起到促进作用。本章还介绍了: q 代码隐藏页模型的解释过程。 q 代码隐藏页模型的事件驱动处理。 q ASP.NET网页的客户端状态。 q ASP.NET页面生命周期。 q ASP.NET生命周期中的事件。 q ASP.NET 网站文件类型。 上面的章节都分开的讲解了ASP.NET运行中的一些基本机制,在了解了这些基本运行机制后,就能够在.NET框架下做ASP.NET开发了。虽然这些都是基本概念,但是在今后的开发中,会起到非常重要的作用。
我国GIS经过三十多年的发展,理论和技术日趋成熟,在传统二维GIS已不能满足应用需的情况下,三维GIS应运而生,并成为GIS的重要发展方向之一。上世纪八十年代末以来,空间信息三维可视化技术成为业界研究的热点并以惊人的速度迅速发展起来,首先是美国推出Google Earth、Skyline、World Wind、 Virtual Earth、ArcGIS Explorer等,我国也紧随推出了EV-Globe 、GeoGlobe、VRMap、IMAGIS等软件与国外软件竞争本土市场。三维GIS得到了各行业用户的认同,在城市规划、综合应急、军事仿真、虚拟旅游、智能交通、海洋资源管理、石油设施管理、无线通信基站选址、环保监测、地下管线等领域备受青睐。目前,我国国产三维GIS软件已占据了国内市场的半壁江山。   本文唱谈了十九个国内外主流的三维GIS软件,并对其基本特点、发展历程、应用等方面做了总结概述。由于作者水平有限,不足之处恳请读者批评指正。   国外三维GIS软件:   一重唱·美国谷歌公司:Google Earth--用户最多的三维地球软件   介绍:Google Earth以三维地球的形式把大量卫星图片、航拍照片和模拟三维图像组织在一起,使用户从不同角度浏览地球。Google Earth的数据来源于商业遥感卫星影像和航片,包括DigitalGlobe公司的QuickBird,IKOONOS及法国SPOTS。   特点:Google Earth凭借其强大的技术实力和经验,以其操作简单、用户体验超群的优势吸引了全球近十分之一的人口使用。   发展历程:Google于2004年10月收购了Keyhole公司,随之次年6月推出Google Earth系列软件。   产品形式:Google Earth客户端软件提供三个版本:个人免费版、Plus版、Pro版以及企业级解决方案,用于在企业内部部署Google Earth应用。   二重唱·美国国家航空和航天管理局(NASA):World Wind--最强大的开源地理科普软件   介绍:World Wind是NASA发布的一个开放源代码的地理科普软件,由NASA Research开发,NASA Learning Technologies来发展,它是一个可视化地球仪,将NASA、USGS以及其它WMS服务商提供的图像通过一个三维的地球模型展现,还包含了火星和月球的展现。软件用C#编写,调用微软SQL Server影像库Terrain Server来进行全球地形三维显示。它通过将遥感影像与SRTM高程(航天飞机雷达拓扑测绘)叠加生成三维地形。   特点:World Wind最大的特性是卫星数据的自动更新能力。这种能力使得World Wind具有在世界范围内跟踪近期事件、天气变化、火灾等情况的能力。   拥有NASA血统的World Wind可以利用Landsat 7、SRTM、MODIS、GLOBE , Landmark Set等多颗卫星的数据,将Landsat卫星的图像和航天飞机雷达遥感数据结合在一起,让用户体验三维地球遨游的感觉。采用了先进的流传输技术。   World Wind是个完全免费的软件,在使用上没有任何限制,主要面向科学家、研究工作者和学生群体。另外World Wind是完全开放的,用户可以修改World Wind软件本身。目前,包括国内部分三维GIS软件在内的全球许多主流三维软件都是以World Wind为技术内核发展而来。   三重唱·美国Skyline公司:Skyline Globe--个性化的三维地理信息系统   介绍:SkylineGlobe产品能够基于地表的卫星影像、航空影像创建高分辨率的三维虚拟地球场景。Skyline具有强大空间信息展示功能,支持交互式绘图工具,提供三维测量及地形分析工具,提供数据库接口支持如Oracle,ArcSDE,拥有强大数据处理能力。   特点:Skyline Globe Enterprise Solution是美国Skyline公司为网络运营三维地理信息提供的企业级解决方案。包括了Skyline整套软件工具,给客户提供一站式服务,并开放了所有的API,不论是在网络环境中还是单机应用,让用户能够根据自己的需定制功能,建立个性化的三维地理信息系统。   产品形式:TerraExplorer、TerraExplorer Pro、TerraBuilder、TerraGate。   应用:中国数字海洋系统、公安部警卫基础工作信息系统、数字深圳三维平台、黄河可视化防汛预案管理系统、数字烟台三维城市规划信息系统等。   四重唱·美国微软公司:Virtual Earth--可以在浏览器中直接运行的三维地球软件   介绍:Virtual Earth 3D可以呈现完整交互式的三维图片,是基于地图的搜索工具,集航拍照片、地图、黄页数据于一体。在Virtual Earth 3D中,就象在大型3D游戏的虚拟现实环境中一样,用户可以在城市之间、建筑物之间“飞来飞去”。除了真实地“再现”城市的地形外,Virtual Earth 3D中也包含一些现实世界中不存在的东西。   特点:Virtual Earth 3D不要用户在硬盘上下载应用软件,而是直接在浏览器中运行。   发展历程:在Google宣布推出Google Earth后,微软也紧跟其后启动了相关计划。2005年12月23日,微软公司收购一家从事三维地球研究的华人公司GeoTange。2006年5月3日,又收购一家专门从事遥感领域研究的公司Vexcel。随后,在2006年11月初微软发布了Virtual Earth 3D。今年6月,微软推出Bing搜索后,意味着原来的“Virtual Earth”变成了“Bing Maps and Bing Maps for Enterprise”。   五重唱·美国环境系统研究所公司(ESRI): ArcGIS Explorer--ArcGIS家族的3D后代   介绍:ArcGIS Explorer是一个免费的虚拟地球浏览器,提供自由、快速的2D和3D地理信息浏览,充满趣味性且简捷易用。ArcGIS Explorer通过继承ArcGIS Server完整的GIS性能(包括空间处理和3D服务),达到整合丰富的GIS数据集和服务器空间处理应用的目的。   特点:AreG1S Explore具有和Google Earth相似的功能,支持来自ArcGIS Server、GML、WMS、Google Earth(KML)的数据。   发展历程:ArcGIS Explorer是2006年8月推出。在明年即将发布的ArcGIS9.4中也将加强三维GIS功能。 间奏曲   国内三维GIS产品:   六重唱·北京国遥新天地信息技术有限公司:EV-Globe--国内三维海量空间信息平台佼佼者   介绍:EV-Globe具有大范围的、海量的、多源的数据一体化管理和快速三维实时漫游功能,支持三维空间查询、分析和运算,可与常规GIS软件集成,可方便快速构建三维空间信息服务系统,亦可快速在二维GIS系统完成向三维的扩展。EV-Globe提供距离测量、线段剖面、折线剖面、区域淹没、通视分析等三维GIS特色的空间分析功能。可以在EV-Globe中看到烟雾、尘暴、火焰以及下雨、下雪等特殊效果。   特点:EV-Globe基于组件式开发,所有功能以控件或类的方式封装在dll中,用户可以很方便进行各种功能定制,甚至将EV-Globe嵌入各类信息系统中。EV-Globe具备在普通PC机上就能实现的海量三维模型和影像流畅地进行各项漫游操作的功能。此外在EV-Globe服务器端,用户可根据需要绑定常规GIS平台如SuperMap,ArcGIS等。   发展历程:EV-Globe于2008年12月、2009年5月、7月分别发布了EV-Globe SDK、EV-Globe Sea和EV-Globe Web版,并将于今年12月3日正式发布EV-Globe 2.0。   产品形式:EV-Globe SDK(开发包)、EV-Globe Pro(数据浏览工具)、EV-Globe Creater(数据制作工具)、EV-Globe Datasets(影像数据集)。   应用:全国海岛海岸带三维可视化信息系统、中石油海外应急系统、中国石油中长期油气管网建设预测分析、宁波镇海环保三维影像浏览系统、遨游天府--四川省地理空间三维管理系统。   七重唱·武大吉奥信息技术有限公司:GeoGlobe--加入实时三维量测功能   介绍:GeoGlobe是武汉大学李德仁和龚建雅等教授花了近10年时间打造,由武汉大学测绘遥感信息工程国家重点实验室研发的网络环境下全球海量无缝空间数据组织、管理与可视化软件。GeoGlobe提供了一系列三维可视化及应用的功能:可视化导航与操作、可视化查询与三维分析、兴趣点标注及定位等。还提供了二次开发功能,用户可以根据应用的需要自行设计界面,调用所提供的动态库进行二次开发。   特点:GeoGlobe具有和World Wind相似的功能,加入了实时三维量测等功能。能同时处理多种来源的数据,包括三维地形图、航拍影像图、三维模型,矢量数据,是Google Earth所没有的。GeoGlobe2.0提供了海量4D数据(DEM、DOM、DLG、DRG)、地名数据、三维模型数据的完整解决方案。   发展历程:GeoGlobe于2006年4月推出,现已推出至GeoGlobe2.0。   产品形式: GeoGlobe Server、GeoGlobe Builder、GeoGlobe Viewer。   八重唱·适普软件有限公司:IMAGIS--管理意义上的“所见即所得”   介绍:IMAGIS三维可视地理信息系统是一套以数字正射影像(DOM)、数字地面模型(DEM)、数字线划图 (DLG)和数字栅格图 (DRG)作为处理对象的 GIS 系统。结合了三维可视化技术与虚拟现实技术,完全再现管理环境下的真实情况,把所有管理对象都置于一个真实的三维世界中,真正做到了管理意义上的“所见即所得”。   特点:IMAGIS在数据管理上采用了矢量数据和栅格数据混合管理的数据结构,二者可以相互独立存在,同时,栅格数据也可以作为矢量数据的属性,以适应不同情况下的要。   发展历程:2003年3月推出IMAGIS V2.3,2004年6月推出增强版本IMAGIS V2.3.6,并在该版本中正式推出IMAGIS Web3D V1.0 中英文版本。   产品形式:   IMAGIS Education:三维可视地理信息系统教育版;   IMAGIS Classic:三维可视地理信息系统;   IMAGIS Magixity:城市建模与可视化地理信息系统;   IMAGIS 3DBrowser:影像快速漫游系统;   IMAGIS Web3D:三维场景数据网络发布系统;   IMAGIS Sup3DBrowser:3DBrowser 通用控件。   九重唱·伟景行数字城市科技有限公司:CityMaker--数字城市的三维应用   介绍:CityMaker 是数字城市三维可视化平台,主要针对城市规划领域,提供覆盖规划设计、展示、评估、管理的全方位服务。提供从三维地理信息系统建设到应用的全面解决方案。通过CityMaker三维地理信息平台,可以叠加显示城市面貌、规划图则、户籍信息、监控视频等各种二三维数据,还可快速集成已有专业系统,开展基于网络的三维专业应用。   特点:是面向规划设计师和建筑师的三维辅助设计软件,它将虚拟可视化技术融入设计过程,让设计师在三维环境下进行城市的设计、评估、分析和交流。它可以与3ds MAX等建模软件配合使用,支持材质编辑和物体运动编辑,支持火焰、喷泉、爆炸和雨雪等虚拟现实效果的制作等。   产品形式:   CityMaker Network:专业的城市级三维地理空间信息网络应用平台;   CityMaker Professional:专业的城市规划三维分析软件;   CityMaker Builder:城市级三维地理空间创建软件平台;   CityMaker Designer:面向规划设计师和建筑师的三维辅助设计软件;   CityMaker Simulation System:专业的多通道三维模拟仿真软件。   应用:数字北京、数字斯图加特、虚拟圆明园、上海世博会虚拟现实系统等。   十重唱·杭州阿拉丁信息科技股份有限公司:AlaGIS--网络仿真城市E都市的同门   介绍:AlaGIS与全球首个大规模网络仿真城市E都市同属于杭州阿拉丁公司,采用面向网络的分布式空间信息应用服务支撑平台,集二维、三维、遥感影像于一体,全面整合了GIS与数据库、软件工程、人工智能、网络技术及其他多种计算机主流技术。   特点:二三维叠加是AlaGIS的主要特点,AlaGIS平台采用的合理的二三维映射使二维图形和三维图形的数据一一对应,从而实现了二维图形和三维图形的有效结合,通过二三维的切换或者透明度变化来达到所期望的图形效果。   应用:三维地名管理系统、三维警务地理信息系统、三维数字房产管理系统、三维税源网络管理系统、三维旅游展示管理平台等。   十一重唱·北京灵图软件技术有限公司:VRMap--首次在微机上再现真三维景观   介绍:三维地理信息系统软件VRMap实现了VR和GIS技术的完美结合,可以根据卫星影像、航空影像、电子地图、高程数据、城市模型数据、虚拟效果数据生成虚拟地理场景;通过VRMap提供的二次开发包,可实现规划、国土、电信、交通、水利等各行业的专业分析。   特点:VRMap采用J2EE体系架构,快速、灵活构建基于Web的三维业务应用系统;同时VRMap提供城市级别的基于网络的海量精细场景,可快速建立三维应用。   发展历程:从2000年诞生的VRMap1.0至今,VRMap产品已升级到4.0。但是受2007年底灵图公司裁员事件影响,原VRMap团队成员流失较为严重,产品后续发展堪忧。   产品形式:VRMap标准版、VRMap专业版、VRMap企业版。   十二重唱·北京海澄华图科技有限公司:NEOMAP VPlatform--灵图VRMap的变身   介绍:NEOMAP VPlatform的简称是NVP,它可以在网络发布全球高精度DEM/DOM/DLG数据和特大城市级三维精细模型。NVP提供服务接口,支持灵活的二次开发和二三维一体化应用。NVP包含三维数据处理、三维场景整合、三维网络服务平台、三维数据浏览、运维支撑、二次开发SDK共六个子系统。   特点:NVP的多项核心技术,包括高效的海量空间数据管理技术、海量三维数据网络发布技术、地形、影像数据存储压缩技术、多精度地形、影像数据融合技术,处于国内外领先水平,在对于三维GIS系统最重要的海量数据支持、稳定性、二次开发支持、三维效果方面有显著优势。   发展历程:2008年8月成立公司,随即推出NEOMAP VPlatform。   产品形式:三维数据处理、三维场景整合、三维网络服务平台、三维数据浏览、运维支撑、二次开发SDK。   应用:数字延吉城市地理信息共享平台、苏州市基础地理信息共享平台、青岛市南区空间信息服务平台及应用、秦皇岛城市管理局。   十三重唱·中国资源卫星应用中心、北京视宝卫星图像公司、北京星天地信息科技公司:数据地球(中国)--卫星、航空、地面三种采集方式的集成   介绍:数据地球(中国)(Data Earth China)是我国第一个集数据与软件一体化的三维地理空间信息系统,它在国家863计划地球观测与导航技术领域项目支持下,由中国资源卫星应用中心、视宝公司和北京星天地公司三家联合研发的新一代自主产权的三维地理空间信息服务平台,标志着我国已拥有基于卫星、航空、地面三种方式采集到的地理信息综合开发而成的三维立体地理空间信息系统。   特点:该平台集成了国内领先的Uniscope三维GIS引擎技术,覆盖全域的高分辨率卫星影像(CBERS-02B、SPOT5)、较高精度的地形高程数据、导航用道路和POI等矢量信息,符合保密规定的政府用户还可以享受航空影像数据服务,是数据和平台,航天和航空、宏观和微观、矢量和栅格相结合的新一代三维地理信息产品。   发展历程: 2009年9月发布。   应用:城市应急指挥、国防信息化建设、国土资源管理、城市规划、环境保护、灾害防治等。   十四重唱·武汉地大信息科技发展有限公司:InfoEarth TelluroMap--三维应用系统集成   介绍:InfoEarth TelluroMap采用面向Internet的分布式计算技术和三维可视化技术,支持跨区域、跨网络的复杂大型网络三维应用系统集成。为海量三维空间数据的发布提供了可扩展的开发平台,开发者可以方便、灵活地实现网络空间数据的共享和三维可视化。   特点:InfoEarth TelluroMap基于主流技术平台。NET开发,产品开放性好、架构灵活、三维功能和GIS功能强大、支持TB级海量空间和三维模型数据发布和应用。   产品形式:   InfoEarth TelluroMap Server:服务器端应用程序和组件库;   InfoEarth TelluroMap GlobeEngine:基于组件技术的三维可视化组件;   InfoEarth TelluroMap Map:基于Ajax的WebGIS客户端组件;   InfoEarth TelluroMap Fusion:空间数据、三维模型数据入库、预处理模块。   应用:数字汉江、数字地大、移动基站三维地理信息系统设计方案、山洪(灾害)预警系统工程解决方案等。   十五重唱·北京朝夕科技有限责任公司:Drawsee Earth--在线开发的三维地理信息系统   介绍:Drawsee Earth是结合三维和网络技术的互联网三维GIS开发平台,构建企业级B/S结构三维行业应用的工具。它基于Microsoft .NET与ActiveX软件平台,通过海量数据管理、网络数据流传输、三维模型高速显示等技术,把卫星影像、数字高程、普通矢量地图、精细建筑模型等数据融合到一起。   特点:Drawsee Earth不仅可以提供三维场景可视化、海量数据管理,而是结合行业,提供三维场景动态模拟分析。将三维场景各类实体的可预见态势、不可预见态势,通过动态分析真实展现出来。   产品形式:   Drawsee EarthDesk:数据融合工具;   Drawsee EarthServer:数据服务器;   Drawsee EarthViewer:客户端插件。   应用:三维森林防火指挥系统、三维油罐监控系统、互联网3DGPS车辆监控系统等。   十六重唱·北京超维创想信息技术有限公司:Creatar --真三维地学信息系统   介绍:Creatar 1.0三维地学信息系统是超维创想公司基于北京大学科研实力进行技术创新,自主研发的新一代真三维地学信息系统系列软件。该软件是我国第一个参加科技部软件测评的真三维地学信息系统软件。   特点:完善的三维空间信息基础服务、开放的系统平台、多应用模式支持。   应用:城市地质、岩土工程、环境地质、矿产资源勘查等众多地学相关领域。   十七重唱·北京超图软件股份有限公司:SuperMap iSpace--二三维一体化的三维 GIS模块   介绍:SuperMap iSpace是SuperMap UGC新增三维GIS模块的产品研发代号。采用了SuperMap SDX+空间数据库技术来高效地、一体化地存储和管理二维三维空间数据,升级了二维显示的功能,不仅能够支持将二维的GIS数据和地图直接加载到真三维场景中进行显示,而且可以在二维窗口中显示三维数据,在二维地图中使用三维符号,真正实现了二维三维数据一体化。   特点:二维三维数据一体化、多元数据无缝集成、多元数据无缝集成、三维web浏览等;提供基本的三维空间分析能力包括:量算分析、查询统计分析、通视性分析。   发展历程:2009年10月在超图用户大会上宣布,但目前尚未看到成熟的产品。   十八重唱·中地数码集团:MapGIS-TDE--地上、地表、地下的三维空间数据模型   介绍:MAPGIS-TDE 三维处理平台是中地公司在 MAPGIS7.0 中推出的一套支持真三维数据处理及3DGIS 应用项目二次开发平台。采用三维空间数据模型、构模算法、三维可视化技术及框架加插件的软件体系结构,具备集成管理地上、地表、地下的三维空间模型的能力,可以管理从2.5维到3维、从矢量到栅格等多种三维空间数据模型,并提供多种模型建立、管理及显示的工具及接口。   特点:MAPGIS-TDE在提供一般三维空间数据模型及其管理功能的基础上,平台允许针对特定应用领域动态扩展建模及其分析功能插件,以适应特定的三维应用。   应用:MAPGIS三维数码景观系统、MAPGIS 工程勘察信息系统、MAPGIS 城市地质信息系统、MAPGIS 综合管网信息系统等。   十九重唱·广州市红鹏直升机应用服务有限公司:真三维地理信息系统--航空摄影测量的延伸   介绍:红鹏真三维地理信息系统是以普通数字地图数据为基础,利用虚拟现实技术,将高程数据用形象的方式表现出来;同时运用多媒体和三维可视化技术将图形、图像、文字和数据纳入统一的窗口系统下管理,使其具有虚拟、动态、交互等特征。   特点:红鹏真实三维数字地图不同于其它城市虚拟仿真系统,而是利用其自身优势,从低空(300米)获取高分辨率的航空影像。同时,高分辨率的航空影像也有助于量测出精准的城市建筑的空间尺度。三维数字地图的平均误差不超过1.5 米。利用航空摄影测量的方式,可以快捷、准确、低成本地构建大范围的城市三维地图。 尾声   技术的进步和用户需的拉动在GIS从二维向三维的发展中起到了决定性的作用。GIS的三维时代,已经悄然来临并广泛应用发展。随着计算机与空间技术的进步与发展, GIS 将由各自分开独立的系统走向兼容与集成;由二维走向三维和四维, 由单机走向网络, 并最终走向社会和家庭。
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类需可以通过快速配置来开发。AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端 JOpenID JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor 的文件持久化组件,以及一个高吞吐量的可靠事务日志组件。 Google地图JSP标签库 利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K

8,734

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧