拖放带有链接CRS的GeoJSON

时间:2016-04-22 19:57:37

标签: openlayers-3 geojson projection

我有一个GeoJSON文件,如下所示:

{
  "type": "FeatureCollection",
  "crs": {
    "type": "link",
    "properties": {
      "href": "http://spatialreference.org/ref/epsg/32198/proj4/",
      "type": "proj4"
    }
  },
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [200000, 20000]
      },
      "properties": {
        "id": 1,
        "name": "foo"
      }
    }
  ]
}

如您所见,crs定义使用link类型,此处记录了此类:http://geojson.org/geojson-spec.html#linked-crs

我将文件放在启用了ol.interaction.DragDrop交互的OL3地图中,但无法加载它。 OpenLayers 3目前不支持这种类型的crs定义,因此无法加载它。它支持nameEPSG类型,请参阅:https://github.com/openlayers/ol3/blob/master/src/ol/format/geojsonformat.js#L484(下面的代码段):

if (crs.type == 'name') {
  return ol.proj.get(crs.properties.name);
} else if (crs.type == 'EPSG') {
  // 'EPSG' is not part of the GeoJSON specification, but is generated by
  // GeoServer.
  // TODO: remove this when http://jira.codehaus.org/browse/GEOS-5996
  // is fixed and widely deployed.
  return ol.proj.get('EPSG:' + crs.properties.code);
} else {
  goog.asserts.fail('Unknown crs.type: ' + crs.type);
  return null;
}

观察它,我不知道是否可以直接在OpenLayers中本地支持link类型,因为它需要执行异步请求以在同步的代码中获取投影定义。我怀疑我遇到了这个问题。

我正在寻找解决问题的替代方案,或者我可能错误地认为可以在OL3中本地支持(使用适当的补丁)这一事实。

任何提示?

1 个答案:

答案 0 :(得分:0)

Alexandre,你最好的选择是避免使用旧的GeoJSON链接CRS(软件支持得很差)并且1)将你的数据转换为GeoJSON的默认WGS84长/ lat - 这是最好的选择到目前为止或2)使用CRS名称,如" urn:ogc:def:crs:EPSG :: 32198"。