(@_@;)我是程序猿,我编程,我快乐,知识改变命运,技术成就梦想   oh yeah!合作VX "w6668263" 联系Email:ye583025823@126.com

Openlayers 提供的 API 读取、解析和展示 GeoJSON 描述的信息

 

 

 

 

Openlayers 提供的 API 读取、解析和展示 GeoJSON 描述的信息。

1. 官网介绍

 

GeoJSON is a format for encoding a variety of geographic data structures.

 

{
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [125.6, 10.1]
      },
      "properties": {
        "name": "Dinagat Islands"
      }
    }
}

 

 

GeoJSON supports the following geometry types: Point, LineString, Polygon, MultiPoint, MultiLineString, and MultiPolygon. Geometric objects with additional properties are Feature objects. Sets of features are contained by FeatureCollection objects.

 

2. GeoJSON 重要对象成员(名/值对)。

字段是否必须可选范围
type 必须 Point
MultiPoint
LineString
MultiLineString
Polygon
MultiPolygon
GeometryCollection
Feature
FeatureCollection
crs 可选 必须是一个坐标参考系统的对象
bbox 可选 必须是边界框数组

 

 二、OpenLayers 使用 GeoJSON

 

官方示例: https://openlayers.org/en/latest/examples/geojson.html

 

1. 定义样式和获取样式的方法

    var styles = {
        'Polygon': new Style({
            stroke: new Stroke({
              color: 'blue',
              lineDash: [4],
              width: 3,
            }),
            fill: new Fill({
              color: 'rgba(0, 0, 255, 0.1)',
            }),
      })
    };
    
    var styleFunction = function (feature) {
      return styles[feature.getGeometry().getType()];
    };

2. 解析并展示 GeoJSON

    // GeoJson 对象示例
    var geojsonObject = {
      type: "Feature",
      geometry: {
        type: "Polygon",
        coordinates: [
          [
            [1e6, -3e6],
            [2e6, -4e6],
            [3e6, -6e6]
          ]
        ]
      }
    };
    
    // 将 geoJSON 解析成 feature 并添加到 vectorLayer 数据源中    
    var vectorSource = new VectorSource({
       features: new GeoJSON().readFeatures(geojsonObject)
    });
    
    //使用数据源和显示方法构建图层
    var vectorLayer = new VectorLayer({
      source: vectorSource,
      style: styleFunction
    });

也可以在创建完成后调用 API 动态添加 feature:

this.vectorSource.addFeatures(features);

VectorSource API : https://openlayers.org/en/latest/apidoc/module-ol_source_Vector-VectorSource.html

也支持ARCGIS的Json格式

var vectorSource = new VectorSource({
    features: new ol.format.EsriJSON().readFeatures(geojsonObject)
})

 

EsriJSON

EsriJSON 是一种用于对各种地理数据结构进行编码的格式。对于 EsriJSON,其通常是指 FeatureSet 对象,其中 FeatureSet 包含一组 Feature 对象。在 ArcGIS Velocity 中,可以将 EsriJSON 提取为 FeatureSet 对象(要素集合)或者将单个 Feature 对象提取为行。

https://doc.arcgis.com/zh-cn/iot/ingest/esrijson.htm

 

posted on 2022-03-30 17:05  一个草率的龙果果  阅读(1425)  评论(0编辑  收藏  举报

导航