我有一个项目,加载一些geojson文件,然后在openlayers地图中进行绘制。我使用Blumenau / Santa Catarina / Brazil(城市/州/国家/地区)的示例文件做得很好,但是当我从巴西城市上传新文件时,他们发现地图上出现了位移。
在将文件上传到我的网站时,是否可以自动定义proj4参数和epsg代码?实际上,页面仅上传文件并使用新名称定义它,而不会更改其数据。 当我尝试上载Santo Andre / Sao Paulo /巴西的数据时,它是从巴西以其他州绘制的,但使用Santo Andre城市格式。
<link rel="stylesheet" href="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/css/ol.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.5.0/proj4.js"></script>
proj4.defs('EPSG:32722', '+proj=utm +zone=22 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs ');
ol.proj.proj4.register(proj4);
{% load static %}
var suscetibilidadeDeslizamento = new ol.layer.Vector({
source: new ol.source.Vector({
format: new ol.format.GeoJSON({dataProjection: 'EPSG:32722'}),
url: '{% static deslizamento %}'
}),
style: style,
opacity: 0.3
});
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
}),
suscetibilidadeDeslizamento
],
view: new ol.View({
center: ol.proj.fromLonLat([-49, -27]),
zoom: 5
})
});
以下是Blumenau数据绘制的。数据:https://raw.githubusercontent.com/tiagoferneda/files/master/SuscetibilidadeInundacaoBlumenau.json
此处是在Terra Boa市上绘制的Santo Andre数据,距正确位置较远。数据:https://raw.githubusercontent.com/tiagoferneda/files/master/SuscetibilidadeInundacaoSantoAndre.json
答案 0 :(得分:0)
在创建ol.layer.Vector
之前,请尝试阅读JSON的CRS,然后添加相应的proj4参数。
您应该看一下this OpenLayers example在哪里它从EPSG.io动态加载proj4参数。