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