posts - 41,  comments - 90,  trackbacks - 0
          <2010年11月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          常用鏈接

          留言簿(29)

          隨筆檔案

          使用postgis導入shapefile的步驟

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          連接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 天狼 閱讀(2804) 評論(1)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 玉屏| 驻马店市| 土默特左旗| 大埔区| 宁陕县| 建瓯市| 德江县| 逊克县| 丁青县| 县级市| 铁岭市| 类乌齐县| 镇江市| 惠安县| 焦作市| 南昌市| 广丰县| 康马县| 焉耆| 阜康市| 手机| 宕昌县| 万州区| 西昌市| 深水埗区| 武强县| 叶城县| 岗巴县| 山东省| 陵水| 浦县| 磐石市| 双江| 宁明县| 枣强县| 上栗县| 宝兴县| 米泉市| 平远县| 织金县| 依安县|