posted @ 2009-04-18 20:57 zhiwen 阅读(98) 评论(0) 编辑
 我个人开发了一个webgis平台,不知道有没有人愿意免费试用?
从3年前断断续续开发,性能和效果还凑合,当然功能较少。

欢迎有人来试用。我的想法是,我愿意提供几个持续完全免费的全功能并有限支持的名额,要求使用者必须能挂在公网上,并配合反馈一些运行情况给我。

当然,试用版本是随便人使用的。

首先,现在是实时生成图片模式。在这个前提下,虽然功能是不多,但个人还是觉得有一些可取性,并可以针对使用者做一些定制功能。因此,我觉得还是你们如果有需要使用实时图片webgis,还是可以试用我这个的。

因为是业余所作,还没想法投入做开,公布的内容在blog上。有意向的人请到blog上留言留下联系方式,我会尽快联系的。有任何想法,请随意联系我。如果没点反馈,我是做不下去的。事实是,我已经好几月没动它了。欢迎回复。

目标:纯浏览实时绘制WebGis,高并发性能与良好视觉效果 

状态:基本功能已完成, 百MShape数据2核心系统可实现16个并发访问2s内回应。

机制:服务程序常驻内存,通过CGI程序访问服务程序。服务程序共享地图数据,为每个访问创建独立绘制对象。

平台:win32版本;linux版本可单机查看。

代码量:自己写的代码7w多行,另外引入了Freetype, AGG, cximage开源代码。

留言系统也许不是很通畅,可以发信至lwis_webgis@yahoo.cn

欢迎试用用户反馈试用感受,提出修改意见。

如:

1.配置说明是否不够详细,或者有歧义。

2.试用后觉得图层样式设置界面不够友好,可以怎么怎么修改。

3.可以增加什么什么功能,比如样式库可不可以导入某个软件支持的样式。

欢迎有人加入编写修改前端。

现在的前端是从网上剥离下来修改而得,有没有版权问题还说不清,代码也不够紧凑,欢迎有JS牛人来设计编写。若存在权益,也归编写人所有。

 

[09.07.16]补充:不再提供不受限版本,请自行下载试用Demo,若有商用合作或要求再联系我。

posted @ 2009-04-18 15:44 zhiwen 阅读(1011) 评论(25) 编辑

文件:

/Files/lwis_webgis/LwisWebgis1.0Demo.rar

/Files/lwis_webgis/map_update.rar

配置请参看第1个压缩包的"配置说明.txt"和"guide.txt"。

乐维WebGis定位:
1.乐维WebGis是个人软件作品。
2.乐维WebGis目标为跨平台(windows+linux)、高性能、良好表现效果的WebGis。
3.目前win32版本已经可以投入使用;linux版本仅可单机查看。
4.目前仅为实时生成图片模式。

乐维WebGis设计特点:
1.服务与地图数据分离,共用地图数据。
2.服务可制定独立的数据显示和样式表现。(预生成图片模式做不到或者仅可提供固定的几套)
3.“Web<->CGI<->WebGis服务器”模式,向.net说不,提供高效的Web服务性能。
4.每请求一线程,并行性能优秀。
5.可选基本绘制功能库:GDI、GDI+、AGG、Lwis,AGG和Lwis提供高性能的反走样功能。
6.美观并可定制的样式,点线面样式均可以定制。

zhiwen--lwis_webgis@yahoo.cn

附图:

 

posted @ 2009-01-09 16:41 zhiwen 阅读(246) 评论(0) 编辑

乐维webgis在封装了4个基本gdi库的基础上进行绘制操作,因此可以采用4个库的任一一种进行绘制,可以在考虑效率、效果两个因素而进行选择。

4种基础GDI库:
GDI--不需要说吧
GDI+--微软...
AGG--一个开源基础库(http://www.antigrain.com/)
Lwis--自己实现的一个wu反走样线的变体,及一个无反走样的基本填充。反走样填充试验中但已停止。线的效果更接近于GDI+,Agg在线宽不大的时候颜色偏向于水印效果而不够锐利。效率比Agg略高。

图层可设置缺省样式,在图层管理列表中可打开样式设置窗口。


共有5个Group设置:
Layer Display Limit--是在什么比例下图层可见的设置。
Mark--是标注相关的设置。
Symbol--是点符号的设置,对于线和面图层不需要用到它,设置其实不起作用。
Line--是线样式的设置,对于点图层无效,对于面图层,为面的边界线样式。
Fill--是填充样式的设置,对点图层和线图层无效。

说明:因为点线面样式均使用样式索引再加上颜色比例设置和大小设置,所以这些内容需要的存储空间不大,保证了空间的紧凑。

1.点样式

点样式为矢量样式,定义一系列的点,绘制成面或者线形成矢量图案。目前仅有基本的11种。可以根据定义很好的扩充,在进一步完善该矢量定义后我会考虑开放这个定义,使得用户可以自主扩充点样式库,甚至可以开发自己的点样式编辑工具。

2.线样式

矢量样式,兼容MapInfo 7.0的PEN2样式定义。可以采用MapInfo相应的线编辑工具进行编辑扩充样式。
3.填充样式

 栅格样式,定义为W*H的图片进行平铺,若做Scale操作则缩放该图片形成新的w*h图片进行平铺,目前为53种GDI+的Hatch样式,大小8*8,采用8位做alpha效果,但在使用gdi和gdi+的基础库时仅有mono效果。

 

在乐维webgis做网络服务时,可以针对单个客户端定义自己独特的样式。但这个操作依赖于web前端,目前web前端开发处于停止状态,我个人对于web开发也知识和经验均不足。不知是否有人愿意帮忙编写前端。

 

2个月没更新了,先填上这一篇。我个人在此写的随笔或文章更注重于展示我的作品而不是技术讨论,如果附到的版块觉得不好请版主删除或与我联系。多谢!

posted @ 2008-10-30 18:30 zhiwen 阅读(147) 评论(0) 编辑

我不知道大家对这个有没有兴趣,也不知道是不是已经有公开的信息。

以前实现样式库的时候,参照MapInfo7.0的线型实现了一个类似的线型,当时琢磨了MapInfo线型的实现方式与PEN的格式意义。

这次是重新整理。从这份说明,可以大致推测它的实现。不知道现在这样的线型是否还能满足需要,不知是否有较全面而到位的GIS样式评论。

 

文件格式:
Endian:Little-Endian
示例图:

0-3字节,4个char类型,确认字,为"PEN2"
4-5字节,ushort类型,文件长度,如示例为1178
5-6字节,ushort类型,PEN数目,此为15
7起有(PEN数目)个ushort类型,为PEN数据位置索引。
PEN数据结束-文件结束:若有,为无效数据。

PEN数据说明:
0字节,共1字节,PEN的层数。若为0,则PEN数据仅此3字节(如示例图0026H,0029H),否则紧跟着即为层数据(如002fH)。
1-2字节,未知,可以不用理会。
PEN层数据:
0字节,BYTE类型,本字节后层数据长度,如002fH为2,即该层还有2个字节数据。层最后一个字节为0,因此也可以理解是层长度为2+1=3字节。
1字节后,PEN层数据是按编码进行,长度不固定。
层数据字节编码:
0x00, 1个字节,层结束,即层最后一个字节为0,后不跟数据。
0x01, 1个字节,从当前位置按当前颜色宽度设置,实线绘制到结束,后不跟数据。
0x02, 2个字节,沿线绘制n个单位长,紧跟一个字节即为n。关于单位,缺省即为1个像素,但绘制时可修改单位,从而绘制n*2或者n*其他的长度。即单位可变。
0x03, 2个字节,沿线忽略n个单位长,紧跟一个字节即为n。
0x04, 2个字节,在当前垂线绘制,后续字节设为c,则垂线相对线的起始结束y坐标为( c&0x0F, -( (c>>4)&0x0F ) )。
0x05, 1个字节,从当前位置起循环绘制,1层仅可能有一个此标志,若无,则从0开始循环,即循环整个层定义长。

0x06, 2个字节,设置绘制线宽,后续字节即为线宽为几个单位,若为0,线绘制时采用1个单位宽,填充绘制时无边界线。
0x07, 4个字节,设置绘制线颜色,后续3个字节为RGB。
0x08, 1个字节,设置绘制线颜色为缺省颜色,可通过参数传递缺省颜色。
0x09, 1个字节,设置缺省线宽,可通过参数指定。
0x0A, 2个字节,设置绘制线宽为缺省线宽+n个单位,n即为后续值。

0x0B, 2个字节,最小绘制线宽值,后续字节即为值。
0x0C, 2个字节,最大绘制线宽值,后续字节即为值。

0x0D, 2个字节,折线"<"绘制,当前位置即为左边点,设后续字节为c,右边点相对线的坐标为( (c>>4)&0x0F, -( (c>>4)&0x0F ) )和( c&0x0F, c&0x0F)。
0x0E, 2个字节,折线">"绘制,当前位置为右边点,设后续字节为c,左边点相对线的坐标为( -((c>>4)&0x0F), (c>>4)&0x0F )和( -(c&0x0F), -(c&0x0F))。

0x0F, 1个字节,从当前位置起忽略到结束,1层仅可能有一个此标志。

0x10, 4个字节,从当前位置起绘制Polygon,PEN格式的Polygon是按对进行,一对是垂直的两点,后续字节第1个是后面还有多少对,第2个字节是该队的沿线y值大者,第3个字节是沿线y值的差。如10 02 04 01,即为还有2对点,本对点为(X, 4)和(X, 3),若第3个字节为0,则退化为1点。
0x11, 4个字节,Polygon点对,第1个是后面相对上一个0x10或者0x11沿线长度,第2个字节是该队的沿线y值大者,第3个字节是沿线y值的差。如10 02 04 01,即为沿线2个单位,本对点为(X, 4)和(X, 3)。

0x12, 3个字节,从当前位置起绘制Polyline,后续字节第1个是后面还有多少点,第2个字节是该点的沿线y值。
0x13, 3个字节,Polyline点,第1个是后面相对上一个0x12或者0x13沿线长度,第2个字节是该队的沿线y值。

0x14, 4个字节,设置填充颜色,后续3个字节为RGB。
0x15, 1个字节,设置填充颜色为缺省颜色,可通过参数传递缺省颜色。
0x16, 1个字节,设置填充颜色为透明。

0x17, 2个字节,从当前位置起绘制到保留n个单位不绘制,n为后续字节值。
0x18, 2个字节,从当前位置起忽略到保留n个单位,n为后续字节值。
0x01、0x05、0x0F、0x17、0x18只可存在一个其中一个标志。若无任一,缺省为0x05循环整个层定义长。

posted @ 2008-08-18 22:07 zhiwen 阅读(589) 评论(0) 编辑

Q:嗯,线系统看到了,浏览很快。是都在内存中,还是文件影射?

F:目前都在内存中。

 

Q:内存块是共享的吧?

F:是的,所有访问是访问共同的数据块,针对每个访问或者界面有一个独立的MapDrawing对象。所以基本上需要的物理内存就是shp文件dbf文件的大小。

 

Q:如果某一个进程要临时修改某个数值、某个显示而不影响其它进程,这样会有问题?

F:如果临时修改,针对网络应用来说,我计划是附加一份修改纪录到mapdrawing对象。

 

Q:嗯,这样得有两个绘制逻辑了

F:绘制或处理的时候查询修改纪录进行,显然不可能因为某些小的修改复制一份完整的数据。就算是大的修改也不应该完全复制。我觉得这个不是问题,比如在某个图层加一些点,或者线,我只要生成一个对象,对象包括这些添加的数据,显然很小,说明这些数据是指向那个图层的添加,绘制的时候查询到这个对象,增加绘制这些数据就可以了,而这个增加成本很小。


Q:我再找个几百兆的shp,回头试试:)

F:可以,我觉得问题不大,作为server,配个2g或者4g内存应该不是问题,特别是现在内存便宜。但是绘制或者运算是实在的,这个只能靠优化及多核来处理。优化一个是可行的genere的优化,当然可能高级一些,另外也可以考虑采用比如nvidia的cuda这样的库来扶助,自己研究指令集显然就太困难了,当然也不是不可以考虑。


Q:有一种临时修改最常用的不是添加,而是修改原有实体的显示,将来的样式指定,建议通过属性表字段来设置,和arcgis类似

F:修改也问题不大,只要修改的不是太多。指明是修改,就不绘制原数据,绘制修改后的数据就可以了。

 

Q:另外,这个基本系统还需要支持底图的功能,图片或者栅格形式

F:这个更像是对server文件服务的要求,程序只要确定位置和大小就可以了。

posted @ 2008-08-14 13:50 zhiwen 阅读(169) 评论(0) 编辑

目标:纯浏览实时绘制WebGis,高并发性能与良好视觉效果

状态:框架已完成, 百MShape数据2核心系统可实现16个并发访问2s内回应。

机制:服务程序常驻内存,通过CGI程序访问服务程序。服务程序共享地图数据,为每个访问创建独立绘制对象。

平台:目前仅为win32版本。

posted @ 2008-08-14 13:32 zhiwen 阅读(123) 评论(0) 编辑

我的WebGis终于完成了框架。从开始写这个项目的代码算起,已经一年多了,然而零零落落的写法,真正用心的时间却不算多。

最早的想法其实不是WebGis,而是一个Gis查看工具,这样的设想没有多少激情,更多是工薪职工业余苦恼之余无奈无聊的作为,所以散慢也就可以想见了。

直到今年的某一天,突然想把它定位为WebGis的服务端,需要做成一次服务一个进程吗?需要做复杂的前端吗?哈,不需要那么冗余了,作为服务器端让它一直存在/运行就好了,一个进程就让一个中间程序来充当好了,而它要起的作用就是中转,从web前端得到请求,转发请求给服务端,从服务端得到回复,包含一些输出的地图图片数据,返还给web前端。就算这个中间程序是一个从产生到运行到消亡的进程,但它是那么的简单,不用担心它的消耗了,避免了采用服务端做为独立进程服务的苦恼--繁杂的初始化和消亡,如果每次都进行,显然是无意义的损耗。而现在是共用整个地图数据,尽可能的放在内存,服务启动后初始一次,直到地图服务关闭才会结束而消亡。

 

这样说也许太乱了,我想,我需要图解,需要更多的思路整理,来更有效的走下去。

但是,这是之后的事,现在,还是上图吧。

前端(JS)<--->cgi<--->exe服务端

 

Update(2009.01.09):

乐维WebGis定位:
1.乐维WebGis是个人软件作品。
2.乐维WebGis目标为跨平台(windows+linux)、高性能、良好表现效果的WebGis。
3.目前win32版本已经可以投入使用。
4.目前仅为实时生成图片模式。

乐维WebGis设计特点:
1.服务与地图数据分离,共用地图数据。
2.服务可制定独立的数据显示和样式表现。(预生成图片模式做不到或者仅可提供固定的几套)
3.“Web<->CGI<->WebGis服务器”模式,向.net说不,提供高效的Web服务性能。
4.每请求一线程,并行性能优秀。
5.可选基本绘制功能库:GDI、GDI+、AGG、Lwis,AGG和Lwis提供高性能的反走样功能。
6.美观并可定制的样式,点线面样式均可以定制。

更多信息,请查看新随笔《发布乐维Webgis0.8 Demo》中"乐维Webgis介绍.ppt".


posted @ 2008-08-14 13:09 zhiwen 阅读(531) 评论(2) 编辑