在openlayers中是否有自动发现epsg代码和proj4到geojson文件的方法?

在openlayers中是否有自动发现epsg代码和proj4到geojson文件的方法?,openlayers,geojson,epsg,Openlayers,Geojson,Epsg,我有一个项目来加载一些geojson文件,然后在openlayers地图中绘制。我对来自布鲁门诺/圣卡塔里纳/巴西(城市/州/国家)的样本文件做得很好,但当我上传来自巴西城市的新文件时,他们在地图上看到了位移 在上传文件到我的网站时,有没有办法自动定义proj4参数和epsg代码?实际上,页面只上传文件并用一个新名称定义它,而不改变它的数据。 当我试图上传圣安德烈/圣保罗/巴西数据时,它是在巴西的其他州绘制的,但采用圣安德烈城市格式 <link rel="stylesheet" href=

我有一个项目来加载一些geojson文件,然后在openlayers地图中绘制。我对来自布鲁门诺/圣卡塔里纳/巴西(城市/州/国家)的样本文件做得很好,但当我上传来自巴西城市的新文件时,他们在地图上看到了位移

在上传文件到我的网站时,有没有办法自动定义proj4参数和epsg代码?实际上,页面只上传文件并用一个新名称定义它,而不改变它的数据。 当我试图上传圣安德烈/圣保罗/巴西数据时,它是在巴西的其他州绘制的,但采用圣安德烈城市格式

<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
                          })
                        });

项目4.defs('EPSG:32722','+proj=utm+地带=22+南部+ellps=WGS84+基准面=WGS84+单位=m+无defs');
ol.proj.proj4.寄存器(proj4);
{%load static%}
var suscetibilidadeDeslizamento=新ol.layer.Vector({
来源:新ol.source.Vector({
格式:new ol.format.GeoJSON({dataProjection:'EPSG:32722'}),
url:“{%static deslizamento%}”
}),
风格:风格,
不透明度:0.3
});
var map=新ol.map({
目标:“地图”,
图层:[
新ol.layer.Tile({
来源:new ol.source.OSM()
}),
Suscetibilidadeslizamento
],
视图:新ol.view({
中心:Lonlat([-49,-27])的其他项目,
缩放:5
})
});
这是绘制的布鲁门诺数据。数据:

这是圣安德烈的数据图,在Terra Boa市上空,远离正确的位置。数据:

在创建
ol.layer.Vector
之前,尝试读取JSON的CRS,然后添加相应的proj4参数


您应该看看它在哪里从EPSG.io动态加载proj4参数

GeoJSON规范允许指定CRS(OpenLayers应该理解),但这些示例不包括CRS。否则,您需要知道每个城市的UTM分区(或经度,以便计算分区)。Santo Andre正好在Terra Boa以东6度处,所以在23区。在这种情况下,GeoJSONs没有指定CRS。@Mike哦,你说得对,我错过了。工程师说坐标必须在WGS 84中,但在这种情况下,根据代码Santo Andre,数据应在EPSG:32722中。您是否尝试在QGIS中加载指定CRS的数据?可能是coords出了什么问题。Blumenau位于22区,数据为EPSG:32722,但Santo Andre位于23区,数据为EPSG:32723,但被视为EPSG:32722,显示位置以西6度。但对于其他城市,我不确定巴西是否严格遵守UTM区域边界,或者像西班牙一样,是否按省划分。