前面的测试中我们使用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使用笔记
28.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号 答:Select ID FROM table1 Where ...
技术类: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发布地图服务 是我做的比较详细的笔记了
12. 一个简单的点对点路径分析(这个路径分析是使用mapinfo服务器,得付费) 8 13. 把选择的结果填充到datagrid中 9 14. 设置导出图片的格式 9 15. Feature相关程序 10 1. 创建一个feature并加载到地图中 10 2. 插入...
2、802.1X是基于端口的认证策略(这里的端口可以是一个实实在在的物理端口也可以是一个就像VLAN一样的逻辑端口,对于无线局域网来说个“端口”就是一条信道) 3、802.1X的认证的最终目的就是确定一个端口是否可用。...
MapServer 7.2 中文文档 OGC 标准规范 OpenGIS 1.0 中文文档 pycsw 2.3 中文文档 Pyproj 2.1 中文文档 QGIS 中文文档 QGIS教程:入门与进阶 Shapely 1.6 中文文档 地理信息系统基础原理 犹他州立大学 Python GDAL...
笔记: 这可以作为一个快速简单的瓦片生成器,但它最初只是为一些快速原型设计而构建的。 如果您需要一个强大的解决方案,我建议您查看以下内容: 和/或 。 你会在那里找到你需要的东西。 获取、存储和生成用于...
个人学习golang笔记,从各种教程中总结而来,作为入门参考。目录如下 目录 1. 入门 1 1.1. Hello world 1 1.2. 命令行参数 2 2. 程序结构 3 2.1. 类型 4 2.1.1. 命名类型(named type)与未命名类型(unamed ...
klm_practice,knowledge_map是版本一种的前端js,klm是版本二的后端js。技术:sql server,hibernate,jquery UI,jsPlumb;nodejs,mongodb。功能:新建一个结构图(dialog),从工具框中拖出一个节点(drag,drop...
【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麒麟版本...
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.定义...
徒步游览地图 在映射所有参与的公司 在检查。 发展 npm install安装依赖项 node index.js生成sg-companies.json [http-server](https://github.com/indexzero/http-server...笔记 一些坐标可能是错误的 可能需要标记簇
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...
如果您想使用地理位置笔记如果在heroku上运行,请在server / app.js,client / js / index.js和client / js / weather.js中注释port_no。 您需要三把钥匙来运行代码 Google Maps JS API key in weather.hbs script ...