<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
    連接Oracle Spatial

    前面的測試中我們使用shape文件作為地圖數據源,下面我們將從Oracle Spatial空間數據庫讀取地理數據。

    mapserver提供兩種方式連接oracle空間數據庫,native oracle spatial和ogr。安裝包提供了支持native oracle spatial的二進制文件,ogr方式需要自行編譯源代碼。借用以往項目的Oracle 10.2.0.3數據庫,MapServer采用ms4w_2.3.1已編譯包,地圖服務器安裝Oracle10.2客戶端,進行本地網絡配置,測試連接正常。

    關閉Apache MS4W Web Server服務,進入\ms4w\Apache\cgi-bin\ignored-libmap\oracle11g目錄,將libmap.dll復制粘貼到\ms4w\Apache\cgi-bin目錄,替換原有文件,啟動Apache MS4W Web Server服務。

    新建一個Mapfile文件,LAYER部分如下
    LAYER
        NAME "road"
        TYPE LINE
        CONNECTION "geouser/123456@geodb" #數據庫連接字符串
        CONNECTIONTYPE oraclespatial      #連接類型為oracle spatial
        DATA "GEOLOC FROM NAV_ROAD1 USING SRID 4326"  #此處GEOLOC為GEOMETRY字段名,NAV_ROAD1為表名
        PROJECTION
           "init=epsg:4326" #必須指定SRS編碼
        END
        DUMP TRUE
        CLASS
            STYLE
                COLOR 0 128 128
            END
        END
    END

    DATA標簽使用如下格式
    "[geom_column]
    FROM
    [table]| [(SELECT [...]
    FROM [table]|[Spatial Operator]
    [WHERE condition] )]
    [USING [UNIQUE column]| [SRID #srid]| [FUNCTION]| [VERSION #version]
    ]"
    注意:不要在FROM之前加入屬性字段名,屬性字段可添加在FROM后的子查詢中,如下所示



    GEOLOC FROM (SELECT MI_PRINX AS OID, NAME AS ONAME, COLOR AS COLOR, GEOLOC AS GEOLOC FROM NAV_ROAD1) USING SRID 4326



    LABEL或STYLE用到的屬性字段必須包含在SELECT子查詢中。







    修改openlayers客戶端代碼



    var ms_layer = new OpenLayers.Layer.WMS(



                    "Test Map",
                    "/cgi-bin/mapserv.exe",
                    {   
                        layers: 'road',
                        map: 'I:/cn_data/c2.map',
                        format: 'png'
                    },
                    {
                        reproject: false,
                        'numZoomLevels': 20,
                        gutter: 15,
                        buffer: 0
                    }
                );

    打開瀏覽器,查看效果。

    為圖層添加標注(Label)


    在地圖上標注文字,必然涉及到字體,MapServer采用與操作系統無關的設計,不能自動獲知當前操作系統下安裝了哪些字體,必須手工創建字體集FONTSET文件。
    該文件的格式非常簡單,每行配置一個字體,左邊是字體名(可自由命名),右邊是字體文件的路徑(請使用絕對路徑),如下所示:
    arial   C:\WINDOWS\Fonts\arial.ttf
    sans    C:\WINDOWS\Fonts\SIMSUN.TTC
    將以上內容保存為文本文件,文件名和擴展名不限,例如保存為fonts.txt

    在Mapfile的Map標簽下添加一行
    FONTSET fonts.txt #指明字體集文件,可以包含路徑

    在Mapfile的Layer標簽中添加一行
    LABELITEM "NAME"  #指明標注所用的字段名

    在Layer下的CLASS標簽中添加以下內容
    LABEL
        COLOR  0 0 0
        OUTLINECOLOR 255 255 255
        FONT "sans"  #此處sans對應宋體SIMSUN.TTC
        TYPE truetype
        SIZE 6
        POSITION AUTO
        PARTIALS FALSE
        ENCODING GBK #此處為文字編碼,如果不設置該值,中文將不能正確顯示。對于中文Windows系統,操作系統的默認編碼為GBK。
    END

    注意:ms4w_3.0beta11屬于開發版本,支持shape文件數據源配置label標簽,不支持oracle spatial數據源配置label標簽。
    為了讀取oracle空間表中的屬性生成標簽,我們換用ms4w_2.3.1正式版,系統工作正常。

    使用動態樣式(STYLE)

    實際應用中對地圖的渲染有很多要求,MapServer支持動態設置STYLE,修改Mapfile文件LAYER的STYLE,例如:
    STYLE
        COLOR [COLOR]
    END
    每條道路的顏色由道路表的屬性字段COLOR決定,與之類似,可以從數據庫取值填充SYMBOL,SIZE,ANGLE等標簽。
    提示:MapServer的顏色碼可以使用[r] [g] [b]十進制格式,也可以使用Web開發中常用的RRGGBB十六進制格式,例如:#FF0000


    posted on 2010-11-26 12:16 天狼 閱讀(2803) 評論(1)  編輯  收藏

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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 中文字幕在线亚洲精品| 亚洲伊人久久大香线蕉啊| 特级无码毛片免费视频尤物 | 国产成人精品一区二区三区免费| 亚洲精品国产精品乱码视色| 亚洲无砖砖区免费| WWW亚洲色大成网络.COM | 亚洲成在人线av| 午夜两性色视频免费网站| 精品无码一级毛片免费视频观看| 亚洲欧洲国产成人精品| 亚洲精品线路一在线观看| 最近免费中文字幕大全免费| 日韩亚洲综合精品国产| 色拍自拍亚洲综合图区| 亚洲Av无码乱码在线观看性色| 99国产精品免费视频观看| 精品成人一区二区三区免费视频 | 亚洲国产精品综合久久网络| 中文字幕亚洲免费无线观看日本| 污污视频免费观看网站| 亚洲天堂福利视频| 亚洲夜夜欢A∨一区二区三区| 成年男女免费视频网站| 久久久99精品免费观看| 免费精品国产自产拍在线观看| 亚洲国产韩国一区二区| 亚洲午夜无码久久久久| 日本视频免费在线| 亚洲一区二区三区免费在线观看| 国产精品玖玖美女张开腿让男人桶爽免费看 | 香蕉视频免费在线播放| 亚洲国产中文在线视频| 亚洲av无码精品网站| 免费v片视频在线观看视频| 成人免费毛片内射美女-百度| 久久国产免费一区| 成人免费无码H在线观看不卡| 深夜福利在线免费观看| 亚洲精品国产第一综合99久久| 亚洲欧洲日韩综合|