拖放带有链接 CRS 的 GeoJSON

Drag and drop a GeoJSON with linked CRS

我有一个如下所示的 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 中本地支持这个(通过适当的补丁)。

有什么提示吗?

Alexandre,你最好的选择是避免使用旧的 GeoJSON 链接 CRS(软件支持非常差)并且 1) 将你的数据转换为 GeoJSON 的默认 WGS84 long/lat – 这是最好的选择到目前为止或 2) 使用像 "urn:ogc:def:crs:EPSG::32198".

这样的 CRS 名称