GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
技术百科
月夜之吻
发布时间:2026-01-02
浏览: 次 GML是OGC制定的基于XML的地理空间数据编码标准,核心作用是统一、准确地描述地理要素的空间结构与属性信息。它将地理对象抽象为“要素”,由几何体(如点、线、面)和属性(如名称、类型)组成,通过XML标签结构化表达,并支持坐标参考系(如EPSG:4326)确保位置无歧义。1. GML依赖XML Schema(XSD)定义数据结构,保障语义一致性与可验证性;2. 可扩展行业专用模式(如地下管线Schema);3. 广泛用于系统间数据交换,尤其在WFS服务和政府共享平台中作为标准传输格式;4. 虽较GeoJSON冗长,但在表达复杂拓扑、三维、时空变化时更具优势。它是地理数据领域的“ISO合同”,强调严谨性与互操作性而非轻量化。
GML(Geography Markup Language)是开放式地理信息系统协会(OGC)制定的、基于XML的地理空间数据编码标准,核心作用是用统一、可读、可验证的方式描述地理要素的空间结构与属性信息。它不是一种绘图格式或渲染语言,而是地理数据的“语义容器”——重点在准确表达“这是什么、在哪里、有什么特征”,而不是“怎么画出来”。
用XML结构化表达地理要素
GML把现实中的地理对象(如一条道路、一座学校、一个行政区)抽象为“要素(Feature)”,每个要素由两部分组成:几何体(Geometry)和属性(Properties)。XML通过嵌套标签清晰区分这两类信息。
- 几何体用标准化的XML元素表示,比如
、 
、 gon> ,内部用或 标记坐标序列 - 属性用自定义子元素体现,例如
北京路 、主干道 ,这些字段由应用模式(Application Schema)预先定义,保证不同系统理解一致 - 所有要素都可关联坐标参考系(CRS),通过srsName属性声明,如srsName="EPSG:4326",确保位置含义不歧义
靠Schema支撑语义严谨性
GML本身是一套规范,真正让数据“可验证、可交换”的是配套的XML Schema(XSD)。这些Schema定义了哪些要素类型合法、属性是否必填、几何是否闭合等规则。
- 基础GML Schema提供通用地理构造块(点线面、坐标系、时间戳等)
- 行业或项目可扩展出专用Schema,比如“城市地下管线GML模式”,在里面定义
要素及diameter、material等专属属性 - 解析器或GIS软件加载GML时,会依据对应XSD校验结构,避免传错字段或坐标格式错误
实际数据交换中扮演“中立信封”角色
GML很少直接用于前端展示,更多出现在系统间数据流转环节,尤其在OGC标准服务中:
- Web Feature Service(WFS)请求要素时,默认返回GML格式响应,客户端按Schema解析后入库或转成其他格式(如GeoJSON)再渲染
- 政府地理信息共享平台常要求提交GML文件,因其保留完整语义与元数据,适合长期归档和跨部门复用
- 虽比GeoJSON冗长、解析稍慢,但在需表达拓扑关系、三维结构、时空变化或复杂属性约束时,GML仍是不可替代的选择
基本上就这些。它不是最轻快的格式,但胜在严谨、开放、可扩展——像地理数据世界的“ISO标准合同”,不讨巧,但管用。
# 的是
# 是一种
# 有什么
# 它是
# 出现在
# 但在
# 结构化
# 一座
# app
# 数据结构
# js
# json
# go
# 对象
# 编码
# xml
# 前端
# 数据交换
# 地下
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- MAC如何修改默认应用程序_MAC文件后缀关联设置
- 如何在 Go 开发中正确处理本地包导入与远程模块路
- 网站内页做seo排名怎么做?
- Windows怎样关闭Edge新标签页广告_Win
- Win11开始菜单打不开_修复Windows 11
- c++中如何使用虚函数实现多态_c++多态性实现原
- Win10怎样卸载TeamViewer_Win10
- c++ std::atomic如何保证原子性 c+
- 如何使用 Selenium 正确获取篮球参考网站球
- MAC怎么设置程序窗口永远最前_MAC窗口置顶插件
- 如何使用Golang defer优化性能_减少不必
- Win10任务栏天气和资讯怎么关闭 Win10禁用
- Windows10如何更改计算机工作组_Win10
- Python并发安全问题_资源竞争说明【指导】
- Win11怎么设置默认终端应用_Windows11
- php打包exe怎么传递参数_命令行参数接收方法【
- Win11怎么关闭通知中心_Windows11系统
- Windows10如何彻底关闭自动更新_Win10
- Win11怎么查看显卡显存_查询Win11显卡详细
- Windows10电脑怎么设置防火墙出站规则_Wi
- 作用域操作符会影响性能吗_php静态调用性能分析【
- c++协程和线程的区别 c++异步编程模型对比【核
- Windows执行文件被SmartScreen拦截
- Win11此电脑不在桌面上_Windows 11桌
- Windows10电脑怎么设置电源按钮_Win10
- php转exe用什么工具打包快_高效打包软件推荐【
- Win11怎么清理C盘系统日志_Win11清理系统
- Win10电脑怎么设置IP地址_Windows10
- Ajax提交表单PHP怎么接收_处理Ajax发送的
- Win11怎么设置任务栏大小_Windows11注
- Win11怎么关闭自动调节屏幕亮度_Windows
- 微信JSAPI支付回调PHP怎么接收_处理JSAP
- 如何使用Golang实现错误包装与传递_Golan
- 如何在 Go 中创建包含 map 的 slice(
- mac怎么打开终端_MAC终端Terminal使用
- windows 10应用商店区域怎么改_windo
- Win11资源管理器卡顿怎么办 Win11文件资源
- Linux怎么实现内网穿透_Linux安装Frp客
- MAC怎么用连续互通相机里的“桌上视角”_MAC在
- Windows蓝屏错误0x00000023怎么修复
- Win11怎么关闭透明效果_Windows11个性
- Win11怎么关闭定位服务_保护Win11位置隐私
- Windows10怎么查看硬件信息_Windows
- 如何解决同一段404代码在不同主机上表现不一致的问
- Win11屏幕亮度突然变暗怎么解决_自动变暗问题处
- Win11怎么更改系统语言_Win11中文语言包下
- Windows资源管理器总是卡顿或重启怎么办?(修
- Win10怎么创建桌面快捷方式 Win10为应用创
- Win10怎么关闭自动更新错误弹窗_Win10策略
- Python类装饰器使用_元编程解析【教程】


QQ客服