﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-socketref,再见！高德-随笔分类-swMap</title><link>http://www.cppblog.com/socketref/category/17291.html</link><description>gis,mouse,luolasi</description><language>zh-cn</language><lastBuildDate>Sat, 31 Aug 2013 08:50:48 GMT</lastBuildDate><pubDate>Sat, 31 Aug 2013 08:50:48 GMT</pubDate><ttl>60</ttl><item><title>移植地图绘制引擎从Qt切换到Cairo</title><link>http://www.cppblog.com/socketref/archive/2013/08/31/202891.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Sat, 31 Aug 2013 07:39:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2013/08/31/202891.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/202891.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2013/08/31/202891.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/202891.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/202891.html</trackback:ping><description><![CDATA[由于最近也是比较有时间，想着将Windows版本的地图绘制引擎移植到Linux。<br />地图Render部分采用的是Qt，所以过程非常顺利，用Eclipse+CDT重建工程，略微几个小改动便完成了移植。<br />但之后发现了Qt带来的问题了，地图绘制引擎支持并发处理多个绘制请求，不同的绘制请求将在不同的线程Thread中被执行，多线程的情况便出现了问题，提示QPixmap不能在非UI线程被构造，如果强行构造，便出现了内存数据访问违例的异常错误，进程直接coredump，这个问题困扰了一些时间；<br />之后改了改代码，将数据处理和绘制代码隔离开，线程thread中进行数据加载、分析、计算，绘制代码采用Qt的signal/slot机制完成，就是工作线程处理好数据之后通过emit signal将绘制请求发送给ui主线程的slot处理函数。这种实现方法的问题在于绘制工作都将被串行执行，性能下降。<br />几年前在移植libsvg到wince时采用过cairo( cairographices.org) ,有点使用经验，且cairo是gnome的标准图形库，性能应该不错，所以直接改为cairo。<br />cairomm是cairo的c++包装，编译还需sig++，cairo的api还是挺丰富的，字体，反走样，矩阵... 操作也是相当简单&nbsp;<br />很快移植完成，运行效果还是比较满意，现在正考虑地图引擎移植到ios设备，目前需要琢磨cairomm，sig++，pixmap之类的东西如何移植问题(或者直接采用ios的Fundation的绘图api)<br /><br /><img src ="http://www.cppblog.com/socketref/aggbug/202891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2013-08-31 15:39 <a href="http://www.cppblog.com/socketref/archive/2013/08/31/202891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Gps监控系统   sw2us.com/gps</title><link>http://www.cppblog.com/socketref/archive/2012/06/30/180822.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Fri, 29 Jun 2012 17:24:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/06/30/180822.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/180822.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/06/30/180822.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/180822.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/180822.html</trackback:ping><description><![CDATA[<div><div>全格Gps2012监控系统</div><div></div><div>我们是上海全格信息科技公司，我们的团队以Gis位置服务系统为方向，多年来积累开发了多套Gps定位系统等核心产品，且拥有所有的技术能力和版权。</div><div>目前我们正在寻找合作伙伴，我们可以提供系统平台服务且我们的强项也在于此，也可以做gps运维服务。</div><div>如果您用的系统也是同深圳那么多Gps厂家共用的一套系统的话，您可以看看我们的系统，参考一下优缺点。</div><div></div><div>&gt;我们是掌握最新Gis应用服务的技术开发团队</div><div>&gt;我们拥有非常丰富的Gis开发、应用、实施的经验和专业的精神</div><div>&gt;我们提供.灵活的可配置、扩展的系统平台，根据客户需求而定制功能，包括：界面、操作接口、报表或者整合客户的业务</div><div>&gt;我们拥有自主的地图平台，提供B/S模式，不采用google，baidu等互联网地图，不采用geoserver等开源的地图，完全我们自己开发的地图引擎，速度快，效率高，设备运行要求低、灵活可扩展</div><div>&gt;我们的监控系统采用flex技术，监控位置和报警完全实时，服务器主动推送gps信息到浏览器端，这一点是非flex技术绝不能做到的，所以设备运行状态实现零延时&nbsp;</div><div>&gt;我们的系统监控终端除了支持pc浏览器，还支持 android，iphone等移动终端访问控制，可进行手机设防、监控轨迹、报警配置等功能，可通过app store和android市场下载安装</div><div>&gt;我们的有5年的Gps监控运营开发的经验，系统设计容量达2w台终端设备，与多个公司合作OEM我们的系统和终端产品</div><div></div><div>~如果您想做Gps监控或者运营，也许您是个人或者是公司老板</div><div>~如果您需要更灵活、可控、安全、稳定的GPS监控系统</div><div>~如果您的需求规划是低成本的</div><div>~如果您需要部署一整套Gps服务平台在自己的环境中，而不是又去代理使用他人的Gps运营平台或者不想花巨资采用 mapabc，mapbar之类的系统</div><div>。。。。。</div><div></div><div>您可以考虑我们的技术方案，我们可以以最优质的服务、最先进的技术、最灵活的合作模式与您实现共赢</div><div></div><div>请访问我们的网站: <a href="http://www.sw2us.com " target="_blank">www.sw2us.com </a>&nbsp; &nbsp; &nbsp;</div><div>Gps系统访问地址: <a href="http://www.sw2us.com/gps" target="_blank">www.sw2us.com/gps</a></div><div></div><div></div><div>---------------------------------------------------------------------------------------------</div><div>上海全格信息科技有限公司</div><div>Shanghai Triangle Info Tech Co,Ltd.&nbsp;</div><div>地址: 上海市闵行区立跃路2897号1幢302室 &nbsp;邮编: 201114&nbsp;</div><div>电话: &nbsp;86-021-34680553 &nbsp; &nbsp; 传真: &nbsp;86-021-64296802 &nbsp; &nbsp; &nbsp; &nbsp; 邮件: service@sw2us.com</div><div>移动电话: &nbsp;13661913244 &nbsp; &nbsp; 网址: &nbsp;http://www.sw2us.com &nbsp; &nbsp;QQ: 2536588583@qq.com</div><div>---------------------------------------------------------------------------------------------</div><div></div></div><div id="isChromeWebToolbarDiv" style="display:none"></div> <div id="isChromeWebToolbarDiv" style="display:none"></div><img src ="http://www.cppblog.com/socketref/aggbug/180822.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-06-30 01:24 <a href="http://www.cppblog.com/socketref/archive/2012/06/30/180822.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>影像管理系统开发告一段落，舒口气</title><link>http://www.cppblog.com/socketref/archive/2012/03/27/169198.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Tue, 27 Mar 2012 11:23:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/03/27/169198.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/169198.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/03/27/169198.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/169198.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/169198.html</trackback:ping><description><![CDATA[花了近3周时间去完成DVR项目的视频影像管理系统。目标容量200T，利用廉价PC实现集群存储，由于存储的是单个的视频段文件且对于文件容灾方面没有特殊的要求，允许单点存储损坏。<br />系统部署一个stoMaster服务器做控制服务，提供影像系统的读写调度分配、系统模块监控管理、系统影像查询服务；若干个stoNodeServer作为单点存储服务器，每个节点服务器下挂载10个2T普通硬盘，单节点支持20T容量，由于采用PC架构，大大节省成本且还能保证一定IO并发能力，保证200T容量需要10台PC做支撑。<br />开发涉及技术: python + ffmpeg + flex + openscales + swMapServer + Vs2008 + Qt + postgis + psycopg2 + comtypes<br />Links: <a title="http://sw2us.com/sites/default/files/dvr.demo.v0.1.0_2012.3.27.zip" href="http://sw2us.com/sites/default/files/dvr.demo.v0.1.0_2012.3.27.zip">http://sw2us.com/sites/default/files/dvr.demo.v0.1.0_2012.3.27.zip</a><br />幸好有了python这个好帮手,不然要干死了，python对我来讲不是简单的当胶水辅助了，通信框架、UI、数据库都采用python，只有那些个点上用了高效点的c++，例如：ffmpeg解码、文件存储等等<br />演示视频:&nbsp; <div><a style="color: #ff0000;" title="http://sw2us.com/sites/default/files/flvshow/dvr.demo.html" href="http://sw2us.com/sites/default/files/flvshow/dvr.demo.html">http://sw2us.com/sites/default/files/flvshow/dvr.demo.html</a></div><br /><br /><br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/socketref/dvr/dvr.1.png" height="446" width="630" /><br /><br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/socketref/dvr.4.png" height="296" width="625" /><br /><br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/socketref/dvr/dvr.2.png" height="302" width="633" /><br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/socketref/dvr/dvr.3.png" height="302" width="625" /><br /><br />系统运行demo: <br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/socketref/dvr/demo.1.png" height="903" width="1150" /><br /><br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/socketref/dvr/demo.2.png" height="543" width="774" /><br /><br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/socketref/dvr/demo.3.png" height="523" width="649" /><br /><br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/socketref/dvr/demo.4.png" height="673" width="978" /><img src ="http://www.cppblog.com/socketref/aggbug/169198.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-03-27 19:23 <a href="http://www.cppblog.com/socketref/archive/2012/03/27/169198.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>swMap的Tile缓冲实现</title><link>http://www.cppblog.com/socketref/archive/2011/07/11/150711.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Mon, 11 Jul 2011 14:34:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2011/07/11/150711.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/150711.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2011/07/11/150711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/150711.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/150711.html</trackback:ping><description><![CDATA[<div> 学习过MapGuid,MapServer,Qgis等多种开源地图处理服务软件，开发了遵循WMS标准的地图服务，包括wms接入，地图渲染服务。<br /> 近1年的时间跑的地图展示都是wms服务器实时请求TileServer进行绘制，Tileserver进程被部署在一台高端的服务器上，同时启动了8个服务进程，访问忙碌的时候机器有点吃不消，就看到cpu那根线飚的很高。<br /> geoserver这个用java做的wms服务器，性能不敢恭维，玩geoserver的时候接触了tilecahce这个开源软件，目前跑啥版本就不清楚了，之前将其研究了个明白，知道自己需要的是什么，所以一切还是得自己写。<br /> 对我来讲tilecache不实用的原因有多个: <br /> 1.支持过多的cahce 存储方式，什么google的数据库，oracle的也有，虽然代码框架的好，但很多东西都不管用，所以代码维护不够灵活<br /> 2.tilecache通过apache提供web的wms服务，然后tilecahe里再请求后端的geoserver服务，产生的cache根据他定 义的一个网格依次按x,y,z的索引存储在文件系统里面，并将图形进行编码分类。这种实现并没有问题，但要知道这些cache出来的图像文件是那么的多且 都零碎，有些图片还够不上一个文件系统基本的一个存储页大小，所以会大量浪费空间；由于文件零碎且多，移动这些文件也是个相当大的问题，一次为了将这些 cahce tile文件从A机器拷贝到B机器尽然花费了1天的时间。<br /> <br /> tilecache有这些不如我意的地方，所以之前自己也考虑再写一个tilecache的 backend，将渲染出来的东西直接存储进pgsql数据库，那以后只要导出数据库的tablespace就可以了，嗯！的确可行，也跑了一段时间<br /> 最后还是决定放弃tilecahce了，毕竟wms自己已经实现了，要再做个backend也是很简单，做完直接整合进wms服务器。<br /> 我考虑采用sqlite来存储这些瓦片图形，由于sqlite处理多线程时天性有点问题，多线程不能共享同一个连接(connection),所以实现的时候在每个线程创建了新的连接，开销是有一些的，那比之前实时请求TileServer要快的多了。<br /> 现在wms跑的很开心了，cpu也不忙了，就是累死了硬盘了<br /> 一台机器上渲染的地图瓦片数据单独存储在一个文件里面，要部署到另外一台机器也很方便了，只需要拷贝一下就可以了<br /> 接着看看将这个sqlite换成pgsql，看看性能哪个更强一点<br /> python代码实现: <br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;getBitmapTile3(self,renderTile,mapid,res,xy,size):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span><span style="color: #000000; ">&nbsp;self.enable:<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;None&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">表示需要实时请求地图数据</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tile&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;None<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbconn&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sqlite3.connect(self.dbname)<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">dbconn.text_factory&nbsp;=&nbsp;str</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;dbconn.cursor()<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cr.execute(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">select&nbsp;image&nbsp;from&nbsp;tiles&nbsp;where&nbsp;res=?&nbsp;and&nbsp;x=?&nbsp;and&nbsp;y=?</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,(res,xy[0],xy[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]))<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cr.fetchone()<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span><span style="color: #000000; ">&nbsp;r:<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tile&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;renderTile(mapid,res,xy,size)<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;tile&nbsp;</span><span style="color: #0000FF; ">and</span><span style="color: #000000; ">&nbsp;tile.pixmap:<br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sqlite3.Binary(tile.pixmap)<br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">*</span><span style="color: #800000; ">'</span><span style="color: #000000; ">*</span><span style="color: #000000; ">20</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cr.execute(u</span><span style="color: #800000; ">'</span><span style="color: #800000; ">insert&nbsp;into&nbsp;tiles&nbsp;(res,x,y,z,image)&nbsp;values(?,?,?,?,?)</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,(res,xy[0],xy[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">],0,b))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tile&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;r[0]<br /></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.cacheshooted</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">shooted&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,self.cacheshooted<br /></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">except</span><span style="color: #000000; ">:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;traceback.print_exc()<br /></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tile&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;None<br /></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbconn.commit()<br /></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;tile<br /></span><span style="color: #008080; ">27</span>&nbsp;</div> <br /> 记得空的时候在flex端写个自动跑地图的程序，不能让机器闲着，没事的时候把全国地图的瓦片自动产生一下，免得在访问地图系统的时候再去产生瓦片！<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> </div><img src ="http://www.cppblog.com/socketref/aggbug/150711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2011-07-11 22:34 <a href="http://www.cppblog.com/socketref/archive/2011/07/11/150711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>整理之前的webgis demo，提供下载</title><link>http://www.cppblog.com/socketref/archive/2011/05/26/147171.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 26 May 2011 02:56:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2011/05/26/147171.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/147171.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2011/05/26/147171.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/147171.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/147171.html</trackback:ping><description><![CDATA[webgis地图访问地址 ：　<a href="http://sw2us.com:8520/medias/flex/newgis.html">http://sw2us.com:8520/medias/flex/newgis.html</a><a title="http://sw2us.com:8080/" href="http://sw2us.com:8080/"></a><div>下载地址：　<a title="http://sw2us.com:9090/sw2us.webgis.demo.2011.5.26.7z" href="http://sw2us.com:9090/sw2us.webgis.demo.2011.5.26.7z">http://sw2us.com:9090/sw2us.webgis.demo.2011.5.26.7z</a><br /><br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/socketref/sw2us.webgis.demo.png" height="420" width="892" /><br /><div>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－</div>sw2us.webgis 在99年就开始有个做地图引擎的想法，由于忙于公司其他开发项目的事情，一直断断续续进行<br />在5173的时候开始用geoserver来架构wms服务器，发现配置部署性能都差强人意，所以想着自己做个wms服务<br />10年的时候也写了个版本，后来用tilecache进行tile 绘制，中国地图1000的比例两台机器绘制了1个月<br />下半年生病了，到11月份回unistrong上班，工作内容就是写驱动，空闲之余继续写地图渲染代码，以前用wx做的<br />代码全部用qt写了一遍，优化了一些速度。地图换了两版本，08年的全国图和11年的上海图，用python脚本进行预处理<br />切割地图进行网格存储。以前的同事多年前就告诉我他们改进4叉树的存储方式来提高访问数据减少数据加载，我也<br />没好好琢磨过，主要是没有时间和精力，只好做这种傻瓜式的简单网格切分和加载。<br /><br />demo只是简单实现了地图加载和现实，然后用openlayers,extjs,geoext,django做了个框架页面，里面放了个不跑的汽车图标<br /><br />这个东西是10年12月完成的，已经准备放弃这个架构的设想,准备采用flex+openscale+django来重做webgis应用，<br />当然那还是需要花费很多时间和精力<br /><br />zhangbin <br />2011.1.20<br /><br />msn: socketref@hotmail.com<br />qq: 24509826<br /><br />==========================================================================================<br />注意：　sw2us.webgis.demo目录必须存放在c:\根目录下,不能更改目录名<br /><br />安装<br />=============<br />1.配置数据库<br />&nbsp;&nbsp; &nbsp;安装pgsql, postgresql-8.3.5-2-windows.exe，数据库端口保持为5432 ，设置postgres用户，密码为111111<br />&nbsp;&nbsp; &nbsp;安装空间数据库扩展 postgis-pg83-setup-1.5.2-1.exe<br />&nbsp;&nbsp; &nbsp;创建 数据库名 newgis,导入数据库文件 newgis.db.backup <br /><br />2. webserver配置 <br />&nbsp;&nbsp; &nbsp;运行C:\sw2us.webgis.demo\apache2.2.pack\http-install.bat&nbsp; 安装apache服务，侦听 9090端口 <br />&nbsp;&nbsp; &nbsp;C:\sw2us.webgis.demo\apache2.2.pack\http-install.bat &nbsp;&nbsp; &nbsp;启动apache服务<br />&nbsp;&nbsp; &nbsp;<br />3.安装微软雅黑字体<br />&nbsp;&nbsp; &nbsp;bin/vistaFont_chs.exe ,安装之后修改系统默认字体为微软雅黑字体<br /><br />4. 安装vc运行环境 bin\vcredist_x86.exe<br /><br />运行: <br />===============<br />&nbsp;&nbsp; &nbsp;start-gis.bat &nbsp;&nbsp; &nbsp;运行django后台服务<br />&nbsp;&nbsp; &nbsp;wms_start.bat &nbsp;&nbsp; &nbsp;运行wms服务器<br />&nbsp;&nbsp; &nbsp;tileserver-rpcservice-1.bat/tileserver-rpcservice-2.bat 为后台地图渲染服务，目前配置5001,5002端口<br />&nbsp;&nbsp; &nbsp;浏览器录入 http://192.168.14.3:8080/ 即可看到地图界面 <br />&nbsp;&nbsp; &nbsp;<br />系统端口说明: <br />===============<br />&nbsp;&nbsp; &nbsp;9090 &nbsp;&nbsp;&nbsp; &nbsp;apache 服务端口 <br />&nbsp;&nbsp; &nbsp;8080&nbsp;&nbsp; &nbsp;django 服务端口<br />&nbsp;&nbsp; &nbsp;8000&nbsp;&nbsp; &nbsp;wms 服务端口<br />&nbsp;&nbsp; &nbsp;5001,5002 地图渲染服务端口<br /><br />&nbsp;&nbsp; &nbsp;<br />以上端口都被写入了相关服务的配置文件，请确保这些端口没有被占用 <br /><br />--&nbsp;&nbsp; &nbsp;修改apache端口 C:\sw2us.webgis.demo\apache2.2.pack\Apache2.2\conf\httpd.conf ;<br />&nbsp;&nbsp; &nbsp;修改之后必须重新启动apache服务(http-shutdown.bat,http-start.bat)<br />&nbsp;&nbsp; &nbsp;修改apache端口之后必须修改对应django的配置 C:\sw2us.webgis.demo\newgis\gis.py(第14行 JSLIB_PATH的webserver指向)<br />--&nbsp;&nbsp; &nbsp;django服务端口可以任意修改 start-gis.bat<br />--&nbsp;&nbsp; &nbsp;wms服务端口修改 wms_start.bat ,修改之后必须同步C:\sw2us.webgis.demo\newgis\medias\js\gis\gismap.js(第19行)的wms服务器指向<br />--&nbsp;&nbsp; &nbsp;地图渲染服务可以根据负荷的情况启动多个服务进程(复制tileserver-rpcservice-1.bat，修改其端口号，比如 5003),在修改或增加渲染<br />&nbsp;&nbsp; &nbsp;进程之后必须修改wms服务的配置C:\sw2us.webgis.demo\swmap.demo\GisServer\tileservers.txt<br />&nbsp;&nbsp; &nbsp;<br />demo系统默认都是采用localhost做服务接口，如果要提供网络支持或者分布这些服务进程来提高性能，则需要修改这些不同的端口和ip地址<br /><br />&nbsp;&nbsp; &nbsp;<br />系统描述：<br />=============<br />&nbsp;浏览器firefox 直接访问django端口，django的url.py分派请求到gis.py,gis.py加载pages/mainwindow.html<br />&nbsp;mainwindow.html已经是个openlayers+ext的框架界面了，其陆需加载 openlayers,ext等的js脚本，注意：这些js<br />&nbsp;脚本并不存在django的目录下，而是存放在apache的web-root目录下，所以必须要修改gis.py和mapgis.js里面的<br />&nbsp;主机指向信息。<br />&nbsp;当mainwindow.html加载之后，工作就交给了openlayers，openlayers将访问wms服务器(gismap.js 19行),此刻wms服务器<br />&nbsp;提供tile数据给浏览器。<br />&nbsp;地图渲染服务必须在wms服务之前启动，wms通过tileserver.txt的配置 采用ice 与渲染服务进程通讯并获得图块并返回给<br />&nbsp;浏览器。<br />&nbsp;渲染服务器、wms服务器、apache和django服务都可以被分隔存储在不同的主机上<br />&nbsp;<br />&nbsp;好了，demo可以在本机跑起来了，但必须是以 http://locahost:8080方式，如果想以网络方式访问则修改wms服务端口,gis.py,gismap.js及相关.bat配置<br />&nbsp;<br />相关问题 <br />=============<br />&nbsp;如果将这些服务主机都配置成localhost，访问速度大大降低 ， 应配置成独立的ip地址<br />&nbsp;apache已经配置了js压缩输出&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp;</div><img src ="http://www.cppblog.com/socketref/aggbug/147171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2011-05-26 10:56 <a href="http://www.cppblog.com/socketref/archive/2011/05/26/147171.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>