用户操作
[即时聊天] [发私信] [加为好友]
小粟ID:suen
142128次访问,排名562好友38人,关注者82
爱好技术,爱好开源,在华工学过计算机,在武测学过GIS,国家认证系统分析师,曾负责或参与中国科学院开放基金、国家基础测绘科技计划、国家自然科学基金、××市人防指挥地理信息系统、境界数据建库、地图网站等多个项目。因热心GIS技术传播而获得“CSDN地理信息专家”称号,虽然自己觉得离专家的差距还很大,但一直在努力,^-^。
suen的文章
原创 39 篇
翻译 5 篇
转载 41 篇
评论 65 篇
小粟的公告
终于完成GeoWeb开源社区(http://www.gisdev.cn)的搭建和初步测试,请大家注册用户,测试,并提出宝贵意见。
最近评论
douweibin:我也建了一个群 群号是 51824242 也做您的后备群用吧 呵呵
sparkwong3:#common22 发表于2008-08-07 15:54:58 IP: 119.40.19.*
不知道你注意到没有 百度地图其实用的是mapbar的图片引擎

对的
chenshengbj:你好!我想问一下,怎么用GDAL类库对栅格影像进行矢量化?GDAL提供矢量多边形的最小外包矩形的接口吗?我的邮箱是chenshengbj@163.com,希望给我好消息。我继续这几个功能。
xbt746:呵呵,为什么不用postgresql试试
xbt746:呵呵,为什么不用postgresql试试
文章分类
收藏
    相册
    我的照片
    GIS
    .NET开源GIS翻译WiKi
    GeoWeb开源社区
    GIS空间站
    GIS论坛
    中科院地理所
    国家测绘局
    我的旧BLOG归档
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 OpenLayers项目分析[转](六):数据渲染分析收藏

    新一篇: OpenLayers项目分析[转](七):地图表现 | 旧一篇: OpenLayers项目分析[转](五):数据解析——以GML为例

    (六)数据渲染分析

      为了让更多的人看到这篇好文章,我把它转载到这里,这篇文章转载自http://www.3snews.net/html/24/10624-17492.html,原文作者如觉得不妥,可联系我删除之。

     实际上,OpenLayers的整个表现过程是这样的:通过调用获取数据,然后各种格式的解析器解析数据,在用所谓的渲染器渲染后加到图层上,最后再结合相应的控件表现出来,成为一幅我们看到的“动态”地图

      这里主要讨论OpenLayers. Renderer这个类及其子类。

      Renderer类提供了一些虚方法,以供其子类继承,像setExtentdrawFeaturedrawGeometryeraseFeatureseraseGeometry等。

      Elements继承Renderer,具体实现渲染的类又继承Renderer类。之所以这样设计,是因为不同的矢量格式数据需要共享相应的函数,在Elements这个类中封装一下。这个类的核心是drawGeometrydrawGeometryNode两个函数。其中drawGeometry调用了drawGeometryNode,创建出基本的地理对象。

        drawGeometry: function(geometry, style, featureId) {

            var className = geometry.CLASS_NAME;

            if ((className == "OpenLayers.Geometry.Collection") ||

                (className == "OpenLayers.Geometry.MultiPoint") ||

                (className == "OpenLayers.Geometry.MultiLineString") ||

                (className == "OpenLayers.Geometry.MultiPolygon")) {

                for (var i = 0; i < geometry.components.length; i++) {

                    this.drawGeometry(geometry.components[i], style, featureId);

                }

                return;

            };

            //first we create the basic node and add it to the root

            var nodeType = this.getNodeType(geometry);

            var node = this.nodeFactory(geometry.id, nodeType, geometry);

            node._featureId = featureId;

            node._geometryClass = geometry.CLASS_NAME;

            node._style = style;

            this.root.appendChild(node);

            

            //now actually draw the node, and style it

            this.drawGeometryNode(node, geometry);

        }

      渲染器的继承关系这样的:

      具体实现渲染的方法在OpenLayers. Renderer.SVGOpenLayers. Renderer.VML两个类中实现的,就是实现Elements提供的虚方法,比如drawPointdrawCircledrawLineStringdrawLinearRingdrawLinedrawPolygondrawSurface。以drawCircle为例看看具体的实现过程:

        drawCircle: function(node, geometry, radius) {

            if(!isNaN(geometry.x)&& !isNaN(geometry.y)) {

                var resolution = this.getResolution();

            

                node.style.left = (geometry.x /resolution).toFixed() - radius;

                node.style.top = (geometry.y /resolution).toFixed() - radius;

        

                var diameter = radius * 2;

                

                node.style.width = diameter;

                node.style.height = diameter;

            }

        }

    发表于 @ 2008年05月08日 13:30:47|评论(loading...)|编辑

    新一篇: OpenLayers项目分析[转](七):地图表现 | 旧一篇: OpenLayers项目分析[转](五):数据解析——以GML为例

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 小粟