问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

空间数据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"
        }
      }]
    }
    
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号