mapserver的mapfile文件怎么调式

mapserver的mapfile文件怎么调式,第1张

一、手工修改:

这种方式槛太高,首先需要了解mapfile文件的结构,需要熟读Mapfile宝典《Mapfile

Reference》,搞清楚每个参数的详细含义,一般人没有个把星期是搞不懂的。

二、其它软件输出:

目前部分开源软件支持输出MapServer格式的文件,像QGIS

,MapWinGIS等斗晌,ArcGIS也有相关的插件可以输出mapfile,但它们输出的文件往往会丢失很多信息,像符号等很容易丢失,而且容易出错,在MapServer中无法直接使用,还需要打开做进一步修改,也就是说还需要了解Mapfile的文档结构。

我一直在想为什么MapServer就没有配置工具呢?其实,关于MapServer的工程文件配置界面,已经有其他人做过相关的开发,有几个这方面的开源项目,都是BS架构开发的,个人感觉比较好的是maplab,做的比较深入,功能也相对比较丰富,但不知道什么原因,这些项目到目前为止都停止开发了,maplab最后的版本可能是maplab-<?xml:namespace

prefix = st1

/>,比较老了,已经不支持现在的MapServer5,,可能是维护起来比较困难,大家都放弃开发了。

工作中我们也有这方面的需求,开发一个mapfile生成工具,这个光荣的任务是由我来承担的,由于我以前是做组件开发的,相对来说更熟悉CS架构,并不打算用BS的方式来开发。MapServer可以生成的C#类库,本来想用它在C#中直接做用户界面,但不知道什么原因,在ASP.NET项目中用C#调用这些类库是没有问题的,但在Windows应用程序项目中便问题多多(难道是封装出来的类库只能再BS架构中用?)。时间紧迫没精力去研究太深,后来我索性用自己最擅长的技术了,管他麻不麻烦,先实现了再说。具体实现就是将MapServer的C类库重新封装成了一系列COM接口,然后再在C#中调用自己封装的接口来做界面,很快地便实现了一个小工具。有人可能会问,为什么不直接用VC做界面,没什么原因,就是我不喜欢,太麻烦,C#开发界面多方便,呵呵。

总体来说我对这个小工具还是很满意的,功能也不多,就像是一个小型的GIS软件,由地图显示、图层列表、工具条和菜单几个部分组成,可以直接打开MapServer的mapfile文件并显示,如果打开map文件出错可以显示详细的错误信息,也可以新建一个mapfile文件,直接向mapfile中添加图层,对其配置符号瞎培,设置标注,可见比例尺等。对打开的mapfile文件可以进行缩放等各种浏览 *** 作,mapfile的各种属性配置基本都可以修改并实时的体现在工具的显示界面中,修改到自己满意了之后,可以将mapfile文件输出,直接在MapServer中调用。

甚至可以加上属性查询、空间量算等功能,所有MapServer能实现的功能都可以做到这个小工具中,当然这些都是后话了,工作中不需要这些所以也就没有实现。

完成之后,发现这就是一个小型的桌面GIS系统,虽然开始开发的时候感觉这么做走了弯路,现在想想这也是一条可取之路,开源软件的更新频率很高,如果MapServer的底层库函数发生了变化,也只需要将它的C类库重新编译一次就可以继续使用了,即使MapServer扩展了功能模块,我们也只需要再增加相关的接口便可以。维护磨销唯起来相对比较简单,软件的持续更新也就有了保障。

这个问题我也出现过,灶凯是字符集问题。陆辩逗

你试下将早卖encoding "GBK18030"换为

encoding "gb2312"

encoding "UTF-8"

试下,我当时解决了这个问题哦,时间有点长,记的不是很清楚了。

import 'ol/ol.css'

import {Map, View, Feature}from 'ol'

import VectorLayerfrom "ol/layer/Vector"

import VectorSourcefrom "ol/source/Vector"

import TileLayerfrom "ol/layer/Tile"

import TileWMSfrom 'ol/source/TileWMS'

import XYZfrom "ol/source/XYZ"

import Proj, {transform}from 'ol/proj'

import *as controlfrom 'ol/control'辩高

import *as coordinatefrom 'ol/coordinate'

import {Modify, Snap}from 'ol/interaction'

import {Style, Stroke, Fill, Circleas StyleCircle}from "ol/style"

import {LineString, Polygon, MultiPolygon, Geometry, Point, LinearRing, Circle}from "ol/geom"

import {fromCircle as fromCirclePolygon, circular as circularPolygon}from 'ol/geom/Polygon'

import {Vectoras FeatureVector}from "ol/Feature"

import Tilefrom 'ol/layer/哗灶乱Tile'

import OSMfrom 'ol/source/OSM'

import {regionData}from 'element-china-area-data'

import Draw, {createBox, createRegularPolygon}from "ol/interaction/Draw"

一、加载在线地图

initMap() {

let raster =new Tile({

source:new OSM()

})

    let vector =new VectorLayer({

source:this.source,

    })

this.map =new Map({

layers: [raster, vector],

        target:'olMap',

        controls: control.defaults().extend([

new control.MousePosition({

coordinateFormat: coordinate.createStringXY(4),

                projection:'EPSG:4326',

                target:this.$refs.mousePositionTxt

})

]),

        view:new View({

projection:'EPSG:4326',

            center: [114.064839, 22.548857],

            zoom:5,

        }),

    })

    /*let circle4326 = circularPolygon([114.064839, 22.548857], 100000, 5000)

this.source.addFeature(new Feature(circle4326))*/

},

二,加载mapserver底乱档图

initMap() {

let mapfile =this.global.MAP_PATH +this.global.BASEMAP_NAME

    let url =this.global.MAPSERVER_PATH

    let wmsParam = {

map: mapfile,

        LAYERS:'ALL',

        transparent:true

    }

    let raster =new Tile({

source:new TileWMS({//切片WMS服务,多个标注

            url: url,

            params: wmsParam,

            serverType:'mapserver',    //服务器类型

            isBaseLayer:true

        })

})

    this.map =new Map({

layers: [raster],

        target:'olMap',

        controls: control.defaults().extend([

new control.MousePosition({

coordinateFormat: coordinate.createStringXY(4),

                projection:'EPSG:4326',

                target:this.$refs.mousePositionTxt

})

]),

        view:new View({

projection:'EPSG:4326',

            center: [0, 0],

            zoom:1,

            extent:[ -180, -90, 180, 90]

}),

    })

},


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12166259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存