`
jandroid
  • 浏览: 1894367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

MapServer使用笔记(一)

阅读更多

前面的测试中我们使用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

分享到:
评论

相关推荐

    MapServer使用笔记

    MapServer使用笔记

    net学习笔记及其他代码应用

    28.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号 答:Select ID FROM table1 Where ...

    HP_UXadminII培训笔记

    技术类:HP_UXadminII培训笔记 第一章 3 HP的几个网站: 3 第二章 4 1.OSI网络模型 4 2. MAC地址(media control addresses) 4 3. IP地址(internet protocol addresses) 5 4. 子网掩码 5 5. IP回环地址(IP回馈地址)...

    arcgis简单地图服务发布

    详细的介绍了如何使用arcgis发布地图服务 是我做的比较详细的笔记了

    mapxtreme练习笔记

    12. 一个简单的点对点路径分析(这个路径分析是使用mapinfo服务器,得付费) 8 13. 把选择的结果填充到datagrid中 9 14. 设置导出图片的格式 9 15. Feature相关程序 10 1. 创建一个feature并加载到地图中 10 2. 插入...

    CISCO交换机配置AAA、802.1X以及VACL

    2、802.1X是基于端口的认证策略(这里的端口可以是一个实实在在的物理端口也可以是一个就像VLAN一样的逻辑端口,对于无线局域网来说个“端口”就是一条信道) 3、802.1X的认证的最终目的就是确定一个端口是否可用。...

    Python GIS 中文文档和教程

    MapServer 7.2 中文文档 OGC 标准规范 OpenGIS 1.0 中文文档 pycsw 2.3 中文文档 Pyproj 2.1 中文文档 QGIS 中文文档 QGIS教程:入门与进阶 Shapely 1.6 中文文档 地理信息系统基础原理 犹他州立大学 Python GDAL...

    maptile:在节点中为传单、谷歌地图等生成地图图块

    笔记: 这可以作为一个快速简单的瓦片生成器,但它最初只是为一些快速原型设计而构建的。 如果您需要一个强大的解决方案,我建议您查看以下内容: 和/或 。 你会在那里找到你需要的东西。 获取、存储和生成用于...

    Golang2-new.docx

    个人学习golang笔记,从各种教程中总结而来,作为入门参考。目录如下 目录 1. 入门 1 1.1. Hello world 1 1.2. 命令行参数 2 2. 程序结构 3 2.1. 类型 4 2.1.1. 命名类型(named type)与未命名类型(unamed ...

    knowledgemap

    klm_practice,knowledge_map是版本一种的前端js,klm是版本二的后端js。技术:sql server,hibernate,jquery UI,jsPlumb;nodejs,mongodb。功能:新建一个结构图(dialog),从工具框中拖出一个节点(drag,drop...

    samba的编译安装20160615_1154.7z

    【Linux笔记】sambav4.1.9源码安装及基本使用说明 http://blog.sina.com.cn/s/blog_627617bf0101s4ps.html samba4.1.6源代码部署及配置 (2014-04-04 09:41:00)转载 2016/6/14 15:23 由于ubuntu14.04.4麒麟版本...

    Android开发技巧总汇(个人总结)

    1.坐标传递到google Map 2 2.获得联系人 5 3.监听短信内容 6 4.3D魔方 7 5.Android 界面刷新 16 6.Cursor 17 7.Activity透明 20 9.发送短信 20 10.发送彩信 20 11.注册一个BroadcastReceiver 21 12.定义...

    walkabout-map:在walkabout.sg中映射所有参与的公司

    徒步游览地图 在映射所有参与的公司 在检查。 发展 npm install安装依赖项 node index.js生成sg-companies.json [http-server](https://github.com/indexzero/http-server...笔记 一些坐标可能是错误的 可能需要标记簇

    Note_scalad.tar.gz

    Java_jmeter_server_polling_pressure_test Java_jstack Linux_Copy_On_Write Linux_Hydra Linux_Pip Linux_Redis_Make Linux_Shell_GetAndPost Linux_Vim Linux_XShell_File_Upload Lucene_Introduce Maven_Package...

    Weather-App:可见性字段的单位误差很小,不是km

    如果您想使用地理位置笔记如果在heroku上运行,请在server / app.js,client / js / index.js和client / js / weather.js中注释port_no。 您需要三把钥匙来运行代码 Google Maps JS API key in weather.hbs script ...

Global site tag (gtag.js) - Google Analytics