空间数据WKT、WKB、GeoJSON的区分和转换
创作时间:
作者:
@小白创作中心
空间数据WKT、WKB、GeoJSON的区分和转换
引用
CSDN
1.
https://m.blog.csdn.net/haobindayi/article/details/143161820
空间数据WKT、WKB、GeoJSON的区分和转换
在项目开发中,经常需要将空间信息存储到数据库,并对不同格式的空间数据进行转换。本文将详细介绍WKT、WKB、GeoJSON的数据格式、相互转换以及在项目中的常用方法。
1. WKT、WKB、GeoJSON简介
1.1 名词解释
WKT(Well-Known Text):由开放地理空间联盟(OGC)定义的标准格式,主要用于在GIS系统之间交换地理空间数据。WKT是文本表示形式,便于阅读和编辑。
WKB(Well-Known Binary):也是由OGC定义的标准格式,是WKT的二进制表示形式。WKB更适合计算机处理和数据存储,尤其是在对存储空间和传输效率有较高要求的场景中。
GeoJSON:由互联网工程任务组(IETF)定义的基于JSON的地理空间数据交换格式。GeoJSON特别适合Web应用程序使用,尤其是与JavaScript相关的技术栈兼容性更好。
特征 | WKT | WKB | GeoJSON |
---|---|---|---|
格式类型 | 文本(字符串) | 二进制 | 文本(JSON结构) |
可读性 | 人类可读 | 机器友好,人类难以解读 | 人类可读,特别是对熟悉JSON的人 |
体积大小 | 相对较大 | 相对较小 | 取决于数据,通常比WKT大,但具有良好的压缩机制 |
使用场景 | 数据交换、数据库存储(便于阅读和编辑) | 数据交换、数据库存储(空间效率高) | Web应用程序、APIs、数据交换 |
标准 | OGC定义 | OGC定义 | IETF定义 |
1.2 数据基本格式
格式类型 | 示例 |
---|---|
WKT | POINT(30 10) |
WKB | 通常不直接显示,以二进制存储,但十六进制表示可能是 01010000000000000000003F400000000000002440 |
GeoJSON | { “type”: “Point”, “coordinates”: [30, 10] } |
2. WKT与GeoJSON的详细对比
2.1 点(Point)和多点(MultiPoint)
2.1.1 WKT表示
- 点(Point):
POINT (30 10)
- 多点(MultiPoint):
MULTIPOINT ((10 40), (40 30), (20 20), (30 10))
2.1.2 GeoJSON表示
点(Point)数据格式:
{ "type": "Point", "coordinates": [30, 10] }
点(Point)数据样例:
{ "type": "FeatureCollection", "features": [{ "type": "Feature", "properties": {}, "geometry": { "coordinates": [116.39689300815166, 39.973524821953276], "type": "Point" } }] }
多点(MultiPoint)数据格式:
{ "type": "MultiPoint", "coordinates": [[10, 40], [40, 30], [20, 20], [30, 10]] }
多点(MultiPoint)数据样例:
{ "type": "FeatureCollection", "features": [{ "type": "Feature", "properties": {}, "geometry": { "coordinates": [ [116.39689300815166, 39.973524821953276], [116.42205242178449, 39.96942242229639] ], "type": "MultiPoint" } }] }
多点(MultiPoint)效果:
2.2 线(LineString)和多线(MultiLineString)
2.2.1 WKT表示
- 线(LineString):
LINESTRING (30 10, 10 30, 40 40)
- 多线(MultiLineString):
MULTILINESTRING ((10 10, 20 20), (15 15, 30 15))
2.2.2 GeoJSON表示
线(LineString)数据格式:
{ "type": "LineString", "coordinates": [[30, 10], [10, 30], [40, 40]] }
线(LineString)数据样例:
{ "type": "FeatureCollection", "features": [{ "type": "Feature", "properties": {}, "geometry": { "coordinates": [ [116.359965980, 39.973524821953276], [116.42205242178449, 39.96942242229639] ], "type": "LineString" } }] }
热门推荐
草莓专用水溶肥要怎么使用好?
呀诺达海南热带雨林深度游全攻略:行程规划、必玩项目与旅游贴士
健康是生产力,如何有效组织企业员工的常规体检
眼底疾病有哪些?常见的眼底疾病具体包括哪些类型?
一到冬季就腹泻拉肚子,多半是阳气不足,3个方法能“搞定”腹泻
每天好几次肚子疼想上厕所,别以为只是腹泻!尽量少吃6种食物,做好4件事
如何在家制备醋酸钠?
白酒怎么区分粮食酒和勾兑酒,如何辨别粮食酒与勾兑酒?
红参煲汤的多种做法与养生价值分享
PCB电路板设计中信号完整性的保障策略
汽车能更换车标吗?奔驰怀挡使用指南
线缆制造厂如何通过多种工艺防止铜导体氧化
7大要点分辨减肥产品真假
庚金缺土怎么补?适合在哪个城市发展?
长期闻84消毒液对人体有害吗
腰部扭伤的科学恢复方法
从他人反馈完善自我评价的要点
有银行开户排到春节后,利率却下调,美元存款什么情况
2025上海英语高考改革:听力和口语增加25分,官方回应来了!
原神刑天角色攻略:基础属性、技能详解与阵容搭配建议
十种中药可有效治疗失眠
不用在路边蹲活儿了,上海这个零工市场线上、线下都能找工作
牙线正确使用方法指南大汇总
兵马大元帅:古代官职在现代的对应解析
FPS是什么类型的游戏?FPS游戏类型介绍及特点
疯狂的芯片股,距离真正的国产化替代还有多远?
无缘无故脚筋疼是怎么回事
总是喝酒的年轻人,怎么少伤肝?(偶尔喝酒也算)
居家血糖监测,如何选血糖仪,看这一篇就够了
A股大跌原因:影响因素分析