锁定老帖子 主题:公司项目地图引擎技术解惑
精华帖 (0) :: 良好帖 (2) :: 新手帖 (2) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-08
zdyhlp 写道 你应该看看WMS和WFS规范。符合标准的东西才更有优势。
![]() |
|
返回顶楼 | |
发表时间:2009-01-08
NumberWen 写道 roger 写道 想知道lz的地图引擎是怎么实现缓冲区功能的
其实图片方面是这样,每加载一张图片都会产生一个gsmappic的对像专门保存该图片的信息 核心代码 public void loadFromFile(File f) { try { bs = new byte[(int) f.length()]; FileInputStream fs = new FileInputStream(f); fs.read(bs); fs.close(); } catch (Exception e) { e.printStackTrace(); } } 产生的gsmappic对像就给图片引擎的专门缓存池给缓存了,每次使用特定的key(图片路径)先从池里找,找到后,实例化gsmappic,然后放入file,然后通过流将信息读到bs数组里给缓存了,然后每次有就直接拿bs数组里的流信息返回,没有就按上述步骤做一遍 汗,我说的缓冲区是一个算法 比如在地图上有路或者河流,缓冲区算法就是生成他们的等距线 |
|
返回顶楼 | |
发表时间:2009-01-09
roger 写道 NumberWen 写道 roger 写道 想知道lz的地图引擎是怎么实现缓冲区功能的
其实图片方面是这样,每加载一张图片都会产生一个gsmappic的对像专门保存该图片的信息 核心代码 public void loadFromFile(File f) { try { bs = new byte[(int) f.length()]; FileInputStream fs = new FileInputStream(f); fs.read(bs); fs.close(); } catch (Exception e) { e.printStackTrace(); } } 产生的gsmappic对像就给图片引擎的专门缓存池给缓存了,每次使用特定的key(图片路径)先从池里找,找到后,实例化gsmappic,然后放入file,然后通过流将信息读到bs数组里给缓存了,然后每次有就直接拿bs数组里的流信息返回,没有就按上述步骤做一遍 汗,我说的缓冲区是一个算法 比如在地图上有路或者河流,缓冲区算法就是生成他们的等距线 鉴于LZ的认知水平,您还是别白费精力了! |
|
返回顶楼 | |
发表时间:2009-01-09
NumberWen 写道
今天中午吃饭,兴趣所至和同事讨论一下公司地图引擎方面的技术实现,挑起话题的原因是我上一次31号去天河面试,当时那个应该是技术主管吧,那位仁兄问我关于我简历上的地图引擎技术的实现问题,我就回答公司主要通过jsp,xml,javascript,ajax实现,他就怀疑了,然后那时我确实没看透撤公司地图引擎的技术实现,所以无力反驳,就是因为这个原因,我和我公司的地图引擎方面的同事就讨论关于地图引擎的技术实现 主要有以下几点: 1)地图引擎技术确实是使用servlet,jsp,xml,javascript,ajax这些核心技术实现。
2)地图引擎的地图绘制主要是通过jdbc从数据库拿到地图图片路径,这些图片的命名方式以图片所表达的某个地方的坐标来起名,然后有8种视觉大小不同的同一地方图片(方便地图视觉收缩效果表示),然后通过servlet通过获得路径,作为流写出到客户端,这样就相对保证了数据方面的安全,因为当你通过servlet写出图片流时,然后在客户端通过img标签接收,然后根据屏幕坐标和实现数据坐标进行比例,然后通过document元素坐标排版,具体的路径是根本不知道的,你只知道当前的流是那个,所以如果有人想盗数据,就只能每次下将你服务器里的图片全部取出(当你通过直接在img标签里写路径,或者返回真实的相对路径,客户端就能知道当前图片的所在目录是那个,然后一次就能读出的在这个目录里的所有图片,通过流,你只能拿到img里当前所处理的流关于这个流的数据:地图图片,因为你在img写路径,也是到硬盘里将图片数据作为流读出来的),所以根据这个安全实现方式,其他的数据读取显示都能这么做,例如地图中的房产信息可以通过xml方式或其他的方式直接写出去客户端,这样就相对保证了数据方面的安全,但是这样做,性能方面肯定会比直接写路径或者直接在页面显示数据方式差,因为以写出流方式做,处理流方面你加多了一层,将数据转换为流这部分消耗了。由此感概,安全和性能两者犹如鱼与熊掌不可兼得也。
3)通过ajax在地图拖动时,可以无刷新地绘制地图,所谓的ajax无非就是请求一条url,然后返回数据,通过html的dom结构树,javascript,css,div等方面动态就表达获得数据后,需要作为改变后的效果,但是公司的ajax有经过自己的封装,而这个封装是我们公司的架构师所搞的,我那个同事和我都不是太清楚,要化些时间再研究。
4)地图引擎性能调优方面,首先各种数据资源可以做各种的缓存池,例如地图图片有图片缓存池,房产信息的xml数据有xml数据缓存池等等,所谓的缓存无非就是单例模式的应用技巧,而池无非就是在这个模式上增加更新,释放,发放,排队等一系列逻辑操作。其他就是通过使用Apache和tomcat服务器进行静态信息和动态信息的分开处理。 总结:到这里公司的地图引擎技术已经基本讨论完毕,如果各位看倌对此有怀疑可以提出来,我可以解释或者我可以改正 可以查看我公司的宽带城市项目查看实际效果:http://newmap.fsecity.com/ 对于第二点我不同意 无论如何取不同的图片就对应不同的URL。我只要请求这个URL你就得给我返回这个图片,而不管你URL的形式是怎么样的。 不存在安全不安全了。 |
|
返回顶楼 | |
发表时间:2009-01-09
bright82 写道
NumberWen 写道
今天中午吃饭,兴趣所至和同事讨论一下公司地图引擎方面的技术实现,挑起话题的原因是我上一次31号去天河面试,当时那个应该是技术主管吧,那位仁兄问我关于我简历上的地图引擎技术的实现问题,我就回答公司主要通过jsp,xml,javascript,ajax实现,他就怀疑了,然后那时我确实没看透撤公司地图引擎的技术实现,所以无力反驳,就是因为这个原因,我和我公司的地图引擎方面的同事就讨论关于地图引擎的技术实现 主要有以下几点: 1)地图引擎技术确实是使用servlet,jsp,xml,javascript,ajax这些核心技术实现。
2)地图引擎的地图绘制主要是通过jdbc从数据库拿到地图图片路径,这些图片的命名方式以图片所表达的某个地方的坐标来起名,然后有8种视觉大小不同的同一地方图片(方便地图视觉收缩效果表示),然后通过servlet通过获得路径,作为流写出到客户端,这样就相对保证了数据方面的安全,因为当你通过servlet写出图片流时,然后在客户端通过img标签接收,然后根据屏幕坐标和实现数据坐标进行比例,然后通过document元素坐标排版,具体的路径是根本不知道的,你只知道当前的流是那个,所以如果有人想盗数据,就只能每次下将你服务器里的图片全部取出(当你通过直接在img标签里写路径,或者返回真实的相对路径,客户端就能知道当前图片的所在目录是那个,然后一次就能读出的在这个目录里的所有图片,通过流,你只能拿到img里当前所处理的流关于这个流的数据:地图图片,因为你在img写路径,也是到硬盘里将图片数据作为流读出来的),所以根据这个安全实现方式,其他的数据读取显示都能这么做,例如地图中的房产信息可以通过xml方式或其他的方式直接写出去客户端,这样就相对保证了数据方面的安全,但是这样做,性能方面肯定会比直接写路径或者直接在页面显示数据方式差,因为以写出流方式做,处理流方面你加多了一层,将数据转换为流这部分消耗了。由此感概,安全和性能两者犹如鱼与熊掌不可兼得也。
3)通过ajax在地图拖动时,可以无刷新地绘制地图,所谓的ajax无非就是请求一条url,然后返回数据,通过html的dom结构树,javascript,css,div等方面动态就表达获得数据后,需要作为改变后的效果,但是公司的ajax有经过自己的封装,而这个封装是我们公司的架构师所搞的,我那个同事和我都不是太清楚,要化些时间再研究。
4)地图引擎性能调优方面,首先各种数据资源可以做各种的缓存池,例如地图图片有图片缓存池,房产信息的xml数据有xml数据缓存池等等,所谓的缓存无非就是单例模式的应用技巧,而池无非就是在这个模式上增加更新,释放,发放,排队等一系列逻辑操作。其他就是通过使用Apache和tomcat服务器进行静态信息和动态信息的分开处理。 总结:到这里公司的地图引擎技术已经基本讨论完毕,如果各位看倌对此有怀疑可以提出来,我可以解释或者我可以改正
|
|
返回顶楼 | |
发表时间:2009-01-09
地图显示引擎,最核心的就是怎么最快最好的维护地图显示块阵列啦,怎么取数据貌似没什么好研究的,搞来搞去无非就是想隐藏图片块的真正地址,防止别人盗数据,真正有意义的还是研究根据中心点维护地图显示块阵列的算法
|
|
返回顶楼 | |
发表时间:2009-01-09
wtusmchen 写道 坦白的说,你们这个还不能称之为地图引擎。就像楼上说的,取名“基于切割图片的web地图”更合适。常见的对地图引擎的定义是arcims/mapxtreme这种基于电子地图数据实时生成地图的东西,包括你们这个东西估计也是用arc/mapinfo之类的东西循环生成静态图片的
目前为止,回复最中肯的一句. 真就地图引擎来说,也就那么几家国外的公司在做,绝大部份都是在买它们的引擎,然后自已做二次开发. |
|
返回顶楼 | |
发表时间:2009-01-09
楼主讲的内容已经是呈现层的东西了。那个技术总监恐怕不是在问这个。以前用过一阵子openmap .不过毕竟是java的,吃内存比较凶。
|
|
返回顶楼 | |
发表时间:2009-01-09
starfeng 写道 wtusmchen 写道 坦白的说,你们这个还不能称之为地图引擎。就像楼上说的,取名“基于切割图片的web地图”更合适。常见的对地图引擎的定义是arcims/mapxtreme这种基于电子地图数据实时生成地图的东西,包括你们这个东西估计也是用arc/mapinfo之类的东西循环生成静态图片的
目前为止,回复最中肯的一句. 真就地图引擎来说,也就那么几家国外的公司在做,绝大部份都是在买它们的引擎,然后自已做二次开发. 这是事实啊,不然一份引擎卖到天价。 |
|
返回顶楼 | |
发表时间:2009-01-09
开源的一堆,找个研究下不就可以了。
|
|
返回顶楼 | |