`
Classicning
  • 浏览: 256640 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

GeoJSON and GeoJSON Plugin for GeoServer

    博客分类:
  • GIS
阅读更多
Chris Holmes今天在GeoServer的blog上贴出了一则新闻,GeoServer的新插件Geojson发布了。所谓GeoJSON本是一个酝酿中的新标准,旨在为WFS请求提供JSON格式的输出。

http://localhost:8181/geoserver/wfs?request=GetFeature&typename=topp:states&maxfeatures=1&outputformat=json


什么是JSON?
JSON (JavaScript Object Notation) 是轻量级的数据交换格式,便于人的阅读和理解,也便于程序的解析和生成。JSON与编程语言无关,但是应用的类似的C语言的编程习惯。在JSON中,对象是一个无序的名值对集合,支持字符串、数字、对象、数组和布尔等格式的值。而在JavaScript中,可以通过简单的方法调用将JSON形式的对象转换为JavaScript的对象。

什么是GeoJSON?
大家指导传统的WFS请求以GML形式来返回结果,但是解析xml并不是一种高效的方式。简单地说,GeoJSON就是将JSON方式的数据传输引入WFS查询。

传统的WKT描述面状要素

POLYGON((-143.4375 17.578125, -123.75 -44.296875, -47.8125 -23.203125, -54.84375 27.421875, -56.25 27.421875, -143.4375 17.578125))

同样的面状要素用JSON描述

{"type":"Feature", "id":"OpenLayers.Feature.Vector_213", "properties":{}, "geometry":{"type":"Polygon", "coordinates":[[[-143.4375, 17.578125], [-123.75, -44.296875], [-47.8125, -23.203125], [-54.84375, 27.421875], [-56.25, 27.421875], [-143.4375, 17.578125]]]}, "crs":{"type":"EPSG", "properties":{"code":4326}}}


下面即是一个典型的JSON格式的点状feature,它被封装在一个features数组之中:

{ "features": [
    { "id": "alesia",
      "title": "Alesia",
      "classname": "settlement",
      "geometryType": "point",
      "spatialCoordinates": [[47.535, 4.478, 0.0]],
      "srs": "EPSG:4326",
      "center": [47.535, 4.478, 0.0]
    }
  ]
}

典型的JSON格式Map Context,所谓Map Context即OGC的WMC,描述一幅地图配置情况

{ "name": "map-1",
  "title": "Pleiades Map 1",
  "boundingBox": [-12.0, 32.0, 40.0, 58.0],
  "srs": "EPSG:4326",
  "layers": [
    { "name": "dphysio",
      "title": "Demis Physiography",
      "layers": "Bathymetry,Topography,Rivers,Waterbodies",
      "styles": ",,,",
      "onlineResource": "http:\/\/www2.demis.nl\/mapserver\/request.asp",
      "srs": "EPSG:4326"
    }
  ]
}


用OpenLayers可以进行GeoJSON的解析,以下是Tim Schaub's的GeoJSON Viewer的代码

var map, vectors, drawControls, formats, select;
function init(){
  map = new OpenLayers.Map('map');
  //WMS地图图层
  var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
    "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'}); 
  //矢量图层,OpenLayers2.4的新功能,可以进行矢量编辑
  vectors = new OpenLayers.Layer.Vector("Vector Layer");
  //加入地图
  map.addLayers([wms, vectors]);
  map.addControl(new OpenLayers.Control.MousePosition());
  map.addControl(new OpenLayers.Control.EditingToolbar(vectors));
  //选项:hover的响应为真,鼠标移动的feature上响应为颜色的改变
  //在选择事件中调用serialize方法,参数又库自动注入
  var options = {
    hover: true,
    onSelect: serialize
  };
  select = new OpenLayers.Control.SelectFeature(vectors, options);
  map.addControl(select);
  select.activate();

  //format下的两个子类声明
  formats = {
    wkt: new OpenLayers.Format.WKT(),
    geojson: new OpenLayers.Format.GeoJSON()
  };
            
  map.setCenter(new OpenLayers.LonLat(0, 0), 1);
}
        
function serialize(feature) {
  //从页面控件获得要生成的格式(WKT,GeoJSON)
  var type = document.getElementById("formatType").value;
  //调用Format父类的方法write,将feature转为WKT或GeoJSON
  var str = formats[type].write(feature);
  // 删去HTML字符便于显示(仅用于在页面显示)
  str = str.replace(/,/g, ', ');
  str = str.replace(/(<)/g, '<');
  str = str.replace(/>/g, '> ');
  document.getElementById('output').innerHTML = str;
}

function deserialize() {
  //从页面元素中获得GeoJSON或WTK
  var element = document.getElementById('text');
  var type = document.getElementById("formatType").value;

  //用Format父类的read方法读取GeoJSON或WTK生成features
  var features = formats[type].read(element.value);
  //边界,用于视图缩放
  var bounds;
  if(features) {
    //假如只有一个feature也转为Array的形式
    if(features.constructor != Array) {
      features = [features];
    }
    for(var i=0; i<features.length; ++i) {
      //第一次初始化边界
      if (!bounds) {
        bounds = features[i].geometry.getBounds();
      } else {
        //扩展边界
        bounds.extend(features[i].geometry.getBounds());
      }
                    
    }
    //将新生成的feature加入vector图层
    vectors.addFeatures(features);
    map.zoomToExtent(bounds);
    var plural = (features.length > 1) ? 's' : '';
    element.value = features.length + ' feature' + plural + ' added'
  } else {
    element.value = 'Bad input ' + type;
  }
}


GeoJSON还是一个不成熟的标准,有很多细节还没有确定。GeoServer推出的GeoJSON-plugin-RC1是一个试探性的动作,作者将会根据反响来决定日后是否将这个插件加入到GeoServer中。
分享到:
评论
1 楼 spp_1987 2014-09-24  
geojson 用什么工具软件来转换

相关推荐

    geoserver中发布geojson服务需要的包.zip

    geoserver中发布geojson服务需要的包。里面有四个jar包,包括:gson-2.3.1.jar,gs-vectortiles-2.15.0.jar,java-vector-tile-1.3.4.jar,protobuf-java-3.6.1.jar

    wfs获取图层信息并返回geoJson数据集

    在本例中,我们看到的是如何利用GeoServer提供的WFS服务来获取图层信息,并将其转化为GeoJSON格式的数据集。 GeoServer是一款开源的GIS服务器,它支持WFS服务,使得用户能够通过HTTP协议进行地理数据的查询、添加、...

    arcgis api for javascript 4.5实现二三维地图添加geojson数据

    本文将深入探讨如何利用ArcGIS API for JavaScript 4.5版本实现二三维地图中添加GeoJSON数据,以及GeoJSON数据与ArcGIS JSON数据格式之间的转换。 GeoJSON是一种开放的标准格式,用于存储地理空间数据,它基于JSON...

    geoserver-2.17.0-bin.zip

    5. `geoserver-2.17-SNAPSHOT-vectortiles-plugin.zip`:这是一个向GeoServer添加矢量瓦片支持的插件,允许高效地传输和展示地理空间数据。 6. `bin`目录:包含了不同操作系统平台下的启动脚本,如Windows的`.bat`...

    geoJson.rar_geojson_geojson 下载_geojson 中国_paragraph47z_地图geojson

    GeoJSON是一种基于JSON(JavaScript Object Notation)的地理编码数据格式,用于表示地理空间信息。在给定的“geoJson.rar”压缩包中,我们很可能找到了一个或多个GeoJSON文件,这些文件通常用于存储地理坐标数据,...

    geoserver发布mongodb矢量数据地图服务.docx

    MongoDB矢量数据存储方式有多种,包括GeoJSON、WKT等。 三、Geoserver连接MongoDB Geoserver可以连接MongoDB数据库,实现矢量数据的存储和发布。Geoserver提供了强大的MongoDB插件,可以实现MongoDB矢量数据的读取...

    geoserver-2.15.1-vectortiles-plugin.zip

    GeoServer支持多种输出格式,如MVT(Mapbox Vector Tiles)、GeoJSON等。一旦配置完成,客户端可以通过WMS或WMTS服务请求矢量切片数据。 在客户端,我们可以利用OpenLayers、Leaflet等JavaScript库来解析和渲染这些...

    geoserver-2.15.2-vectortiles-plugin.zip

    在GeoServer的VectorTiles插件中,Gson可能用于处理配置信息或者在服务器与客户端之间的数据交换,比如将GeoJSON转换为JSON字符串进行传输。 3. **java-vector-tile-1.3.4.jar**:这是Java对OpenMapTiles规范的实现...

    世界所有国家geojson数据

    GeoServer支持多种数据格式,包括GeoJSON,可以将GeoJSON数据转换为其他GIS兼容格式,如WMS(Web Map Service)或WFS(Web Feature Service),使得不同客户端可以通过标准接口访问和操作这些地理数据。 标签中的...

    SuperMap iMobile for Android数据集与GeoJSON格式的转换

    **SuperMap iMobile for Android 数据集与 GeoJSON 格式转换详解** 在移动GIS应用中,数据交换和格式转换是至关重要的环节。SuperMap iMobile for Android 是一款强大的移动GIS平台,它支持多种数据格式,其中包括...

    GeoJson生成.zip

    GeoJson是一种基于JSON格式的数据交换标准,主要用于地理空间数据的表示。它被广泛应用于WebGIS领域,因为JSON格式易于理解,轻量级且兼容性好。GeoJSON支持多种地理对象类型,包括点、线和多边形,以及它们的集合。...

    全国地图geojson数据

    全国地图geojson数据,全国地图geojson数据,全国地图geojson数据,全国地图geojson数据,全国地图geojson数据,全国地图geojson数据,全国地图geojson数据,全国地图geojson数据,全国地图geojson数据,全国地图...

    中国及各省GEOJSON。

    ASCII(American Standard Code for Information Interchange)是一种字符编码标准,这里可能是指文件以纯文本ASCII格式存储,这意味着它们可以用任何文本编辑器打开,无需特定的解码工具。然而,"arcsii"可能是打错...

    GeoJson的生成与解析所需jar包

    GeoJson是一种基于JSON格式的数据交换标准,用于地理空间数据的编码。它被广泛应用于Web地图服务、GIS系统和数据分析工具中,因为JSON是轻量级的、易于阅读和编写的数据格式,同时也容易被JavaScript等Web语言处理。...

    搜集来的geojson数据_GeoJSON_data.zip

    搜集来的geojson数据_GeoJSON_data

    全国省市县geojson.zip,项目已使用,资源完整

    全国省市县geojson.zip,项目已使用,资源完整,免费下载 全国省市县geojson.zip,项目已使用,资源完整,免费下载 全国省市县geojson.zip,项目已使用,资源完整,免费下载 全国省市县geojson.zip,项目已使用,...

    各省份Geojson数据.zip

    Geojson是一种基于JSON格式的数据交换标准,主要用于地理空间数据的存储和交换。它结合了JSON的简洁性和GIS(地理信息系统)的数据模型,使得地理信息在Web应用中更加易用和可交互。本压缩包“各省份Geojson数据.zip...

    武汉市geojson数据

    武汉市geojson数据

    全球GEOJSON

    GeoJSON是一种基于JSON格式的数据交换标准,主要用于地理空间数据的表示。它被广泛应用于WebGIS领域,能够方便地在浏览器中展示地图信息。标题“全球GEOJSON”指的是这个压缩包可能包含了全世界所有国家和地区的地理...

    纽约市行政区地图Geojson

    纽约市行政区地图Geojson 可用esri geometry api进行解析 空间分析

Global site tag (gtag.js) - Google Analytics