<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 41,  comments - 90,  trackbacks - 0
    發布WFS矢量地圖

    OGC WFS協議定義了地圖客戶端查詢和傳送矢量數據的方法,在查詢、分析、動態繪圖等實際應用中非常有用。MapServer支持OGC WFS 1.0.0和1.1.0規范。

    重新定義一個Mapfile文件,命名為ext2.map,內容如下:
    MAP

      NAME "vector"
        SHAPEPATH "I://cn_data"
        
        FONTSET fonts.txt
        IMAGECOLOR 255 255 255
        IMAGETYPE agg

        SIZE 800 600
        STATUS ON
        UNITS DD
        EXTENT 115.275 39.2204 117.475 40.9462
       
        OUTPUTFORMAT
            NAME agg
            DRIVER AGG/PNG
            IMAGEMODE RGB
            FORMATOPTION "INTERLACE=false"
            MIMETYPE "image/png"
        END

        PROJECTION
            "init=epsg:4326"
        END

        WEB
            METADATA
                "wms_title"                       "road wms"
                "wfs_title"                       "road wfs"
                "wms_onlineresource"              "http://192.98.151.23/cgi-bin/mapserv.exe?"  #mapserver服務器的url
                "wms_srs"                         "EPSG:4326"   #地圖坐標系        
            END
        END

        LAYER
            NAME "road"
            METADATA
                "wms_title"                       "road"
                "wfs_title"                       "road"
                "wms_srs"                         "EPSG:4326"  #圖層坐標系
                "gml_include_items"             "all"
                "gml_featureid"                 "id" #必須指定id
            END
            STATUS ON
            DATA "roa_4m.shp"
            TYPE line
            DUMP TRUE
            CLASS
                STYLE
                    COLOR "#00FF00"
                END
            END
        END

    END

    該文件中有兩組METADATA標簽,是WFS(WMS) Server所需要的,分別是MAP的METADATA標簽和LAYER的METADATA標簽。
    前者是針對整個地圖的全局定義,后者是每個圖層的元數據定義。

    保存Mapfile文件,打開瀏覽器進行測試
    http://192.98.151.23/cgi-bin/mapserv.exe?map=I:/cn_data/ext2.map&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetCapabilities
    正常情況下,可以看到以下返回信息
    <WFS_Capabilities version="1.0.0" updateSequence="0" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-capabilities.xsd">
    <!--
     MapServer version 5.2.1 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=PDF OUTPUT=SWF OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS SUPPORTS=RGBA_PNG INPUT=JPEG INPUT=POSTGIS INPUT=ORACLESPATIAL INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE
    -->
    <Service>
    <Name>MapServer WFS</Name>
    <Title>road wfs</Title>
    <OnlineResource>
    http://192.98.151.23/cgi-bin/mapserv.exe?map=I:/cn_data/ext2.map&
    </OnlineResource>
    </Service>
    <Capability>
    <Request>
    <GetCapabilities>
    <DCPType>
    <HTTP>
    <Get onlineResource="http://192.98.151.23/cgi-bin/mapserv.exe?map=I:/cn_data/ext2.map&"/>
    </HTTP>
    </DCPType>
    <DCPType>
    <HTTP>
    <Post onlineResource="http://192.98.151.23/cgi-bin/mapserv.exe?map=I:/cn_data/ext2.map&"/>
    </HTTP>
    </DCPType>
    </GetCapabilities>
    <DescribeFeatureType>
    <SchemaDescriptionLanguage>
    <XMLSCHEMA/>
    </SchemaDescriptionLanguage>
    <DCPType>
    <HTTP>
    <Get onlineResource="http://192.98.151.23/cgi-bin/mapserv.exe?map=I:/cn_data/ext2.map&"/>
    </HTTP>
    </DCPType>
    <DCPType>
    <HTTP>
    <Post onlineResource="http://192.98.151.23/cgi-bin/mapserv.exe?map=I:/cn_data/ext2.map&"/>
    </HTTP>
    </DCPType>
    </DescribeFeatureType>
    <GetFeature>
    <ResultFormat>
    <GML2/>
    </ResultFormat>
    <DCPType>
    <HTTP>
    <Get onlineResource="http://192.98.151.23/cgi-bin/mapserv.exe?map=I:/cn_data/ext2.map&"/>
    </HTTP>
    </DCPType>
    <DCPType>
    <HTTP>
    <Post onlineResource="http://192.98.151.23/cgi-bin/mapserv.exe?map=I:/cn_data/ext2.map&"/>
    </HTTP>
    </DCPType>
    </GetFeature>
    </Request>
    </Capability>
    <FeatureTypeList>
    <Operations>
    <Query/>
    </Operations>
    <FeatureType>
    <Name>road</Name>
    <Title>road</Title>
    <SRS>EPSG:4326</SRS>
    <LatLongBoundingBox minx="80.3869" miny="18.2823" maxx="132.515" maxy="49.6272"/>
    </FeatureType>
    </FeatureTypeList>
    <ogc:Filter_Capabilities>
    <ogc:Spatial_Capabilities>
    <ogc:Spatial_Operators>
    <ogc:Equals/>
    <ogc:Disjoint/>
    <ogc:Touches/>
    <ogc:Within/>
    <ogc:Overlaps/>
    <ogc:Crosses/>
    <ogc:Intersect/>
    <ogc:Contains/>
    <ogc:DWithin/>
    <ogc:BBOX/>
    </ogc:Spatial_Operators>
    </ogc:Spatial_Capabilities>
    <ogc:Scalar_Capabilities>
    <ogc:Logical_Operators/>
    <ogc:Comparison_Operators>
    <ogc:Simple_Comparisons/>
    <ogc:Like/>
    <ogc:Between/>
    </ogc:Comparison_Operators>
    </ogc:Scalar_Capabilities>
    </ogc:Filter_Capabilities>
    </WFS_Capabilities>

    在OpenLayers中加載WFS圖層

    OpenLayers是一個功能強大的Web地圖客戶端引擎。

    接下來,我們利用OpenLayers的OpenLayers.Protocol.WFS類,顯示剛才發布的WFS圖層,代碼如下

           var protocol = OpenLayers.Protocol.WFS({
                        url: "http://192.98.151.23/cgi-bin/mapserv.exe?map=I:/cn_data/ext2.map&", //mapserver地圖服務器的url,加上mapfi了文件的路徑
                        featureType: "road", //layer的名稱
                        srsName: "EPSG:4326", //layer的坐標系
                        geometryName: "msGeometry", //geometry字段的名稱
                        featurePrefix: "ms"
                    });

    以下是全部javascript代碼:
            window.onload = function() {
                    var map = new OpenLayers.Map('mapdiv', {
                        projection: "EPSG:4326",
                        units: "degree"
                    });
                    
                    var roads = new OpenLayers.Layer.WMS("road", "http://192.98.151.23/cgi-bin/mapserv.exe?map=I:/cn_data/ext2.map&", {
                        layers: 'road',
                        transparent: 'true',
                        format: 'image/png'
                    }, {
                        isBaseLayer: false,
                        visibility: true,
                        buffer: 0
                    });
                    
                    
                    var empty = new OpenLayers.Layer("empty", {
                        isBaseLayer: true
                    });
                    
                    var select = new OpenLayers.Layer.Vector("Selection", {
                        styleMap: new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]),
                        displayInLayerSwitcher: false
                    });
                    
                    var hover = new OpenLayers.Layer.Vector("Hover", {
                        displayInLayerSwitcher: false
                    });
                    
                    map.addLayers([roads, hover, select, empty]);
                    
                    var protocol = OpenLayers.Protocol.WFS({
                        url: "http://192.98.151.23/cgi-bin/mapserv.exe?map=I:/cn_data/ext2.map&",
                        featureType: "road",
                        srsName: "EPSG:4326",
                        geometryName: "msGeometry",
                        featurePrefix: "ms"
                    });
                    
                    var control = new OpenLayers.Control.GetFeature({
                        protocol: protocol,
                        box: true,
                        hover: true,
                        multipleKey: "shiftKey",
                        toggleKey: "ctrlKey"
                    });
                    
                    control.events.register("featureselected", this, function(e){
                        select.addFeatures([e.feature]);
                    });
                    control.events.register("featureunselected", this, function(e){
                        select.removeFeatures([e.feature]);
                    });
                    control.events.register("hoverfeature", this, function(e){
                        hover.addFeatures([e.feature]);
                    });
                    
                    control.events.register("outfeature", this, function(e){
                        hover.removeFeatures([e.feature]);
                    });
                    
                    map.addControl(control);
                    control.activate();
                    
                    map.addControl(new OpenLayers.Control.LayerSwitcher());
                    map.addControl(new OpenLayers.Control.MousePosition());
                    
                    if (!map.getCenter()) {
                        map.zoomToMaxExtent();
                    }

                }

    在瀏覽器中運行html頁面,國道數據將以矢量方式傳送到客戶端,由openlayers動態繪制,鼠標移動到道路上或者選中道路,道路將實時改變顏色,在Web上實現與傳統桌面GIS應用類似的體驗效果。

    posted on 2010-12-01 15:00 天狼 閱讀(2520) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲一卡二卡三卡| 日韩成人免费在线| 九九免费观看全部免费视频| 亚洲国产成人手机在线电影bd| 久久精品国产96精品亚洲 | 国产AV无码专区亚洲AV毛网站| 亚洲国产精品人人做人人爱| 亚洲国产精品成人一区| 亚洲高清无码专区视频| 久久久久亚洲精品无码网址| 欧洲亚洲国产清在高| 久久精品国产亚洲av日韩| 99热亚洲色精品国产88| 亚洲AV综合永久无码精品天堂| 亚洲成AV人影片在线观看| 免费国产草莓视频在线观看黄| 成人免费无码H在线观看不卡| a在线观看免费视频| 大学生a级毛片免费观看| 免费又黄又硬又爽大片| 久久精品国产精品亚洲蜜月| 亚洲欧洲另类春色校园网站| 九九免费观看全部免费视频| 成人免费在线看片| 亚洲一本大道无码av天堂| 亚洲国产精品午夜电影| 青青视频免费在线| 欧美大尺寸SUV免费| 久久亚洲AV无码精品色午夜麻| 亚洲欧洲精品成人久久曰| 6080午夜一级毛片免费看 | 91在线亚洲精品专区| 黄色片网站在线免费观看| 午夜视频免费在线观看| 亚洲精品WWW久久久久久| 亚洲色偷偷综合亚洲av78| 最近最好最新2019中文字幕免费| 亚洲一级Av无码毛片久久精品| 亚洲综合精品成人| 在线看片无码永久免费视频| 亚洲欧美日韩中文字幕在线一区|