空间数据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" } }] }
热门推荐
房产过户流程和手续费详解:以上海、咸阳为例
让你的努力更有意义,设定相关目标
产品软件与应用软件:功能、用途及开发差异解析
如何预防狗狗关节炎
中级注安课本内容繁杂怎么梳理?关键知识点如何精准提炼?
中国哪里的糖水最好吃?
传记书籍排行榜前十名:梵高传上榜,每一本都不容错过
胎儿心脏彩超挂什么科
如何帮助学生学习方法
胆囊息肉 应该等待还是急于治疗
如何选择适合养老的地方?这些地方有哪些优势和不足?
一个人不吃不喝能活多久
动物医学和动物科学有什么区别?想当兽医选哪个?
首次购房需要开具无房证明吗?了解一下!
广西壮族文化的起源与发展脉络
投资与投机的区别
家庭成员信息表填写样表制作指南
交感神经失调引起的多汗症
“三天不吃酸,走路打蹿蹿”———来自贵州酸汤火锅的魅力
冬季菜市场卖什么东西最好销?十类热销商品全解析
抖音坏了我成替身了是什么梗,解释‘我成了备胎’的网络用语含义
“坏了我成替身了”:从电影台词到网络流行语
中国古建筑结构图解(上)
如何建立芯片公司团队
从“环高铁”到十字枢纽、所有区县通动车,泰州将拥有5个高铁站
EI期刊OA好还是非OA好?
桃树适合广东种植
被网警警告后怎么办:合法应对策略与风险规避指南
黄巢的诗:乱世中的诗意与反叛
黄巢的《不第后赋菊》:一首诗背后的愤怒与雄心