OpenLayers 4铁路超高和xB4;重新投影json文件

OpenLayers 4铁路超高和xB4;重新投影json文件,openlayers,Openlayers,嗨,我从我的服务器加载了一组Json点 存储在EPSG 32720(UTM 20S)中,也用于测试相同的点 存储在EPSG 4326坐标中 使用OpenLayer3.8.2,我加载了这两个文件,可以看到 EPSG 32720被重新投影,并完美匹配在EPSG 4326点内绘制一个圆 但当使用开放层4时,重投影失败, 该点显示在另一个国家/地区。 这些文档几乎没有什么不同。 (我只能写2个链接) 问题是我尝试了4种选择: proj4.defs("EPSG:32720","+proj=utm

嗨,我从我的服务器加载了一组Json点 存储在EPSG 32720(UTM 20S)中,也用于测试相同的点 存储在EPSG 4326坐标中

使用OpenLayer3.8.2,我加载了这两个文件,可以看到 EPSG 32720被重新投影,并完美匹配在EPSG 4326点内绘制一个圆

但当使用开放层4时,重投影失败, 该点显示在另一个国家/地区。 这些文档几乎没有什么不同。 (我只能写2个链接)

问题是我尝试了4种选择:

    proj4.defs("EPSG:32720","+proj=utm +zone=20 +south +datum=WGS84 +units=m +no_defs");     
var sourceProj = ol.proj.get('EPSG:32720');

1) var UTMFormat = new ol.format.GeoJSON({defaultDataProjection: sourceProj});
2) var UTMFormat = new ol.format.GeoJSON({defaultDataProjection: 'EPSG:32720'});

3)var UTMFormat = new ol.format.GeoJSON({featureProjection: 'EPSG:32720'});
4)var UTMFormat = new ol.format.GeoJSON({defaultDataProjection:'EPSG:32720', featureProjection: 'EPSG:32720'});

 var vectorLayer32720 = new ol.layer.Vector({
        source: new ol.source.Vector({            
            url: '/static/centroids32720.geojson',            
            format: UTMFormat
        }),
    style: stylePointsBlue    
   });
只有1和2与OL 3.8.2一起工作, 但你能找出什么是错的吗? 我制作了两个plunker示例,一个是3.8.2版,另一个是4版

版本3.8.2

版本4

有人能告诉我怎么了


问候

问题是您的GeoJSON包含不推荐使用的
crs
元素,OpenLayers 4.x尊重该元素。但是您的proj4定义使用了不同的代码。要修复OpenLayers 4.x的示例,请为数据投影定义一个别名,如下所示:

proj4.defs('urn:ogc:def:crs:EPSG::32720', proj4.defs('EPSG:32720');
对于读取EPSG:32720 GeoJSON的向量源,只需使用

format: new ol.format.GeoJSON()
没有任何构造函数选项


注意:根据ISO标准,GeoJSON应始终位于地理坐标(EPSG:4326)。

问题在于,您的GeoJSON包含不推荐的
crs
元素,OpenLayers 4.x遵守该元素。但是您的proj4定义使用了不同的代码。要修复OpenLayers 4.x的示例,请为数据投影定义一个别名,如下所示:

proj4.defs('urn:ogc:def:crs:EPSG::32720', proj4.defs('EPSG:32720');
对于读取EPSG:32720 GeoJSON的向量源,只需使用

format: new ol.format.GeoJSON()
没有任何构造函数选项


注:根据ISO标准,GeoJSON应始终位于地理坐标中(EPSG:4326)。

非常感谢您的回答

有了你的解决方案工作不错,也工作只写了epsg号

“crs”:{“类型”:“名称”,“属性”:{“名称”:“32720”}

问题的出现是因为开放层的文档非常少。 另外,参数defaultDataProjection在4.x版本上有不同的用途

我了解到新的GeoJson格式将缺少对CRS的支持, 在我看来,这是一个很大的错误 因此GeoJson的新名称必须是:

“仅限ywgs84geoJSON”

并将原始GeoJson留给能够处理 有投影


问候

非常感谢您的回答

有了你的解决方案工作不错,也工作只写了epsg号

“crs”:{“类型”:“名称”,“属性”:{“名称”:“32720”}

问题的出现是因为开放层的文档非常少。 另外,参数defaultDataProjection在4.x版本上有不同的用途

我了解到新的GeoJson格式将缺少对CRS的支持, 在我看来,这是一个很大的错误 因此GeoJson的新名称必须是:

“仅限ywgs84geoJSON”

并将原始GeoJson留给能够处理 有投影

问候