HBase Ganos的REST接口采用GeoJson形式来描述时空数据,本文对GeoJson形式进行描述说明。

一个典型的时空“点”数据(可理解为轨迹点)格式如下:
{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [125.6, 10.1]
  },
  "properties": {
    "name": "Dinagat Islands",
    "dtg": 1536041936000,
    "id":  "1"
  }
}

整个数据可分为三部分:

  • 时间数据:作为属性信息保存在properties.dtg中,示例中为ms级别的时间戳(13位整数)。
  • 空间数据:geometry.type表示该空间数据为”点”数据,geometry.coordinates为该”点”的经纬度坐标。
  • 其他属性信息:保存在properties中,如properties.name、properties.id,表示这个点的属性信息。

GeoJson库

为了方便的生成GeoJson串,可使用通用的GeoJson库。
  • Java库geojson-jackson:geojson-jackson,基本的使用方式参考如下:
    FeatureCollection featureCollection = new FeatureCollection();
    featureCollection.add(new Feature());
    
    String json= new ObjectMapper().writeValueAsString(featureCollection);
  • python
    使用如下语句引入geojson包:
        pip install geojson
    基本使用方式为:
    
        point_feature = Feature(id="1",geometry=Point((1.6432, -19.123)),properties={"id":"1","dtg":1536041936000,"name": "Dinagat Islands"})
    
        polygon_feature = Feature(id="my_feature2",geometry=Polygon([(0,0),(0,1),(1,1),(1,0),(0,0)]),properties={"id":"2","dtg":1536041936000,"name": "Dinagat Islands"})
    
        feature_collection = FeatureCollection([point_feature,polygon_feature])
说明 有关GeoJson格式详情请参见GEOJSON RFC