Tile38空间数据库操作命令之SET

214 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情

最近在研究tile38地理空间数据库,下面来介绍一下其中SET命令如何在tile38数据库中使用:

语法

SET key id [FIELD name value ...] [EX seconds] [NX|XX] (OBJECT geojson)|(POINT lat lon z)|(BOUNDS minlat minlon maxlat maxlon)|(HASH geohash)|(STRING value)

这个SET语法特别像redis中的hash数据结构的语法,key代表一个大的group,里面可以有很多数据对象,每一个数据对象都对应一个id,所以语法就以SET key id开头。

id后面都属于该数据对象的具体属性,比如我们可以在数据对象中携带自定义业务字段,比如高度:

SET shanghai pearlOfTheOrient FIELD height 468 POINT 121.506377 31.245105

上面的语法解析下来就是设置shanghai[上海] pearlOfTheOrient[东方明珠]的经纬度,顺便把高度也放在这个点坐标里面

我们也可以使用多个FIELD字段,把需要的多个业务字段都放在里面。这个FIELD字段可以在将来作为查询条件找出符合业务要求的数据。

可选参数

  • EX表示这条数据多久过期,单位为秒。
  • NX表示只有数据库中没有这个id才会设置进去,否则不设置。这个就是创建的作用。
  • XXNX相反,只有数据库中有这个id才会设置进去,其实就是更新的作用。

数据类型

OBJECTPOINTBOUNDSHASHSTRING分别表示不同的数据类型:

  • OBJECT一般通过一组经纬度坐标来表示点、线、面

    点:

    SET key id OBJECT {"type":"Point","coordinates":[-112.2693,33.5123]}
    

    线:

    SET key id OBJECT {"type":"LineString","coordinates":[[70.3125,56.9449741808516],[94.921875,60.58696734225869]]}
    

    面:

    SET key id OBJECT {"type":"Polygon","coordinates":[
              [
                [
                  39.867514,
                  116.577703
                ],
                [
                  39.867757,
                  116.582268
                ],
                [
                  39.868634,
                  116.578497
                ],
                [
                  39.867514,
                  116.577703
                ]
              ]
            ]}
    

    需要注意的是,在OBJECT里面,坐标位置顺序是[纬度,经度];如果是画多边形,那么起始位置和结束位置一定是同一个位置。

  • POINT最简单,就提供一个经纬度坐标即可:

    SET key id POINT -112.2693 33.5123
    

    另外POINT还允许额外有一个z参数,我们可以使用海拔或者时间戳来填补这个参数:

    SET key id POINT -112.2693 33.5123 40
    

    这个z参数也可以作为查询条件。

  • BOUNDS就是设置一个矩形,一般创建一个矩形只需要两个点即可,一个点是左下角,一个点是右上角:

    SET key id BOUNDS 30 -110 40 -100
    
  • HASH是一种使用短字母数字字符串表示位置(世界任何地方)的便捷方式,使用较长的字符串可以获得更高的精度。可查看相关资料

    SET props area1 HASH 9tbnwg
    

    小伙伴可以通过这个网站转换geohash:csxgame.top/#/

  • STRING可以用来设置一些原始字符串,字符串类型的值可以是纯文本或一系列原始字节