天天看点

ESRI,空间数据处理,WKT,GeoJson

一、WKT

WKT(well-known text)是一种文本标记语言,用于表示矢量数据中的几何对象,在数据传输与数据库存储时,常用到它的二进制形式,即WKB(well-known binary)。WKT与WKB在GIS中的重要作用在于,它们能利用文本简洁明了的表达矢量空间要素的几何信息,使得几何信息能以字段的形式存储于数据库中。

WKT 示例:

"MULTIPOLYGON (((120.309929 36.060021,120.426772 36.020983,120.309929 36.026087,120.309929 36.060021)))"      

二、GeoJson

GeoJSON是一种用于编码各种地理数据结构的格式,基于Javascript对象表示法的地理空间信息数据交换格式。GeoJSON里的特征包含一个几何对象及其其他属性,geoJson可以很好的结合前端展示。

geoJson 示例

{
  "type": "Feature",
  "geometry": {
   "type":"Polygon",
   "coordinates":[[[120.309929,36.060021],[120.309929,36.026087],[120.426772,36.020983],[120.309929,36.060021]]]}
  },
  "properties": {
    "name": "Dinagat Islands"
  }
}      

WKT和GeoJson都是地理位置信息处理常用的工具,二者都支持点、线、面、多点、多面等几何类型,在处理GIS、AIS等数据的时候经常需要二者相互转换结合使用,常用的工具是geotools和ESRI。ESRI比较轻量级。 可以应用于Hadoop、HIve、Storm等大数据平台的开发。支持GeoJson、WKT、Shape等数据格式的读写与相互转换。也包含空间数据集操作的API:面积、距离、包含、交叉等。

三、WKT转GeoJson

 val wktString = "MULTIPOLYGON (((120.309929 36.060021, 120.426772 36.020983,120.309929 36.026087,120.309929 36.060021)))"
 
 // WKT 转GeoJson
 val geom: Geometry = OperatorImportFromWkt.local
      .execute(WktImportFlags.wktImportDefaults, Geometry.Type.Polygon, wktString, null)
      
 val geojson: String = OperatorExportToGeoJson.local().execute(geom)

 println(geojson)      

返回的GeoJson只包含‘Type’和‘coordinates’属性。

{"type":"Polygon","coordinates":[[[120.309929,36.060021],[120.309929,36.026087],[120.426772,36.020983],[120.309929,36.060021]]]}      

四、GeoJson 转 WKT

  // GeoJson 转 WKT
   val geometry: Geometry = OperatorImportFromGeoJson.local()
      .execute(GeoJsonImportFlags.geoJsonImportDefaults, Geometry.Type.Polygon, geojson, null)
      .getGeometry

   val wktStringParsed = OperatorExportToWkt.local()
      .execute(WktImportFlags.wktImportDefaults, geometry, null)

   println(wktStringParsed)      
MULTIPOLYGON (((120.309929 36.060021, 120.309929 36.026087, 120.426772 36.020983, 120.309929 36.060021)))      
上一篇: bloom filter
下一篇: 网络编码

继续阅读