拖放带有链接 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
定义,因此无法加载它。它支持 name
和 EPSG
类型,请参阅: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 名称
我有一个如下所示的 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
定义,因此无法加载它。它支持 name
和 EPSG
类型,请参阅: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 名称